SuperCollider CLASSES


use a pattern of symbols to embed Pdefs
Subclasses: Pnsym, Psym1, Ptsym


for non-event patterns see Pnsym. Overview: JITLib.

Class Methods

*new (pattern, dict)



a pattern that returns symbols or characters. Arrays are converted to parallel patterns ( Ppar ).


the dictionary to be used for lookup. By default, this is Pdef.all, so one can embed Pdefs by name.

Inherited class methods

Instance Methods


-dict = value

set the dictionary to be used.

Inherited instance methods

Undocumented instance methods

-embedInStream (inval)

-getPattern (key)

-lookUp (key)



// load a synthdef
    { |out=0, freq=440, sustain=0.05, amp=0.1, pan|
        var env;
        env =, sustain), doneAction:2) * amp;,, 0, env), pan))

Pdef(\x, Pbind(\dur, Pn(0.25, 3), \instrument, \gpdef));
Pdef(\y, Pchain(Pbind(\degree, Prand([5, 9, 0], inf), \legato, Pseq([0.3, 2.2], inf)), Pdef(\x)));
Pdef(\z, Pchain(Pbind(\degree, Pseq([0, 2, 5, 7, 8, 9], 1)), Pn(Pdef(\y))));

Pdef(\play, Psym(Pseq([\x, \x, Prand([\x, \y]), \z, \y], inf).trace)).play;

// change root pattern:
Pdef(\x, Pbind(\dur, Pn(0.125, 2), \instrument, \gpdef));
Pdef(\x, Pbind(\dur, Pn(0.125, 3), \instrument, \gpdef, \ctranspose, 2));
Pdef(\x, Pbind(\dur, Pn(0.125, 2), \instrument, \gpdef, \ctranspose, 0));

// change sequence:
Pdef(\play, Psym(Prand([Pseq([\x, \y], 5), Pseq([\z, \y], 5)], inf).trace)).play;

// use a sequence of characters:
Pdef(\play, Psym(Pseq("xxyxxzz", inf).trace)).play;

// play in parallel:
Pdef(\play, Psym(
        Pseq([[\x, \y], \z], 5),
        Pseq([[\z, \y], \x, \x, \y])
    , inf).trace)

Pdef(\z, Pchain(Pbind(\mtranspose, -5), Pdef(\y)));
Pdef(\y, Pchain(Pbind(\degree, Pseq([4, 3, 4, 2, 4, 1, 4, 0], 1)), Pdef(\x)));

Pdef(\play).stop; // stop it
Pdef.clear; // clear all