Since the topic came up recently in other threads, I thought I would add some additional thoughts and findings.
The good part about Matrix is that it allows you to use multiple ASIO audio clients using a single audio device that wouldn’t otherwise be capable.
The bad part is that it adds 1 buffers worth of latency(in some cases half of that) for each hop you make using Matrix routing. If you’re bouncing signal between two instances of GP, that latency adds up to a noticeable amount—still playable, but definitely noticeable.
Here is a ‘hack’ that you can use in certain situations with Matrix and GP Relayer that removes the extra latency added by Matrix routing.
Let’s say you want to use two instances of GP, but your audio driver isn’t capable of multi-client ASIO use. Let’s also say that one of those instances isn’t going to use audio inputs — it is running virtual instruments that require MIDI input only.
Instead of selecting your audio device as the ASIO master in Matrix, you can instead use Matrix as its own internal master.
In the first instance of GP, you choose your normal audio driver as the device.
In the second instance of GP(the one using MIDI input only) you choose Matrix as the device.
Now here’s the hack:
In the 2nd instance, instead of connecting the output of your virtual instrument to the Matrix audio out block and adding latency to your signal chain, you instead connect the output of your virtual instrument to a GP Relayer block and send the signal to a GP Relayer block in the 1st instance.
Since you are not using any of Matrix’s internal input or output routing in either instance of GP, no additional latency is added!
By setting things up this way, you can use two instances of GP using your audio driver and Matrix without the extra latency that Matrix would otherwise add to your system.