@@ -639,11 +639,6 @@ void PluginProcessor::processBlock(AudioBuffer<float>& buffer, MidiBuffer& midiB
639639 setThis ();
640640 sendPlayhead ();
641641
642- midiDeviceManager.dequeueMidiInput (buffer.getNumSamples (), [this ](int port, int blockSize, MidiBuffer& buffer) {
643- midiInputHistory.addEvents (buffer, 0 , blockSize, 0 );
644- sendMidiBuffer (port, buffer);
645- });
646-
647642 for (int i = totalNumInputChannels; i < totalNumOutputChannels; ++i) {
648643 buffer.clear (i, 0 , buffer.getNumSamples ());
649644 }
@@ -742,14 +737,18 @@ void PluginProcessor::processConstant(dsp::AudioBlock<float> buffer)
742737 int numBlocks = buffer.getNumSamples () / pdBlockSize;
743738
744739 for (int block = 0 ; block < numBlocks; block++) {
745-
746740 if (producesMidi ()) {
747741 midiByteIndex = 0 ;
748742 midiByteBuffer[0 ] = 0 ;
749743 midiByteBuffer[1 ] = 0 ;
750744 midiByteBuffer[2 ] = 0 ;
751745 }
752-
746+
747+ midiDeviceManager.dequeueMidiInput (pdBlockSize, [this ](int port, int blockSize, MidiBuffer& buffer) {
748+ midiInputHistory.addEvents (buffer, 0 , blockSize, 0 );
749+ sendMidiBuffer (port, buffer);
750+ });
751+
753752 for (int ch = 0 ; ch < buffer.getNumChannels (); ch++) {
754753 // Copy the channel data into the vector
755754 juce::FloatVectorOperations::copy (
@@ -793,15 +792,26 @@ void PluginProcessor::processVariable(dsp::AudioBlock<float> buffer, MidiBuffer&
793792 audioAdvancement = 0 ; // Always has to be 0 if we use the AudioMidiFifo!
794793
795794 while (outputFifo->getNumSamplesAvailable () < buffer.getNumSamples ()) {
796- blockMidiBuffer.clear ();
795+ if (producesMidi ()) {
796+ midiByteIndex = 0 ;
797+ midiByteBuffer[0 ] = 0 ;
798+ midiByteBuffer[1 ] = 0 ;
799+ midiByteBuffer[2 ] = 0 ;
800+ }
797801
802+ blockMidiBuffer.clear ();
798803 inputFifo->readAudioAndMidi (audioBufferIn, blockMidiBuffer);
799804
800805 if (!ProjectInfo::isStandalone)
801806 {
802807 sendMidiBuffer (1 , blockMidiBuffer);
803808 }
804809
810+ midiDeviceManager.dequeueMidiInput (pdBlockSize, [this ](int port, int blockSize, MidiBuffer& buffer) {
811+ midiInputHistory.addEvents (buffer, 0 , blockSize, 0 );
812+ sendMidiBuffer (port, buffer);
813+ });
814+
805815 for (int channel = 0 ; channel < audioBufferIn.getNumChannels (); channel++) {
806816 // Copy the channel data into the vector
807817 juce::FloatVectorOperations::copy (
@@ -810,13 +820,6 @@ void PluginProcessor::processVariable(dsp::AudioBlock<float> buffer, MidiBuffer&
810820 pdBlockSize);
811821 }
812822
813- if (producesMidi ()) {
814- midiByteIndex = 0 ;
815- midiByteBuffer[0 ] = 0 ;
816- midiByteBuffer[1 ] = 0 ;
817- midiByteBuffer[2 ] = 0 ;
818- }
819-
820823 setThis ();
821824
822825 sendMessagesFromQueue ();
@@ -825,7 +828,6 @@ void PluginProcessor::processVariable(dsp::AudioBlock<float> buffer, MidiBuffer&
825828 // Process audio
826829 performDSP (audioVectorIn.data (), audioVectorOut.data ());
827830
828-
829831 if (connectionListener && plugdata_debugging_enabled ())
830832 connectionListener.load ()->updateSignalData ();
831833
0 commit comments