Feature Map
This page is the top-level map of libsonare. Start here when you know the task you want to solve but do not yet know which runtime, API page, or implementation note to open.
If this is your first time using libsonare, read Learning Path first. This page is a map of the full surface area, so it is broader than a first tutorial.
What You Will Learn
By the end of this page you should be able to:
- locate a feature family without scanning every API reference;
- choose the runtime page that matches browser, Python, Node native, CLI, C++, or C ABI work;
- tell whether a topic belongs in task guides, API references, or implementation/evidence pages;
- use the source files listed here as the final authority when the public surface needs verification.
How To Use This Map
This page is not a list to memorize. Choose one task, then follow that row to the right runtime and guide.
Runtime, API, and binding
Runtime means where the code runs: browser, Python, CLI, Node, or C++. API means the functions and classes you call. Binding means the layer that lets another language call the same C++ core. If you are unsure, choose one runtime first and read only that runtime's API page.
| If you need to... | Read... |
|---|---|
| Find whether a feature exists | Feature Families |
| Choose an API surface | Runtime Entry Points and Binding Parity |
| Understand DSP behavior and limits | DSP Implementation Notes |
| Check algorithm or paper basis | Algorithm References |
| Check test coverage and validation status | Implementation Validation |
Runtime Entry Points
| Runtime | Package or headers | Main docs |
|---|---|---|
| Browser / Node WASM | @libraz/libsonare plus worklet subpaths | WASM, JavaScript API |
| Python / CLI | pip install libsonare | Python API, CLI |
| Node native | @libraz/libsonare-native source build | Native Bindings |
| C++ | sonare.h, module headers | C++ API |
| C ABI | sonare_c.h plus module headers such as sonare_c_acoustic.h | C++ API, Binding Parity |
Feature Families
Acronyms in the feature table
- STFT — short-time Fourier transform, the basis of spectrograms.
- MFCC — compact timbre features often used for ML and classification.
- CQT / VQT — frequency transforms aligned with musical pitch spacing.
- NNLS / NMF — matrix-factorization methods that split audio features into non-negative parts.
- PLP — a feature that estimates the main rhythmic pulse.
- LUFS / LRA — loudness and loudness-range metrics.
- VCA — a group control that moves several strip levels together.
- RIR — room impulse response.
- Equivalent-room estimation — fitting a practical room model from audio.
- Room morphing — applying a target-room character as an effect.
| Family | What is covered | Main pages |
|---|---|---|
| Analysis | BPM, key, key candidates, beats, downbeats, onsets, chords, sections, melody, timbre, dynamics, rhythm, acoustic analysis | JavaScript API, Python API, C++ API |
| Features | STFT, mel, MFCC, chroma, spectral contrast/poly features, zero crossings, pitch and tuning, CQT/VQT, NNLS chroma, NMF decomposition, nearest-neighbor filtering, tempogram, Fourier tempogram, cyclic tempogram, PLP, LUFS/LRA | JavaScript API, librosa Compatibility |
| Metering | Offline level, loudness, crest-factor, true-peak and DC-offset meters; clipping and dynamic-range reports; stereo correlation/width; vectorscope, phase-scope, and spectrum snapshots | JavaScript API, Python API, Native Bindings |
| Scale quantization | Snap MIDI notes to a scale, measure the correction in semitones, and test pitch-class membership | JavaScript API, Python API |
| Effects and editing | HPSS, HPSS with residual, harmonic/percussive extraction, normalize, trim, remix, phase vocoder, time stretch, pitch shift, pitch correction, note stretch, region-based spectral editing, voice pitch/formant change, realtime voice presets | Editing DSP, Spectral Editing, JavaScript API |
| Room acoustics | Impulse-response reverberation time (RT60 / EDT), clarity (C50 / C80), definition (D50), blind acoustic estimation, equivalent-room estimation, geometric RIR synthesis, and creative room morphing | Room Acoustics, JavaScript API, Python API |
| Mixing | Channel strips, buses, sends, VCA groups, scene presets, automation, stereo/dual/surround pan metadata, meters, goniometer, offline rendering | Mixing Engine, Mixing Scene JSON |
| Mastering assistant | Source audio profile, chain suggestion JSON, streaming-platform preview JSON | Mastering Assistant |
| Mastering | Presets, full chains, named processors, processor catalog metadata, insert parameter metadata, pair processors, pair analyses, stereo analyses, streaming mastering chain | Mastering Processors, DSP Implementation Notes, Algorithm References, Mastering Implementation |
| Streaming MIR | Live mel/chroma/onset frames, progressive BPM/key/chord estimates, chord progression and pattern scores | Realtime and Streaming, WASM |
| Realtime engine | Transport, tempo, structured markers, metronome, automation lanes, graph topology, clips, MIDI clip schedule, per-track lane mixer (lanes, buses, sends, channel strips, pan, insert parameters), capture, monitor bus, stereo/wide meter telemetry, scope telemetry and Worklet scope rings, bounce/freeze | Realtime and Streaming |
| Projects & arrangement | Audio/MIDI tracks and clips, undo/redo, takes/comping, warp, MIDI sequencing, SMF and MIDI 2.0 Clip File (SMF2CLIP) import/export, JSON save/load, and offline bounce | Project Editing, Project Bounce, Recording and Takes, Realtime and Streaming |
| Instruments & MIDI | Multi-engine synth with a GM fallback bank, GS-compatible SoundFont 2 player, and live MIDI playback | Built-in Instruments, SoundFont 2 Player, MIDI Input |
| Inverse features | Mel to STFT/audio, MFCC to mel/audio | Inverse Features |
| Utility / librosa parity | Frame/sample/time conversions, dB conversion, pre/de-emphasis, silence trim/split, frame/pad/fix helpers, peak pick, vector normalize, PCEN, tonnetz | librosa Compatibility |
Implementation And Evidence Pages
| Page | Role |
|---|---|
| Mastering Processors | Public registry of preset names, processor IDs, pair processors, pair analyses, and stereo analyses |
| DSP Implementation Notes | What each DSP family does internally, including real-time boundaries and shared building blocks |
| Algorithm References | Standards, papers, algorithm families, and compatibility references that are visible in source, tests, or README |
| Implementation Validation | Test and validation map for feature groups, including librosa reference checks and real-time safety notes |
WASM Export Families
The main @libraz/libsonare TypeScript wrapper exports several groups:
| Group | Examples |
|---|---|
| Initialization | init, isInitialized, version |
| Engine capabilities | engineAbiVersion, projectAbiVersion, voiceChangerAbiVersion, engineCapabilities |
| Audio work | High-level analysis, effects/editing, mastering, mixing, feature extraction, inverse features, conversion helpers |
| Object APIs | Audio, StreamAnalyzer, StreamingMasteringChain, StreamingEqualizer, StreamingRetune, RealtimeVoiceChanger, Mixer, RealtimeEngine |
The same npm package also exports @libraz/libsonare/worklet for the AudioWorklet bridge, @libraz/libsonare/rt for the reduced sonare-rt realtime module factory, and raw WASM asset subpaths (@libraz/libsonare/wasm, @libraz/libsonare/rt-wasm) for bundlers or custom loaders.
The complete function list is maintained in bindings/wasm/src/index.ts in the libsonare repository and mirrored in JavaScript API. When in doubt, use the wrapper source as the most specific reference for the WASM export surface.
CLI Command Families
The Python CLI covers the common user-facing commands:
- version/info and core analysis;
- feature summaries and LUFS;
- file-writing editing commands such as
pitch-correct,note-stretch, andvoice-change; - acoustic/rhythm/dynamics/timbre summaries;
- equivalent-room estimation, RIR synthesis, and room morphing;
- mastering processor entry points and simple mixing.
The source-built C++ CLI exposes a broader lower-level command set. Use it for section/melody/boundary utilities, CQT/tonnetz/PCEN/Fourier tempogram helpers, extra time/pitch file-processing commands, mastering pair/stereo lists, and mixing scene preset export.
See CLI for command examples and Binding Parity for runtime differences.