Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
up vote 7 down vote accepted

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.

share|improve this answer
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. – TacB0sS Sep 20 '12 at 22:16
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: 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 – entropy Feb 26 '13 at 12:48
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. – TacB0sS Aug 11 '13 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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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