commit 815d01277152c0067b6d309a92aa367651e6cd18
parent 10c98a170349b8bb4c47b2cb0aa228ef9c0dcb6a
Author: falkTX <falktx@gmail.com>
Date: Sun, 17 Aug 2014 02:28:06 +0100
Fix synths build
Diffstat:
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;