Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / Pclutch.schelp
blobf2d4119ac4d7fe3f22ce146bd8cb270b42c7bfe3
1 class:: Pclutch
2 summary:: sample and hold a pattern
3 related:: Classes/StreamClutch, Classes/Pstutter, Classes/Latch
4 categories:: Streams-Patterns-Events>Patterns>Repetition
6 ClassMethods::
8 method::new
10 argument::pattern
11 any pattern.
13 argument::connected
14 a pattern that returns either a series of link::Classes/Boolean::s or the equivalent 0 and 1. If true (or 1), the pattern plays as usual, if false (or 0), the previous value is kept.
16 Examples::
18 code::
19 Pclutch(Pseq([1, 2, 3, 4, 5], 3), Pseq([0, 0, 1, 0, 0, 0, 1, 1])).asStream.nextN(10);
21 // sound example
23 SynthDef(\help_sinegrain,
24         { arg out=0, freq=440, sustain=0.05;
25                 var env;
26                 env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);
27                 Out.ar(out, SinOsc.ar(freq, 0, env))
28         }).add;
32 var a;
33 a = Pclutch(
34                 Pseq([1, 2, 3, 4, 5], inf),
35                 Pseq([0, 0, 1, 0, Pn(0, {30.rand}), 0, 1, 1], inf)
36         ).asStream;
38         loop {
39                 Synth(\help_sinegrain, [\freq, a.next * 200 + 200]);
40                 0.02.wait;
41         }
42 }.fork;