summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-05-27 09:58:05 +1000
committernick_m <mainsbridge@gmail.com>2016-05-27 23:38:18 +1000
commit877a0de3a8e39a8f98f30f06f2373a96480e640b (patch)
treecfc1bfc32bc1fbfba89ad92d93521440359df34b /libs
parent5bdd16fbee630dad7f7acea313a8bc6ab486bad6 (diff)
Tempo ramps - code cleanup.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/tempo.cc36
1 files changed, 7 insertions, 29 deletions
diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc
index d1d4ec0b99..c1cd9e9d7c 100644
--- a/libs/ardour/tempo.cc
+++ b/libs/ardour/tempo.cc
@@ -1415,6 +1415,7 @@ TempoMap::beat_at_frame_locked (const Metrics& metrics, const framecnt_t& frame)
}
const double beat = prev_m->beat() + (ts.pulse_at_frame (frame, _frame_rate) - prev_m->pulse()) * prev_m->note_divisor();
+ /* audio locked meters fake their beat */
if (next_m && next_m->beat() < beat) {
return next_m->beat();
}
@@ -1433,20 +1434,10 @@ TempoMap::frame_at_beat (const double& beat) const
framecnt_t
TempoMap::frame_at_beat_locked (const Metrics& metrics, const double& beat) const
{
- const TempoSection& prev_t = tempo_section_at_beat_locked (metrics, beat);
- MeterSection* prev_m = 0;
-
- for (Metrics::const_iterator i = metrics.begin(); i != metrics.end(); ++i) {
- MeterSection* m;
- if ((m = dynamic_cast<MeterSection*> (*i)) != 0) {
- if (prev_m && m->beat() > beat) {
- break;
- }
- prev_m = m;
- }
- }
+ const TempoSection* prev_t = &tempo_section_at_beat_locked (metrics, beat);
+ const MeterSection* prev_m = &meter_section_at_beat_locked (metrics, beat);
- return prev_t.frame_at_pulse (((beat - prev_m->beat()) / prev_m->note_divisor()) + prev_m->pulse(), _frame_rate);
+ return prev_t->frame_at_pulse (((beat - prev_m->beat()) / prev_m->note_divisor()) + prev_m->pulse(), _frame_rate);
}
Tempo
@@ -1461,9 +1452,7 @@ TempoMap::tempo_at_frame_locked (const Metrics& metrics, const framepos_t& frame
{
TempoSection* prev_t = 0;
- Metrics::const_iterator i;
-
- for (i = _metrics.begin(); i != _metrics.end(); ++i) {
+ for (Metrics::const_iterator i = _metrics.begin(); i != _metrics.end(); ++i) {
TempoSection* t;
if ((t = dynamic_cast<TempoSection*> (*i)) != 0) {
if (!t->active()) {
@@ -1556,20 +1545,9 @@ TempoMap::pulse_at_beat (const double& beat) const
double
TempoMap::pulse_at_beat_locked (const Metrics& metrics, const double& beat) const
{
- MeterSection* prev_m = 0;
-
- for (Metrics::const_iterator i = metrics.begin(); i != metrics.end(); ++i) {
- MeterSection* m;
- if ((m = dynamic_cast<MeterSection*> (*i)) != 0) {
- if (prev_m && m->beat() > beat) {
- break;
- }
- prev_m = m;
- }
+ const MeterSection* prev_m = &meter_section_at_beat_locked (metrics, beat);
- }
- double const ret = prev_m->pulse() + ((beat - prev_m->beat()) / prev_m->note_divisor());
- return ret;
+ return prev_m->pulse() + ((beat - prev_m->beat()) / prev_m->note_divisor());
}
double