rework tempo editing.

most changes are due to a new design where tempo discontinuities at the
beginning of a ramped section may be set.
this allows easier mapping of live performance, especially in
the common case of a ramped ritard before the beginning of a new section.

feature summary:

holding constraint modifier (shift) while dragging the BBT ruler area
drags the tempo lines by changing the start tempo (as before)

holding copy modifier (control) while dragging the BBT ruler area
drags the tempo lines by changing the end tempo (ahem. not quite there)

dragging a tempo mark while holding constraint (shift) will change the
previous end tempo to match the marker position *worth trying*.

holding constraint and copy modifier (control + shift) while dragging
the BBT ruler area attempts to'pinch' or twist the surrounding tempi
sp that later ones are not repositioned (currently suffereng from
rounding errors)
This commit is contained in:
nick_m 2017-02-25 05:09:16 +11:00 committed by Robin Gareus
parent dd72d2bf65
commit ccb51a8ddb
11 changed files with 831 additions and 175 deletions

View file

@ -6710,11 +6710,11 @@ Editor::define_one_bar (framepos_t start, framepos_t end)
XMLNode& before (_session->tempo_map().get_state());
if (do_global) {
_session->tempo_map().change_initial_tempo (beats_per_minute, t.note_type());
_session->tempo_map().change_initial_tempo (beats_per_minute, t.note_type(), t.end_note_types_per_minute());
} else if (t.frame() == start) {
_session->tempo_map().change_existing_tempo_at (start, beats_per_minute, t.note_type());
_session->tempo_map().change_existing_tempo_at (start, beats_per_minute, t.note_type(), t.end_note_types_per_minute());
} else {
const Tempo tempo (beats_per_minute, t.note_type());
const Tempo tempo (beats_per_minute, t.note_type(), t.end_note_types_per_minute());
_session->tempo_map().add_tempo (tempo, 0.0, start, TempoSection::Constant, AudioTime);
}