Tool for calculating BPM - want to test it?

I like to tag my MP3s with BPM values so that it is easier to find songs for adding to the ‘workout’ playlist.

The automated tools I’ve used in the past didn’t always get it right. I know there are other tools out there for doing this, but figured it might be fun to do in Javascript since I’d been doing some other work with event listeners and figured it would be easy to do.

I cleaned it up a little and added some graphics using the vector graphics canvas functionality.

It should work in Firefox 1.5+, Safari, Opera, IE6+.

I don’t think it works in Konqueror … as I don’t think Konq. supports ‘canvas’. (At least it didn’t in the version I tested, don’t know about the most recent builds.)

I’m guessing browsers based on the above supported ones will work as well.

IE doesn’t natively support the canvas element - so I’m using the Google excanvas library to convert the canvas drawing commands to MS VML.

If anyone wants to take a look and let me know what your experience with it is, I’d appreciate it. It’s not like this is a product or anything, but it will be good to know for future stuff that might use some of the same functionality.


I’ll give it a go & get back to ya!

Looks great, though I haven’t verified the accuracy of it yet.

I was looking for just such a tool last week. Luckily I (accidentally) discovered I already one in a little (Mac) app called MetroGnome. It’s amazing how much the beat can vary between each tap (MetroGnome uses a mouse-click tapper). The problem is that the number is changing so rapidly (especially when working around 180-210bpm) that I find myself struggling to mentally average out what I’m seeing. I wished it would calculate the average over a wider range so I’m glad to see your script does just that. And the discard high/low error-checking is just a small snippet of genius.

Just one error in your explanatory text:
BPM*2 — Shows the value of the BPM divided by two, in case you are tapping on every other beat.

I think you mean “multiplied” for this one.


EDIT: Okay, I’ve managed to put it through its paces now - very impressive. It was mostly within one beat of the metronome I was using to count with and that one beat discrepancy is easily explained by my ability to tap exactly in time.


Ok, sorry for yelling, but this thing is right on the money. I tried out a few songs that I had recorded myself, so I knew the exact BPM, and it worked perfect! Well, as soon as I could get the spacebar tapping in-sync with my song. For some reason my coordination decided to fart out when doing this test. But, it only took about one and a half minutes before it determined the exact BPM of my songs.

Very, very good. Nice interface, too.

Correct. Good eye. Fixed.

At very high BPMs, it gets hard to even keep up. That’s why I put the “*2” mode in. That way, you can click on every other beat. (Though, you reduce the effective resolution - ie, you’ll never get an odd numbered BPM in the *2 box.)

Guitar87: Thanks, glad you like it.