summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_model.cc
diff options
context:
space:
mode:
authorAndré Nusser <andre.nusser@googlemail.com>2015-10-15 15:36:17 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2015-10-17 22:12:54 -0400
commit66f18914b21837b0d4087d1d5dfff3d654cc3ef7 (patch)
treef1d5af9dacf56b2ead8a609bc50688e77054d181 /libs/ardour/midi_model.cc
parentbc83699e44ddaff9318dad95038def3ed20f42f5 (diff)
Split transpose in MidiModel into two functions.
Diffstat (limited to 'libs/ardour/midi_model.cc')
-rw-r--r--libs/ardour/midi_model.cc25
1 files changed, 15 insertions, 10 deletions
diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc
index fd08428a68..5997c5b548 100644
--- a/libs/ardour/midi_model.cc
+++ b/libs/ardour/midi_model.cc
@@ -1983,6 +1983,20 @@ MidiModel::insert_silence_at_start (TimeType t)
}
}
+void
+MidiModel::transpose (NoteDiffCommand* c, const NotePtr note_ptr, int semitones)
+{
+ int new_note = note_ptr->note() + semitones;
+
+ if (new_note < 0) {
+ new_note = 0;
+ } else if (new_note > 127) {
+ new_note = 127;
+ }
+
+ c->change (note_ptr, NoteDiffCommand::NoteNumber, (uint8_t) new_note);
+}
+
/** Transpose notes in a time range by a given number of semitones. Notes
* will be clamped at 0 and 127 if the transposition would make them exceed
* that range.
@@ -2007,16 +2021,7 @@ MidiModel::transpose (TimeType from, TimeType to, int semitones)
} else if ((*i)->time() >= from) {
- int new_note = (*i)->note() + semitones;
-
- if (new_note < 0) {
- new_note = 0;
- } else if (new_note > 127) {
- new_note = 127;
- }
-
- c->change (*i, NoteDiffCommand::NoteNumber, (uint8_t) new_note);
-
+ transpose (c, *i, semitones);
}
}