commit 395fddc4ec669e7b4a36f677a5b2cc55a00040d9
parent 814230e33e49ef00d01110ec32b222ca84e09500
Author: Damien Goutte-Gattat <[email protected]>
Date: Sat, 29 Oct 2011 19:59:01 +0200
Process Program Change messages
Identify Program Change messages in the MIDI input stream and
forward the event to the input manager.
Diffstat:
3 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/src/Nio/AlsaEngine.cpp b/src/Nio/AlsaEngine.cpp
@@ -152,6 +152,13 @@ void *AlsaEngine::MidiThread(void)
InMgr::getInstance().putEvent(ev);
break;
+ case SND_SEQ_EVENT_PGMCHANGE:
+ ev.type = M_PGMCHANGE;
+ ev.channel = event->data.control.channel;
+ ev.num = event->data.control.value;
+ InMgr::getInstance().putEvent(ev);
+ break;
+
case SND_SEQ_EVENT_RESET: // reset to power-on state
ev.type = M_CONTROLLER;
ev.channel = event->data.control.channel;
diff --git a/src/Nio/JackEngine.cpp b/src/Nio/JackEngine.cpp
@@ -360,6 +360,13 @@ void JackEngine::handleMidi(unsigned long frames)
InMgr::getInstance().putEvent(ev);
break;
+ case 0xC0: /* program change */
+ ev.type = M_PGMCHANGE;
+ ev.num = midi_data[1];
+ ev.value = 0;
+ InMgr::getInstance().putEvent(ev);
+ break;
+
case 0xE0: /* pitch bend */
ev.type = M_CONTROLLER;
ev.num = C_pitchwheel;
diff --git a/src/Nio/MidiIn.cpp b/src/Nio/MidiIn.cpp
@@ -52,6 +52,13 @@ void MidiIn::midiProcess(unsigned char head,
ev.value = value;
InMgr::getInstance().putEvent(ev);
break;
+ case 0xc0: //Program Change
+ ev.type = M_PGMCHANGE;
+ ev.channel = chan;
+ ev.num = num;
+ ev.value = 0;
+ InMgr::getInstance().putEvent(ev);
+ break;
case 0xe0: //Pitch Wheel
ev.type = M_CONTROLLER;
ev.channel = chan;