class:: Prewrite summary:: rewriting system related:: Classes/Pfsm categories:: Streams-Patterns-Events>Patterns>List>Indexing description:: Lindenmayer system pattern for selfsimilar structures. Its strong::dictionary (or event):: maps one element to an array of child elements. The algorithm replaces iteratively (strong::levels:: deep) elements by arrays of elements starting with the values in the strong::pattern::. ClassMethods:: method::new argument::pattern starting value argument::dict a dictionary or an event. argument::levels number of levels code:: IdentityDictionary[ elem1 -> [ otherElements ], elem2 -> [ otherElements ], elem2 -> [ otherElements ] ] :: Examples:: The examples use the code::():: shortcut for link::Classes/Event::. code:: ( 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; ) ::