LinkClock + Logic Pro


I am blind and operating my system with VoiceOver. This way, SC help system and this forum are unfortunately not very accessible to me.

I tried to use SC synced to Logic Pro via LinkClock. In Logic, 1 synced device shows up, when I evaluate: l = LinkClock(1).latency_(Server.default.latency); (tempo in Logic is set to 60, time signature to 4/4)

in SC there is a test Pbind:


p = Pbind(

\dur, 1



which works when evaluated.

If I press „play“ in Logic, nothing happens in SC, and vv.

what is wrong with this configuration, or what is missing in my code?

thank you in advance for your assistance!

best regards



Possibly your code should pass the LinkClock to the Pbind play message, for example:

l = LinkClock(1).latency_(Server.default.latency);

p = Pbind(

\dur, 1

).play(l, quant: 1);


The first parameter of play is clock, which defaults TempoClock.default, so we pass in LinkClock here. I also added the quant parameter in my example as this can be useful for controlling pattern start.

I tried your code with those adjustments and the DAW synchronisation worked for me.

It’s worth noting Link doesn’t send transport controls (start/stop messages), so pressing start is required for all respective participants in a Link session - Logic and SC in this case.

Hope that helps,


Correct – LinkClock can only synchronize tasks or patterns that are playing on the LinkClock. Playing it on a different clock will not synchronize.

Note, though, that a LinkClock can serve as the default clock:

l =;
TempoClock.default = l;

Also correct – Link doesn’t send these. However Logic can send them: General Synchronization project settings in Logic Pro – Apple Support (UK) – “Transmit and Receive Start/Stop: When selected, transport start and stop commands are shared between all Link users in a session who have the feature enabled.”

You can receive these in SC – if l is a LinkClock:

var startStop = SimpleController(l)
.put(\linkStart, {
	/* here is a function to run upon 'start' */
.put(\linkStop, {
	/* here is a function to run upon 'stop' */
.put(\stop, {
	// this function is for the SC clock being permanently stopped.
	// it is NOT about peers starting or stopping.
	// we need this to clean up this status listener.

But you only get “start” and “stop” – it doesn’t tell you which peer started or stopped, and it doesn’t tell you an absolute beat position.


1 Like