@audio/mir

July 10, 2026 · View on GitHub

Music information retrieval — chroma, chord, key, and MIREX-parity analysis atoms.

Atoms

PackageStatusWhat
@audio/mir-chroma12-bin pitch-class profile — PCP and NNLS methods
@audio/mir-chordChord detection — 24 binary templates + Viterbi smoothing
@audio/mir-keyKey detection — Krumhansl-Schmuckler profiles
@audio/mir-tempogramLocal tempo over time — autocorrelated onset envelope
@audio/mir-tonnetzTonal centroid features — chroma projected onto fifths/thirds circles
@audio/mir-structureStructural segmentation — Foote novelty on MFCC self-similarity
@audio/mir-downbeatDownbeat estimation
@audio/mir-melodyContinuous melody F0 contour — YIN per frame
@audio/mir-multif0Multiple simultaneous F0 — Klapuri iterative spectral subtraction
@audio/mir-fingerprintAudio fingerprinting — Shazam-class landmark hashing
@audio/mir-similarityAudio similarity metric
@audio/mir-transcribePolyphonic transcription
@audio/mir-drumsDrum transcription
@audio/mir-coversongCover song identification

ML-tier tasks (genre, mood, tags, stem separation) are deferred — they need hosted model weights, which conflicts with the no-ML-in-the-hot-path stance.

chroma/chord/key originated in pitch and were extracted here.

Usage

import { chroma, chord, key } from '@audio/mir'

let c = chroma(samples, { fs: 44100 })         // Float32Array[12]
let ch = chord(c)                              // 'C', 'Am', …
let k = key(c)                                 // { key: 'C major', scores: [...] }