From ba4f9d5fe5a16217437779a4b7d0cb65e6e499f0 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Tue, 12 Mar 2019 13:25:07 +0000 Subject: [PATCH] VST3: Fixed a MIDI routing bug --- .../format_types/juce_VST3PluginFormat.cpp | 17 +++++++++-------- .../format_types/juce_VSTPluginFormat.cpp | 10 +++++----- .../processors/juce_AudioProcessorGraph.cpp | 4 ++-- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp index dd3f711699..d8ebd42cf8 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp @@ -1995,8 +1995,8 @@ public: for (int i = getTotalNumInputChannels(); i < buffer.getNumChannels(); ++i) buffer.clear (i, 0, numSamples); - associateTo (data, buffer); - associateTo (data, midiMessages); + associateWith (data, buffer); + associateWith (data, midiMessages); processor->process (data); @@ -2759,23 +2759,24 @@ private: //============================================================================== template - void associateTo (Vst::ProcessData& destination, AudioBuffer& buffer) + void associateWith (Vst::ProcessData& destination, AudioBuffer& buffer) { - VST3BufferExchange::mapBufferToBuses (inputBuses, inputBusMap.get(), cachedBusLayouts.inputBuses, buffer); + VST3BufferExchange::mapBufferToBuses (inputBuses, inputBusMap.get(), cachedBusLayouts.inputBuses, buffer); VST3BufferExchange::mapBufferToBuses (outputBuses, outputBusMap.get(), cachedBusLayouts.outputBuses, buffer); destination.inputs = inputBuses.getRawDataPointer(); destination.outputs = outputBuses.getRawDataPointer(); } - void associateTo (Vst::ProcessData& destination, MidiBuffer& midiBuffer) + void associateWith (Vst::ProcessData& destination, MidiBuffer& midiBuffer) { midiInputs->clear(); midiOutputs->clear(); - MidiEventList::toEventList (*midiInputs, midiBuffer, - destination.inputParameterChanges, - midiMapping); + if (acceptsMidi()) + MidiEventList::toEventList (*midiInputs, midiBuffer, + destination.inputParameterChanges, + midiMapping); destination.inputEvents = midiInputs; destination.outputEvents = midiOutputs; diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp index 5bd3a39fc0..7afc26f9d9 100644 --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp @@ -2340,12 +2340,12 @@ private: if (currentPlayHead->getCurrentPosition (position)) { - vstHostTime.samplePos = (double) position.timeInSamples; - vstHostTime.tempo = position.bpm; + vstHostTime.samplePos = (double) position.timeInSamples; + vstHostTime.tempo = position.bpm; vstHostTime.timeSigNumerator = position.timeSigNumerator; vstHostTime.timeSigDenominator = position.timeSigDenominator; - vstHostTime.ppqPos = position.ppqPosition; - vstHostTime.barStartPos = position.ppqPositionOfLastBarStart; + vstHostTime.ppqPos = position.ppqPosition; + vstHostTime.barStartPos = position.ppqPositionOfLastBarStart; vstHostTime.flags |= Vst2::kVstTempoValid | Vst2::kVstTimeSigValid | Vst2::kVstPpqPosValid @@ -2460,7 +2460,7 @@ private: outOfPlaceBuffer.clear(); vstEffect->process (vstEffect, buffer.getArrayOfWritePointers(), - outOfPlaceBuffer.getArrayOfWritePointers(), sampleFrames); + outOfPlaceBuffer.getArrayOfWritePointers(), sampleFrames); for (int i = vstEffect->numOutputs; --i >= 0;) buffer.copyFrom (i, 0, outOfPlaceBuffer.getReadPointer (i), sampleFrames); diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp index 44f538a55b..d18f500b9b 100644 --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp @@ -702,7 +702,7 @@ struct RenderSequenceBuilder static int getFreeBuffer (Array& buffers) { for (int i = 1; i < buffers.size(); ++i) - if (buffers.getReference(i).isFree()) + if (buffers.getReference (i).isFree()) return i; buffers.add (AssignedBuffer::createFree()); @@ -1376,7 +1376,7 @@ void AudioProcessorGraph::AudioGraphIOProcessor::fillInPluginDescription (Plugin d.uid = d.name.hashCode(); d.category = "I/O devices"; d.pluginFormatName = "Internal"; - d.manufacturerName = "ROLI Ltd."; + d.manufacturerName = "JUCE"; d.version = "1.0"; d.isInstrument = false;