Beat Detection -- determining tempo/BPM in a rough mix

I see some old posts here re: beat detection but they address an old version of Ardour

~ I was delivered a rough mix of a track to play on that contains an ethnic drum layer that was generated in RT, not a loop per se, so the rhythm is changing subtly over time but is consistent

//I watched an old Mixbus clip on YT and RTFM but some of the key combos don’t seem updated

~ how do I detect the beat/tempo in an 8min rought mix where soft ethnic drums don’t come in until a few minutes in? I tried a few things but ended up making a mess of things… :
thanks!
Kim

We do not automatic tempo detection for varying tempo. We’ve looked at how other DAWs do this and have not seen a single one where we think the automation of this makes the task quicker. What normally happens is that the automated process generates some guesses which then have to be manually tweaked.

Instead, we have a fully manual but fast process called “tempo mapping”. The best source of information on this right now is a video made for Harrison Mixbus, but Ardour it identical in this area.

If you fixed tempo, then it is easy to define tempo based on a range that defines 1 bar, but it sounds to me as though this does not describe your situation.

2 Likes

sorry for not being more clear
but the tempo is steady (the rhythm adheres to a BPM) in the stem I was given to play on
I watched the Mixbus tutorial and tried this but was how I made a mess of things
I ended up using a vamp plug in Sonic Visualizer which seemed to give me the BPM
but I’d prefer to keep everything in Ardour
I’ll give the MIxbus vid another try but w/ more patience this time :wink:
thanks Paul - Ardour 8 is amazing BTW!

Hi,

In a non-grid context I find before using “Tempo Mapping” one needs to have a ballpark idea of the song’s tempo in order to get the approximate grid line locations to be at least close to ‘on beat’ to get started, after that it goes pretty fast…

I use the tap tempo feature of the ACE Delay Plugin to tap along and get a rough idea of the song tempo. Perhaps there is an easier way but this works well for my needs…

If the BPM is fixed,: first, set the meter correctly. Then use the range tool to select a range correspnding to one bar. Then use (in the global menu bar): Edit > Tempo > Set tempo from range == 1 bar

2 Likes

Ardour has its own builtin tap tempo. Turn on the metronome, click, click on the tempo button under the primary transport clock, use tap tempo …

1 Like

I have a script for this:

If you’re on Linux, first place this binary in your /usr/bin folder:

Then download the LUA script below:

then place the LUA script in $HOME/.config/ardour8/scripts then load up Ardour go to edit > LUA Scripts > Script Manager > action scripts > click on “Add/Set” then select estimate tempo. When you call the script, make sure you have an audio region selected. Also be aware you may see ardour freeze for a few seconds while it estimates the tempo as the binary (bpmbin) is a compiled python script.

1 Like

thanks Paul & Glen
~ some tap tempo functions are more forgiving than others but they never seem to work for me
~ I watched the Mixbus video and that was helpful – but because the drum pattern is mixed with ambient material & is very syncopated (kinda Jon Hassel-like) I wasn’t sure if the meter was 4/4 or something in 8…I’m waiting for the musicians to send me the drum file & a BPM
– the BBTmarker/grid tool didn’t work very well on this material but I’ll experiment with it some more & see if I can get it to behave
I ended up punching the BPM derived from Sonic Visualiser into Ardour…the material lines up on the grid in Ardour & keeps time w/ the metronome

I tried your bin file & lua script
but I kept getting a “close” dialog box which never went away after clicking on it & waiting for many minutes
I ended up force quitting Ardour & trying again but got the same results

I did set the perms to "root" & made the bin file executable
the lua scripts folder on my install is in /opt not in $HOME/.config/Ardour8
I selected what I determined was one measure & made it a region
but got the close box as stated above
thanks for the chance to try it though :slight_smile:

What do you mean by set perms to root? The scripts in /opt/Ardour-8.6.0/share/scripts have root as read/write, group and others as read:
-rw-r–r–

The folders in /opt are system wide, you can put per user settings in .config/Ardour8 in each users home directory if you have multiple people who share a machine. Even if you do not, the files in .config/Ardour8 are not overwritten if you uninstall, reinstall, or upgrade Ardour, while the files in /opt will be erased or overwritten in those cases.

Thanks for trying it out, it looks I still have some work to do with this

no worries - I’d be happy to test new versions for you :slight_smile:
keep me updated?

Go ahead and give this another shot (you may see Ardour freeze for a moment as it estimates the tempo) and follow the instructions in the quoted comments of the code for this to work:

– In order for this script to work please download bpmbin from my Google Drive at this URL (bpmbin - Google Drive)
– then copy to your /usr/bin directory

Please also note this LUA script is part of a larger project to give Ardour GarageBand like functionality out of the box and the copying of the binary file will be eventually automated as part of an install script.

Hi,

I’m also excited to try this out, the bin download is 248 Mb? Is that expected? That seems way-mega-huge for a script?

I know it is heavy but it is compiled using pyinstaller which not only compiles the python script but all the dependencies needed to run it.

Here is a demo of it, notice there is about a 15 second delay after pressing the button though that could be partly attributed to my old PC (4th gen Core i3)

1 Like

Nice Work! I gave it a try and it seems to work well for getting in the ballpark! I tried it on tracks that had human performances that been recorded without a click and it gave a good approximation to get started with however since the generated value is constant after a few bars sync was lost but my expectations are merely to get an approximation and then use Ardour’s tempo mapping tools to handle the variable human tempo bar by bar. Very handy, thanks again!

1 Like