Delay Compensation for Global Transport - Sync with LINK
I don't see a good way to adjust for latency. Normally a slave would have a delay compensation. In MSP this would have to happen macro level so as to affect all audio objects relative to the transport. I fell like there must be a known solution ?
you should build a little mixer, where all the parallel signals in your patch will go in the end.
it will contain a [delay~] besides a [*~] (which isnt obligatory but useful) - and that will be the place where latency compensation will happen.
implementing the the compensation function itself is easy: you check for the maximum latency, then this channel gets a delay of 0. channels without latency get a delay of max, and channels with a lesser latency than the max get a delay of max - latency.

Hi Roman - I see your helpful posts on here a lot. This wouldn't be helpful for the LINK situation or other remote syncing though.
Lets say computer 1 has a latency of 15 ms. The performer (me in this case), is using instruments and wishes to have low latency, AKA he can't just set the compensation in Ableton on the master track delay as Ableton suggests because he isn't just a DJ playing songs or loops. His latency is fixed. He can't play a percussion controller and be required to introduce a 30 ms delay on the Master to compensate for latency for the slave. It would be unplayable.
Computer 2 runs Max and cares about locking into the relevant LINK data, namely that there is a phase and bars not just quarter notes forever. If computer 2 were MIDI slaved, although it is jittery and sucks, it would have the option of of both positive and negative latency.
If Computer 2 has a latency also of 15ms but the process of doing the LINK introduces latency I have no way to set NEGATIVE latency, as in set the starting bar earlier than it actually happens. If LINK robs 10 ms I will always be 10ms +- jitter off. It's a different beast than compensating for latency introduced from a Fourier transform in a modular synth.
I realize that I can offset and wrap the link.phasor but the global transport is the core issue. I need all my "metro 2.0.0 @quantize 2.0.0" and other time sensitive objects slaved to the global transport to lock to bars etc.
I see no way to set latency compensation for this.
Obviously in real-time a negative delay is not possible. But you could try to reduce the latency of Computer 2 by setting the audio buffer as small as possible. Also, using a wired network would reduce jitter and latency of LINK to less than 1 ms.
Actually you can set negative latency as it pertains to clocked items. You've always been able to do this with MIDI clock and for tracks in Ableton you can as well with track delay in positive numbers of samples or ms. The first beat happens immediately (not on time) then everything is synced after. Negative latency allows for sync across systems with varying times and if the host is doing live sound / video / lighting etc and cannot delay their clock output the only way has been negative latency with MIDI Clock. I am actually very surprised I'm getting these responses. This is standard. I just thought there was something I was missing in relation to LINK and the master transport. I still feel the right person hasn't seen this thread. Someone must be using LINK with Max where the host is performing live instruments and cannot delay themselves.
As to reduce latency through buffer settings, I even even get inter app latency same computer with LINK, but good suggestion.
Ok, you're right regarding clock events.
Negative latency x is possible by delaying all events by (interval - x).
Only the very first event can't have a negative latency.