Tempo ramps - more click fixing.
[ardour.git] / libs / ardour / tempo.cc
index 978d4ed05a81a168eaafe5cbe08878b8e59656f4..8a481c9567e1d67c7883a8b3b8bfb2fe9e7ba6a3 100644 (file)
@@ -1542,6 +1542,9 @@ TempoMap::beat_at_frame_locked (const Metrics& metrics, const framecnt_t& frame)
 {
        const MeterSection& prev_m = meter_section_at_locked (metrics, frame);
        const TempoSection& ts = tempo_section_at_locked (metrics, frame);
+       if (frame < prev_m.frame()) {
+               return 0.0;
+       }
        return prev_m.beat() + (ts.pulse_at_frame (frame, _frame_rate) - prev_m.pulse()) * prev_m.note_divisor();
 }
 
@@ -2638,7 +2641,7 @@ TempoMap::get_grid (vector<TempoMap::BBTPoint>& points,
                    framepos_t lower, framepos_t upper)
 {
        Glib::Threads::RWLock::ReaderLock lm (lock);
-       const int32_t upper_beat = (int32_t) ceil (beat_at_frame_locked (_metrics, upper));
+       const int32_t upper_beat = (int32_t) floor (beat_at_frame_locked (_metrics, upper));
        int32_t cnt = ceil (beat_at_frame_locked (_metrics, lower));
        framecnt_t pos = 0;
        /* although the map handles negative beats, bbt doesn't. */