diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-02-19 23:09:20 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-02-19 23:09:20 +0000 |
commit | f22f22b5998dbc873c0bd2e8ecb5c58c786dab6e (patch) | |
tree | 446aac833f5c1b2cee482505fa256fd3ae0a7ca6 /libs/surfaces | |
parent | 6b459529cefd4c7cba4e00fbb896ca5e3592fd1b (diff) |
make transport buttons and shuttle controller work with MIDI CC's
git-svn-id: svn://localhost/ardour2/trunk@1477 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/generic_midi/generic_midi_control_protocol.cc | 13 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/midicontrollable.cc | 4 |
2 files changed, 16 insertions, 1 deletions
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index 83c5d9008d..e81a45b47a 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -126,7 +126,18 @@ GenericMidiControlProtocol::start_learning (Controllable* c) return false; } - MIDIControllable* mc = new MIDIControllable (*_port, *c); + MIDIControllable* mc = 0; + + for (MIDIControllables::iterator i = controllables.begin(); i != controllables.end(); ++i) { + if ((*i)->get_controllable().id() == c->id()) { + mc = *i; + break; + } + } + + if (!mc) { + mc = new MIDIControllable (*_port, *c); + } { Glib::Mutex::Lock lm (pending_lock); diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc index 1b7177cf90..ef7a62619a 100644 --- a/libs/surfaces/generic_midi/midicontrollable.cc +++ b/libs/surfaces/generic_midi/midicontrollable.cc @@ -99,6 +99,8 @@ MIDIControllable::stop_learning () void MIDIControllable::drop_external_control () { + cerr << "Dropping existing control using " << connections << " connections\n"; + if (connections > 0) { midi_sense_connection[0].disconnect (); } @@ -279,6 +281,8 @@ MIDIControllable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional) default: break; } + + cerr << "MIDI bound with " << connections << endl; } void |