void quantize_region ();
void do_insert_time ();
- void insert_time (nframes64_t pos, nframes64_t distance, Editing::InsertTimeOption opt, bool ignore_music_glue, bool markers_too);
+ void insert_time (nframes64_t, nframes64_t, Editing::InsertTimeOption, bool, bool, bool);
void tab_to_transient (bool forward);
d.get_vbox()->pack_start (move_glued);
CheckButton move_markers (_("Move markers"));
d.get_vbox()->pack_start (move_markers);
+ CheckButton move_tempos (_("Move tempo and meter changes"));
+ d.get_vbox()->pack_start (move_tempos);
d.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
d.add_button (_("Insert time"), Gtk::RESPONSE_OK);
break;
}
- insert_time (pos, distance, opt, move_glued.get_active(), move_markers.get_active());
+ insert_time (pos, distance, opt, move_glued.get_active(), move_markers.get_active(), move_tempos.get_active());
}
void
Editor::insert_time (nframes64_t pos, nframes64_t frames, InsertTimeOption opt,
- bool ignore_music_glue, bool markers_too)
+ bool ignore_music_glue, bool markers_too, bool tempo_too)
{
bool commit = false;
}
}
+ if (tempo_too) {
+ session->tempo_map().insert_time (pos, frames);
+ }
+
if (commit) {
commit_reversible_command ();
}
void change_existing_tempo_at (nframes_t, double bpm, double note_type);
void change_initial_tempo (double bpm, double note_type);
+ void insert_time (nframes_t, nframes_t);
+
int n_tempos () const;
int n_meters () const;
return cnt;
}
+
+void
+TempoMap::insert_time (nframes_t where, nframes_t amount)
+{
+ for (Metrics::iterator i = metrics->begin(); i != metrics->end(); ++i) {
+ if ((*i)->frame() >= where) {
+ (*i)->set_frame ((*i)->frame() + amount);
+ }
+ }
+
+ timestamp_metrics (false);
+
+ StateChanged (Change (0));
+}