A Simplified yet Effective Tempo Estimation Algorithm

Ground truth

Collections are stored as

filename   \t (tab)   ground_truth_bpm  \n (newline)
spaces and parenthetical remarks added for visual clarity; the actual files contain no spaces before or after the tab or newline. Some filenames contain spaces.

* indicates a dataset with modifications from its previously-published version. Diffs are provided to see the precise changes.

Dataset Collection file Diff (if applicable) Audio files
ACM MIRUM* acm_mirum_tempos.mf acm_mirum_changed.diff acm_miurm_tempo.tar
BALLROOM* ballroom_tempos.mf ballroom_changed.diff audio dataset
GTZAN GENRES* genres_tempos.mf genres_changed.diff audio dataset
HAINSWORTH hains_tempos.mf hainsworth.zip
ISMIR04_SONGS ismir2004_songs_tempos.mf audio dataset ("beat tracking dataset")
SMC_MIRUM smc_mirum_tempos audio dataset

Sample tempo estimation

Sample file: Media-103416.wav (from the BALLROOM collection).

Reference output: tempo-intermediate-data-Media-103416.tar.bz

See Figures 1, 2, 3, and 6 of the paper for details. The data in the reference output comes from each of the "example of data" boxes in those figures, and spans the entire algorithm.

Implementations

C++ version: in Marsyas source code github link, requires full Marsyas libraries. In 2013 and 2014, the build system and Marsyas infrastructure received heavy changes, so the online documentation may not match the version you are trying to compile. Don't hesitate to ask if you suspect a version mismatch, or any problems compiling Marsyas in general!

Stand-alone versions: python, MATLAB, and evaluation scripts. If in doubt, we recommend that you investigate this code, as it does not require compiling Marsyas. However, this code is significantly slower than Marsyas. tempo-stem-standalone.tar.bz2