Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / SCClassLibrary / Common / Audio / Compander.sc
blob7859f41394b525508cafd6e5db8f365dfc055c65
1 Amplitude : UGen {
2         *ar { arg in = 0.0, attackTime = 0.01, releaseTime = 0.01, mul = 1.0, add = 0.0;
3                 ^this.multiNew('audio', in, attackTime, releaseTime).madd(mul, add)
4         }
5         *kr { arg in = 0.0, attackTime = 0.01, releaseTime = 0.01, mul = 1.0, add = 0.0;
6                 ^this.multiNew('control', in, attackTime, releaseTime).madd(mul, add)
7         }
10 Compander : UGen {
11         *ar { arg in = 0.0, control = 0.0, thresh = 0.5, slopeBelow = 1.0, slopeAbove = 1.0,
12                 clampTime = 0.01, relaxTime = 0.1, mul = 1.0, add = 0.0;
13                 ^this.multiNew('audio', in, control, thresh, slopeBelow, slopeAbove,
14                         clampTime, relaxTime).madd(mul, add)
15         }
19 // CompanderD passes the signal directly to the control input,
20 // but adds a delay to the process input so that the lag in the gain
21 // clamping will not lag the attacks in the input sound
23 CompanderD : UGen {
24         *ar { arg in = 0.0, thresh = 0.5, slopeBelow = 1.0, slopeAbove = 1.0,
25                 clampTime = 0.01, relaxTime = 0.01, mul = 1.0, add = 0.0;
27                 ^Compander.ar(DelayN.ar(in, clampTime, clampTime), in, thresh,
28                                 slopeBelow, slopeAbove, clampTime, relaxTime).madd(mul, add)
29         }
33 Normalizer : UGen {
34         var buffer;
35         *ar { arg in = 0.0, level = 1.0, dur = 0.01;
36                 ^this.multiNew('audio', in, level, dur)
37         }
40 Limiter : Normalizer {}