summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-05-19 01:01:08 +1000
committernick_m <mainsbridge@gmail.com>2016-05-27 23:38:16 +1000
commit2d3d7a53556a0b724c91db0dbf991e3d7a78b4fe (patch)
tree5b95d1e2e4389d835f4a7033994fb9c62e97344b /gtk2_ardour
parente5ba2bc34c400a533b3578ebe722eef0183a3d68 (diff)
Tempo ramps - fix ambiguous api, fix flickering tempo curves.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_drag.cc12
-rw-r--r--gtk2_ardour/editor_markers.cc14
-rw-r--r--gtk2_ardour/editor_ops.cc2
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc14
-rw-r--r--gtk2_ardour/tempo_curve.cc12
5 files changed, 27 insertions, 27 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 3533eb8163..c1bdfc85e1 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -3185,10 +3185,10 @@ MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
const double beat = map.bbt_to_beats (bbt);
if (_real_section->position_lock_style() == AudioTime) {
- _real_section = map.add_meter (Meter (_marker->meter().divisions_per_bar(), _marker->meter().note_divisor())
+ _real_section = map.add_meter_frame (Meter (_marker->meter().divisions_per_bar(), _marker->meter().note_divisor())
, map.frame_time (bbt), beat, bbt);
} else {
- _real_section = map.add_meter (Meter (_marker->meter().divisions_per_bar(), _marker->meter().note_divisor()), beat, bbt);
+ _real_section = map.add_meter_beat (Meter (_marker->meter().divisions_per_bar(), _marker->meter().note_divisor()), beat, bbt);
}
}
}
@@ -3207,7 +3207,7 @@ MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
} else if ((bbt.bars != _real_section->bbt().bars && pf > last_pointer_frame())
|| (bbt.bars < _real_section->bbt().bars && pf < last_pointer_frame())) {
/* move meter beat-based */
- _editor->session()->tempo_map().gui_move_meter (_real_section, bbt);
+ _editor->session()->tempo_map().gui_move_meter_bbt (_real_section, bbt);
}
} else {
/* AudioTime */
@@ -3217,7 +3217,7 @@ MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
_editor->session()->tempo_map().gui_dilate_tempo (_real_section, pf);
}
} else {
- _editor->session()->tempo_map().gui_move_meter (_real_section, pf);
+ _editor->session()->tempo_map().gui_move_meter_frame (_real_section, pf);
}
}
_marker->set_position (pf);
@@ -3355,7 +3355,7 @@ TempoMarkerDrag::motion (GdkEvent* event, bool first_move)
map.round_bbt (bbt, _editor->get_grid_beat_divisions (0), RoundNearest);
}
double const pulse = map.predict_tempo_pulse (_real_section, map.frame_time (bbt));
- _real_section = map.add_tempo (_marker->tempo(), pulse, _real_section->type());
+ _real_section = map.add_tempo_pulse (_marker->tempo(), pulse, _real_section->type());
} else {
if (use_snap && _editor->snap_type() == SnapToBar) {
map.round_bbt (bbt, -1, (frame > _real_section->frame()) ? RoundUpMaybe : RoundDownMaybe);
@@ -3365,7 +3365,7 @@ TempoMarkerDrag::motion (GdkEvent* event, bool first_move)
if (use_snap) {
frame = map.predict_tempo_frame (_real_section, bbt);
}
- _real_section = map.add_tempo (_marker->tempo(), frame, _real_section->type());
+ _real_section = map.add_tempo_frame (_marker->tempo(), frame, _real_section->type());
}
}
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index e8b37606d6..a1fef51d67 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -1392,9 +1392,9 @@ Editor::toggle_marker_lock_style ()
XMLNode &before = _session->tempo_map().get_state();
MeterSection* msp = &mm->meter();
if (mm->meter().position_lock_style() == AudioTime) {
- _session->tempo_map().replace_meter (*msp, Meter (msp->divisions_per_bar(), msp->note_divisor()), msp->bbt());
+ _session->tempo_map().replace_meter_bbt (*msp, Meter (msp->divisions_per_bar(), msp->note_divisor()), msp->bbt());
} else {
- _session->tempo_map().replace_meter (*msp, Meter (msp->divisions_per_bar(), msp->note_divisor()), msp->frame());
+ _session->tempo_map().replace_meter_frame (*msp, Meter (msp->divisions_per_bar(), msp->note_divisor()), msp->frame());
}
XMLNode &after = _session->tempo_map().get_state();
_session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
@@ -1404,9 +1404,9 @@ Editor::toggle_marker_lock_style ()
XMLNode &before = _session->tempo_map().get_state();
TempoSection* tsp = &tm->tempo();
if (tsp->position_lock_style() == AudioTime) {
- _session->tempo_map().replace_tempo (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type()), tsp->pulse(), tsp->type());
+ _session->tempo_map().replace_tempo_pulse (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type()), tsp->pulse(), tsp->type());
} else {
- _session->tempo_map().replace_tempo (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type()), tsp->frame(), tsp->type());
+ _session->tempo_map().replace_tempo_frame (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type()), tsp->frame(), tsp->type());
}
XMLNode &after = _session->tempo_map().get_state();
_session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
@@ -1426,9 +1426,11 @@ Editor::toggle_tempo_type ()
XMLNode &before = _session->tempo_map().get_state();
TempoSection* tsp = &tm->tempo();
if (tsp->position_lock_style() == AudioTime) {
- _session->tempo_map().replace_tempo (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type()), tsp->frame(), (tsp->type() == TempoSection::Ramp) ? TempoSection::Constant : TempoSection::Ramp);
+ _session->tempo_map().replace_tempo_frame (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type())
+ , tsp->frame(), (tsp->type() == TempoSection::Ramp) ? TempoSection::Constant : TempoSection::Ramp);
} else {
- _session->tempo_map().replace_tempo (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type()), tsp->pulse(), (tsp->type() == TempoSection::Ramp) ? TempoSection::Constant : TempoSection::Ramp);
+ _session->tempo_map().replace_tempo_pulse (*tsp, Tempo (tsp->beats_per_minute(), tsp->note_type())
+ , tsp->pulse(), (tsp->type() == TempoSection::Ramp) ? TempoSection::Constant : TempoSection::Ramp);
}
XMLNode &after = _session->tempo_map().get_state();
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 960b7b3123..39996e3840 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -6552,7 +6552,7 @@ Editor::define_one_bar (framepos_t start, framepos_t end)
} else if (t.frame() == start) {
_session->tempo_map().change_existing_tempo_at (start, beats_per_minute, t.note_type());
} else {
- _session->tempo_map().add_tempo (Tempo (beats_per_minute, t.note_type()), start, TempoSection::Constant);
+ _session->tempo_map().add_tempo_frame (Tempo (beats_per_minute, t.note_type()), start, TempoSection::Constant);
}
XMLNode& after (_session->tempo_map().get_state());
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index f6251bd939..3ccaf78415 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -300,7 +300,7 @@ Editor::mouse_add_new_tempo_event (framepos_t frame)
if (pulse > 0.0) {
XMLNode &before = map.get_state();
/* add music-locked ramped (?) tempo using the bpm/note type at frame*/
- map.add_tempo (map.tempo_at (frame), pulse, TempoSection::Ramp);
+ map.add_tempo_pulse (map.tempo_at (frame), pulse, TempoSection::Ramp);
XMLNode &after = map.get_state();
_session->add_command(new MementoCommand<TempoMap>(map, &before, &after));
@@ -340,9 +340,9 @@ Editor::mouse_add_new_meter_event (framepos_t frame)
XMLNode &before = map.get_state();
if (meter_dialog.get_lock_style() == MusicTime) {
- map.add_meter (Meter (bpb, note_type), map.bbt_to_beats (requested), requested);
+ map.add_meter_beat (Meter (bpb, note_type), map.bbt_to_beats (requested), requested);
} else {
- map.add_meter (Meter (bpb, note_type), map.frame_time (requested), map.bbt_to_beats (requested), requested);
+ map.add_meter_frame (Meter (bpb, note_type), map.frame_time (requested), map.bbt_to_beats (requested), requested);
}
_session->add_command(new MementoCommand<TempoMap>(map, &before, &map.get_state()));
@@ -396,9 +396,9 @@ Editor::edit_meter_section (MeterSection* section)
XMLNode &before = _session->tempo_map().get_state();
section->set_position_lock_style (meter_dialog.get_lock_style());
if (meter_dialog.get_lock_style() == MusicTime) {
- _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), when);
+ _session->tempo_map().replace_meter_bbt (*section, Meter (bpb, note_type), when);
} else {
- _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), frame);
+ _session->tempo_map().replace_meter_frame (*section, Meter (bpb, note_type), frame);
}
XMLNode &after = _session->tempo_map().get_state();
_session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
@@ -432,10 +432,10 @@ Editor::edit_tempo_section (TempoSection* section)
section->set_position_lock_style (MusicTime);
framepos_t const f = _session->tempo_map().predict_tempo_frame (section, when);
double const p = _session->tempo_map().predict_tempo_pulse (section, f);
- _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), p, tempo_dialog.get_tempo_type());
+ _session->tempo_map().replace_tempo_pulse (*section, Tempo (bpm, nt), p, tempo_dialog.get_tempo_type());
} else {
framepos_t const f = _session->tempo_map().predict_tempo_frame (section, when);
- _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), f, tempo_dialog.get_tempo_type());
+ _session->tempo_map().replace_tempo_frame (*section, Tempo (bpm, nt), f, tempo_dialog.get_tempo_type());
}
XMLNode &after = _session->tempo_map().get_state();
diff --git a/gtk2_ardour/tempo_curve.cc b/gtk2_ardour/tempo_curve.cc
index 8f19001357..9e09690569 100644
--- a/gtk2_ardour/tempo_curve.cc
+++ b/gtk2_ardour/tempo_curve.cc
@@ -133,10 +133,10 @@ TempoCurve::set_position (framepos_t frame, framepos_t end_frame)
points->push_back (ArdourCanvas::Duple (ArdourCanvas::COORD_MAX - 5.0, y_pos));
} else {
- const framepos_t frame_step = (end_frame - frame) / 31;
+ const framepos_t frame_step = ((end_frame - 1) - frame) / 29;
framepos_t current_frame = frame;
- while (current_frame < end_frame) {
+ while (current_frame < (end_frame - frame_step)) {
const double tempo_at = _tempo.tempo_at_frame (current_frame, editor.session()->frame_rate()) * _tempo.note_type();
const double y_pos = (curve_height) - (((tempo_at - _min_tempo) / (tempo_delta)) * curve_height);
@@ -145,12 +145,10 @@ TempoCurve::set_position (framepos_t frame, framepos_t end_frame)
max_y = max (y_pos, max_y);
current_frame += frame_step;
}
- if (current_frame != end_frame) {
- const double tempo_at = _tempo.tempo_at_frame (end_frame, editor.session()->frame_rate()) * _tempo.note_type();
- const double y_pos = (curve_height) - (((tempo_at - _min_tempo) / (tempo_delta)) * curve_height);
+ const double tempo_at = _tempo.tempo_at_frame (end_frame, editor.session()->frame_rate()) * _tempo.note_type();
+ const double y_pos = (curve_height) - (((tempo_at - _min_tempo) / (tempo_delta)) * curve_height);
- points->push_back (ArdourCanvas::Duple (editor.sample_to_pixel (end_frame - frame), y_pos));
- }
+ points->push_back (ArdourCanvas::Duple (editor.sample_to_pixel ((end_frame - 1) - frame), y_pos));
}
_curve->set (*points);