SuperCollider CLASSES

Prewrite

rewriting system

Description

Lindenmayer system pattern for selfsimilar structures. Its dictionary (or event) maps one element to an array of child elements. The algorithm replaces iteratively (levels deep) elements by arrays of elements starting with the values in the pattern.

Class Methods

*new (pattern, dict, levels: 1)

Arguments:

pattern

starting value

dict

a dictionary or an event.

levels

number of levels

IdentityDictionary[
    elem1 -> [ otherElements ],
    elem2 -> [ otherElements ],
    elem2 -> [ otherElements ]
]

Inherited class methods

Instance Methods

Inherited instance methods

Undocumented instance methods

-dict

-dict = value

-embedInStream (inval)

-levels

-levels = value

-rewriteList (list, inval, level)

Examples

The examples use the () shortcut for Event.

(
a = Prewrite(0, // start with 0
        (    0: #[2,0],
            1: #[0,0,1],
            2: #[1,0,1]
        ), 4);
x = a.asStream;
30.do({ x.next.postln });
)


//Prewrite used as a sequence of pitches:

(
SynthDef(\help_sinegrain,
    { arg out=0, freq=440, sustain=0.05;
        var env;
        env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);
        Out.ar(out, SinOsc.ar(freq, 0, env))
    }).add;
)

(
a = Prewrite(0,    (
    0: #[2,0],
    1: #[0,0,1],
    2: #[1,0,1]
), 4).asStream;
Routine({
    loop({
        Synth(\help_sinegrain, [\freq, (a.next * 5 + 70).midicps]);
        0.1.wait;
    })
}).play;
)