Calculate BPM

jbrabble's icon

Im an new to max and I am trying to change some data into a BPM.

At the moment I am getting a flow of data which peaks at the number 44, I am then using the select object to only select 44 and then this is outputted via a button with a bang every time 44 it is selected.

What would be the best way to calculate these bangs and what object could I use.

Ideally I want to count the number of bangs in a time period (say every 10 seconds) and the multiply this number by 6, then loop this function so the BPM would update in 10 second intervals.

Does anyone have any ideas? Thanks.

bkshepard's icon

Would this work?

Max Patch
Copy patch and select New From Clipboard in Max.

jbrabble's icon

This may work, however I have just come across another method which is in Max tutorial 19 on timing. And this creates a very accurate bmp that updates every second.

If anyone wants to read more its under 'Metrical Timing, Part 2".

Szrp's icon

You could also try something like this:

Max Patch
Copy patch and select New From Clipboard in Max.

This takes the average of the last ten beats received, which means it will still update every beat, but produce less "jumpy" results, if one single beat is a bit off. And depending on how large you make the list you can have it as smooth or as fast reacting as you like it to be.

You could also check out the last example in the help file of the "mean" object, which does pretty much the same thing.

Jean-Francois Charles's icon

[sync~]

Max Patch
Copy patch and select New From Clipboard in Max.

Jean-Francois.

Szrp's icon

Oh, that clearly simplifies matters...
Nice!

Martin Martin's icon

Ok, for everybody still stumbling upon this.. i experienced heavy jitter with the link objects.. Anybody found a solution?

For now the best and most stable solution is this one. (the patcher contains some other ones for comparison..)

Max Patch
Copy patch and select New From Clipboard in Max.