Classes | Streams-Patterns-Events > Patterns > List > Indexing

Prewrite : FilterPattern : Pattern : AbstractFunction : Object

rewriting system
Source: Prewrite.sc

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

Prewrite.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: Done.freeSelf);
        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;
)