I need help to develop a command line tool which will take incoming WAV or MP3 sound files, perform average BPM detection, and average amplitude classification (from verySoft to veryLoud), and tag that data to the sound files in ID3 tags. I have started writing it in C++ but I'm open to ideas in Python, TCL, and Ruby. I have looked at using sound libraries such as FMOD (C++), Snack (TCL, Ptyhon) and Sox, but my C++ isn't good enough to get it done in time.
I need a barebones, skeleton implementation, nothing fancy, command-line driven or even as a header and implementation files that I can use to write my own program.
The hard bit is tempo (BPM) detection. An example of it using FMOD can be found here:
[url removed, login to view]
This example can be used as the starting point for the the tool, since FMOD does ID3 tagging also.
Using the library above, you would probably do the following:
First you create a bpm detection object using bpm_create:
void *bpmDetect = BPM_Create();
Then you have to add a dsp to fmod so that you can get the separate samples from the stream you are playing. (Some examples are included with fmod on how to do this)
Then for each sample, you add it to the bpm detect object:
Since you will usually have stereo input, you can either just pass either the left or the right sample, or you could take the average (l+r)/2
To get the bpm, you can use BPM_getParameter(bpmDetect, BPMFOUNDBPM)
To see how accurate the detection is, you can use the BPMNROFBEATS parameter.
Finally, at the end of your program, you can destroy the object using
What I need is a command-line tool which will wrap something like the above, and amplitude classification into ID3 tags in a batch process. I will work with the developer chosen .
6 freelancers are bidding on average $200 for this job
Although I have not used C/C++ in awhile. I would like the chance to work on this project. I would not dedicate my full time to it. As I have other obligations. Thank you for your time.