Browse Source

VST3: Fixed a MIDI routing bug

tags/2021-05-28
Tom Poole 6 years ago
parent
commit
ba4f9d5fe5
3 changed files with 16 additions and 15 deletions
  1. +9
    -8
      modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp
  2. +5
    -5
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
  3. +2
    -2
      modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp

+ 9
- 8
modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp View File

@@ -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 <typename FloatType>
void associateTo (Vst::ProcessData& destination, AudioBuffer<FloatType>& buffer)
void associateWith (Vst::ProcessData& destination, AudioBuffer<FloatType>& buffer)
{
VST3BufferExchange<FloatType>::mapBufferToBuses (inputBuses, inputBusMap.get<FloatType>(), cachedBusLayouts.inputBuses, buffer);
VST3BufferExchange<FloatType>::mapBufferToBuses (inputBuses, inputBusMap.get<FloatType>(), cachedBusLayouts.inputBuses, buffer);
VST3BufferExchange<FloatType>::mapBufferToBuses (outputBuses, outputBusMap.get<FloatType>(), 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;


+ 5
- 5
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp View File

@@ -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);


+ 2
- 2
modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp View File

@@ -702,7 +702,7 @@ struct RenderSequenceBuilder
static int getFreeBuffer (Array<AssignedBuffer>& 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;


Loading…
Cancel
Save