I'm completely new to this field.

Perhaps I'm calling it by a wrong name, but I want to analyze an audio track and retrieve a timestamp to beat mapping.

Is there an open source 3rd party library that can perform this, or could/should I do it myself?


2 Answers 2


Sonic Annotator. Good: their beat tracking algorithm is the most sophisticated. Bad: this is not easy to integrate and interface into your own application (you need to load their own flavor of plug-ins called "VAMP"); and the beat tracker is closed source - available as a pre-compiled binary lib.

Aubio. Good: very easy to integrate, plain C with few dependencies. Bad: the quality of the beat-tracking is so-so.

Marsyas. Good: beat-tracking accuracy is OK (but not as good as Sonic Annotator's). Bad: many dependencies, very complex framework.

Depending on what is your target application (is the audio to analyze a recording of a well-known/distributed song, and does your system have internet access), you could also use the Echo Nest APIs.

If you want to roll your own, I suggest you this as a starting point - start porting this rather simple matlab implementation to your language of choice, and you'll be at 80% or 90% of the accuracy of the most sophisticated solution.

  • $\begingroup$ Thanks, but this seem like a very big overhead for a POC application... I would have to consider something else for the time... I would get back to this later on... Thanks again. $\endgroup$
    – TacB0sS
    Sep 20, 2012 at 22:16
  • 1
    $\begingroup$ Great answer, I'm in fact working on a causal beat-tracker that works similarly to the one in Marsyas but is very much simplified(something like 400 lines of python total, no dependencies other than numpy/scipy). But just wanted to say that you missed one: code.soundsoftware.ac.uk/projects/beatroot it was actually the winner at the 2006 MIREX thing which most later beat tracking projects use samples from to measure their performance. It's in java and it has a GUI for showing the beat positions with the sound wave and can provide a good starting point $\endgroup$
    – entropy
    Feb 26, 2013 at 12:48
  • $\begingroup$ The main issue I've encountered implementing this, which caused me to drop this at least for the near future is the fact that I needed this to work on Android... and building and exporting any of these libraries, just seemed too much. $\endgroup$
    – TacB0sS
    Aug 11, 2013 at 8:59

You can also try Essentia. It provides several beat tracker methods, which are more-or-less state of the art. Technically portable to android also, although it has not been done yet.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.