diff options
author | nick_m <mainsbridge@gmail.com> | 2017-06-09 01:44:48 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2017-06-09 01:44:48 +1000 |
commit | cebefe69d9456ab57fc61128a7931baccef899bc (patch) | |
tree | 866e325ee7a0a7d8a1d89eb6aca5d547664a1366 /libs/ardour/tempo.cc | |
parent | 2b320d51dd080909a0e305116f1396dd1356200b (diff) |
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.
Diffstat (limited to 'libs/ardour/tempo.cc')
-rw-r--r-- | libs/ardour/tempo.cc | 9 |
1 files changed, 5 insertions, 4 deletions
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<TempoMap::BBTPoint>& 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<TempoMap::BBTPoint>& 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; } } |