My latency hack (it's cheating! 😬)

I must admit I’m cheating around a feature of GigPerformer that is very useful most of the time: latency compensation.

All my rackspaces send their audio to the global rackspace via a dry bus and two send buses to global chorus and reverb. My main global reverb and other plugins in the chain introduce a lot of latency. Latency compensation, however, causes all other (dry) signals passing through the global rackspace to adjust accordingly. Since my global effects are send effects only, the delay of all other signals is unnecessary in this specific case.

Knowing that GigPerformer’s latency compensation only works if a wired signal path exists, I use GPrelayer to transmit the sound „wirelessly“ for a couple of centimeters of the signal chain. Relayer doesn’t report latency so GP doesn’t know of the 3.2 ms added by the reverb and therefore won’t delay my dry signals. This gives me a much more direct feeling while playing but admittedly feels a little bit like cheating
 :wink:

This could also be used in a local rackspace, for example, if an audio chain played by keyboard A should not be delayed by keyboard B playing a different audio chain that has built up quite a good amount of latency due to many plugins in that chain.
Or the Autotune on the mic channel should not delay the keyboard channels


13 Likes

Very nice. I use this same method myself to bypass the compensation that happens with direct parallel wiring. It is quite useful.

2 Likes

Nice trick :+1:

And I think it’s not cheating, but very creative

2 Likes

This is indeed an interesting trick that @edm11 introduced to some “happy fews” some time ago. But he forgot to reveal his trick to the world, whereas you did! :wink::+1:

5 Likes

As I like this trick, maybe this behavior could be changed if in the future we get multi core support.

2 Likes

You probably meant « 
 if in the future
 » :nerd_face:

1 Like

Multi-core should not have to do anything with this: the host queries the plugin about the latency. But the host can simply ignore it.

(Recently I was thinking (just as a proof of concept) about creating a wrapper plugin that masks the reported value and that simply replaces it by ‘0’. But I building it into the host would be the better choice)

2 Likes

Yes there should be a way to change the default latency of a plugin.
Also, the tooltip should display the total latency of a plugin (in addition to the latency of the plugin itself) accumulated from its predecessor plugins.

1 Like

I have always struggled with using two instances of GP. One with a very low buffer for realtime playing and one with a very high buffer to host a lot of instruments. Could your Trick be used to use just one instance of GP with a very high buffer setting and being able to use a certain vst for realtime playing with almost no latency? This would be amazing.

When you use vst plugin in the instance with high latency and another with low latency for live playing, then you will get delayed sound from the instance with high latency.
Or doe I miss something?

I’m afraid it only tricks Gig Performer not to artificially delay some audio streams “waiting” for higher latency plugins in other audio streams (which is generally a good thing).
This means however that your computer needs to be able to run everything at the current (low) latency setting even though some audio is delayed on purpose.

The instance with high latency is only for playback, the low latency is for realtime playing. So it doesn’t matter in my case if the high latency instance has a delayed sound. Maybe one day in the future GP is able to have a kind of local “pipeline” with ultra low latency within the context of a global high latency setting - I am just dreaming


Awesome “hack”! Helps me out a lot!! Might seem like a silly question, but, does EVERY plugin that gets attached to this GP Relayer audio path gets taken out of the latency calculation? Or is it only the one before? Is there a limit? Does it matter if its before the GP relayer like in the original screenshot, or after? I moved my plugin around and can’t really tell a difference, but perhaps my case is not so extreme so I thought I’d ask.

You need to understand how latency is calculated and when a delay is applied by the host.

A plugin that reports a latency impacts only the next plugins that are connected to it with a wire! in the wiring view.

A GP Relayer that sends audio and MIDI doesn’t have an output wire to it (audio is sent virtually), so the latency is not reported further,
Same for GP Relayer that receives audio and MIDI, it always reports a latency of 0 (zero) because there is no wire connected to its input.

I hope it is more clear now.

I’m trying to understand it! But as you had read in my other post, my experience was very inconsistent. It didn’t only impact the next plugin connected with a wire. It affected the synth sounds that were completely isolated within the “wireless” GP Relayer loop. You made a good observation that because that signal was eventually connected to a mixer that came after my latency reporting plugin, tha’ts probably the cause. But then, this “new” GP relayer loop (that is working as expected) is ALSO connected to the same mixer and its fine. So its a little confusing!

I just found out that Infiltrator by Devious Machines has multiple latency compensation modes.

You can even set it to Internal Only, which makes the plugin report zero latency to the host.

If every plugin developer gave us this kind of option, we wouldn’t need any sketchy workarounds :wink:.

3 Likes

Some plugins provide different quality modes and this influences the reported latency.
But I agree, this would be very handy.

1 Like

I’ve seen DAWs that let you turn latency compensation on or off on a per-plugin basis (although I can’t remember off the top of my head which).

Reaper is among them.

I would still prefer to have different settings for instances of the same plugin, especially if it’s a multi-effect plugin.