Jump to content
  • 0

Change project tempo without affecting timing of existing MIDI clip


Starship Krupa

Question

Posted (edited)

I swear I once knew how to do this; it's something that comes up fairly often.

Let's say I'm noodling around on my keyboard and come up with some nice chord changes and want to document them quickly. I record arm the MIDI track and throw Cakewalk into Record mode and play my chords for a few bars and stop. Before I started, I didn't bother to set a tempo, I just wanted to get the chords down while they were fresh. So it's at the default 120.

Later, I want to develop this into a larger piece, and I want to set the project tempo closer to what I actually played, which is much slower, around 60 or 70BPM. I just want to adjust the project's tempo to my actual playing so that I can add other parts at the same tempo.

If I just listen to my playing and use a tempo tapper to capture it, then set Sonar's project tempo, the tempo of the existing performance will change along with it and become very slow.

How do I tell Sonar to leave my data alone when I change the tempo?

(I tried changing the timebase of the clip from Musical to Absolute in Inspector and it did diddly schnit)

Edited by Starship Krupa
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Doesn't Importing MIDI data leave the tempo alone, while Opening MIDI adjusts the tempo to what the project is set to?  Set a new project to your preferred tempo; import the MIDI. See what happens.

Link to comment
Share on other sites

  • 0

@Starship Krupa you could slip edit the clip to reduce the clip back to the original tempo.

Hold Ctrl + Shift click on the end of the clip the cursor should change to a double head arrow, one to the right one to the left with  vertical line seperating them.

You can then adjust the clip as you slid left the clip will get shorter, as will the note lengths effectively increasing the play back speed. You can do this with both MIDI and Audio clips.

  • Like 1
Link to comment
Share on other sites

  • 0
Posted (edited)

I did some more Googlin' and came across @David Baay's preferred method of using Set Measure/Beat at Now.

That did it up just dandy, despite my not understanding how it worked at all. I just trimmed the leading edge of the clip so that it started with the notes, dragged it all the way to the left, split it 4 beats later, set the Now time to zero and hit Shift+M and it set the project time to what I had tapped and left the MIDI data alone.

If I don't entirely understand the process, I suppose I don't really need to, unless at some point in the future I try it and it doesn't work.

Still, it would be nice for MIDI clips to obey being set to absolute timebase.

Edited by Starship Krupa
Link to comment
Share on other sites

  • 0

MIDI event data is always in musical time.  Changing the clip's time base to absolute only affects the start time of the clip.

The only way to do what you're suggesting is to stretch the clip by the reverse percentage you changed the tempo by.

For example, if the original tempo was 120bpm, and you change the tempo to 130bpm:

100% / 120bpm = 0.833333333

0.833333333 x 130bpm = 108.33 %

So you'd stretch the MIDI clip by 108.33% to get it to play at the original tempo.

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • 0
1 hour ago, msmcleod said:

MIDI event data is always in musical time.  Changing the clip's time base to absolute only affects the start time of the clip.

The only way to do what you're suggesting is to stretch the clip by the reverse percentage you changed the tempo by.

For example, if the original tempo was 120bpm, and you change the tempo to 130bpm:

100% / 120bpm = 0.833333333

0.833333333 x 130bpm = 108.33 %

So you'd stretch the MIDI clip by 108.33% to get it to play at the original tempo.

Which is what I said.

Link to comment
Share on other sites

  • 0
15 hours ago, Starship Krupa said:

just trimmed the leading edge of the clip so that it started with the notes, dragged it all the way to the left, split it 4 beats later, set the Now time to zero and hit Shift+M and it set the project time to what I had tapped and left the MIDI data alone.

I think you must be misremembering which beat you set. Sonar will not allow setting a beat at time zero because that's always 1:01:000 by definition. For a 4 beat (1-measure) clip you would need to set the now time where beat 5 should fall, and SM/BAN 2:01 to that time. It's not possible to know where to set the Now time in that case unless the end of the last MIDI event extends exactly to 5:01, so normally you would have needed to set Now tot he start time of the event at beat 4 to 1:04 to establish the correct initial tempo. Or you could listen to the clip playing back and stop the transport where 2:01 should be, and set 2:01 at that Now time.

SM/BAN works by calculating the tempo needed to make the specified musical beat fall on the specified absolute Now time relative to 00:00:00:00 if there's only one initial tempo, or relative to the absolute time of the previous tempo if the tempo is variable, and changing that previous tempo make that happen. And it changes the start time and duration of MIDI events to preserve their absolute playback timing at that new tempo.

15 hours ago, Starship Krupa said:

till, it would be nice for MIDI clips to obey being set to absolute timebase.

I've requested this many times over the years decades. If SM/BAN can recalculate the durations, setting MIDI to Absolute time base should be able to do the same. The Ref . Guide actually still mis-states to this day that it does: 

"audio clips maintain their absolute (SMPTE) length, while a MIDI clip will follow the value in the Time Base field."

In makiing my request I've always mentioned that the Ref. Guide needs to be corrected in the mean time. 

Link to comment
Share on other sites

  • 0
12 hours ago, msmcleod said:

So you'd stretch the MIDI clip by 108.33% to get it to play at the original tempo.

Which is why it would be handy if the percent field in Process > Length allowed for a mantissa.  Currently, only whole numbers are allowed in the percent field.

Link to comment
Share on other sites

  • 0
6 hours ago, David Baay said:

I think you must be misremembering which beat you set.

I'm sure I did, it all happened so quickly. Likely dragged it to the wall after I SM/BAN'd it.

6 hours ago, David Baay said:

If SM/BAN can recalculate the durations, setting MIDI to Absolute time base should be able to do the same.

That's a thought I had when @msmcleod posted the formula: Sonar has access to a LOT of computing power, and it's a simple enough formula, so why should I have to get out a pencil and paper and then adjust the clip myself?

Link to comment
Share on other sites

  • 0
Posted (edited)

I just gave this a try in Studio One, and all you need to do is open Inspector and set the clip's timebase to "seconds" instead of "beats." Works a treat.

In Mixcraft, it's switching the clip from "Use Project Tempo" to "Time Stretch."

I'd love for it to be this simple in Sonar. SM/BAN required Googling and a trip to the Reference Guide, which seems kinda obscure.

Edited by Starship Krupa
Link to comment
Share on other sites

  • 0
15 hours ago, Starship Krupa said:

I just gave this a try in Studio One, and all you need to do is open Inspector and set the clip's timebase to "seconds" instead of "beats." Works a treat.

Based on the Ref. Guide saying it works this way in Cakewalk/Sonar/CbB over all these years, I think that must have been the intent initially but somebody dropped the ball. Not sure why it's been so hard to get traction on it. My main need for it has been that I SM/BAN a free-form MIDI recording and then either discover later that I made a mistake or decide to re-record it and forget to delete the tempo changes from the previous round. Currently there's no way to undo that other than recording it into another DAW at a fixed tempo without syncing them.

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...