How can I retain the audio clip length when tempo is changed ? Right now, I’m not using auto-tempo but simply
setSpeedRatio on the timestretched clips.
When I change the tempo, the clips stay the same size, which means each clips need to be resized to match their previous length which is kind of counter-productive.
Auto-tempo seems to need the appropriate tempo + signature + beat/bear length to work.
Should I use
autoTempo (by deducting and setting the LoopInfo of each clip), or proportionally ajust the
speedRatio with the old and new BPM (watching the Edit state).
The best way to do things is with auto-tempo as that is really telling the Engine/Edit how it should relate things like tempo and pitch (it can do things like ensure multiple tempo changes are applied correctly and even sync time-stretching to beat positions for improved quality).
However, if you’ve set
setSyncType (Clip::syncBarsBeats) on any clips, changing the tempo should adjust their start/end positions in proportion to the tempo changes (assuming you’re changing the tempo via
Thanks @dave96 !
The only concern about auto-tempo is that it’s not always possible to deduce the right tempo on some samples (especially purely melodic ones).
That said, I could initially call
performTempoDetect when a new audio clip is loaded, check if it gives sensible results; if not, fall back to
Does this seems appropriate ?
performTempoDetect is not very accurate I’m afraid.
You probably want
setSyncType (Clip::syncBarsBeats) anyway to keep things adjusting when the tempo changes.
But you might want to set the tempo of clips without source tempo metadata to the Edit’s tempo, then instead of changing the speed ratio, change the LoopInfo’s tempo. The effect will be the same but the user is effectively “correcting” the root tempo rather than changing a “speed ratio”. Seems the cleanest way to me.
Makes sense, thanks @dave96! Gonna try that asap!
I applied the same logic of updating the
LoopInfo when resizing clips manually, using
setBpm on the
LoopInfo, and also setting the new length with
This works perfectly, whetever the user is manually resizing a clip or when the Edit tempo changes.
Thanks, @dave96 !