}
tempo_curves.clear ();
}
-
+struct CurveComparator {
+ bool operator() (TempoCurve const * a, TempoCurve const * b) {
+ return a->tempo().frame() < b->tempo().frame();
+ }
+};
void
Editor::draw_metric_marks (const Metrics& metrics)
{
}
}
+ tempo_curves.sort (CurveComparator());
const double min_tempo_range = 5.0;
const double tempo_delta = fabs (max_tempo - min_tempo);
} else {
(*x)->set_position ((*x)->tempo().frame(), UINT32_MAX);
}
+
+ if (!(*x)->tempo().active()) {
+ (*x)->hide();
+ } else {
+ (*x)->show();
+ }
+
++x;
}
update_tempo_based_rulers ();
}
-struct CurveComparator {
- bool operator() (TempoCurve const * a, TempoCurve const * b) {
- return a->tempo().frame() < b->tempo().frame();
- }
-};
-
void
-Editor::marker_position_changed ()
+Editor::tempometric_position_changed (const PropertyChange& /*ignored*/)
{
if (!_session) {
return;
} else {
(*x)->set_position ((*x)->tempo().frame(), UINT32_MAX);
}
+
+ if (!(*x)->tempo().active()) {
+ (*x)->hide();
+ } else {
+ (*x)->show();
+ }
+
++x;
}
meter_dialog.get_bbt_time (requested);
const double beat = map.beat_at_bbt (requested);
-
+ const double al_frame = map.frame_at_beat (beat);
begin_reversible_command (_("add meter mark"));
XMLNode &before = map.get_state();
if (meter_dialog.get_lock_style() == MusicTime) {
- map.add_meter (Meter (bpb, note_type), beat, requested, MusicTime);
+ map.add_meter (Meter (bpb, note_type), beat, requested, 0, MusicTime);
} else {
- map.add_meter (Meter (bpb, note_type), beat, requested, AudioTime);
+ map.add_meter (Meter (bpb, note_type), beat, requested, al_frame, AudioTime);
}
_session->add_command(new MementoCommand<TempoMap>(map, &before, &map.get_state()));
abort(); /*NOTREACHED*/
}
- if (tempo_marker->tempo().movable()) {
+ if (!tempo_marker->tempo().locked_to_meter() && tempo_marker->tempo().active()) {
Glib::signal_idle().connect (sigc::bind (sigc::mem_fun(*this, &Editor::real_remove_tempo_marker), &tempo_marker->tempo()));
}
}
Timecode::BBT_Time when;
meter_dialog.get_bbt_time (when);
-
+ const framepos_t frame = _session->tempo_map().frame_at_bbt (when);
const PositionLockStyle pls = (meter_dialog.get_lock_style() == AudioTime) ? AudioTime : MusicTime;
begin_reversible_command (_("replace meter mark"));
XMLNode &before = _session->tempo_map().get_state();
- _session->tempo_map().replace_meter (*section, meter, when, pls);
+ _session->tempo_map().replace_meter (*section, meter, when, frame, pls);
XMLNode &after = _session->tempo_map().get_state();
_session->add_command(new MementoCommand<TempoMap>(_session->tempo_map(), &before, &after));
abort(); /*NOTREACHED*/
}
- if (meter_marker->meter().movable()) {
+ if (!meter_marker->meter().initial()) {
Glib::signal_idle().connect (sigc::bind (sigc::mem_fun(*this, &Editor::real_remove_meter_marker), &meter_marker->meter()));
}
}