13
0

temporal: better fix for tempo ramp setting during ::reset_starting_at()

This commit is contained in:
Paul Davis 2022-05-21 17:28:38 -06:00
parent 5c8b7519c1
commit 8de52a74bb

View File

@ -1,4 +1,3 @@
/*
Copyright (C) 2017 Paul Davis
@ -1187,6 +1186,21 @@ TempoMap::reset_starting_at (superclock_t sc)
}
}
/* if the tempo point the defines our starting metric for position
* @param sc is ramped, recompute its omega value based on the beat
* time of the following tempo point. If we do not do this before we
* start, then ::superclock_at() for subsequent points will be
* incorrect.
*/
if (need_initial_ramp_reset) {
const TempoPoint *nxt = next_tempo (metric.tempo());
if (nxt) {
const_cast<TempoPoint*> (&metric.tempo())->compute_omega_from_next_tempo (*nxt);
}
need_initial_ramp_reset = false;
}
/* Now iterate over remaining points and recompute their audio time
* positions.
*/
@ -1208,11 +1222,6 @@ TempoMap::reset_starting_at (superclock_t sc)
if (tp) {
if (need_initial_ramp_reset) {
const_cast<TempoPoint*> (&metric.tempo())->compute_omega_from_next_tempo (*tp);
need_initial_ramp_reset = false;
}
Points::iterator pp = p;
nxt_tempo = 0;
++pp;