DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 815d01277152c0067b6d309a92aa367651e6cd18
parent 10c98a170349b8bb4c47b2cb0aa228ef9c0dcb6a
Author: falkTX <falktx@gmail.com>
Date:   Sun, 17 Aug 2014 02:28:06 +0100

Fix synths build

Diffstat:
Mdistrho/src/DistrhoPluginJack.cpp | 8+++++---
Mdistrho/src/DistrhoPluginLADSPA+DSSI.cpp | 72++++++++++++++++++++++++++++++++++++------------------------------------
Mdistrho/src/DistrhoPluginLV2.cpp | 11+++++------
Mdistrho/src/DistrhoPluginVST.cpp | 2+-
4 files changed, 47 insertions(+), 46 deletions(-)

diff --git a/distrho/src/DistrhoPluginJack.cpp b/distrho/src/DistrhoPluginJack.cpp @@ -249,14 +249,16 @@ protected: { if (jack_midi_event_get(&jevent, midiBuf, i) != 0) break; - if (jevent.size > 4) - continue; MidiEvent& midiEvent(midiEvents[midiEventCount++]); midiEvent.frame = jevent.time; midiEvent.size = jevent.size; - std::memcpy(midiEvent.buf, jevent.buffer, jevent.size); + + if (midiEvent.size > MidiEvent::kDataSize) + midiEvent.dataExt = jevent.buffer; + else + std::memcpy(midiEvent.data, jevent.buffer, midiEvent.size); } fPlugin.run(audioIns, audioOuts, nframes, midiEvents, midiEventCount); diff --git a/distrho/src/DistrhoPluginLADSPA+DSSI.cpp b/distrho/src/DistrhoPluginLADSPA+DSSI.cpp @@ -203,58 +203,58 @@ public: { case SND_SEQ_EVENT_NOTEOFF: j = midiEventCount++; - midiEvents[j].frame = seqEvent.time.tick; - midiEvents[j].size = 3; - midiEvents[j].buf[0] = 0x80 + seqEvent.data.note.channel; - midiEvents[j].buf[1] = seqEvent.data.note.note; - midiEvents[j].buf[2] = 0; - midiEvents[j].buf[3] = 0; + midiEvents[j].frame = seqEvent.time.tick; + midiEvents[j].size = 3; + midiEvents[j].data[0] = 0x80 + seqEvent.data.note.channel; + midiEvents[j].data[1] = seqEvent.data.note.note; + midiEvents[j].data[2] = 0; + midiEvents[j].data[3] = 0; break; case SND_SEQ_EVENT_NOTEON: j = midiEventCount++; - midiEvents[j].frame = seqEvent.time.tick; - midiEvents[j].size = 3; - midiEvents[j].buf[0] = 0x90 + seqEvent.data.note.channel; - midiEvents[j].buf[1] = seqEvent.data.note.note; - midiEvents[j].buf[2] = seqEvent.data.note.velocity; - midiEvents[j].buf[3] = 0; + midiEvents[j].frame = seqEvent.time.tick; + midiEvents[j].size = 3; + midiEvents[j].data[0] = 0x90 + seqEvent.data.note.channel; + midiEvents[j].data[1] = seqEvent.data.note.note; + midiEvents[j].data[2] = seqEvent.data.note.velocity; + midiEvents[j].data[3] = 0; break; case SND_SEQ_EVENT_KEYPRESS: j = midiEventCount++; - midiEvents[j].frame = seqEvent.time.tick; - midiEvents[j].size = 3; - midiEvents[j].buf[0] = 0xA0 + seqEvent.data.note.channel; - midiEvents[j].buf[1] = seqEvent.data.note.note; - midiEvents[j].buf[2] = seqEvent.data.note.velocity; - midiEvents[j].buf[3] = 0; + midiEvents[j].frame = seqEvent.time.tick; + midiEvents[j].size = 3; + midiEvents[j].data[0] = 0xA0 + seqEvent.data.note.channel; + midiEvents[j].data[1] = seqEvent.data.note.note; + midiEvents[j].data[2] = seqEvent.data.note.velocity; + midiEvents[j].data[3] = 0; break; case SND_SEQ_EVENT_CONTROLLER: j = midiEventCount++; - midiEvents[j].frame = seqEvent.time.tick; - midiEvents[j].size = 3; - midiEvents[j].buf[0] = 0xB0 + seqEvent.data.control.channel; - midiEvents[j].buf[1] = seqEvent.data.control.param; - midiEvents[j].buf[2] = seqEvent.data.control.value; - midiEvents[j].buf[3] = 0; + midiEvents[j].frame = seqEvent.time.tick; + midiEvents[j].size = 3; + midiEvents[j].data[0] = 0xB0 + seqEvent.data.control.channel; + midiEvents[j].data[1] = seqEvent.data.control.param; + midiEvents[j].data[2] = seqEvent.data.control.value; + midiEvents[j].data[3] = 0; break; case SND_SEQ_EVENT_CHANPRESS: j = midiEventCount++; - midiEvents[j].frame = seqEvent.time.tick; - midiEvents[j].size = 2; - midiEvents[j].buf[0] = 0xD0 + seqEvent.data.control.channel; - midiEvents[j].buf[1] = seqEvent.data.control.value; - midiEvents[j].buf[2] = 0; - midiEvents[j].buf[3] = 0; + midiEvents[j].frame = seqEvent.time.tick; + midiEvents[j].size = 2; + midiEvents[j].data[0] = 0xD0 + seqEvent.data.control.channel; + midiEvents[j].data[1] = seqEvent.data.control.value; + midiEvents[j].data[2] = 0; + midiEvents[j].data[3] = 0; break; #if 0 // TODO case SND_SEQ_EVENT_PITCHBEND: j = midiEventCount++; - midiEvents[j].frame = seqEvent.time.tick; - midiEvents[j].size = 3; - midiEvents[j].buf[0] = 0xE0 + seqEvent.data.control.channel; - midiEvents[j].buf[1] = 0; - midiEvents[j].buf[2] = 0; - midiEvents[j].buf[3] = 0; + midiEvents[j].frame = seqEvent.time.tick; + midiEvents[j].size = 3; + midiEvents[j].data[0] = 0xE0 + seqEvent.data.control.channel; + midiEvents[j].data[1] = 0; + midiEvents[j].data[2] = 0; + midiEvents[j].data[3] = 0; break; #endif } diff --git a/distrho/src/DistrhoPluginLV2.cpp b/distrho/src/DistrhoPluginLV2.cpp @@ -266,7 +266,7 @@ public: # if DISTRHO_PLUGIN_IS_SYNTH if (event->body.type == fURIDs.midiEvent) { - if (event->body.size > 4 || midiEventCount >= kMaxMidiEvents) + if (midiEventCount >= kMaxMidiEvents) continue; const uint8_t* const data((const uint8_t*)(event + 1)); @@ -276,11 +276,10 @@ public: midiEvent.frame = event->time.frames; midiEvent.size = event->body.size; - uint8_t i; - for (i=0; i < midiEvent.size; ++i) - midiEvent.buf[i] = data[i]; - for (; i < 4; ++i) - midiEvent.buf[i] = 0; + if (midiEvent.size > MidiEvent::kDataSize) + midiEvent.dataExt = data; + else + std::memcpy(midiEvent.data, data, midiEvent.size); ++midiEventCount; continue; diff --git a/distrho/src/DistrhoPluginVST.cpp b/distrho/src/DistrhoPluginVST.cpp @@ -577,7 +577,7 @@ public: MidiEvent& midiEvent(fMidiEvents[fMidiEventCount++]); midiEvent.frame = vstMidiEvent->deltaFrames; midiEvent.size = 3; - std::memcpy(midiEvent.buf, vstMidiEvent->midiData, 3*sizeof(uint8_t)); + std::memcpy(midiEvent.data, vstMidiEvent->midiData, sizeof(uint8_t)*3); } } break;