AudioProcessorGraph Latency paths

Hi, I Ask because working on AudioPluginHost I found strange beheaviour on AudioProcessorGraph:

Suppose I have FM8 that produces signal, Pro Q3 that in Linear Phase - Max mode process signal with 66560 samples of latency and AudioOutput.

At start: I connect channel 0 of FM8 to AudioOutput channel 0, then channel 1 of FM8 to Pro Q3 channel 1 and finally channel 1 of Pro Q3 to AudioOutput channel 1.
In this scenario I hear first left channel at 0 samples latency and then right channel with 66560 samples latency.

Then: I disconnect channel 0 of FM8 from AudioOutput channel 0 and I connect it to channel 0 of Pro Q3 and finally channel 0 of Pro Q3 to AudioOutput channel 0 (the signal FM8 ch1 → Pro Q3 ch1 → Audio Output remains the same).
In this scenario I hear 66560 samples latency in both channel.

Finally: I disconnect channel 0 chain and reconnect channel 0 of FM8 to AudioOutput channel 0 (the signal FM8 ch1 → Pro Q3 ch1 → Audio Output remains the same).
Now I expected to hear like in scenario 1 left channel at 0 samples latency and then right channel with 66560 samples latency, while I hear 66560 samples latency in both channel.

I suppose this is an exception raised by my usage (or there’s an explain to this?), but other than that from my test it seams that graph put in output a signal that waits form path that has major latency even if paths in execution have no connections between. There’s a way to listen paths in output without latency given by the major latency path, but with only latency path?

The host is totally responsible for taking care of the Delay Compensation. Each plugin should report its latency to the host. Some plugins like FabFilter have differing latency values depending on the preset loaded or some of the options.

See this thread:

The latest version of the AudioProcessorGraph has a rebuild() method to force a recalculation.

Rail

1 Like

Really thank you for your reply and really interesting the thread you shared me! I expected to manage by myself the latency compensation and it’s what need (because there are scenarios in which I don’t want to compensate it), but AudioProcessorGraph is doing latency compensation for me…