class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / FFTTrigger.schelp
blobea4a07de4e8a31bd48cefb58ead6402273da5e20
1 class:: FFTTrigger
2 summary:: Outputs the necessary signal for FFT chains, without doing an FFT on a signal
3 categories:: UGens>FFT
5 classmethods::
6 private:: categories
8 method:: new
9 argument:: buffer
10 a buffer to condition for FFT use
11 argument:: hop
12 the hop size for timing triggers (defaults to 0.5)
13 argument:: polar
14 a flag. If 0.0, the buffer will be prepared for complex data, if > 0.0, polar data is set up.
16 examples::
17 code::
19 s.boot.doWhenBooted{
20         b = Buffer.alloc(s, 512);
23 // Reminder: This isn't the intended typical usage! It's OK to do this though.
25 x = {
26         var mags, phases, chain, sig;
27         // Create simple undulating magnitudes
28         mags = {FSinOsc.kr(ExpRand(0.1, 1)).range(0, 1)}.dup(100);
29         // Then give them a "rolloff" to make the sound less unpleasant
30         mags = mags  * ((1, 0.99 .. 0.01).squared);
31         // Let's turn the bins on and off at different rates, I'm *sure* that'll sound interesting
32         mags = mags * {LFPulse.kr(2 ** IRand(-3, 5)).range(0, 1)}.dup(100);
33         // Let's ignore phase for now
34         phases = 0.dup(100);
35         chain = FFTTrigger(b, 0.5);
36         // Now we can do the packing
37         chain = PackFFT(chain, 512, [mags, phases].flop.flatten, 0, 99, 1);
38         sig = IFFT(chain);
39         Out.ar(0, sig.dup);
40 }.play(s);
42 x.free;
43 b.free;