summaryrefslogtreecommitdiff
path: root/libs/ardour/tempo.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2017-02-27 01:28:59 +1100
committerRobin Gareus <robin@gareus.org>2017-02-27 20:16:10 +0100
commit393f095d95ab1bf6a22fe8953e733e2d67f355bd (patch)
tree15dd66b3ac3e6f3172fcd5513e8a52bf95c35bab /libs/ardour/tempo.cc
parent8e944953c6c0ef210c36fd9a2e9d60f3e5a6766a (diff)
fix TempoMap::frame_at_tempo().
Diffstat (limited to 'libs/ardour/tempo.cc')
-rw-r--r--libs/ardour/tempo.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc
index e600382aa5..dbc0457f8a 100644
--- a/libs/ardour/tempo.cc
+++ b/libs/ardour/tempo.cc
@@ -1807,17 +1807,20 @@ TempoMap::minute_at_tempo_locked (const Metrics& metrics, const Tempo& tempo) co
continue;
}
- const double t_bpm = t->note_types_per_minute();
- if (t_bpm == tempo_bpm) {
+
+ if (t->note_types_per_minute() == tempo_bpm) {
return t->minute();
}
if (prev_t) {
const double prev_t_bpm = prev_t->note_types_per_minute();
+ const double prev_t_end_bpm = prev_t->end_note_types_per_minute();
+ if (prev_t_bpm > tempo_bpm && prev_t_end_bpm < tempo_bpm
+ || prev_t_bpm < tempo_bpm && prev_t_end_bpm > tempo_bpm
+ || prev_t_end_bpm == tempo_bpm) {
- if ((t_bpm > tempo_bpm && prev_t_bpm < tempo_bpm) || (t_bpm < tempo_bpm && prev_t_bpm > tempo_bpm)) {
- return prev_t->minute_at_ntpm (prev_t->note_types_per_minute(), prev_t->pulse());
+ return prev_t->minute_at_ntpm (tempo_bpm, t->pulse());
}
}
prev_t = t;