Symbolic
A toolkit for
music theory.
A shared foundation for computing musical relationships.
Symbolic is a broad, flexible toolkit for music information computation. It connects harmony, melody, rhythm and instrument positions through shared concepts and bridges between notations, giving researchers, developers and instrument builders a foundation to work from. The next maruaudio release includes the library through focused package imports. See installation and code examples.
Example applications
Chord recommendation
Chord suggestions based on melody, tonal context and harmonic constraints.
Pitch detection tools
Musical interpretation of detected frequencies as notes, tuning offsets and pitch classes.
Melodic structure
Analysis of contours, recurring motifs and phrases across keys and registers.
Harmonic tension
Measures of tension as chord qualities, chromaticism and voicings change.
Rhythm across genres
Comparison of onsets, accents, repetition and syncopation across genres.
Instrument voicings
Chord voicing computation for guitar strings and frets, pad grids and other layouts.
A connected model of musical concepts
Symbolic aims to map musical concepts and the many ways people describe them, making those relationships useful in software. Its model connects note names, MIDI numbers, chord symbols, rhythmic patterns and physical positions, with room to extend it.
- 01
Representations
Each musical concept has a typed representation and notations that describe it.
- 02
Relationships
A note adds register to a pitch class; a melody brings pitches and rhythm together.
- 03
Conversions
Bridges connect representations with explicit context and a record of what changes or is lost.
- 04
Composition
Plain musical data and composable functions support analysis, models, editors and instruments.
Built with Symbolic / Code Sequencer
Musical structure as code
Code Sequencer uses Symbolic Cycle to express chords, melodies, rhythms and song forms as code. Patterns can be transformed, analyzed and played through an instrument.
For musicians drawn to the mathematics of their patterns, it is a place to experiment. For tool builders, it is also an intermediate language: a way to distill songs into reusable structures, transform patterns and build instruments around them.
A progression, expressed as relationships
roman("<I V vi IV>")
.key("C:major")An invitation to researchers
Research collaboration
Maru is actively seeking research collaborators in music theory, music information retrieval and musical interaction. Collaboration can extend the toolkit with new representations, datasets, analysis methods and research questions.
Collaboration enquiriesImplementation and language bridges
Symbolic is primarily implemented in TypeScript, with experimental bridges for Python and C. Its musical values are plain data, ready to connect analysis pipelines, interfaces and other tools.
The core currently centers on twelve-tone equal temperament, with helpers for frequency, cents and tuning. It models musical information; audio processing and playback belong to the tools built around it.
60 musical concepts mapped
Harmony
32 conceptsSingle Elements
Collections & Patterns
Song Forms
Polyphony & Scores
Tonal Context
Melody
6 conceptsLines & Sequences
Interfaces
6 conceptsInstrument Layouts
Instrument Positions
Data & Analysis
9 conceptsAnalysis
Symbolic representations
Performance
Rhythm
6 conceptsRhythm Patterns
Meter & Tempo
Additional concepts
Symbolic is a work in progress. Its concepts, notations and bridges are still being expanded and refined.