The standard way to do this is data sharing with parallel Patterns / EventStreamPlayers
http://doc.sccode.org/Tutorials/A-Practical-Guide/PG_06g_Data_Sharing.html
(
x = Pbind(
\instrument, Pseq([\a, \b], inf).collect(~i=_),
\dur, 1,
\type, \rest
);
y = Pbind(
\instrument, Pfunc { ~i },
\degree, Pseq([1, 2, 3, 4], 1),
\dur, 0.5
);
)
u = Ptpar([0, x, 0.0001, y]).asStream.nextN(6, ());
u.select { |e| e.type.isNil }
Time-shifting is necessary and can be compensated if wanted. See the discussion on this in a thread a few days ago: