Bug (including fix) for AAX Side-chain could mute or skip some buffers in nonRealtime()

We’ve had some reports of users failing to freeze tracks or even worse getting muted tracks with offline bounce under Pro Tools. One user led me to side-chain as the culprit.

We’ve actually migrated from rock-solid implementation by @danradix:frowning:

I’ve looked it up and found something weird.
Here is plain generated sine:

Here is this sine after “freezing” (side-chain input must be connected).

  • It happens with any JUCE plug-in since 4.3.x (that uses side-chain) and up to latest 5.2.1 (develop/#2577ed)
  • It wipes the first few buffers (or worse). this isn’t a delay or something (I’ve tried impulse based signal).

It seems this is the first commit to use isSuspended with Side-Chain context.

It causes some of the process calls to wipe actual data… this might also less visible but possible on realtime.

It might be worth actually using:
AAX_eNotificationEvent_SideChainBeingConnected / Disconnected and not use process callback for wiping received buffers…

Eventually I’ve removed all the async to be as follows:

AAX_Result NotificationReceived (AAX_CTypeID type, const void* data, uint32_t size) override

if (type == AAX_eNotificationEvent_SideChainBeingConnected || type == AAX_eNotificationEvent_SideChainBeingDisconnected) { sidechainDesired.set(type == AAX_eNotificationEvent_SideChainBeingConnected); processingSidechainChange.set (1); triggerAsyncUpdate(); }

and on the actual process:

bool isSuspended = pluginInstance->isSuspended() || processingSidechainChange.get() == 1;


Just stressing the point that the side-chain implementation that existed in SR’s branch, which was used by us and others, worked well, and we naively switched to use ROLI’s new side-chain implementation (not without first helping to iron out some bugs in it) and are still suffering from newly discovered bugs in it :frowning:

I’ve just reproduced this in a commercially released product!

1 Like

Sadly in our case the bug also manifests in commercially released products. The prior versions with SR’s side-chain implementation didn’t have the bug…

1 Like

Yes, I’ll have a look at this.

1 Like

Thanks for the report. A fix for this will appear on develop shortly with commit 03195b0.