awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
tonaljs avatar

tonaljs/tonal

0
View on GitHub↗
4,193 stars·247 forks·TypeScript·16 viewstonaljs.github.io/tonal/docs↗

Tonal

Tonal is a JavaScript music theory library designed for the computational analysis of scales, chords, and intervals. It serves as a harmonic analysis tool, a musical notation parser, and a pitch class set analyzer.

The project provides specialized capabilities for rhythmic pattern generation, including the creation of Euclidean rhythms. It also functions as a toolkit for translating between different musical representations, such as scientific pitch notation, MIDI numbers, frequencies, and ABC notation.

The library covers a broad range of music theory domains, including harmony and key management, interval arithmetic, and scale detection. It includes utilities for parsing Roman numeral progressions, managing mode metadata, and identifying compatible chords and scales based on note sets.

The codebase is written in TypeScript.

Features

  • Computational Music Theory - Implements a comprehensive system for the computational analysis and automation of scales, chords, and intervals.
  • Musical Note Analysis - Extracts theoretical properties such as pitch class, chroma, MIDI numbers, and frequencies from note names.
  • Algorithmic Rhythm Generation - Generates rhythmic sequences using mathematical algorithms such as Euclidean patterns.
  • Chord Symbol Parsing - Parses chord symbols into constituent parts like root, quality, and extensions to determine notes.
  • Note-to-Chord Identification - Analyzes a list of notes to determine all matching chord names for that set of pitches.
  • Chord Property Resolution - Resolves theoretical properties like tonic, bass, and root from a chord symbol or set of tokens.
  • Chord Transposition - Shifts a chord symbol to a new pitch by applying a specified musical interval.
  • Chord Type Data Retrieval - Returns a chord type's quality, interval list, and alternative names based on its name.
  • Scale and Chord Generation - Retrieves lists of notes for specific scales and chords using a dictionary of musical types.
  • Computational Harmonic Analysis - Uses algorithms to identify chords, intervals, and progressions for harmonic analysis.
  • Generative Rhythmic Sequencing - Generates complex rhythmic patterns using Euclidean algorithms and managing time signature data.
  • Notation Automation - Automates the translation between roman numerals, scientific pitch notation, and lead sheets.
  • Musical Key Analysis - Calculates the theoretical properties of musical keys and resolves associated scales and chords.
  • Musical Notation Parsing - Translates between different musical notation formats including scientific pitch notation, MIDI, and ABC notation.
  • Scale Data Retrieval - Queries a dictionary to retrieve the notes and tonic associated with a specific named musical scale.
  • Note Pitch Transposition - Shifts musical notes by specified intervals or fifths to determine new note names.
  • Pitch Class Normalization - Processes raw note strings into standardized pitch classes for consistent comparison across octaves.
  • Scale Detection - Algorithmically identifies musical scales that fit a provided set of notes using exact or partial matching.
  • Harmonic Roman Numeral Analysis - Converts roman numeral symbols into harmonic chord properties within a specific musical key.
  • MIDI Note Conversions - Translates musical note names or numbers into standard MIDI note numbers within the 0-127 range.
  • Musical Frequency Conversions - Performs logarithmic calculations to translate between frequencies in Hertz and MIDI note numbers.
  • Musical Interval Analysis - Retrieves semitones, quality, and octave span based on a specific interval name.
  • Musical Interval Arithmetic - Calculates harmonic relationships by adding, subtracting, simplifying, or inverting musical intervals.
  • Musical Interval Distance Calculation - Calculates the specific musical interval distance existing between two provided notes.
  • Musical Interval Representations - Defines musical chords and scales as lists of semitone offsets from a root tonic.
  • Musical Roman Numeral Translation - Translates chord progressions between roman numeral harmonic analysis and lead sheet notation.
  • Pitch Class Set Analysis - Analyzes collections of pitch classes to identify complex musical structures and harmonic relationships.
  • Pitch Class Set Management - Extracts unique sorted collections of notes from MIDI numbers or chroma strings for further analysis.
  • Scale Degree Mapping - Maps numerical scale degrees and steps to their corresponding musical note names or pitch classes.
  • Annotation to Note Conversions - Translates MIDI numbers into musical note names using standard or sharp notation.
  • Euclidean Rhythm Generation - Implements algorithms to distribute pulses evenly across a time span for Euclidean rhythm generation.
  • Rhythmic Pattern Manipulation - Transforms rhythmic sequences through operations such as rotation and shifting of pattern steps.
  • Algorithmic Composition Tools - Provides tools to automate musical notes and rhythms through programmatic algorithmic composition.
  • Modal Chord Generation - Produces triad and seventh chord lists for specific musical modes starting from a given tonic.
  • Chord Compatibility Analysis - Lists all chords that fit within the notes of a given musical scale.
  • Chord Dictionary Management - Allows listing available chord types and defining custom chords via specific intervals.
  • Chord Relationship Analysis - Identifies if chords are supersets or subsets of other chords by comparing their constituent notes.
  • Inversion Handling - Retrieves chord notes based on type and handles inversions by reordering the degrees.
  • Key-Based Chord Generation - Generates lists of chords and their functional roles based on a specified musical key.
  • Modal Tonic Identification - Identifies the tonic of a mode that shares the same pitch collection as another mode.
  • Theoretical Scale Metadata - Provides theoretical metadata for scales, including intervals, qualities, and aliases for harmonic analysis.
  • Musical Duration Values - Provides duration objects and shorthand identifiers for standard musical notation time values.
  • Musical Mode Metadata - Retrieves theoretical metadata for musical modes, including alterations and associated chord types.
  • Mode Note Determination - Calculates the exact sequence of notes for a specific mode based on a provided tonic.
  • Notation Simplification - Provides utilities to simplify musical notation by reducing note names to the minimum number of accidentals.
  • Musical Rhythm Parsing - Parses musical timing symbols, durations, and time signatures into computational data formats.
  • Scale Dictionary Management - Manages a collection of scale definitions, allowing users to list available types or add custom ones.
  • Scale Relationship Identification - Determines if musical scales are subsets, supersets, or modes of one another.
  • Compatible Scale Identification - Identifies all musical scales that contain the constituent notes of a given chord.
  • Musical Time Signatures - Retrieves rhythmic structure and beat properties of a time signature from names or numeric pairs.
  • Key Signature Definitions - Identifies the major tonic associated with specific key signatures.
  • Enharmonic Resolution - Identifies and converts between notes that represent the same pitch using different names.
  • Semitone to Interval Mapping - Translates numeric semitone counts into corresponding music theory interval names.
  • MIDI Processing Engines - Processes and transforms MIDI data, including conversions between MIDI note numbers, frequencies, and musical notation.
  • Note Range Generation - Generates a sequence of notes within a musical scale between two specified boundary notes.
  • Note Name Normalization - Translates MIDI note numbers into note names using flats or sharps.
  • Note Constraining - Finds the nearest MIDI note within a pitch class set to snap a note to a specific scale.
  • Tonic Pitch Mapping - Maps pitch class sets over a specific tonic to determine corresponding MIDI note numbers.

