Learning Path
This page routes you through the libsonare docs by what you want to build. You do not need to understand DSP, MIR, WebAssembly, or mastering terminology before starting.
Acronyms you will see early
DSP (digital signal processing) means measuring or changing audio as numbers. MIR (Music Information Retrieval) means reading musical information such as BPM, key, and chords from audio. WASM / WebAssembly is the browser runtime format. API means the functions and classes your app calls. CLI means a terminal command. At this stage, you only need enough vocabulary to choose the next page.
The sidebar groups the guides into ten subject areas: Analysis, Instruments & MIDI, Mixing, Mastering, Editing, Repair, Arrangement & Projects, Realtime, Room Acoustics, and Playback. The headings below use the same names, so the area you find a goal under is also the sidebar group its guides sit in. The runtime references and the evidence pages follow the areas.
If you have not run anything yet, start with Getting Started: one install line and one short program per runtime.
Reading the docs front to back
- Introduction for vocabulary and the overall audio-analysis pipeline.
- Audio Basics for samples, sample rate, decibels (dBFS, RMS, LUFS), frequency and harmonics, and stereo, if any of those are new to you.
- MIR Overview for how spectrograms, chroma, onsets, and the analysis results build on one another.
- This page, to find the subject area your goal belongs to.
- Getting Started, Installation, and Examples to run one small program.
- Feature Map to find the right API family.
- One walkthrough from Use Cases when what you want is a finished deliverable rather than an integration.
- One guide from the subject area that matches your goal, below. Mixing, editing, and mastering each have a basics page (Mixing Basics, Editing Basics, What Is Mastering?) to read first.
- One runtime reference from API By Runtime.
- The evidence pages only when you need implementation details, algorithm references, validation scope, or performance context.
Start With Your Goal
Find your goal under the area it belongs to. Read first is the page written for that goal; Then read is where the detail lives once the first page has made sense. Rows that start from a use case are complete walkthroughs with commands you can run.
Analysis
Every result in this area (tempo, key, chords, sections) is read off the same first step. The audio is cut into short overlapping windows and each window is turned into a spectrum, so the whole recording becomes a picture of which frequencies are present at each moment. If you have never seen that picture, this is it:
| I want to build... | Read first | Then read |
|---|---|---|
| A browser app that shows BPM, key, chords, or sections | Getting Started | Music Analysis, WebAssembly Guide |
| A Python script or notebook for audio analysis | Getting Started | Python API, Music Analysis |
| A terminal workflow for quick checks or batch analysis | Getting Started | CLI Reference, CLI Commands |
| Song structure, self-similarity, or note-segmentation analysis | Music Analysis | JavaScript API, Python API |
| Bars and time signatures scored over a beat series you already have | Music Analysis | Meter and Grouping |
| A migration from librosa | librosa Compatibility | Music Analysis |
| A librosa figure (frame and sample conversion, decibels, peak picking) checked against the engine from a shell | CLI Utilities | librosa Compatibility |
| A source-separation view that keeps the harmonic and percussive paths available for editing | Source Separation | Music Analysis, Editing DSP |
Instruments & MIDI
Nothing in this area plays back a recording: the engine ships no sample data, and every instrument is computed while the note sounds. Sound Sources explains that decision and what follows from it. Read it before any page that assumes you have already chosen a synthesis method.
| I want to build... | Read first | Then read |
|---|---|---|
| A choice between a physical model, FM, subtractive synthesis, and a SoundFont you bring | Sound Sources | Built-in Synthesizer, Physical Models |
| A synth or instrument app that renders MIDI to audio | Built-in Synthesizer | MIDI Input, Realtime and Streaming |
| A MIDI clip editor or sequencer with MIDI 1.0 and MIDI 2.0 events | MIDI Editing | MIDI 2.0 & UMP, Project MIDI |
| The acoustic voices (piano, bowed string, reed, brass, flute) heard side by side or voiced from code | Physical Models | Built-in Synthesizer |
| A lookup of which engine and voicing a General MIDI program falls back to when no SoundFont covers it | GM Tone Map | GM and GS |
| SoundFont (SF2) playback through a built-in player | SoundFont 2 Player | GM and GS, MIDI Input |
| A C++ app that needs the instruments only, without analysis or mastering | Link targets | Built-in Synthesizer, SoundFont 2 Player |
Mixing
| I want to build... | Read first | Then read |
|---|---|---|
| A browser or native mixer | Mixing Engine | Mixing Scene JSON |
| A browser mixing app, read from a working demo's source | Build a Browser Mixer | Mixing Engine, Mixing Demo Project JSON |
| A starting mix proposed from the tracks themselves, with a reason for every move | Mixing Assistant | Mixing Scene JSON, Mixing Engine |
| Reverb, modulation, or delay on a strip or a bus | Effects Inserts | Mixing Scene JSON |
| Insert controls drawn from the engine's own parameter descriptors instead of a hand-kept table | Build Controls from Parameter Descriptors | Effects Inserts, Realtime Engine |
| A talk episode with the music ducked under the voices, delivered at a loudness target | Produce a Spoken-Word Show | Mixing Engine, CLI Reference |
Mastering
| I want to build... | Read first | Then read |
|---|---|---|
| A mastering UI or automatic mastering workflow | Mastering Assistant | Mastering Processors |
| A finished master from a folder of stems, in the terminal | Mix and Master in the CLI | CLI Reference, Mastering Processors |
| A mix brought into the tonal and loudness range of a reference track | Match a Reference Track | Mastering Assistant |
| A pass/fail check on a master before delivery, run in CI | Gate a Delivery in CI | CLI Reference |
| A UI wired to the mastering chain's own controls, or a render report you have to explain | Mastering Implementation | Mastering Processors, Build Controls from Parameter Descriptors |
Editing
| I want to build... | Read first | Then read |
|---|---|---|
| Pitch, time, voice, or source-separation editing | Editing DSP | JavaScript API |
| Audio transcription, clip replacement, and tempo-aware MIDI placement | Audio to MIDI | MIDI Editing, Project MIDI |
| A piano recording turned into a MIDI file and checked against the score | Turn a Piano Recording into MIDI | Audio to MIDI |
| Note-level edits that render back into an audio clip | Note Editing in Audio | Editing DSP |
| Region-based spectral edits (attenuate, mute, gain, or heal a time-frequency rectangle) | Spectral Editing | Editing DSP |
| Slowed, transposed, and separated practice tracks of a song | Build Practice Tracks | Editing DSP, Source Separation |
| A recorded take tuned to the melody in a MIDI file, from the shell | CLI Utilities | Project MIDI |
Repair
Measure the defect before choosing a repair stage. Broadband noise, mains hum, clipped peaks, impulsive clicks, crackle, and diffuse reverb need different evidence and different reconstruction limits.
| I want to build... | Read first | Then read |
|---|---|---|
| A repair workflow that chooses stages from measured defects | Audio Repair Workflow | Repairing Noise and Hum, Repairing Clipping, Clicks, and Crackle, Repairing Diffuse Reverb |
| A batch of rough recordings cleaned up, with a record of what was wrong in each | Clean Up a Batch of Recordings | Audio Repair Workflow |
Arrangement & Projects
| I want to build... | Read first | Then read |
|---|---|---|
| A DAW, arrangement, or MIDI-sequencing tool | Project Editing | Project MIDI, Bouncing Projects |
| A sung take corrected note by note (pitch, formant, level) with undo, and the result placed in a project | Vocal Editing | Tune a Vocal Take |
| A project saved to a file and opened again | Project Save & Load | Project Editing |
| Microphone capture, loop takes, and comping into a clip | Recording & Takes | Project Editing |
| A project rendered to audio, with or without the built-in synth | Bouncing Projects | Built-in Synthesizer, SoundFont 2 Player |
Realtime
| I want to build... | Read first | Then read |
|---|---|---|
| A live visualizer, rhythm game helper, or AudioWorklet tool | Realtime and Streaming | WebAssembly Guide |
| Transport, track lanes, live MIDI, and automation in a playback engine | Realtime Engine | Realtime and Streaming |
| A realtime microphone voice changer | Realtime Voice Changer | WebAssembly Guide |
Room Acoustics
| I want to build... | Read first | Then read |
|---|---|---|
| Room sound, estimates, or generated room character | Room Acoustics | JavaScript API, Python API |
| Inverting mel/MFCC features for previews or debugging | Inverse Features | librosa Compatibility |
Playback
| I want to build... | Read first | Then read |
|---|---|---|
| Movie audio rendered to binaural headphones or to calibrated stereo, 5.1, or 7.1 speakers | Playback Renderer | Channel Formats |
| A check of how each module treats mono, stereo, 5.1, and 7.1 input | Channel Formats | Playback Renderer |
How to read the task guides
Each task guide starts with the decision criteria, then shows the smallest useful code path, then lists caveats and related pages. When the same workflow runs in Browser / WASM, Python, and CLI, the page shows all three in a ::: code-group. Inherently WASM / C++ APIs, such as the realtime engine or the AudioWorklet bridge, point to the batch alternative instead of implying that Python and the CLI have the same live callback API.
Reference
Implementation checklist
Before implementing from a task page, check these points.
| Check | Where to look | How to decide |
|---|---|---|
| Whether your input is a file, encoded bytes, decoded samples, or live blocks | The page's "when to use" / "which API" section | Browser / WASM usually takes Float32Array plus sampleRate; use Audio.fromMemory* or browser codecs for encoded bytes. Python / CLI often read files directly. |
| Which runtime calls the workflow | The Browser / Python / CLI examples in ::: code-group blocks | When all three are shown, compare API names, argument names, and result shapes before porting code. |
| Whether the terminology is clear enough for UI copy or implementation comments | Inline ::: tip / ::: info / ::: warning / ::: details blocks and the Glossary | Terms that affect implementation decisions stay close to the code; longer background belongs in callouts or glossary pages. |
| Whether a runtime gap exists | Binding Parity and the runtime references | If a task page does not show an example for a runtime, the API may be unavailable there or the runtime may be the wrong fit. |
The four layers
| Layer | What it means | Pages |
|---|---|---|
| Concepts | What samples, decibels, BPM, key, STFT, chroma, LUFS, true peak, and related terms mean | Introduction, Audio Basics, Glossary |
| Tasks | What you want to build, in the ten subject areas above | Feature Map, the area guides from Music Analysis to Playback Renderer |
| Runtime | Where the code runs: browser, Python, Node, CLI, C++ | Getting Started, runtime references |
| Evidence | How the implementation is structured and validated | DSP Implementation Notes, Algorithm References, Implementation Validation |
Most users need only the first three. Open the evidence pages when you need to expose DSP controls in a UI, explain a render report, check whether a processor is appropriate for realtime use, or cite the basis for an algorithm.