From cebefe69d9456ab57fc61128a7931baccef899bc Mon Sep 17 00:00:00 2001 From: nick_m Date: Fri, 9 Jun 2017 01:44:48 +1000 Subject: Tempo lines display subdivisions correctly over a tempo change TempoMap::get_grid() supplies a list of beat positions, leaving the lines to work out any subdivision positions. This is fine, unless a tempo section falls in between beats. Use a BeatsFramesConverter along with a quarter note position (in the BBTPointsList) to make this easier. --- libs/ardour/tempo.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'libs/ardour/tempo.cc') diff --git a/libs/ardour/tempo.cc b/libs/ardour/tempo.cc index e676c274f4..47d718d2f8 100644 --- a/libs/ardour/tempo.cc +++ b/libs/ardour/tempo.cc @@ -4162,11 +4162,11 @@ TempoMap::get_grid (vector& points, if (bar_mod == 0) { while (pos >= 0 && pos < upper) { pos = frame_at_minute (minute_at_beat_locked (_metrics, cnt)); - const TempoSection tempo = tempo_section_at_minute_locked (_metrics, minute_at_frame (pos)); const MeterSection meter = meter_section_at_minute_locked (_metrics, minute_at_frame (pos)); const BBT_Time bbt = bbt_at_beat_locked (_metrics, cnt); + const double qn = pulse_at_beat_locked (_metrics, cnt) * 4.0; - points.push_back (BBTPoint (meter, tempo_at_minute_locked (_metrics, minute_at_frame (pos)), pos, bbt.bars, bbt.beats, tempo.c())); + points.push_back (BBTPoint (meter, tempo_at_minute_locked (_metrics, minute_at_frame (pos)), pos, bbt.bars, bbt.beats, qn)); ++cnt; } } else { @@ -4181,9 +4181,10 @@ TempoMap::get_grid (vector& points, while (pos >= 0 && pos < upper) { pos = frame_at_minute (minute_at_bbt_locked (_metrics, bbt)); - const TempoSection tempo = tempo_section_at_minute_locked (_metrics, minute_at_frame (pos)); const MeterSection meter = meter_section_at_minute_locked (_metrics, minute_at_frame (pos)); - points.push_back (BBTPoint (meter, tempo_at_minute_locked (_metrics, minute_at_frame (pos)), pos, bbt.bars, bbt.beats, tempo.c())); + const double qn = pulse_at_bbt_locked (_metrics, bbt) * 4.0; + + points.push_back (BBTPoint (meter, tempo_at_minute_locked (_metrics, minute_at_frame (pos)), pos, bbt.bars, bbt.beats, qn)); bbt.bars += bar_mod; } } -- cgit v1.2.3