Skip to content

C++17 audio analysis library for music information retrieval. WASM-ready, Eigen3-based signal processing.

License

Notifications You must be signed in to change notification settings

libraz/libsonare

Repository files navigation

libsonare

CI codecov License C++17 Platform

librosa-like audio analysis for C++ and browsers. Fast, dependency-free, runs anywhere.

Use Cases

  • Love librosa, need native speed? → C++ with Eigen3 vectorization
  • Audio analysis in the browser? → WebAssembly build (262KB)
  • Building a music app? → BPM, key, chords, beats, sections in one library

Quick Start

JavaScript / TypeScript

npm install @libraz/sonare  # Coming soon (currently in beta)
import { Sonare } from '@libraz/sonare';

const sonare = await Sonare.create();
const bpm = sonare.detectBpm(samples, sampleRate);
const key = sonare.detectKey(samples, sampleRate);  // { root: "C", mode: "Major" }
const beats = sonare.detectBeats(samples, sampleRate);

C++

#include <sonare/sonare.h>

auto audio = sonare::Audio::from_file("music.mp3");
float bpm = sonare::quick::detect_bpm(audio.data(), audio.size(), audio.sample_rate());
auto key = sonare::quick::detect_key(audio.data(), audio.size(), audio.sample_rate());

Features

Analysis DSP Effects
BPM / Tempo STFT / iSTFT HPSS
Key Detection Mel Spectrogram Time Stretch
Beat Tracking MFCC Pitch Shift
Chord Recognition Chroma Normalize
Section Detection CQT / VQT

librosa Compatibility

libsonare implements librosa-compatible algorithms with identical default parameters. Migration is straightforward.

# librosa
S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128, fmax=8000)
// libsonare
auto mel = sonare::MelSpectrogram(sr, 2048, 512, 128, 0, 8000);
auto S = mel.compute(audio);

See librosa Compatibility Guide for details.

Build

# Native
make build && make test

# WebAssembly (requires: source /path/to/emsdk/emsdk_env.sh)
make wasm

Documentation

License

Apache-2.0

About

C++17 audio analysis library for music information retrieval. WASM-ready, Eigen3-based signal processing.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages