diff options
author | nick_m <mainsbridge@gmail.com> | 2016-03-20 23:31:44 +1100 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-05-27 23:38:11 +1000 |
commit | a58f86264069435bc559e1ae05056c2a3d2ffeab (patch) | |
tree | a9625d58b908fa3c35691c04118cea24cf897336 | |
parent | e82c997b3d021863e67ad04ab1cc9b11c1100c2d (diff) |
Tempo ramps - fix constant tempos (again).
-rw-r--r-- | libs/ardour/tempo.cc | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc index b79377b9e3..8af8424a63 100644 --- a/libs/ardour/tempo.cc +++ b/libs/ardour/tempo.cc @@ -223,7 +223,7 @@ framepos_t TempoSection::frame_at_tempo (const double& ppm, const double& b, const framecnt_t& frame_rate) const { if (_type == Constant) { - return ((b - pulse()) * frames_per_beat (frame_rate)) + frame(); + return ((b - pulse()) * frames_per_pulse (frame_rate)) + frame(); } return minute_to_frame (time_at_pulse_tempo (ppm), frame_rate) + frame(); @@ -249,7 +249,7 @@ double TempoSection::pulse_at_tempo (const double& ppm, const framepos_t& f, const framecnt_t& frame_rate) const { if (_type == Constant) { - double const beats = ((f - frame()) / frames_per_beat (frame_rate)) + pulse(); + double const beats = ((f - frame()) / frames_per_pulse (frame_rate)) + pulse(); return beats; } @@ -264,7 +264,7 @@ double TempoSection::pulse_at_frame (const framepos_t& f, const framecnt_t& frame_rate) const { if (_type == Constant) { - return ((f - frame()) / frames_per_beat (frame_rate)) + pulse(); + return ((f - frame()) / frames_per_pulse (frame_rate)) + pulse(); } return pulse_at_time (frame_to_minute (f - frame(), frame_rate)) + pulse(); @@ -279,7 +279,7 @@ framepos_t TempoSection::frame_at_pulse (const double& p, const framecnt_t& frame_rate) const { if (_type == Constant) { - return (framepos_t) floor ((p - pulse()) * frames_per_beat (frame_rate)) + frame(); + return (framepos_t) floor ((p - pulse()) * frames_per_pulse (frame_rate)) + frame(); } return minute_to_frame (time_at_pulse (p - pulse()), frame_rate) + frame(); @@ -1429,12 +1429,10 @@ TempoMap::pulse_at_beat (const Metrics& metrics, const double& beat) const for (Metrics::const_iterator i = metrics.begin(); i != metrics.end(); ++i) { MeterSection* m; if ((m = dynamic_cast<MeterSection*> (*i)) != 0) { - if (prev_ms) { - if (m->beat() > beat) { - break; - } - accumulated_beats = m->beat(); + if (prev_ms && m->beat() > beat) { + break; } + accumulated_beats = m->beat(); prev_ms = m; } @@ -1452,12 +1450,10 @@ TempoMap::beat_at_pulse (const Metrics& metrics, const double& pulse) const for (Metrics::const_iterator i = metrics.begin(); i != metrics.end(); ++i) { MeterSection* m; if ((m = dynamic_cast<MeterSection*> (*i)) != 0) { - if (prev_ms) { - if (m->pulse() > pulse) { - break; - } - accumulated_beats = m->beat(); + if (prev_ms && m->pulse() > pulse) { + break; } + accumulated_beats = m->beat(); prev_ms = m; } } @@ -1727,9 +1723,8 @@ TempoMap::beat_offset_at (const Metrics& metrics, const double& beat) const if (m->position_lock_style() == AudioTime) { beat_off += ((m->pulse() - prev_m->pulse()) / prev_m->note_divisor()) - floor ((m->pulse() - prev_m->pulse()) / prev_m->note_divisor()); } - - prev_m = m; } + prev_m = m; } } @@ -1789,9 +1784,8 @@ TempoMap::pulse_at_frame_locked (const Metrics& metrics, const framecnt_t& frame double const ret = prev_ts->pulse_at_frame (frame, _frame_rate); return ret; } - - accumulated_pulses = t->pulse(); } + accumulated_pulses = t->pulse(); prev_ts = t; } } @@ -1833,8 +1827,8 @@ TempoMap::frame_at_pulse_locked (const Metrics& metrics, const double& pulse) co if (t->pulse() > pulse) { return prev_ts->frame_at_pulse (pulse, _frame_rate); } - accumulated_pulses = t->pulse(); } + accumulated_pulses = t->pulse(); prev_ts = t; } } @@ -1981,8 +1975,8 @@ TempoMap::solve_map (Metrics& imaginary, TempoSection* section, const Tempo& bpm recompute_meters (imaginary); return true; } - //dump (imaginary, std::cerr); + return false; } |