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… :

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.


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!


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


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:

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?