scide: LookupDialog - redo lookup on classes after partial lookup
[supercollider.git] / SCClassLibrary / Common / Audio / Noise.sc
blob814879d8f278e83a9b5c8e2a0b69277f3715966a
1 /*
2         Noise Generators
4         WhiteNoise.ar(mul, add)
5         BrownNoise.ar(mul, add)
6         PinkNoise.ar(mul, add)
7         Crackle.ar(chaosParam, mul, add)
8         LFNoise0.ar(freq, mul, add)
9         LFNoise1.ar(freq, mul, add)
10         LFNoise2.ar(freq, mul, add)
11         Dust.ar(density, mul, add)
12         Dust2.ar(density, mul, add)
14         White, Brown, Pink generators have no modulatable parameters
15         other than multiply and add inputs.
17         The chaos param for ChaosNoise should be from 1.0 to 2.0
21 RandSeed : WidthFirstUGen {
22         *ar { arg trig = 0.0, seed=56789;
23                 this.multiNew('audio', trig, seed)
24                 ^0.0            // RandSeed has no output
25         }
26         *kr { arg trig = 0.0, seed=56789;
27                 this.multiNew('control', trig, seed)
28                 ^0.0            // RandSeed has no output
29         }
30         *ir { arg trig = 0.0, seed=56789;
31                 this.multiNew('scalar', trig, seed)
32                 ^0.0            // RandSeed has no output
33         }
36 RandID : WidthFirstUGen {
37         // choose which random number generator to use for this synth .
38         *kr { arg id=0;
39                 this.multiNew('control', id)
40                 ^0.0            // RandID has no output
41         }
42         *ir { arg id=0;
43                 this.multiNew('scalar', id)
44                 ^0.0            // RandID has no output
45         }
49 Rand : UGen {
50         // uniform distribution
51         *new { arg lo = 0.0, hi = 1.0;
52                 ^this.multiNew('scalar', lo, hi)
53         }
56 IRand : UGen {
57         // uniform distribution of integers
58         *new { arg lo = 0, hi = 127;
59                 ^this.multiNew('scalar', lo, hi)
60         }
64 TRand : UGen {
65         // uniform distribution
66         *ar { arg lo = 0.0, hi = 1.0, trig = 0.0;
67                 ^this.multiNew('audio', lo, hi, trig)
68         }
69         *kr { arg lo = 0.0, hi = 1.0, trig = 0.0;
70                 ^this.multiNew('control', lo, hi, trig)
71         }
74 TIRand : UGen {
75         // uniform distribution of integers
76         *kr { arg lo = 0, hi = 127, trig = 0.0;
77                 ^this.multiNew('control', lo, hi, trig)
78         }       *ar { arg lo = 0, hi = 127, trig = 0.0;         ^this.multiNew('audio', lo, hi, trig)   }
83 LinRand : UGen {
84         // linear distribution
85         // if minmax <= 0 then skewed towards lo.
86         // else skewed towards hi.
87         *new { arg lo = 0.0, hi = 1.0, minmax = 0;
88                 ^this.multiNew('scalar', lo, hi, minmax)
89         }
92 NRand : UGen {
93         // sum of N uniform distributions.
94         // n = 1 : uniform distribution - same as Rand
95         // n = 2 : triangular distribution
96         // n = 3 : smooth hump
97         // as n increases, distribution converges towards gaussian
98         *new { arg lo = 0.0, hi = 1.0, n = 0;
99                 ^this.multiNew('scalar', lo, hi, n)
100         }
103 ExpRand : UGen {
104         // exponential distribution
105         *new { arg lo = 0.01, hi = 1.0;
106                 ^this.multiNew('scalar', lo, hi)
107         }
110 TExpRand : UGen {
111         // uniform distribution
112         *ar { arg lo = 0.01, hi = 1.0, trig = 0.0;
113                 ^this.multiNew('audio', lo, hi, trig)
114         }
115         *kr { arg lo = 0.01, hi = 1.0, trig = 0.0;
116                 ^this.multiNew('control', lo, hi, trig)
117         }
121 CoinGate : UGen {
122         *ar { arg prob, in;
123                 ^this.multiNew('audio', prob, in)
124         }
125         *kr { arg prob, in;
126                 ^this.multiNew('control', prob, in)
127         }
130 TWindex : UGen {
131         *ar {
132                 arg in, array, normalize=0;
133                 ^this.multiNewList(['audio', in, normalize] ++ array)
134         }
135         *kr {
136                 arg in, array, normalize=0;
137                 ^this.multiNewList(['control', in, normalize] ++ array)
138         }
141 WhiteNoise : UGen {
143         *ar { arg mul = 1.0, add = 0.0;
144                 // support this idiom from SC2.
145                 if (mul.isArray, {
146                         ^{ this.multiNew('audio') }.dup(mul.size).madd(mul, add)
147                 },{
148                         ^this.multiNew('audio').madd(mul, add)
149                 });
150         }
151         *kr { arg mul = 1.0, add = 0.0;
152                 if (mul.isArray, {
153                         ^{ this.multiNew('control') }.dup(mul.size).madd(mul, add)
154                 },{
155                         ^this.multiNew('control').madd(mul, add)
156                 });
157         }
161 BrownNoise : WhiteNoise {
164 PinkNoise : WhiteNoise {
167 ClipNoise : WhiteNoise {
170 GrayNoise : WhiteNoise {
174 //NoahNoise : WhiteNoise {
177 Crackle : UGen {
179         *ar { arg chaosParam=1.5, mul = 1.0, add = 0.0;
180                 ^this.multiNew('audio', chaosParam).madd(mul, add)
181         }
182         *kr { arg chaosParam=1.5, mul = 1.0, add = 0.0;
183                 ^this.multiNew('control', chaosParam).madd(mul, add)
184         }
187 Logistic : UGen {
189         *ar { arg chaosParam=3.0, freq = 1000.0, init= 0.5, mul = 1.0, add = 0.0;
190                 ^this.multiNew('audio', chaosParam, freq, init).madd(mul, add)
191         }
192         *kr { arg chaosParam=3.0, freq = 1000.0, init=0.5, mul = 1.0, add = 0.0;
193                 ^this.multiNew('control', chaosParam, freq, init).madd(mul, add)
194         }
196 /* not installed
197 Rossler : UGen {
199         *ar { arg chaosParam=1.5, dt = 0.04, mul = 1.0, add = 0.0;
200                 ^this.multiNew('audio', chaosParam, dt).madd(mul, add)
201         }
202         *kr { arg chaosParam=1.5, dt = 0.04, mul = 1.0, add = 0.0;
203                 ^this.multiNew('control', chaosParam, dt).madd(mul, add)
204         }
208 LFNoise0 : UGen {
210         *ar { arg freq=500.0, mul = 1.0, add = 0.0;
211                 ^this.multiNew('audio', freq).madd(mul, add)
212         }
213         *kr { arg freq=500.0, mul = 1.0, add = 0.0;
214                 ^this.multiNew('control', freq).madd(mul, add)
215         }
218 LFNoise1 : LFNoise0 {
221 LFNoise2 : LFNoise0 {
224 LFClipNoise : LFNoise0 {
227 LFDNoise0 : LFNoise0 {
230 LFDNoise1 : LFNoise0 {
233 LFDNoise3 : LFNoise0 {
236 LFDClipNoise : LFNoise0 {
239 Hasher : UGen {
240         *ar { arg in = 0.0, mul = 1.0, add = 0.0;
241                 ^this.multiNew('audio', in).madd(mul, add)
242         }
243         *kr { arg in = 0.0, mul = 1.0, add = 0.0;
244                 ^this.multiNew('control', in).madd(mul, add)
245         }
248 MantissaMask : UGen {
249         *ar { arg in = 0.0, bits=3, mul = 1.0, add = 0.0;
250                 ^this.multiNew('audio', in, bits).madd(mul, add)
251         }
252         *kr { arg in = 0.0, bits=3, mul = 1.0, add = 0.0;
253                 ^this.multiNew('control', in, bits).madd(mul, add)
254         }
257 Dust : UGen {
259         *ar { arg density = 0.0, mul = 1.0, add = 0.0;
260                 ^this.multiNew('audio', density).madd(mul, add)
261         }
262         *kr { arg density = 0.0, mul = 1.0, add = 0.0;
263                 ^this.multiNew('control', density).madd(mul, add)
264         }
265         signalRange { ^\unipolar }
269 Dust2 : UGen {
270         *ar { arg density = 0.0, mul = 1.0, add = 0.0;
271                 ^this.multiNew('audio', density).madd(mul, add)
272         }
273         *kr { arg density = 0.0, mul = 1.0, add = 0.0;
274                 ^this.multiNew('control', density).madd(mul, add)
275         }
277 /* not installed
278 LinCong : UGen {
279         var iseed, imul, iadd, imod;
281         *ar { arg iseed, imul, iadd, imod, mul = 1.0, add = 0.0;
282                 ^this.multiNew('audio', iseed, imul, iadd, imod).madd(mul, add)
283         }
284         *kr { arg iseed, imul, iadd, imod, mul = 1.0, add = 0.0;
285                 ^this.multiNew('control', iseed, imul, iadd, imod).madd(mul, add)
286         }
287         init { arg jseed, jmul, jadd, jmod ... theInputs;
288                 inputs = theInputs;
289                 iseed = jseed;
290                 imul = jmul;
291                 iadd = jadd;
292                 imod = jmod;
293         }
297 //Latoocarfian : UGen {
299 //      *ar { arg a, b, c, d, mul = 1.0, add = 0.0;
300 //              ^this.multiNew('audio', a, b, c, d).madd(mul, add)
301 //      }
302 //      *kr { arg a, b, c, d, mul = 1.0, add = 0.0;
303 //              ^this.multiNew('control', a, b, c, d).madd(mul, add)
304 //      }