summaryrefslogtreecommitdiff
path: root/libs/surfaces/generic_midi/midifunction.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-08-13 16:27:29 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-08-13 16:27:29 +0000
commitf75bbfd8ac52ea33692c3ee15953ceb2994117ab (patch)
tree13ec2167fc76ccbb1464ff81b6854234b6716b2e /libs/surfaces/generic_midi/midifunction.cc
parent77f3fa0943e4b99d3575dfb34e0ef09f3eb4ead7 (diff)
track changes to config parameters for MMC device id's correctly (from roy vegard)
git-svn-id: svn://localhost/ardour2/branches/3.0@9985 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/generic_midi/midifunction.cc')
-rw-r--r--libs/surfaces/generic_midi/midifunction.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/surfaces/generic_midi/midifunction.cc b/libs/surfaces/generic_midi/midifunction.cc
index 757c1aeffe..186858550f 100644
--- a/libs/surfaces/generic_midi/midifunction.cc
+++ b/libs/surfaces/generic_midi/midifunction.cc
@@ -35,10 +35,12 @@ MIDIFunction::~MIDIFunction ()
}
int
-MIDIFunction::init (GenericMidiControlProtocol& ui, const std::string& invokable_name, MIDI::byte* msg_data, size_t data_sz)
+MIDIFunction::setup (GenericMidiControlProtocol& ui, const std::string& invokable_name, const std::string& arg, MIDI::byte* msg_data, size_t data_sz)
{
MIDIInvokable::init (ui, invokable_name, msg_data, data_sz);
+ _argument = arg;
+
if (strcasecmp (_invokable_name.c_str(), "transport-stop") == 0) {
_function = TransportStop;
} else if (strcasecmp (_invokable_name.c_str(), "transport-roll") == 0) {
@@ -59,6 +61,11 @@ MIDIFunction::init (GenericMidiControlProtocol& ui, const std::string& invokable
_function = NextBank;
} else if (strcasecmp (_invokable_name.c_str(), "prev-bank") == 0) {
_function = PrevBank;
+ } else if (strcasecmp (_invokable_name.c_str(), "select") == 0) {
+ if (_argument.empty()) {
+ return -1;
+ }
+ _function = Select;
} else {
return -1;
}
@@ -109,6 +116,13 @@ MIDIFunction::execute ()
case TransportRecordDisable:
_ui->set_record_enable (false);
break;
+
+ case Select:
+ if (!_argument.empty()) {
+ uint32_t rid;
+ sscanf (_argument.c_str(), "%d", &rid);
+ _ui->SelectByRID (rid);
+ }
}
}