temporal: better fix for tempo ramp setting during ::reset_starting_at()
This commit is contained in:
parent
5c8b7519c1
commit
8de52a74bb
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2017 Paul Davis
|
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
|
/* Now iterate over remaining points and recompute their audio time
|
||||||
* positions.
|
* positions.
|
||||||
*/
|
*/
|
||||||
@ -1208,11 +1222,6 @@ TempoMap::reset_starting_at (superclock_t sc)
|
|||||||
|
|
||||||
if (tp) {
|
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;
|
Points::iterator pp = p;
|
||||||
nxt_tempo = 0;
|
nxt_tempo = 0;
|
||||||
++pp;
|
++pp;
|
||||||
|
Loading…
Reference in New Issue
Block a user