Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / Pfx.schelp
blob3b09c665b38b4fffa2a99a2ed9500a4f8e1b9965
1 class:: Pfx
2 summary:: add an effect synth to the synths of a given event stream
3 related:: Classes/Pfxb, Classes/Pbus, Classes/Pgroup
4 categories:: Streams-Patterns-Events>Patterns>Server Control
6 description::
8 Puts an effect node on the tail of the current group and releases it when the contained pattern finishes. If a bus is given, it is used as an effect bus. Name value pairs are inserted into the event for starting the effect node. The effect parameters are set from the event.
10 Examples::
12 code::
14 SynthDef(\echo, { arg out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;
15         var env, in;
16         env = Linen.kr(gate, 0.05, 1, 0.1, 2);
17         in = In.ar(out, 2);
18         XOut.ar(out, env, CombL.ar(in * env, maxdtime, dtime, decay, 1, in));
19 }, [\ir, \ir, 0.1, 0.1, 0]).add;
21 SynthDef(\distort, { arg out=0, pregain=40, amp=0.2, gate=1;
22         var env;
23         env = Linen.kr(gate, 0.05, 1, 0.1, 2);
24         XOut.ar(out, env, (In.ar(out, 2) * pregain).distort * amp);
25 }, [\ir, 0.1, 0.1, 0]).add;
27 SynthDef(\wah, { arg out=0, gate=1;
28         var env, in;
29         env = Linen.kr(gate, 0.05, 1, 0.4, 2);
30         in = In.ar(out, 2);
31         XOut.ar(out, env, RLPF.ar(in, LinExp.kr(LFNoise1.kr(0.3), -1, 1, 200, 8000), 0.1).softclip * 0.8);
32 }, [\ir, 0]).add;
36 var p, q, r, o;
37 p = Pbind(\degree, Prand((0..7),12), \dur, 0.3, \legato, 0.2);
39 q = Pfx(p, \echo, \dtime, 0.2, \decay, 3);
41 r = Pfx(q, \distort, \pregain, 20, \amp, 0.25);
43 o = Pfx(r, \wah);
45 Pseq([p, q, r, o], 2).play;