I want a relatively easy to implement but relatively reliable algorithm for detecting beat locations in an audio file.What I am aiming to do is get the location of the closest beat to a particular time instant i.e if given current playtime, how can I get the location of next beat.Does anyone know of any algorithms that could help me solve this problem?
-
1$\begingroup$ Some questions: Beat or not onsets? Do you want this to be online/causal or do you have access to the entire audio file? $\endgroup$– pichenettesNov 22, 2013 at 11:01
-
$\begingroup$ I want the actual beat locations not just onsets and I don't need it be online because I have the entire audio file. $\endgroup$– KillaKemNov 22, 2013 at 13:59
-
$\begingroup$ There are several algorithms implemented in aubio.org, but I agree it would be nice to have a simple one explained if someone wanted to take the time to do that here. $\endgroup$– Bjorn RocheNov 22, 2013 at 16:38
-
$\begingroup$ Check "Beat Tracking by Dynamic Programming" by Dan Ellis. There are better algorithms - but it is quite simple and requires few parameter adjustments. With a few tweaks to the tempo detection function (while keeping the same dynamic programming format) you get close to the performance of the algorithm implemented in Sonic Visualizer. Aubio's beat tracker is designed to be causal so it is not as good. $\endgroup$– pichenettesNov 23, 2013 at 8:39
3 Answers
The matlab codes that implemented D. Ellis's algorithm are on their website:
I have implemented BeatRoot by Simon Dixon and found it to be a simple yet efficient beat detector. I believe that there is sample Java code on the Web to demonstrate his algorithm.
Essentia C++/Python library provides several beat tracking algorithms:
http://essentia.upf.edu/documentation/reference/std_RhythmExtractor2013.html
This is the algorithm publish in: J.R. Zapata, M. Davies and E. Gómez, "Multi-feature beat tracker," IEEE/ACM Transactions on Audio, Speech and Language Processing. 22(4), pp. 816-825, 2014. http://dx.doi.org/10.1109/TASLP.2014.2305252
The Matlab implementation of the multifeature beat tracker is: https://github.com/JoseRZapata/MultiFeatureBeatTracking