SuperCollider CLASSES

FFTTrigger

Outputs the necessary signal for FFT chains, without doing an FFT on a signal

Class Methods

*new (buffer, hop: 0.5, polar: 0)

Arguments:

buffer

a buffer to condition for FFT use

hop

the hop size for timing triggers (defaults to 0.5)

polar

a flag. If 0.0, the buffer will be prepared for complex data, if > 0.0, polar data is set up.

Inherited class methods

Instance Methods

Inherited instance methods

Examples

(
s.waitForBoot({
    b = Buffer.alloc(s, 512);
});
)
// Reminder: This isn't the intended typical usage! It's OK to do this though.
(
x = {
    var mags, phases, chain, sig;
    // Create simple undulating magnitudes
    mags = {FSinOsc.kr(ExpRand(0.1, 1)).range(0, 1)}.dup(100);
    // Then give them a "rolloff" to make the sound less unpleasant
    mags = mags  * ((1, 0.99 .. 0.01).squared);
    // Let's turn the bins on and off at different rates, I'm *sure* that'll sound interesting
    mags = mags * {LFPulse.kr(2 ** IRand(-3, 5)).range(0, 1)}.dup(100);
    // Let's ignore phase for now
    phases = 0.dup(100);
    chain = FFTTrigger(b, 0.5);
    // Now we can do the packing
    chain = PackFFT(chain, 512, [mags, phases].flop.flatten, 0, 99, 1);
    sig = IFFT(chain);
    Out.ar(0, sig.dup);
}.play(s);
)
x.free;
b.free;