From f76c897f049e1595871f2d6e73ceeff7eae9f060 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 17 Dec 2019 17:17:27 +0100 Subject: [PATCH] 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. --- libs/ardour/midi_model.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index b3a441db36..c52ac4d2de 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -1684,8 +1684,12 @@ MidiModel::set_midi_source (boost::shared_ptr s) void 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 @@ -1703,9 +1707,13 @@ MidiModel::control_list_interpolation_changed (Evoral::Parameter p, Evoral::Cont void MidiModel::source_automation_state_changed (Evoral::Parameter p, AutoState s) { - Glib::Threads::Mutex::Lock lm (_control_lock); - boost::shared_ptr al = boost::dynamic_pointer_cast (control(p)->list ()); - al->set_automation_state (s); + { + Glib::Threads::Mutex::Lock lm (_control_lock); + boost::shared_ptr al = boost::dynamic_pointer_cast (control(p)->list ()); + al->set_automation_state (s); + } + /* re-read MIDI */ + ContentsChanged (); /* EMIT SIGNAL */ } void