Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / Pseq.schelp
blob71d332c3a607914f652cea0baa85e402c565146f
1 class:: Pseq
2 summary:: sequentially embed values in a list
3 related:: Classes/Pser
4 categories:: Streams-Patterns-Events>Patterns>List
6 description::
8 Cycles over a list of values. The repeats variable gives the number of times to repeat the entire list.
10 Examples::
12 code::
14 var a, b;
15 a = Pseq([1, 2, 3], 2); // repeat twice
16 b = a.asStream;
17 7.do({ b.next.postln; });
21 Pseq also has an offset argument which gives a starting offset into the list.
22 code::
24 var a, b;
25 a = Pseq([1, 2, 3, 4], 3, 2);   // repeat 3, offset 2
26 b = a.asStream;
27 13.do({ b.next.postln; });
31 You can pass a function for the repeats variable that gets evaluated when the stream is created.
32 code::
34 var a, b;
35 a = Pseq([1, 2], { rrand(1, 3) });      // repeat 1,2, or 3 times
36 b = a.asStream;
37 7.do({ b.next.postln; });
41 If you specify the value inf for the repeats variable, then it will repeat indefinitely.
42 code::
44 var a, b;
45 a = Pseq([1, 2, 3], inf);       // infinite repeat
46 b = a.asStream;
47 10.do({ b.next.postln; });
52 Pseq used as a sequence of pitches:
53 code::
55 SynthDef(\help_sinegrain,
56         { arg out=0, freq=440, sustain=0.05;
57                 var env;
58                 env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);
59                 Out.ar(out, SinOsc.ar(freq, 0, env))
60         }).add;
64 a = Pseq(#[60, 61, 63, 65, 72], inf).asStream;
65 Routine({
66         loop({
67                 Synth(\help_sinegrain, [\freq, a.next.midicps]);
68                 0.2.wait;
69         })
70 }).play;