// our patch
SinOsc g => FFT fft => blackhole;
// synthesis
IFFT ifft => dac;
// set srate
second / samp => float srate;
// set parameters
1024 => fft.size;
// window
Windowing.hamming(512) => fft.window;
Windowing.hamming(512) => ifft.window;
// use this to hold contents
complex s[fft.size()/2];
// divide
int div;
// control loop
while( true )
{
// set freq
srate / fft.size() * div++ => g.freq;
fft.size()/2 %=> div;
// take fft
fft.upchuck();
// get contents
fft.spectrum( s );
// take ifft
ifft.transform( s );
// advance time
256::samp => now;
}