summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-02-19 23:09:20 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-02-19 23:09:20 +0000
commitf22f22b5998dbc873c0bd2e8ecb5c58c786dab6e (patch)
tree446aac833f5c1b2cee482505fa256fd3ae0a7ca6 /libs/surfaces
parent6b459529cefd4c7cba4e00fbb896ca5e3592fd1b (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.cc13
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.cc4
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