A UGen that writes a complex input signal into an FFT buffer. The input is a
sequence of interleaved magnitudes and phases. It is written to an FFT buffer
ready for transforming it back into time-domain audio using IFFT.
Examples
// harmonic sound with changing overtone intensities
play {
// create simple undulating magnitudesval m0 = FSinOsc.kr(Seq.fill(100)(ExpRand(0.1, 1))) * 0.5 + 0.5// give them a "rolloff" to make the sound less unpleasantval m1 = m0 * Seq.tabulate(100)(_.linlin(0, 99, 1.0, 0.01).squared)
// turn the bins on and off at different ratesval mags = m1 * LFPulse.kr(Seq.fill(100)(2 pow IRand(-3, 5)))
// ignore phaseval phases: GE = Seq.fill(100)(0)
// We need to create an FFT chain to feed our data in to.// The easiest way is to do an FFT on some signal which we then ignore!val buf = FFT(LocalBuf(512), DC.ar(0))
// now we can do the packingval chain = PackFFT(buf, 512, Zip(mags, phases), 0, 99, 1)
val sig = IFFT.ar(chain)
Pan2.ar(sig)
}
A UGen that writes a complex input signal into an FFT buffer. The input is a sequence of interleaved magnitudes and phases. It is written to an FFT buffer ready for transforming it back into time-domain audio using IFFT.
Examples
SetBuf
IFFT
FFT
Unpack1FFT