Windows 10x64.
JUCE 5.4.5
I cannot for the life of me figure this out.
I have a DAW type application (this is not a plug in) that is loading a single
plug in currently Steven Slate Drums 4 (SSD4). SSD5 will not run when a debugger is present.
SSD4 has a built in mixer so one can assign each voice to a bus.
‘Stereo 1’ (BusIndex[0]) always works, meaning sound happens.
If I assign an instrument to any other bus then no sound is produced for that instrument.
This is what the important information (at least what I think is important)
from the plug in one I have loaded it:
AudioProcessor::BusCount(Output): 16
AudioProcessor::TotalNumberOfOutputChannels: 24
// BusLayout=(PlugInPtr->getBusesLayout)(); This Is The Active Bus Layout?
BusLayout::NumberOfMainOutputChannels: 2
BusLayout::NumberOfMainInputChannels: 0
BusIndex[0]: Name=1 NumberOfChannels:2
IsEnabled: Yes IsEnabledByDefault: Yes
AudioChannelSet::Description: Stereo
BusIndex[1]: Name=3 NumberOfChannels:2
IsEnabled: Yes IsEnabledByDefault: Yes
AudioChannelSet::Description: Stereo
BusIndex[2]: Name=5 NumberOfChannels:2
IsEnabled: Yes IsEnabledByDefault: Yes
AudioChannelSet::Description: Stereo
// Ommited 3-14, but they are there, all enabled
BusIndex[15]: Name=24 NumberOfChannels:1
IsEnabled: Yes IsEnabledByDefault: Yes
AudioChannelSet::Description: Mono
AudioProcessor::BusCount(Input): 0
int juce::VSTPluginInstance::prepareToPlay()
numOutputBuses:16
maxChannels:24
In my audioDeviceIOCallback() I am doing this:
{
// I am using a ASIO AudioDevice.
// There are no inputs enabled so numInputChannels:0
// THere is one output pair enabled so numOutputChannels:2
................... Some Code
if(this->Processor!=nullptr)
{const ScopedLock sl2(this->Processor->getCallbackLock());
if(!(this->Processor->isSuspended)())
{
if((this->Processor->isUsingDoublePrecision)())
{
(this->ConversionBuffer.makeCopyOf)(Buffer,true);
(this->Processor->processBlock)(this->ConversionBuffer,this->IncomingMidi);
Buffer.makeCopyOf(this->ConversionBuffer,true);
// Am I Leaving A Lot Of Memory Behind Here By Not 'Emptying' My Converion Buffer?
// On The Other Hand I Only Have One Processor Which Will Probaby Use The Same Amount
// Of Data Each Time?
// See audioDeviceStopped()
}
else // Not Using Double Precision
{
// (this->Processor->processBlock)()
// -> juce_VSTPluginInstance::processBlock()
// ->juce_VSTPluginInstance::processAudio()
(this->Processor->processBlock)(Buffer,this->IncomingMidi);
}
return;
} // End if(!(this->Processor->isSuspended)())
} // End if(this->Processor!=nullptr)
} // End Scope Block For Lock
........................... Some Code
}
When juce_VSTPluginInstance::processAudio() is called:
buffer::numChannels:2
tmpbuffer::numChannels:24
vstEffect->numOutputs:24
So, in the end this all looks like it should be working, but anything
occurring on any channel other than 0,1 (Stereo 1, BusIndex[0]) is not coming through
(No sound produced).
What am I doing wrong?
Thanks in advance for any pointers.