diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-08-14 17:11:33 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-08-14 17:11:33 +0000 |
commit | ae5f278202c6a13637644a39c57fe34100cd7f6e (patch) | |
tree | 3af61718df4ddffbbc97b466fde5c0b53cb6ea3e /libs/surfaces | |
parent | bd1d705498a30939712deada370d868664b61a34 (diff) |
make control protocol's SelectByRID signal work, thus enabling MIDI binding maps to use function="select" with an argument; fix minor bug in previous commit
git-svn-id: svn://localhost/ardour2/branches/3.0@9991 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/generic_midi/generic_midi_control_protocol.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/midifunction.cc | 12 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/midifunction.h | 7 |
3 files changed, 20 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 1a615de424..05a3ef0505 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -844,7 +844,7 @@ GenericMidiControlProtocol::create_function (const XMLNode& node) } } - if ((prop = node.property (X_("arg"))) != 0) { + if ((prop = node.property (X_("arg"))) != 0 || (prop = node.property (X_("argument"))) != 0 || (prop = node.property (X_("arguments"))) != 0) { argument = prop->value (); } diff --git a/libs/surfaces/generic_midi/midifunction.cc b/libs/surfaces/generic_midi/midifunction.cc index 186858550f..38252326d7 100644 --- a/libs/surfaces/generic_midi/midifunction.cc +++ b/libs/surfaces/generic_midi/midifunction.cc @@ -66,6 +66,16 @@ MIDIFunction::setup (GenericMidiControlProtocol& ui, const std::string& invokabl return -1; } _function = Select; + } else if (strcasecmp (_invokable_name.c_str(), "track-set-solo") == 0) { + if (_argument.empty()) { + return -1; + } + _function = TrackSetSolo; + } else if (strcasecmp (_invokable_name.c_str(), "track-set-mute") == 0) { + if (_argument.empty()) { + return -1; + } + _function = TrackSetMute; } else { return -1; } @@ -123,6 +133,8 @@ MIDIFunction::execute () sscanf (_argument.c_str(), "%d", &rid); _ui->SelectByRID (rid); } + default: + break; } } diff --git a/libs/surfaces/generic_midi/midifunction.h b/libs/surfaces/generic_midi/midifunction.h index aafa739f20..8b3a52df3c 100644 --- a/libs/surfaces/generic_midi/midifunction.h +++ b/libs/surfaces/generic_midi/midifunction.h @@ -53,7 +53,14 @@ class MIDIFunction : public MIDIInvokable TransportLoopToggle, TransportRecordEnable, TransportRecordDisable, + /* 1 argument functions: RID */ Select, + /* 2 argument functions: RID, value */ + TrackSetSolo, + TrackSetMute, + TrackSetGain, + TrackSetRecordEnable, + TrackSetSoloIsolate, }; MIDIFunction (MIDI::Port&); |