A free, runnable curriculum for teaching machines to listen to music
Jupyter notebooks that turn music-information-retrieval theory into executable Python, from Fourier transforms to beat tracking.

What it does This repo is a structured course in Music Information Retrieval (MIR) delivered as Jupyter notebooks. Each chapter covers a slice of audio analysis—signal representations, feature extraction, rhythm detection, machine learning for genre classification, even audio fingerprinting—with runnable Python snippets inside. The notebooks launch on Binder, so you don’t wrestle with local dependencies to get a spectrogram.
The interesting bit
The breadth is unusual for a free resource: it threads the needle from “what is a zero-crossing rate?” up to NMF audio mosaicing and harmonic-percussive source separation, with evaluation via mir_eval and exercises scattered throughout. It’s essentially the missing lab manual for the textbook Fundamentals of Music Processing.
Key highlights
- 40+ notebooks across 11 topic areas, from Python/NumPy basics to DTW and neural networks
- One-click execution via Binder; no install ritual required
- Covers both symbolic (MIDI, sheet music) and audio representations
- Includes practical evaluation metrics and hands-on exercises (e.g., instrument classification with K-Means)
- Maintained by active MIR researchers at Cambridge and Queen Mary
Caveats
- The “Just For Fun” section is thin (two notebooks), and some advanced topics like music structure analysis only have a single MFCC notebook so far
- README is a flat table of contents; you have to click into Binder or clone to see what the code actually looks like
Verdict Ideal if you’re a student, researcher, or curious developer who learns by tweaking parameters and hearing results. Skip it if you want a polished SaaS API or a shallow quick-start; this is a textbook in notebook form.