Skip to content

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
  1. Introduction for vocabulary and the overall audio-analysis pipeline.
  2. Audio Basics for samples, sample rate, decibels (dBFS, RMS, LUFS), frequency and harmonics, and stereo, if any of those are new to you.
  3. MIR Overview for how spectrograms, chroma, onsets, and the analysis results build on one another.
  4. This page, to find the subject area your goal belongs to.
  5. Getting Started, Installation, and Examples to run one small program.
  6. Feature Map to find the right API family.
  7. One walkthrough from Use Cases when what you want is a finished deliverable rather than an integration.
  8. 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.
  9. One runtime reference from API By Runtime.
  10. 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:

STFT · SPECTRALIDLE
STFT — seeing time and frequency at once

A tone gliding from 400 Hz to 1 kHz, with four clicks. Each column is one short-time spectrum; brighter means more energy. Change nFft: at 256 the clicks are thin lines and the tone is a band about 170 Hz wide; at 4096 the tone is a line about 20 Hz wide and each click smears across about 280 ms.

nFft (window)
I want to build...Read firstThen read
A browser app that shows BPM, key, chords, or sectionsGetting StartedMusic Analysis, WebAssembly Guide
A Python script or notebook for audio analysisGetting StartedPython API, Music Analysis
A terminal workflow for quick checks or batch analysisGetting StartedCLI Reference, CLI Commands
Song structure, self-similarity, or note-segmentation analysisMusic AnalysisJavaScript API, Python API
Bars and time signatures scored over a beat series you already haveMusic AnalysisMeter and Grouping
A migration from librosalibrosa CompatibilityMusic Analysis
A librosa figure (frame and sample conversion, decibels, peak picking) checked against the engine from a shellCLI Utilitieslibrosa Compatibility
A source-separation view that keeps the harmonic and percussive paths available for editingSource SeparationMusic 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 firstThen read
A choice between a physical model, FM, subtractive synthesis, and a SoundFont you bringSound SourcesBuilt-in Synthesizer, Physical Models
A synth or instrument app that renders MIDI to audioBuilt-in SynthesizerMIDI Input, Realtime and Streaming
A MIDI clip editor or sequencer with MIDI 1.0 and MIDI 2.0 eventsMIDI EditingMIDI 2.0 & UMP, Project MIDI
The acoustic voices (piano, bowed string, reed, brass, flute) heard side by side or voiced from codePhysical ModelsBuilt-in Synthesizer
A lookup of which engine and voicing a General MIDI program falls back to when no SoundFont covers itGM Tone MapGM and GS
SoundFont (SF2) playback through a built-in playerSoundFont 2 PlayerGM and GS, MIDI Input
A C++ app that needs the instruments only, without analysis or masteringLink targetsBuilt-in Synthesizer, SoundFont 2 Player

Mixing ​

I want to build...Read firstThen read
A browser or native mixerMixing EngineMixing Scene JSON
A browser mixing app, read from a working demo's sourceBuild a Browser MixerMixing Engine, Mixing Demo Project JSON
A starting mix proposed from the tracks themselves, with a reason for every moveMixing AssistantMixing Scene JSON, Mixing Engine
Reverb, modulation, or delay on a strip or a busEffects InsertsMixing Scene JSON
Insert controls drawn from the engine's own parameter descriptors instead of a hand-kept tableBuild Controls from Parameter DescriptorsEffects Inserts, Realtime Engine
A talk episode with the music ducked under the voices, delivered at a loudness targetProduce a Spoken-Word ShowMixing Engine, CLI Reference

Mastering ​

I want to build...Read firstThen read
A mastering UI or automatic mastering workflowMastering AssistantMastering Processors
A finished master from a folder of stems, in the terminalMix and Master in the CLICLI Reference, Mastering Processors
A mix brought into the tonal and loudness range of a reference trackMatch a Reference TrackMastering Assistant
A pass/fail check on a master before delivery, run in CIGate a Delivery in CICLI Reference
A UI wired to the mastering chain's own controls, or a render report you have to explainMastering ImplementationMastering Processors, Build Controls from Parameter Descriptors

Editing ​

I want to build...Read firstThen read
Pitch, time, voice, or source-separation editingEditing DSPJavaScript API
Audio transcription, clip replacement, and tempo-aware MIDI placementAudio to MIDIMIDI Editing, Project MIDI
A piano recording turned into a MIDI file and checked against the scoreTurn a Piano Recording into MIDIAudio to MIDI
Note-level edits that render back into an audio clipNote Editing in AudioEditing DSP
Region-based spectral edits (attenuate, mute, gain, or heal a time-frequency rectangle)Spectral EditingEditing DSP
Slowed, transposed, and separated practice tracks of a songBuild Practice TracksEditing DSP, Source Separation
A recorded take tuned to the melody in a MIDI file, from the shellCLI UtilitiesProject 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 firstThen read
A repair workflow that chooses stages from measured defectsAudio Repair WorkflowRepairing 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 eachClean Up a Batch of RecordingsAudio Repair Workflow

Arrangement & Projects ​

I want to build...Read firstThen read
A DAW, arrangement, or MIDI-sequencing toolProject EditingProject MIDI, Bouncing Projects
A sung take corrected note by note (pitch, formant, level) with undo, and the result placed in a projectVocal EditingTune a Vocal Take
A project saved to a file and opened againProject Save & LoadProject Editing
Microphone capture, loop takes, and comping into a clipRecording & TakesProject Editing
A project rendered to audio, with or without the built-in synthBouncing ProjectsBuilt-in Synthesizer, SoundFont 2 Player

Realtime ​

I want to build...Read firstThen read
A live visualizer, rhythm game helper, or AudioWorklet toolRealtime and StreamingWebAssembly Guide
Transport, track lanes, live MIDI, and automation in a playback engineRealtime EngineRealtime and Streaming
A realtime microphone voice changerRealtime Voice ChangerWebAssembly Guide

Room Acoustics ​

I want to build...Read firstThen read
Room sound, estimates, or generated room characterRoom AcousticsJavaScript API, Python API
Inverting mel/MFCC features for previews or debuggingInverse Featureslibrosa Compatibility

Playback ​

I want to build...Read firstThen read
Movie audio rendered to binaural headphones or to calibrated stereo, 5.1, or 7.1 speakersPlayback RendererChannel Formats
A check of how each module treats mono, stereo, 5.1, and 7.1 inputChannel FormatsPlayback 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.

CheckWhere to lookHow to decide
Whether your input is a file, encoded bytes, decoded samples, or live blocksThe page's "when to use" / "which API" sectionBrowser / 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 workflowThe Browser / Python / CLI examples in ::: code-group blocksWhen 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 commentsInline ::: tip / ::: info / ::: warning / ::: details blocks and the GlossaryTerms that affect implementation decisions stay close to the code; longer background belongs in callouts or glossary pages.
Whether a runtime gap existsBinding Parity and the runtime referencesIf 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 ​

LayerWhat it meansPages
ConceptsWhat samples, decibels, BPM, key, STFT, chroma, LUFS, true peak, and related terms meanIntroduction, Audio Basics, Glossary
TasksWhat you want to build, in the ten subject areas aboveFeature Map, the area guides from Music Analysis to Playback Renderer
RuntimeWhere the code runs: browser, Python, Node, CLI, C++Getting Started, runtime references
EvidenceHow the implementation is structured and validatedDSP 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.