Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / PdurStutter.schelp
blob2528866926fc9866e0df30c415efee4b7f972b3c
1 class:: PdurStutter
2 summary:: partition a value into n equal subdivisions
3 related:: Classes/Pstutter
4 categories:: Streams-Patterns-Events>Patterns>Repetition
6 description::
8 A filter pattern designed for a stream of float durations.
10 Subdivides each duration by each stutter and yields that value stutter times. A stutter of 0 will skip the duration value, a stutter of 1 yields the duration value unaffected.
12 Examples::
14 code::
16 a = PdurStutter(
17         Pseq(#[1,1,1,1,1,2,2,2,2,2,0,1,3,4,0],inf),
18         Pseq(#[0.5, 1, 2, 0.25,0.25],inf)
20 x = a.asStream;
21 100.do({ x.next.postln; });
26 SynthDef(\help_sinegrain,
27         { arg out=0, freq=440, sustain=0.05;
28                 var env;
29                 env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);
30                 Out.ar(out, SinOsc.ar(freq, 0, env))
31         }).add;
35 a = PdurStutter(
36         Pseq(#[1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4],inf),
37         Pseq(#[0.5, 1, 2, 0.25,0.25],inf)
39 x = a.asStream;
41 Routine({
42         loop({
43                 Synth.grain(\help_sinegrain, [\freq, 440]);
44                 x.next.wait;
45         })
46 }).play(TempoClock.default);
51 a = PdurStutter(
52         Pseq(#[1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,0,4,4],inf),
53         Pseq(#[0.5, 1, 2, 0.25,0.25],inf)
55 x = a.asStream;
56 Routine({
57         loop({
58                 Synth.grain(\help_sinegrain, [\freq, 440]);
59                 x.next.wait;
60         })
61 }).play(TempoClock.default);
65 Frequencies like being divided too.
67 code::
69 a = PdurStutter(
70         Pseq(#[1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,0,4,4],inf),
71         Pseq((80 + [ 0, 2, 3, 5, 7, 9, 10 ]).midicps ,inf)
73 x = a.asStream;
74 Routine({
75         loop({
76                 Synth.grain(\help_sinegrain, [\freq, x.next.postln]);
77                 0.25.wait
78         })
79 }).play(TempoClock.default);