summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-03-20 23:31:44 +1100
committernick_m <mainsbridge@gmail.com>2016-05-27 23:38:11 +1000
commita58f86264069435bc559e1ae05056c2a3d2ffeab (patch)
treea9625d58b908fa3c35691c04118cea24cf897336
parente82c997b3d021863e67ad04ab1cc9b11c1100c2d (diff)
Tempo ramps - fix constant tempos (again).
-rw-r--r--libs/ardour/tempo.cc34
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;
}