ofxFftw has now been replaced by ofxFft. Download it
here.
ofxFft is completely restructured. You don't call fft() and ifft() anymore, but instead:
void setSignal(float* signal);
void setCartesian(float* real, float* imag = NULL);
void setPolar(float* amplitude, float* phase = NULL);
int getSignalSize();
float* getSignal();
void clampSignal();
int getBinSize();
float* getReal();
float* getImaginary();
float* getAmplitude();
float* getPhase();
The idea is that you should be able to set one of the three representations (one time domain, two frequency domain) and get the other two. The respective FFTs and IFFTs are evaluated lazily/when requested. To do an FFT, you might say setSignal(), then getAmplitude(). To do an IFFT you might say setPolar() with some modified amplitude values, and then call getSignal().
Two demos are packaged with the source. One shows how to do a low-pass filter EQ by modifying the amplitude. The other shows how to build up a spectrogram image.
An important change from the versions posted earlier in this thread is that the "basic"/non-fftw implementation has been changed to
KISS FFT. KISS FFT is BSD licensed, which offers a lot of freedom. The old code posted by Pierre isn't packaged as well, acted weird when doing the real IFFT, and, most importantly, was ambiguously licensed (it came from a numerical recipes book, which is
famously restrictive, and was later modified and called LGPL).