// This example uses the FFT to do // fairly stupid pitch shifting too. // By PRC, April 2008 adc => FFT fft =^ IFFT ifft => dac; // DSP Chain 1024 => fft.size => ifft.size; // Size Windowing.hamming(512) => fft.window; // Window for smoothing UAnaBlob blob; // Blob while (1) { 256 :: samp => now; // Advance time by hopsize fft.upchuck() @=> blob; // Get data for (0 => int i; i < fft.size()/4; 1 +=> i) { blob.cvals()[i*2] => blob.cvals()[i]; } // Copy Spectrum down by octave ifft.upchuck(); // Inverse FFT and output }