diff --git a/source/backend/plugin/Lv2Plugin.cpp b/source/backend/plugin/Lv2Plugin.cpp index 22cd8aecc..de663570e 100644 --- a/source/backend/plugin/Lv2Plugin.cpp +++ b/source/backend/plugin/Lv2Plugin.cpp @@ -2533,10 +2533,15 @@ public: lv2_atom_forge_float(&fAtomForge, static_cast(timeInfo.bbt.beatsPerMinute)); } + lv2_atom_forge_pop(&fAtomForge, &forgeFrame); + 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)); - 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(); @@ -4123,7 +4128,8 @@ public: case CARLA_URI_MAP_ID_ATOM_TRANSFER_ATOM: 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); break; diff --git a/source/backend/plugin/VstPlugin.cpp b/source/backend/plugin/VstPlugin.cpp index 06147cc34..3093a3f35 100644 --- a/source/backend/plugin/VstPlugin.cpp +++ b/source/backend/plugin/VstPlugin.cpp @@ -1434,11 +1434,12 @@ public: { if (fMidiEvents[k].type == 0) 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(fMidiEvents[k].midiData[0])); - const uint8_t channel(static_cast(status < MIDI_STATUS_BIT ? status & MIDI_STATUS_BIT : 0)); + const uint8_t channel(static_cast(status < MIDI_STATUS_BIT ? status & MIDI_CHANNEL_BIT : 0)); uint8_t midiData[3]; midiData[0] = static_cast(fMidiEvents[k].midiData[0]); diff --git a/source/backend/standalone/CarlaStandalone.cpp b/source/backend/standalone/CarlaStandalone.cpp index 378759f72..d82386507 100644 --- a/source/backend/standalone/CarlaStandalone.cpp +++ b/source/backend/standalone/CarlaStandalone.cpp @@ -73,7 +73,7 @@ public: startThread(); while (! fInitialised) - carla_msleep(1); + Thread::sleep(1); } void stop() diff --git a/source/modules/native-plugins/juce-patchbay.cpp b/source/modules/native-plugins/juce-patchbay.cpp index 7998c9a0a..abf70eedf 100644 --- a/source/modules/native-plugins/juce-patchbay.cpp +++ b/source/modules/native-plugins/juce-patchbay.cpp @@ -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 { - fAudioBuffer.copyFrom(0, 0, inBuffer[0], static_cast(frames)); - fAudioBuffer.copyFrom(1, 0, inBuffer[1], static_cast(frames)); - fMidiBuffer.clear(); for (uint32_t i=0; i < midiEventCount; ++i) @@ -108,7 +105,11 @@ protected: fMidiKeyState->processNextMidiBuffer(fMidiBuffer, 0, static_cast(frames), true); } - fGraph.getGraph().processBlock(fAudioBuffer, fMidiBuffer); + FloatVectorOperations::copy(outBuffer[0], inBuffer[0], static_cast(frames)); + FloatVectorOperations::copy(outBuffer[1], inBuffer[1], static_cast(frames)); + AudioSampleBuffer audioBuf(outBuffer, 2, static_cast(frames)); + + fGraph.getGraph().processBlock(audioBuf, fMidiBuffer); MidiBuffer::Iterator outBufferIterator(fMidiBuffer); const uint8_t* midiData; @@ -129,9 +130,6 @@ protected: std::memcpy(tmpEvent.data, midiData, sizeof(uint8_t)*tmpEvent.size); writeMidiEvent(&tmpEvent); } - - FloatVectorOperations::copy(outBuffer[0], fAudioBuffer.getSampleData(0), static_cast(frames)); - FloatVectorOperations::copy(outBuffer[1], fAudioBuffer.getSampleData(1), static_cast(frames)); } // -------------------------------------------------------------------