@@ -2533,10 +2533,15 @@ public: | |||||
lv2_atom_forge_float(&fAtomForge, static_cast<float>(timeInfo.bbt.beatsPerMinute)); | lv2_atom_forge_float(&fAtomForge, static_cast<float>(timeInfo.bbt.beatsPerMinute)); | ||||
} | } | ||||
lv2_atom_forge_pop(&fAtomForge, &forgeFrame); | |||||
LV2_Atom* const atom((LV2_Atom*)timeInfoBuf); | LV2_Atom* const atom((LV2_Atom*)timeInfoBuf); | ||||
CARLA_SAFE_ASSERT_BREAK(atom->size < 256); | |||||
lv2_atom_buffer_write(&evInAtomIters[i], 0, 0, atom->type, atom->size, LV2_ATOM_BODY_CONST(atom)); | lv2_atom_buffer_write(&evInAtomIters[i], 0, 0, atom->type, atom->size, LV2_ATOM_BODY_CONST(atom)); | ||||
CARLA_ASSERT(atom->size < 256); | |||||
// send deprecated blank object as well | |||||
lv2_atom_buffer_write(&evInAtomIters[i], 0, 0, CARLA_URI_MAP_ID_ATOM_BLANK, atom->size, LV2_ATOM_BODY_CONST(atom)); | |||||
} | } | ||||
pData->postRtEvents.trySplice(); | pData->postRtEvents.trySplice(); | ||||
@@ -4123,7 +4128,8 @@ public: | |||||
case CARLA_URI_MAP_ID_ATOM_TRANSFER_ATOM: | case CARLA_URI_MAP_ID_ATOM_TRANSFER_ATOM: | ||||
case CARLA_URI_MAP_ID_ATOM_TRANSFER_EVENT: | case CARLA_URI_MAP_ID_ATOM_TRANSFER_EVENT: | ||||
CARLA_SAFE_ASSERT_RETURN(((const LV2_Atom*)buffer)->size == bufferSize,); | |||||
// plugins sometimes fails on this, not good... | |||||
CARLA_SAFE_ASSERT_INT2(((const LV2_Atom*)buffer)->size == bufferSize, ((const LV2_Atom*)buffer)->size, bufferSize); | |||||
fAtomQueueIn.put((const LV2_Atom*)buffer, rindex); | fAtomQueueIn.put((const LV2_Atom*)buffer, rindex); | ||||
break; | break; | ||||
@@ -1434,11 +1434,12 @@ public: | |||||
{ | { | ||||
if (fMidiEvents[k].type == 0) | if (fMidiEvents[k].type == 0) | ||||
break; | break; | ||||
CARLA_SAFE_ASSERT_CONTINUE(fMidiEvents[k].deltaFrames > 0); | |||||
CARLA_SAFE_ASSERT_CONTINUE(fMidiEvents[k].midiData[0] > 0); | |||||
CARLA_SAFE_ASSERT_CONTINUE(fMidiEvents[k].deltaFrames >= 0); | |||||
CARLA_SAFE_ASSERT_CONTINUE(fMidiEvents[k].midiData[0] != 0); | |||||
const uint8_t status(static_cast<uint8_t>(fMidiEvents[k].midiData[0])); | const uint8_t status(static_cast<uint8_t>(fMidiEvents[k].midiData[0])); | ||||
const uint8_t channel(static_cast<uint8_t>(status < MIDI_STATUS_BIT ? status & MIDI_STATUS_BIT : 0)); | |||||
const uint8_t channel(static_cast<uint8_t>(status < MIDI_STATUS_BIT ? status & MIDI_CHANNEL_BIT : 0)); | |||||
uint8_t midiData[3]; | uint8_t midiData[3]; | ||||
midiData[0] = static_cast<uint8_t>(fMidiEvents[k].midiData[0]); | midiData[0] = static_cast<uint8_t>(fMidiEvents[k].midiData[0]); | ||||
@@ -73,7 +73,7 @@ public: | |||||
startThread(); | startThread(); | ||||
while (! fInitialised) | while (! fInitialised) | ||||
carla_msleep(1); | |||||
Thread::sleep(1); | |||||
} | } | ||||
void stop() | void stop() | ||||
@@ -90,9 +90,6 @@ protected: | |||||
void process(float** inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const midiEvents, const uint32_t midiEventCount) override | void process(float** inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const midiEvents, const uint32_t midiEventCount) override | ||||
{ | { | ||||
fAudioBuffer.copyFrom(0, 0, inBuffer[0], static_cast<int>(frames)); | |||||
fAudioBuffer.copyFrom(1, 0, inBuffer[1], static_cast<int>(frames)); | |||||
fMidiBuffer.clear(); | fMidiBuffer.clear(); | ||||
for (uint32_t i=0; i < midiEventCount; ++i) | for (uint32_t i=0; i < midiEventCount; ++i) | ||||
@@ -108,7 +105,11 @@ protected: | |||||
fMidiKeyState->processNextMidiBuffer(fMidiBuffer, 0, static_cast<int>(frames), true); | fMidiKeyState->processNextMidiBuffer(fMidiBuffer, 0, static_cast<int>(frames), true); | ||||
} | } | ||||
fGraph.getGraph().processBlock(fAudioBuffer, fMidiBuffer); | |||||
FloatVectorOperations::copy(outBuffer[0], inBuffer[0], static_cast<int>(frames)); | |||||
FloatVectorOperations::copy(outBuffer[1], inBuffer[1], static_cast<int>(frames)); | |||||
AudioSampleBuffer audioBuf(outBuffer, 2, static_cast<int>(frames)); | |||||
fGraph.getGraph().processBlock(audioBuf, fMidiBuffer); | |||||
MidiBuffer::Iterator outBufferIterator(fMidiBuffer); | MidiBuffer::Iterator outBufferIterator(fMidiBuffer); | ||||
const uint8_t* midiData; | const uint8_t* midiData; | ||||
@@ -129,9 +130,6 @@ protected: | |||||
std::memcpy(tmpEvent.data, midiData, sizeof(uint8_t)*tmpEvent.size); | std::memcpy(tmpEvent.data, midiData, sizeof(uint8_t)*tmpEvent.size); | ||||
writeMidiEvent(&tmpEvent); | writeMidiEvent(&tmpEvent); | ||||
} | } | ||||
FloatVectorOperations::copy(outBuffer[0], fAudioBuffer.getSampleData(0), static_cast<int>(frames)); | |||||
FloatVectorOperations::copy(outBuffer[1], fAudioBuffer.getSampleData(1), static_cast<int>(frames)); | |||||
} | } | ||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||