Yumeko BPMFinder - My very own human-assisted BPM analyzer written in JavaScript!

Yumeko BPMFinder

On a previous post I discussed about the results of a Windows BPM finder program MixMeister BPM Analyzer. It sometimes produces values that are 2 times or half the seemingly actual value. And then the doubt grew on me, “Is that program even accurate at all?”. So, I was set to program my own BPM finder.

But I don’t know any sound programming stuffs, so I went for the easy path of a human-assisted program in which the algorithm is very intuitive. A human would tap the beats while playing a song and the program will do the simple mathematical calculation (it’s “beats per minute” for a thing, so it’s basically just a division).

First I went for C# (using Winforms for the GUI), my favorite programming language. But when I was about to make the Main function I abandoned the idea. It would just be too easy. I then decided to program using a language which is such a pain to use named JavaScript. (well, probably the real subconscious reason I picked JS is because then people could effortlessly run it)

It’s indeed such a pain. I couldn’t find a function that formats the integer 3 into a string “03″ and had to make my own function (I searched a PDF I have but realized that I could finish the task faster by coding manually). And don’t get me to talk about event handling in IE vs. FF. Anyway it’s an around 1+ hours hack (I’m still not familiar with JS and needed lots of searching, see?).

Features:

  • Cross platform! Run in Linux, Mac, and even Windows! (did I get that reversed somehow?)
  • Open source, free software, or whatever else you want to call it. GPL 2 (I won’t use GPL 3 until the rough bugs are ironed out and the first update comes).
  • Accurate, as long as you have a sense for beat. Oh, and btw you can use it to check whether you can sense beat correctly by comparing it with the output of automized programs!
  • Actually enjoy the songs while you calculate the BPM!

To try the program, just visit its page. It has a short and simple usage manual.

Oh, and here’s the result for some songs, compared with the output of MixMeister BPM Analyzer. Note that MixMeister BPM Analyzer actually computes to 2 decimal places also (as displayed in its GUI, but internally probably more), but when stored to the MP3 file the value gets rounded.

Essentially the same or very close

Title Yumeko BPMFinder MixMeister BPM Analyzer
Tsukiatteru no ni Kataomoi 160.82 160
AMBITIOUS! Yashinteki de Ii Jan 160.83 160
Koi no Nukegara 156.38 155
Shabondama 128.85 128
Shiroi Iro wa Koibito no Iro 102.58 101

Nice results. Either we’re both right or we’re both borking. I’m inclined to believe we’re both right :).

One of the values is (very close to) 2 times of the other

Title Yumeko BPMFinder MixMeister BPM Analyzer
Sakura Mankai 80.40 160
Gag 100kaibun Aishite Kudasai 165.75 82
Yuujou ~Kokoro no Busu ni wa Naranee!~ 208.76 104
Kiseki no Kaori Dance. 170.75 85

As I have explained on the previous post, a song in n BPM can be easily played on 2n BPM without any change on the speed of the notes, but still the beats will be different. On this area, my program wins hands down. (Sakura Mankai 160 BPM? WT*…) Actually this downside of MixMeister BPM Analyzer makes it useless for my “fast” MP3 iTunes smart playlist because many slow songs are included there.

Btw I’m quite surprised that MixMeister BPM Analyzer handled Yuujou well because the song has a slow intro before proceeding to the fast tempo used throughout the song. Does it ignore the small part that has a different tempo or does the rest of the song averages the value out?

Awfully different (not multiple of twos) values

None :).

Ending

Well, my program works and I’m quite happy for it :). That’s all… The source code isn’t awfully long and if you’re interested in JS feel free to download it.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Technorati
  • Slashdot
  • StumbleUpon
  • Sphinn
  • Facebook
  • Mixx
  • Google
  • TwitThis
  • Live

Tags: , , , , , , ,

5 Responses to “Yumeko BPMFinder - My very own human-assisted BPM analyzer written in JavaScript!”

  1. Tri Says:

    Well, it sound good. Unfortunately, right now the term ‘BPM’ is still sound strange for me.

  2. Agro Rachmatullah Says:

    Hmm. Do you remember the conductor on the choir of school’s monday assembly? She moves her hand, guiding those singing, in a rhythmic fashion right? (e.g. 1, 2, 3, 4, 1, 2, 3, 4, …)

    Every hand movement of that conductor is counted as a “beat”. BPM is just “beats per minute”.

  3. fauzan.sa Says:

    How could you do that?

    Share the algorithm please!!!

    In c-like or pascal-like ofcourse. Not that awful JScript. :D

  4. fauzan.sa Says:

    Oooh, my mistake.

    I thought you did sound programming.

  5. Agro Rachmatullah Says:

    Thanks for giving me a smile today, fauzan.sa :)

Leave a Reply