I need 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 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: BPM_AddSample(bpmDetect, sample); 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 BPM_Destroy(bpmDetect); 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. Approximate start date of the project after selecting a bid Immediate (within 1-2 days) Budget: Less than $250
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows? (depending on the nature? of the deliverables):
a)? For web sites or? other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software? installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
If code is written using FMOD, as exaplained in the project description, it will benefit from cross-platform code anyway. But on the whole, it needs to run on Windows first, then OSX, then Linux (order of priority).