Structure
- beat salad estimates global BPM, beat positions with downbeat inference, and local tempo segments. Uses autocorrelation with harmonic scoring and a gentle octave prior.
- key lime estimates global and local major or minor keys using dual chroma extraction (Goertzel + Constant-Q Transform), multiple key profiles (Krumhansl-Kessler, Temperley, EDMA, and learned), median aggregation, and confidence-gated segmentation.
- sampler platter generates compact min/max/RMS waveform columns.
The trailmix crate combines the three analyzers behind one PCM-in/results-out
API. File decoding is kept in the optional trailmix-codecs crate.
Supporting crates:
trailmix-cli: command-line analysis of individual files.trailmix-bench: machine-readable benchmark reports (MIREX-weighted key score, beat F1, Serato agreement, timing).trailmix-manifest: shared corpus annotation schema.trailmix-datasets: imports GiantSteps reference annotations.test-kitchen: loopback browser UI for playback, annotation, and on-demand analysis.