← all repositories
CPJKU/madmom

A Python library that actually knows where the beat drops

Reference implementations of MIR algorithms, battle-tested by Austrian audio researchers since 2016.

1.7k stars Python Domain AppsData Tooling
madmom
Velocity · 7d
+0.4
★ / day
Trend
steady
star history

What it does

Madmom is a Python audio signal processing library with a narrow but deep focus: music information retrieval (MIR). It handles the low-level grunt work—audio file I/O, STFT, feature extraction—then climbs the ladder to onsets, beat tracking, and downbeat detection. The package ships with executable programs like DBNBeatTracker that run in single-file, batch, or even live online mode if you wire up PyAudio.

The interesting bit

This isn’t a loose collection of utilities. It’s the internal toolkit of two Austrian research labs (JKU Linz and OFAI Vienna), and the README is essentially a bibliography with code attached—every major feature traces back to a published paper, often by Sebastian Böck and collaborators. The models are pre-trained, the references are explicit, and the whole thing is structured so you can reproduce experiments via pickle mode.

Key highlights

  • Reference implementations of beat tracking, onset detection, and tempo estimation algorithms from published ISMIR/ICASSP papers
  • Cython-accelerated core with NumPy/SciPy foundations
  • Pre-trained models included via Git submodule; installable via pip with all dependencies
  • Live online processing mode for real-time applications
  • Dual licensing: BSD for code, CC BY-NC-SA 4.0 for model/data files

Caveats

  • The non-commercial license on model files means you’ll need to contact Gerhard Widmer for commercial use
  • Python 2.7 is still listed as supported alongside 3.5+, which may signal maintenance lag
  • avconv on Ubuntu is explicitly warned against for audio decoding; ffmpeg is required for non-44.1kHz/16-bit WAV files

Verdict

Researchers and hobbyists building beat-aware applications should grab this. If you need commercial-ready licensing out of the box or general-purpose audio processing beyond MIR, look elsewhere.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.