A client’s Suno AI cover kept drifting away from his original vocal in Logic Pro, and the answer was to work out the cover’s exact fixed tempo by hand and bring the vocal up to it.
He had a song he wrote about 15 years ago, and all he had left of it was the master WAV file. He wanted to remix it and experiment with it, so he uploaded the WAV to Suno and asked it for a cover. Suno came back with a well-produced version: an AI singer following his original lyrics and melody, a few vocal flourishes, a slightly longer verse and a short new bridge. The changes were tasteful and musical, and he was happy with it.
What he wanted next was his own original vocal over the top of the Suno cover. He did most of the groundwork himself. He exported the stems from Suno, brought them into Logic Pro, and used Logic’s stem extraction to pull his vocal out of the original recording. But when he lined the two up, they wouldn’t stay together. Logic’s tempo detection put his original at 107 BPM. He tried Logic’s Adapt Tempo to match them, and the song started in time but had drifted well out by the end.
Why I left Adapt Tempo alone
He asked how I’d approach it, and I explained I wouldn’t use Adapt Tempo here. It measures the speed of the audio and writes tempo changes into Logic’s global tempo track, so Logic would be constantly speeding the audio up and slowing it down. I wasn’t satisfied the sound quality would hold up, and it would also leave hundreds of tempo changes through the song, which are hard to manage.
There’s an older and more straightforward way of doing it in Logic that gives a more robust result. It’s a technique I learned about 25 years ago.
Working out the Suno tempo
First I moved the Suno track so its first downbeat, the kick and crash at the top of the song, landed exactly on bar 2 after the count-in clicks. Then I used Logic’s BPM counter to get a starting figure of 107.6 BPM, set that as a fixed tempo for the whole song and played it through, watching the drum hits against Logic’s grid.
It held for about 30 seconds before the drum hits started to sit slightly off the grid. I nudged the tempo to 107.53, which pulled them back on. After another 30 seconds or so there was more drift, so I made another small adjustment, and I kept going like that to the end of the song.
The tempo that held all the way to the end was 107.553 BPM.
At that setting the drums were still landing exactly on Logic’s grid three minutes in, and the metronome was in sync with the Suno cover.
Bringing the original vocal up to speed
His original vocal was still at 107 BPM. For that I used Logic’s Time and Pitch Machine, which is in the Functions menu of the Audio File Editor, with these settings:
- Original tempo: 107.0
- Destination tempo: 107.553
- Transposition: 0
This speeds the original file up to exactly the new tempo. We could have worked the other way round and slowed the Suno track down to his original speed, but he liked the Suno tempo, so we chose to speed the vocal up.
There are other ways to change tempo in Logic, such as Adapt Tempo and Flex Time (Logic’s elastic audio). I went for this one because it gives a precise result and only has to be done once. When he edits the song further, he won’t have Flex moving sections in and out of time or tempo changes all through the track to worry about, and his computer’s processing power goes on mixing plugins rather than tempo processing.
I found this an interesting case because it mixes the newest AI music tools with a very old studio technique. Knowing a few different ways to get the same result in music software means you can take what the AI produces, edit it and line it up with material people actually played and sang.
He came back a couple of months later with a follow-up question about the Time and Pitch Machine being greyed out, and I’ve written that session up separately.
Adapt Tempo has its uses, but when an AI track runs at one steady tempo, finding that tempo exactly, decimals and all, leaves you a single fixed tempo to keep working against.
Not sure it’s the same problem? Ask a question first
