View Single Post
Old 09-28-2017, 11:55 AM   #6
Andi!
Human being with feelings
 
Andi!'s Avatar
 
Join Date: Nov 2015
Location: Germany
Posts: 82
Default

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].numChannelsninsum 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(0ninsumtrue); // Connect the real number of channels...
        
SetInputChannelConnections(ninsumNInChannels() - ninsumfalse); // ... and disconnect others

        
AttachInputBuffers(0minsdata.inputs[0].channelBuffers32data.numSamples);
        if (
mSidechainActiveAttachInputBuffers(minsdata.inputs[1].numChannelsdata.inputs[1].channelBuffers32data.numSamples);
      }
      else
      {
        
SetInputChannelConnections(0data.inputs[0].numChannelstrue); // old solution is ok here
        
SetInputChannelConnections(data.inputs[0].numChannelsNInChannels() - data.inputs[0].numChannelsfalse);
        
AttachInputBuffers(0NInChannels(), data.inputs[0].channelBuffers32data.numSamples);
      }
    } 
Andi! is offline   Reply With Quote