tonaljs/tonal

A music theory library for Javascript

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 50 minutes ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 16th, 2026
Created on July 17th, 2015
Open Issues & Pull Requests: 43 (+0)
GitHub issues: Enabled
Number of forks: 253
Total Stargazers: 4,237 (+0)
Total Subscribers: 57 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 7.1 days
Mean response time: 42.7 days
90th percentile: 142.9 days
Tracked items: 19

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 16
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 541 days
Stale 30+ days: 16
Stale 90+ days: 9

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Tonal is a music theory library for JavaScript that provides tools for working with musical concepts programmatically.

The library solves the problem of implementing music theory logic in web and Node.js applications by offering a collection of utilities for common music theory operations. It provides functions for working with notes, intervals, chords, scales, keys, and chord progressions. The approach is modular, allowing developers to import only the specific music theory functions they need rather than loading the entire library.

Developers building music applications, educational tools, or any software that needs to reason about musical relationships should consider this tool. It suits projects ranging from music notation software to interactive learning applications to generative music systems. The library is particularly useful when you need to perform calculations like transposition, interval analysis, chord identification, or scale generation without implementing these algorithms from scratch.

The project maintains active development with regular updates to its codebase. The maintainers respond to issues and pull requests, indicating ongoing engagement with the user community. The documentation is comprehensive, with a dedicated website providing detailed API references and examples for developers integrating the library into their projects.