Since I didn’t find a similar tool for Linux, I’ve hacked together a tiny tool to do BPM counting. The usual stuff: tap any key with the music to get a BPM estimation. There is no music analysis done.

Screenshot of BPM Tap Toy

To achieve better results, my tool uses an exponentially weighted average. It also computes a confidence interval. So if the song changes tempo (and quite some jazz songs do) or doesn’t keep the tempo constantly (live music with human drummers often shows some tempo drift. It’s just the drum computers that keep their speed very well…) - the tool can handle that quite well, while also not being overly sensitive to tapping errors (as you can see in the image).

I figure there might be even better estimation tricks (e.g. doing some error detection and removing them), but this one was just very simple to implement. And by looking at the graph and the error interval it’s quite easy to check that you didn’t any recent mistakes and the result is okay.

The Python code is about 158 lines SLOC, and a small UI description generated with Glade. It’s built with PyGTK and uses Cairo for the plots, so it should be very platform independant and even run on Windows.

Download will be available sometime when I get around to clean it up a little. There is for example still the code in there to compute plain averages, which can’t handle songs with multiple tempos at all.

[Update: it now also has a tiny ‘flasher’ icon that will show you the current tempo estimation. This is great for checking the quality of the result - if it keeps on flashing in sync with the music after you’ve stopped tapping, it’s good. I was also pointed to GNU GTick which is a full featured metronome application and also has a tap button.]