zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

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:
Msrc/Nio/AlsaEngine.cpp | 7+++++++
Msrc/Nio/JackEngine.cpp | 7+++++++
Msrc/Nio/MidiIn.cpp | 7+++++++
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;