Steve (@smokris) I must say the beat detector in Vuo is by far the best I've encountered! But is it possible to shed a bit of light on it? Does it look at peaks all over, or is it singeling out part of the audio spectrum? I've also noticed that if I reset it, it will lock on the beat as soon as it has enough data, but if I change the tempo (maybe at an extreme like 100 <-> 140) it doesn't seem to want to change to the new tempo without resetting. At least within a reasonable time frame for a song. Is there any way to get around this?

Comments

It looks at peaks all over.

jstrecker's picture
Submitted by

It looks at peaks all over. Basically, it splits the spectrum into a bunch of ranges, and looks for amplitude spikes in each range. It filters out the spikes that are unlikely to be rhythmic, and it uses the time difference between those that remain to adjust the reported BPM. More detail at https://github.com/cjcliffe/beatdetektor/blob/master/cpp/BeatDetektor.h#L36.

Once the algorithm has settled on a BPM, it naturally stays near that BPM (since the algorithm is designed to classify spikes that aren't near beats as being non-rhythmic). So it should be good for tracking the minor fluctuations when people play music without a metronome, but it wouldn't work well for intentional accelerando/rallentando.

If you change the Tempo Range port's value, it deletes and recreates the BeatDetektor instance, which should be equivalent to using the Reset port.