Events playing late in simple Pbind or Routine

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;
)