diff options
author | Carl Hetherington <carl@carlh.net> | 2010-07-14 00:58:15 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-07-14 00:58:15 +0000 |
commit | 593b421180290f46f39efcb21ed8192b624bbc73 (patch) | |
tree | f8a81aad5fae8683818103b192d3c53a26110728 /libs/evoral/src/ControlSet.cpp | |
parent | b75977920e7cb02ae31bca0379dd3aa4d82f9cbc (diff) |
A few fixes to interpolation of MIDI controller data. Don't interpolate
when writing these data back to a source, otherwise surprising new
interpolated points appear in MIDI automation. Similarly don't interpolate
when reading the model during MIDI stretch. Fix handling of interpolation state;
controllers that have been set by the user to use a different interpolation style
are noted in the <Source> tag of the session file and this state is sprayed around
to MidiModel and the GUI as necessary.
git-svn-id: svn://localhost/ardour2/branches/3.0@7409 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/evoral/src/ControlSet.cpp')
-rw-r--r-- | libs/evoral/src/ControlSet.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/evoral/src/ControlSet.cpp b/libs/evoral/src/ControlSet.cpp index d985e347d7..6142f08870 100644 --- a/libs/evoral/src/ControlSet.cpp +++ b/libs/evoral/src/ControlSet.cpp @@ -16,6 +16,7 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <iostream> #include <limits> #include "evoral/ControlSet.hpp" #include "evoral/ControlList.hpp" @@ -43,6 +44,10 @@ ControlSet::add_control(boost::shared_ptr<Control> ac) _controls[ac->parameter()] = ac; ac->ListMarkedDirty.connect_same_thread (_control_connections, boost::bind (&ControlSet::control_list_marked_dirty, this)); + + ac->list()->InterpolationChanged.connect_same_thread ( + _list_connections, boost::bind (&ControlSet::control_list_interpolation_changed, this, ac->parameter(), _1) + ); } void @@ -111,10 +116,10 @@ ControlSet::clear_controls () Glib::Mutex::Lock lm (_control_lock); _control_connections.drop_connections (); + _list_connections.drop_connections (); for (Controls::iterator li = _controls.begin(); li != _controls.end(); ++li) li->second->list()->clear(); } - } // namespace Evoral |