Tempo ramps - add method to handle beat-based tempo reordering. clean code.
[ardour.git] / gtk2_ardour / editor_tempodisplay.cc
index a971e98abe5407e7adc1a15b4ec88e9d62ba78a9..bd5ff205e908e71373fc8eb304f5dcbec1708a68 100644 (file)
@@ -335,7 +335,7 @@ Editor::edit_meter_section (MeterSection* section)
        double bpb = meter_dialog.get_bpb ();
        bpb = max (1.0, bpb); // XXX is this a reasonable limit?
 
-       double note_type = meter_dialog.get_note_type ();
+       double const note_type = meter_dialog.get_note_type ();
        Timecode::BBT_Time when;
        meter_dialog.get_bbt_time(when);
        framepos_t const frame = _session->tempo_map().frame_at_beat (_session->tempo_map().bbt_to_beats (when));
@@ -345,7 +345,7 @@ Editor::edit_meter_section (MeterSection* section)
        if (meter_dialog.get_lock_style() == MusicTime) {
                _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), when);
        } else {
-               _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), section->frame());
+               _session->tempo_map().replace_meter (*section, Meter (bpb, note_type), frame);
        }
         XMLNode &after = _session->tempo_map().get_state();
        _session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
@@ -366,19 +366,19 @@ Editor::edit_tempo_section (TempoSection* section)
 
        double bpm = tempo_dialog.get_bpm ();
        double nt = tempo_dialog.get_note_type ();
-       double beat;
        Timecode::BBT_Time when;
 
        tempo_dialog.get_bbt_time(when);
+       double const beat = _session->tempo_map().bbt_to_beats (when);
+
        bpm = max (0.01, bpm);
-       beat = _session->tempo_map().bbt_to_beats (when);
 
        begin_reversible_command (_("replace tempo mark"));
        XMLNode &before = _session->tempo_map().get_state();
        if (tempo_dialog.get_lock_style() == MusicTime) {
                _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), beat, tempo_dialog.get_tempo_type());
        } else {
-               framepos_t const f = _session->tempo_map().compute_replacement_tempo_section (section, bpm, beat);
+               framepos_t const f = _session->tempo_map().compute_new_tempo_frame (section, Tempo (bpm, nt), beat);
                _session->tempo_map().replace_tempo (*section, Tempo (bpm, nt), f, tempo_dialog.get_tempo_type());
        }
        XMLNode &after = _session->tempo_map().get_state();