Latency compensation when external sidechaining

Hello,
I have problem with latency compensation. I call setLatencySamples() and it works fine with regular plugin, and my DAW compensates the latency fine, but not in the external sidechain buffer.

In the buffer from external sidechain - which is in my code
getBusBuffer(buffer, true, 1).getSample(ch, i);

I get samples without latency compensation, There is some delay or ahead, I am not sure.
Is it normal behaviour? I use Logic Pro X, and at the moment I can’t check it in other DAW.

Is there any way to fix it in Logic Pro X?

And as I notice sometimes Logic Pro X compensate latency in the real time. I mean when I hit play in Logic Pro X, and in my plugin there is no latency, and suddenly I check for example lookahead option in my plugin which generate latency, then Logic Pro needs about 2 seconds and finally he compensate that latecy. But sometimes I need to hit stop in Logic, and then again play to compensate latency. So for me it looks like it’s some problem in Logic Pro. But not sure.

Please help me.

idk if it’s a juce problem. i heard from other producers a lot that daws which are not cubase, sometimes struggle with the latency compensation stuff

1 Like

Unfortunately many hosts have bugs with side-chains.

It’s also quite a tricky problem for hosts - imagine the following scenario:

  • Track 0 has effect/insert A with side-chain from track 1
  • Track 1 has effect B with side-chain from track 0

Assuming side-chain signal should be after processing, how could effects A and B get the side-chains samples without delay? Without any delay their input would depend on their output…

Auto-Align works around this issue by using sample-accurate internal routing (based on hosts correctly reporting buffer sample positions), but this work-around only works if the samples are used for analysis of past samples and not for real-time processing of latest samples.

2 Likes

LogicPro definitely has bugs related to plugin delay compensation on side chains, particularly if you’re putting the latent plugin on an AUX channel that is feeding the side chain of another channel.