Rhythm Extractor
I am looking to have someone create a relatively-straightforward audio plug-in (64-bit Windows, preferably Mac-compatible as well) that simply mirrors the functionality of the RhythmExtractor2013 algorithm from the Essentia C++ library. If you are able to use that library, then all the hard work should be done for you and it would only be a simple matter of formatting the output to that of an audio plug-in.
- The plug-in will accept 1 audio input, same as the RhythmExtractor2013 function.
- The values derived for
confidence
andbpm
will be streamed out as audio signals from audio outputs 1 and 2 respectively. Meaning, signals steady at those values, changing only when those values change (yes, it won't be very nice to listen to, but that's not what they will be used for). - If there is no audio input (
== 0.0
or very close to it) both outputs should stream an arbitrary default value of-9.0
. - All 5 of the Outputs mentioned in the RhythmExtractor2013 reference will need to be displayed on the UI.
confidence
andbpm
will need to be applied to and associated with named parameters in the plug-in. I will need clarification on the exact format all of the Outputs are given in, but it looks liketicks
,estimates
andbpmIntervals
are lists and would not need parameter associations.- All 3 of the Parameters mentioned in the reference should also be user-selectable settings on the UI, as well as named parameters.
- An option to have the
bpm
undergo a quick conversion before it's applied to the output signal or parameter. When enabled, the conversion would be from beats per minute to a beat interval in milliseconds (e.g. 60 would be converted to 1000, 120 to 500). - The UI can be as bare-bones as possible. This is really more of a prototyping tool at this point than a salable product.
- Although I will want the plug-in to work in any ordinary DAW, I will actually primarily be utilizing it via the
vst~
object in Max/MSP, so I will need to make sure it's functioning as expected there.
That should really be it. If you see any problems with what I'm suggesting, please let me know! Otherwise I think it should be pretty simple.
All code will need to be clean, organized and very well-commented. Please contact me if you have any questions or would like clarification about anything! If you see a better way to do something than what I'm suggesting, please bring it up!
There is no specific deadline, as long as we stay in constant communication about the progress of the project.