Juce 3.0 - no sidechain, no proper multiout configuration support?

and every time one has to do a major update of JUCE (me, now), that code always causes confilcts and merge issues

for this I can recommend danradix's changes which we quite often maintain the merges for at our branch at https://github.com/soundradix/JUCE

cheers, Yair

This JUCE fork looks like a very valuable resource. Great work!

Some questions about your fork:

If we clone your branch called "sidechainAndMultiOut", the only difference compared to the original JUCE tree will be the sidechain / multi-out patches and nothing else, correct?

What is in the master branch of your fork? Is it the original JUCE tree only, or a combination of features / patches that you consider stable for your own projects?

 

 

Thanks for that sidechain code.

I found  typo in the AAX wrapper:

#if JucePluginAcceptsSideChain

instead of

#if JucePlugin_AcceptsSideChain

Thanks for the tip, we'll fix and pass it through our testing process to check that all still works with the code that makes sense :)

Just a note if anyone else is having trouble detecting whether or not an AAX sidechain channel is active: 

We were having an issue with one of our plugins because versions of ProTools below 11.1 don't send the sidechain connected message which activates/deactivates the extra channel. Because of this getNumInputChannelsTotal(true) was never including the sidechain, so we couldn't tell when to enable/disable that option.

Reading through the AAX documentation, it looks like another method to detect whether or not a sidechain channel is active is to test in the actual AAX_CALL BACK. I added this and now it works in all PT versions. Here's the relevant commit: 

https://github.com/UnfilteredAudio/JUCE/commit/092a14ada69d5defb9d2a552c44bd2dbae824c92 

And the code: 

static void AAX_CALLBACK algorithmProcessCallback

...

            #if JucePlugin_AcceptsSideChain

            int32_t sideChainChannel = *i.sideChain;

            if(sideChainChannel){

                i.pluginInstance->parameters.getPluginInstance().setInputElementActive(1, true);

            } else {

                i.pluginInstance->parameters.getPluginInstance().setInputElementActive(1, false);

            }

            #endif

Some notes for people switching from soundradix's multi-bus implementation to the fresh new implementation in JUCE 4.1:

  • To accept the side-chain, add "busArrangement.inputBuses.set (1, busArrangement.inputBuses.getReference (0))" in the audio processors's constructor (was previously an Introjucer option)
  • "getNumInputChannelsTotal" becomes "getTotalNumInputChannels", likewise for output
  • "getNumInputChannels (0)" becomes "getMainBusNumInputChannels()". likewise for output
  • "getInputElementActive (X)" becomes "busArrangement.inputBuses.size() > X && busArrangement.inputBuses.getReference (X).channels.size() > 0". iiuc
  • likewise for "isSideChainActive()" with X=1
  • To get the channel number in processBlock's buffer for a specific bus's channel, use "busArrangement.getChannelIndexInProcessBlockBuffer"​

I switched to the new implementation and it works for me in Logic but I haven't yet tested it thoroughly. We'll update after testing in various environments if we found any regression.

Hopefully this new implementation works fine in all environments :) I'm happy that I won't have to keep on merging..

Congrats for finally having this in JUCE!

Cheers, Yair

After some testing seems that the new implementation has some problems. So far:

  • In Logic X, put the JUCE demo plugin as a midi-controlled effect and give it input audio. When playback is stopped plugin output is fed to it as input and with the demo plugin it creates loud noise.
  • VST3 side-chain causes crashes in Studio One 3

Will give more detailed reports after more research into it.

At this for time developers using the Sound-Radix side-chain implementation, use commit https://github.com/soundradix/JUCE/commit/588abf892914 or earlier. (After that I merged ROLI's implementation and replaced ours)

Hi yairadix,

the logic x bug is a known issue and i'm working on a fix. You'll find that this will only happen if you do not select any track as a side-chain input to the plug-in. I've done lot's of debugging already on this issue but I still haven't been able to quite nail it. I'll keep you posted.

I hadn't checked Studio One VST3 side-chain support. I'm sure it will be something fairly straight forward. I'll fix this as soon as possible.

Fabian

Hi Fabian!
I think I just encountered the same thing when testing my AU plug-in on Logic. The plug-in does not require side chaining, but it only supports quad configuration. I tried the following with a quad version of the Juce demo plug-in: call getMagnitude(…) on the incoming audioBuffer. On audio files, where there should really be silence, there is definitely some noise when hitting stop… Are there any news on the issue?

Thanks!

Konrad

Hi Konrad,

sorry for the late answer. This is a really old thread so I’m not sure you are talking about the newest version of JUCE. It’s definitely fixed on the develop branch. Did you check that out?

Fabian