See this thread for an explanation of “late” messages.
In short, you probably want to adjust the server latency (s.latency
) and use s.bind
inside the Routine. This will ensure perfect sync between synths generated inside Routines and those generated by Pbinds. By default, s.bind and Pbind both use s.latency
to defer the timestamp of OSC messages by this amount, which allows for precise timing, but you can also choose different latency values by using s.makeBundle
in a Routine (instead of s.bind
) or by changing the \latency
key of a Pbind.
s.latency = 0.2;
(
r = Routine.new({ loop{
s.bind{ Synth.new(\micro) };
wait(0.5); } }
);
p = Pbind(
\instrument, \micro,
\dur, Pseq([0.5], inf),
\freq, 30,
);
)
(
r.play;
p.play;
)