diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc index 5bfa73518c..f787d49168 100644 --- a/libs/ardour/midi_source.cc +++ b/libs/ardour/midi_source.cc @@ -34,6 +34,7 @@ #include "pbd/pthread_utils.h" #include "pbd/basename.h" +#include "evoral/Control.hpp" #include "evoral/EventSink.hpp" #include "ardour/debug.h" @@ -303,6 +304,14 @@ MidiSource::mark_midi_streaming_write_completed (Evoral::Sequenceend_write (option, end); + + /* Make captured controls discrete to play back user input exactly. */ + for (MidiModel::Controls::iterator i = _model->controls().begin(); i != _model->controls().end(); ++i) { + if (i->second->list()) { + i->second->list()->set_interpolation(Evoral::ControlList::Discrete); + _interpolation_style.insert(std::make_pair(i->second->parameter(), Evoral::ControlList::Discrete)); + } + } } _writing = false;