1 <!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8">
5 <meta http-equiv=
"Content-Style-Type" content=
"text/css">
7 <meta name=
"Generator" content=
"Cocoa HTML Writer">
8 <meta name=
"CocoaVersion" content=
"1038.25">
9 <style type=
"text/css">
10 p
.p1
{margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica
}
11 p
.p2
{margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica
; min-height: 14.0px}
12 p
.p3
{margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco
}
13 p
.p4
{margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco
; color: #007300}
14 p
.p5
{margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco
; min-height: 12.0px}
15 p
.p6
{margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco
; color: #0000bf}
16 p
.p7
{margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco
; color: #bf0000}
17 span
.s1
{font: 18.0px Helvetica
}
18 span
.s2
{color: #0000bf}
19 span
.s3
{color: #000000}
20 span
.s4
{color: #007300}
21 span
.s5
{color: #bf0000}
22 span
.Apple-tab-span
{white-space:pre
}
26 <p class=
"p1"><span class=
"s1"><b>Pfsm
</b><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span></span><b>Finite State Machine
</b></p>
27 <p class=
"p2"><br></p>
28 <p class=
"p1"><b>superclass: ListPatterns
</b></p>
29 <p class=
"p2"><br></p>
30 <p class=
"p1">Every state consists of an item and an array of integer indices of possible
<b>next states.
</b></p>
31 <p class=
"p1">The initial state is chosen at random from the array of
<b>entry states.
</b></p>
32 <p class=
"p1">That chosen state's item is returned, and the next state is chosen from its array of possible
<b>next states
</b>.
</p>
33 <p class=
"p1">When the end state is chosen, the stream ends.
</p>
34 <p class=
"p2"><br></p>
35 <p class=
"p2"><br></p>
36 <p class=
"p1"><b>Pfsm(list,repeats)
</b></p>
37 <p class=
"p2"><br></p>
38 <p class=
"p1"><b>list
</b>:
</p>
39 <p class=
"p1"><span class=
"Apple-tab-span"> </span>[
</p>
40 <p class=
"p1"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>[ entry states ],
</p>
41 <p class=
"p1"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>item, [ next states ],
</p>
42 <p class=
"p1"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>item, [ next states ],
</p>
43 <p class=
"p1"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>...
</p>
44 <p class=
"p1"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>end item (or nil), nil
</p>
45 <p class=
"p1"><span class=
"Apple-tab-span"> </span>]
</p>
46 <p class=
"p2"><span class=
"Apple-converted-space"> </span></p>
47 <p class=
"p2"><span class=
"Apple-converted-space"> </span></p>
48 <p class=
"p1"><span class=
"Apple-converted-space"> </span>next states: nil
<span class=
"Apple-converted-space"> </span>is terminal
</p>
49 <p class=
"p2"><span class=
"Apple-converted-space"> </span></p>
50 <p class=
"p2"><span class=
"Apple-converted-space"> </span></p>
52 <p class=
"p4"><span class=
"s2">SynthDef
</span><span class=
"s3">(
</span>\help_sinegrain
<span class=
"s3">,
<span class=
"Apple-converted-space"> </span></span></p>
53 <p class=
"p3"><span class=
"Apple-tab-span"> </span>{
<span class=
"s2">arg
</span> out=
0, freq=
440, sustain=
0.05;
</p>
54 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span><span class=
"s2">var
</span> env;
</p>
55 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>env =
<span class=
"s2">EnvGen
</span>.kr(
<span class=
"s2">Env
</span>.perc(
0.01, sustain,
0.2), doneAction:
2);
</p>
56 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span><span class=
"s2">Out
</span>.ar(out,
<span class=
"s2">SinOsc
</span>.ar(freq,
0, env))
</p>
57 <p class=
"p3"><span class=
"Apple-tab-span"> </span>}).add;
</p>
59 <p class=
"p5"><br></p>
60 <p class=
"p5"><br></p>
62 <p class=
"p3">a =
<span class=
"s2">Pfsm
</span>([
</p>
63 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>#[
0,
1],
</p>
64 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>67, #[
0,
0,
3],
</p>
65 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>72, #[
2],
</p>
66 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>73, #[
0,
2],
</p>
67 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span><span class=
"s2">Pseq
</span>([
74,
75,
76,
77]), #[
2,
3,
3],
</p>
68 <p class=
"p6"><span class=
"s3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span></span>nil
<span class=
"s3">,
</span>nil
</p>
69 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"Apple-tab-span"> </span>],
<span class=
"s2">inf
</span>).asStream;
</p>
70 <p class=
"p6">Routine
<span class=
"s3">({
</span></p>
71 <p class=
"p3"><span class=
"Apple-tab-span"> </span>loop({
</p>
72 <p class=
"p3"><span class=
"Apple-tab-span"> </span><span class=
"s2">Synth
</span>(
<span class=
"s4">\help_sinegrain
</span>, [
<span class=
"s4">\freq
</span>, a.next.midicps]);
</p>
73 <p class=
"p3"><span class=
"Apple-tab-span"> </span>0.1.wait;
</p>
74 <p class=
"p3"><span class=
"Apple-tab-span"> </span>})
</p>
75 <p class=
"p3">}).play;
</p>
77 <p class=
"p5"><br></p>
79 <p class=
"p6">Pfsm
<span class=
"s3">([
</span></p>
80 <p class=
"p3"> #[
5,
6,
7],
<span class=
"s5">// entry states
</span></p>
82 <p class=
"p7"><span class=
"s3"> </span>//e1 (== state
0)
</p>
83 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
<span class=
"s2">Pseq
</span>([
1/
8,
3/
8 ]),
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
86,
75 ]) ),
</p>
84 <p class=
"p7"><span class=
"s3"> </span>//#[
1], // as given in CMJ
</p>
85 <p class=
"p7"><span class=
"s3"> </span>// my de-boredom-ated version..
</p>
86 <p class=
"p3"> #[
1,
1,
1,
1,
1,
1,
1,
8],
</p>
87 <p class=
"p7"><span class=
"s3"> </span>//e2 (== state
1)
</p>
88 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
1/
2,
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
69 ]) ),
</p>
89 <p class=
"p3"> #[
0,
1],
</p>
90 <p class=
"p7"><span class=
"s3"> </span>//e3 (== state
2)
</p>
91 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
1/
3,
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
55,
60,
66 ]) ),
</p>
92 <p class=
"p3"> #[
0,
1,
2,
2,
2,
2,
3,
3,
3,
3],
</p>
93 <p class=
"p7"><span class=
"s3"> </span>//e4 (== state
3)
</p>
94 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
1/
4,
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
81,
80,
77,
76 ]) ),
</p>
95 <p class=
"p3"> #[
1,
4,
4,
4,
4],
</p>
96 <p class=
"p7"><span class=
"s3"> </span>//e5 (== state
4)
</p>
97 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
<span class=
"s2">Pseq
</span>([
1,
2/
3,
2/
3,
2/
3,
1]),
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([ \,
70,
70,
70, \ ]) ),
</p>
98 <p class=
"p3"> #[
2,
3],
</p>
99 <p class=
"p7"><span class=
"s3"> </span>//e6 (== state
5)
</p>
100 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
1/
4,
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
59,
61 ]) ),
</p>
101 <p class=
"p3"> #[
0,
2,
4,
5,
5,
5,
5,
5,
5,
5],
</p>
102 <p class=
"p7"><span class=
"s3"> </span>//e7 (== state
6)
</p>
103 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
1/
4,
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
87,
88 ],
2) ),
</p>
104 <p class=
"p3"> #[
4,
4,
4,
4,
6,
6,
6,
7,
7,
7],
</p>
105 <p class=
"p7"><span class=
"s3"> </span>//e8 (== state
7)
</p>
106 <p class=
"p3"> <span class=
"s2">Pbind
</span>(
<span class=
"s4">\dur
</span>,
1,
<span class=
"s4">\midinote
</span>,
<span class=
"s2">Pseq
</span>([
56 ]) ),
</p>
107 <p class=
"p3"> #[
1,
3,
6,
6,
6],
</p>
108 <p class=
"p7"><span class=
"s3"> </span>// terminal state
</p>
109 <p class=
"p3"> <span class=
"s2">nil
</span>,
<span class=
"s2">nil
</span></p>
110 <p class=
"p3"> ]).play;
</p>