From 9a66e1e2c6e952bf1cc1b78e57d462467cc64cfa Mon Sep 17 00:00:00 2001 From: nick_m Date: Wed, 24 Aug 2016 03:23:04 +1000 Subject: [PATCH] Round to bar correctly in TempoMap::exact_beat_at_frame_locked(). --- libs/ardour/tempo.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc index d8db6a5616..35a19b13db 100644 --- a/libs/ardour/tempo.cc +++ b/libs/ardour/tempo.cc @@ -3071,8 +3071,18 @@ TempoMap::exact_beat_at_frame_locked (const Metrics& metrics, const framepos_t& Timecode::BBT_Time bbt = bbt_at_beat_locked (metrics, beat); bbt.beats = 1; bbt.ticks = 0; - beat = beat_at_bbt_locked (metrics, bbt); + + const double prev_b = beat_at_bbt_locked (_metrics, bbt); + ++bbt.bars; + const double next_b = beat_at_bbt_locked (_metrics, bbt); + + if ((beat - prev_b) > (next_b - prev_b) / 2.0) { + beat = next_b; + } else { + beat = prev_b; + } } + return beat; } -- 2.30.2