13
0

Directly apply MIDI automation state changes

Previously "play/off" and "discrete/linear" changes had no effect
until the MIDI playlist was edited and MIDI re-read into RAM.
This commit is contained in:
Robin Gareus 2019-12-17 17:17:27 +01:00
parent 9c6d9324bd
commit f76c897f04
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -1684,8 +1684,12 @@ MidiModel::set_midi_source (boost::shared_ptr<MidiSource> s)
void void
MidiModel::source_interpolation_changed (Evoral::Parameter p, Evoral::ControlList::InterpolationStyle s) MidiModel::source_interpolation_changed (Evoral::Parameter p, Evoral::ControlList::InterpolationStyle s)
{ {
Glib::Threads::Mutex::Lock lm (_control_lock); {
control(p)->list()->set_interpolation (s); Glib::Threads::Mutex::Lock lm (_control_lock);
control(p)->list()->set_interpolation (s);
}
/* re-read MIDI */
ContentsChanged (); /* EMIT SIGNAL */
} }
/** A ControlList has signalled that its interpolation style has changed. Again, in order to keep /** A ControlList has signalled that its interpolation style has changed. Again, in order to keep
@ -1703,9 +1707,13 @@ MidiModel::control_list_interpolation_changed (Evoral::Parameter p, Evoral::Cont
void void
MidiModel::source_automation_state_changed (Evoral::Parameter p, AutoState s) MidiModel::source_automation_state_changed (Evoral::Parameter p, AutoState s)
{ {
Glib::Threads::Mutex::Lock lm (_control_lock); {
boost::shared_ptr<AutomationList> al = boost::dynamic_pointer_cast<AutomationList> (control(p)->list ()); Glib::Threads::Mutex::Lock lm (_control_lock);
al->set_automation_state (s); boost::shared_ptr<AutomationList> al = boost::dynamic_pointer_cast<AutomationList> (control(p)->list ());
al->set_automation_state (s);
}
/* re-read MIDI */
ContentsChanged (); /* EMIT SIGNAL */
} }
void void