Star history

Star history chart for tonaljs/tonalStar history chart for tonaljs/tonal

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Tonal

These projects share indexed features with Tonal. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • pichenettes/eurorackpichenettes avatar

    pichenettes/eurorack

    2,917View on GitHub↗

    This project is a set of digital signal processing routines and firmware designed for building modular synthesis hardware and control voltage modules. It functions as a comprehensive system for Eurorack synthesis, incorporating a physical modeling synthesis engine, a granular synthesis module, and a dedicated control voltage processor. The system distinguishes itself through a specialized synthesis engine that simulates the acoustic properties of strings, reeds, and percussion using modal resonators. It also features a MIDI to CV converter for monophonic and polyphonic operation and a step se

    C++
    View on GitHub↗2,917
  • bespokesynth/bespokesynthBespokeSynth avatar

    BespokeSynth/BespokeSynth

    4,526View on GitHub↗

    BespokeSynth is a modular synthesizer environment that combines a node-based audio graph routing system with a live scripting bridge, enabling real-time patching and control without recompilation. Its architecture integrates a granular synthesis engine, FFT-based spectral processing, a MIDI Polyphonic Expression pipeline, and a Euclidean rhythm generator, all within a freeform workspace designed for live experimentation. The project distinguishes itself through its live coding capabilities, allowing Python scripts to create, modify, and control synthesis parameters at runtime, and its plugin

    C++
    View on GitHub↗4,526
  • juce-framework/jucejuce-framework avatar

    juce-framework/JUCE

    8,579View on GitHub↗

    JUCE is a comprehensive C++ audio framework and digital signal processing library used to build cross-platform audio applications, audio plug-ins, and high-performance user interfaces. It serves as a development kit for creating audio processors compatible with industry-standard plugin formats for digital audio workstations, as well as a tool for MIDI and Open Sound Control communication between musical hardware and software. The framework is distinguished by its ability to maintain a single codebase for native desktop and mobile applications across multiple operating systems. It provides a f

    C++aaxauaudio
    View on GitHub↗8,579
  • lmms/lmmsLMMS avatar

    LMMS/lmms

    10,005View on GitHub↗

    LMMS is a digital audio workstation and MIDI sequencer designed for composing, arranging, and mixing music. It functions as a comprehensive production environment that integrates a MIDI sequencer, a sample-based synthesizer, and an audio mixing console. The project distinguishes itself through a versatile synthesis engine that includes additive synthesis, wavetable generation, and emulations of vintage hardware such as NES audio and FM chips. It also serves as a VST plugin host, allowing for the integration of third-party virtual instruments and audio effects via a standardized interface. Be

    C++dawhacktoberfestmidi
    View on GitHub↗10,005
Compare all 10 related projects→

Frequently asked questions

What does tonaljs/tonal do?

Tonal is a JavaScript music theory library designed for the computational analysis of scales, chords, and intervals. It serves as a harmonic analysis tool, a musical notation parser, and a pitch class set analyzer.

What are the main features of tonaljs/tonal?

The main features of tonaljs/tonal are: Computational Music Theory, Musical Note Analysis, Algorithmic Rhythm Generation, Chord Symbol Parsing, Note-to-Chord Identification, Chord Property Resolution, Chord Transposition, Chord Type Data Retrieval.

Which projects share features with tonaljs/tonal?

Projects with overlapping indexed features include: pichenettes/eurorack — This project is a set of digital signal processing routines and firmware designed for building modular synthesis… bespokesynth/bespokesynth — BespokeSynth is a modular synthesizer environment that combines a node-based audio graph routing system with a live… lmms/lmms — LMMS is a digital audio workstation and MIDI sequencer designed for composing, arranging, and mixing music. It… tonejs/tone.js — Tone.js is a web-based audio synthesizer and framework for the Web Audio API. It provides a digital signal processing… juce-framework/juce — JUCE is a comprehensive C++ audio framework and digital signal processing library used to build cross-platform audio… robbert-vdh/nih-plug — nih-plug is an audio plugin SDK and development framework providing a set of tools and traits for processing audio and…