I have a project with a requirement to programmatically get a BPM wave or MP3 file using .Net (VB.Net or C #).
Does anyone know of a binary or library for this, or has a piece of code to guide me in the right direction?
Here is a commercial product with a C # library. A trial version is also available: http://adionsoft.net/bpm/
For the part where you get samples from WAV or MP3 in .NET code, I use NAudio (in CodePlex), free, suitable for use in commercial applications, without real documentation, just sample code.
First, if you want to make sound with .Net, I would recommend fmod, which is awesome and has a .Net wrapper (http://www.fmod.org).Then, to get BPM, there are several methods, but I think the most effective is the "beat spectrum" (described here: http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm ).This algorithm computes a similarity matrix by comparing each short sample of music with everyone else. When the similarity matrix is โโcalculated, one can obtain the average similarity between each sample of pairs {S (T); S (T + 1)} for each time interval T: this is the impact spectrum. The first high peak in the rhythm spectrum is most of the beat time. The best part is you can also do things like musical structure or rhythm analysis.If you are interested in this area, I would suggest reading other works by Jonathan Foote.