I didn't find any change in your branch at this location, I've implemented a correction in IPlugVST3.cpp on myself. Studio one doesn't crash anymore now and correctly connects mono & stereo channels (also when mono is side chained into stereo).
Reaper is now reacting when changing the routing for the side chain channels and it seems to work ! :-) Any comments ?
This is the implementation for kSample32-if, the same for kSample64 (with 32 replaced with 64):
PHP Code:
if (data.numInputs)
{
if (mScChans)
{
int ninsum = data.inputs[0].numChannels; // At least the count of input channels
if (ninsum > NInChannels()) ninsum = NInChannels(); // Just to be sure
if (ninsum > data.outputs[0].numChannels) ninsum = data.outputs[0].numChannels; // E.g. studio one reports for mono tracks 2 ins and 1 out !
int mins = ninsum; // Real ins without sc
if (getAudioInput(1)->isActive())
{
ninsum += data.inputs[1].numChannels;
mSidechainActive = true;
}
else // Plug-in supports SC but it is not connected
{
if (mSidechainActive)
{
ZeroScratchBuffers();
mSidechainActive = false;
}
}
if (ninsum > NInChannels()) ninsum = NInChannels(); // Sum higher than allowed resource.h count ? Cut...
SetInputChannelConnections(0, ninsum, true); // Connect the real number of channels...
SetInputChannelConnections(ninsum, NInChannels() - ninsum, false); // ... and disconnect others
AttachInputBuffers(0, mins, data.inputs[0].channelBuffers32, data.numSamples);
if (mSidechainActive) AttachInputBuffers(mins, data.inputs[1].numChannels, data.inputs[1].channelBuffers32, data.numSamples);
}
else
{
SetInputChannelConnections(0, data.inputs[0].numChannels, true); // old solution is ok here
SetInputChannelConnections(data.inputs[0].numChannels, NInChannels() - data.inputs[0].numChannels, false);
AttachInputBuffers(0, NInChannels(), data.inputs[0].channelBuffers32, data.numSamples);
}
}