Forgot a help fix: Drag a dock's title bar, not divider, to reposition
[supercollider.git] / HelpSource / Classes / Pfxb.schelp
blob20ca42d6e26e816c5c2ea6fecf1037f49ab098aa
1 class:: Pfxb
2 summary:: add an effect synth to the synths of a given event stream
3 related:: Classes/Pfx, 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. Name value pairs are inserted into the event for starting the effect node. The effect parameters are set from the event.
10 In difference to link::Classes/Pfx::, a strong::private effect bus:: is provided according to the number of channels in the effect synth def.
12 Examples::
14 code::
16 SynthDef(\echo, { arg out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;
17         var env, in;
18         env = Linen.kr(gate, 0.05, 1, 0.1, 2);
19         in = In.ar(out, 2);
20         XOut.ar(out, env, CombL.ar(in * env, maxdtime, dtime, decay, 1, in));
21 }, [\ir, \ir, 0.1, 0.1, 0]).add;
23 SynthDef(\distort, { arg out=0, pregain=40, amp=0.2, gate=1;
24         var env;
25         env = Linen.kr(gate, 0.05, 1, 0.1, 2);
26         XOut.ar(out, env, (In.ar(out, 2) * pregain).distort * amp);
27 }, [\ir, 0.1, 0.1, 0]).add;
29 SynthDef(\wah, { arg out=0, gate=1;
30         var env, in;
31         env = Linen.kr(gate, 0.05, 1, 0.4, 2);
32         in = In.ar(out, 2);
33         XOut.ar(out, env, RLPF.ar(in, LinExp.kr(LFNoise1.kr(0.3), -1, 1, 200, 8000), 0.1).softclip * 0.8);
34 }, [\ir, 0]).add;
38 var p, q, r, o;
39 p = Pbind(\degree, Prand((0..7),12), \dur, 0.3, \legato, 0.2);
41 q = Pfxb(p, \echo, \dtime, 0.2, \decay, 3);
43 r = Pfxb(q, \distort, \pregain, 20, \amp, 0.25);
45 o = Pfxb(r, \wah);
47 Pseq([p, q, r, o], 2).play;
51 // test order of effect chain
53 SynthDef(\echo, { arg out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;
54         var env, in;
55         env = Linen.kr(gate, 0.05, 1, 0.1, 2);
56         in = In.ar(out, 2);
57         XOut.ar(out, env, CombL.ar(in * env, maxdtime, dtime, decay, 1, in));
58 }, [\ir, \ir, 0.1, 0.1, 0]).add;
60 SynthDef(\addbeeps, { arg out=0, gate=1;
61         var env;
62         env = Linen.kr(gate, 0.05, 1, 0.1, 2);
63         XOut.ar(out, env, (In.ar(out, 2) + (LFPulse.kr(1, 0, 0.3) * SinOsc.ar(1000) * 0.4) ));
64 }, [\ir, 0.1, 0.1, 0]).add;
68 var a;
69 a = Pbind(\degree, Prand((0..7),12), \dur, 0.3, \legato, 0.2);
70 a = Pfxb(a, \echo, \dtime, 0.2, \decay, 3);
71 a = Pfxb(a, \addbeeps);
72 a.play;
76 var a;
77 a = Pbind(\degree, Prand((0..7),12), \dur, 0.3, \legato, 0.2);
78 a = Pfxb(a, \addbeeps);
79 a = Pfxb(a, \echo, \dtime, 0.2, \decay, 3);
80 a.play;