Plazy can also produce Event Patterns, so you can do
(
p = Pn(Plazy {
Pbindef(\test,
\dur, rrand(0.07, 0.25),
\midinote, Pseq((50..90).scramble.keep(rrand(3, 5)), rrand(2, 5))
)
}, 20).play
)
Another option would be this, but a bit more clumsy:
(
p = Pbindef(\test,
\seqLength, Pwhite(2, 4),
\seqRep, Pwhite(2, 5),
// take over values from current Event in the Plazy
\dur, Pn(Plazy { |e| Pn(rrand(0.07, 0.25), e[\seqLength] * e[\seqRep]) }),
\midinote, Pn(Plazy { |e| Pseq((50..90).scramble.keep(e[\seqLength]), e[\seqRep]) })
).play
)
In principle yes. Sorry, no time atm to work out an example, but the scheme could be this:
~template = Pbind(...);
~noteOn = Pbind(
\type, \midi,
\midicmd, \noteOn
...
);
~prgChange = Pbind(
\type, \midi,
\midicmd, \program
...
)
Ppar([~noteOn <> ~template, ~prgChange <> ~template])
<> stands for Pchain.
See these two threads for related discussions: