First time here? Check out the FAQ!
x

How do you do beat detection?

0 votes
973 views

I'm trying to pick up the BPM from a noisy but very distinct signal. Has anyone got any tips on how to do this?

I've tried using a bandpass filter followed by PeakDetector and a Threshold and been spending ages tweaking the Attack and Release of the PeakDetector and the Threshold level and Hysteresis of the Threshold Sound but I'm getting wildly erratic results.

Here's my Sound Flow:

And then in the two SoundToGlobalControllers I've got:

and

Here's a recording of the sound I'm trying to get the BPM from:

the sound file

I'm expecting result about 170 BPM, but I get results ranging from beat to beat of between 60 and 400 BPM.

Any idea? Thanks!

 

asked Oct 4, 2017 in Using Kyma by alan-jackson (Virtuoso) (15,840 points)

2 Answers

+1 vote

I think the shuffle the beat has is part of what the problem is. Looking at the spectrograph of the audio in Adobe Audition I can see a distinct rolloff in energy starting just below 4k.

Id try searching for a sound called EnergyAtFrequency and look for the slightly longer dips above 4k.

Doing just that at the moment ;)

answered Oct 4, 2017 by sean-flannery (Adept) (1,510 points)
Hi, thanks for spending the time to look at the spectrum analysis of the sound! And thanks for the pointer to the EnergyAtFrequency Sound. I still haven't got it working properly yet but I think I've made some progress.
Thanks Alan, TBH I found getting the settings just right took a lot of trial and error, and I didn't get the sound triggering quite right as you can hear.
Part of the difficulty with the source audio is there is a shuffle kind of rhythm rather than a pulse, I think humans can easily identify the pulse but there's not much audio clues other than the silences I pointed out
Hi Sean,

As I can hear? Did you post up a sound file?

Thank, -Alan
Hi Sean,

I did get this working in the end in a roundabout way. I changed the mic and the mic position and the new signal ended up being a lot easier to detect just using the PeakDetector. Thanks for suggesting the EnergyAtFrequency Sound, I'll remember that for next time!
0 votes

Heres an example

I added some silence at the beginning of the loop to get the first trigger

 

answered Oct 4, 2017 by sean-flannery (Adept) (1,510 points)
...