Hi Jules,
I just saw, that you've added an FFT class. Great! I have a few suggestions on the interface:
As you might know, Apples vDSP has FFT functions (vDSP_fft_zrip). It would be great, if JUCEs FFT class could use vDSP on OSX. But for that to work, it's neccessary to have a custom type for "container of complex". This is because vDSP is using DSPSplitComplex (in a rather strange layout).
It would also be great to have something like FloatVectorOperations that works on data in the frequency domain. This way the high-performance implementations of IPP, vDSP, FFTW, ... can be used without having to think about the data-layout that the library is using. Here's how the interface might look like (pseudo-code):
class FrequencyDomainOperations:
void addWithMultiply(Spectrum& a, const Spectrum& b, const Spectrum& c)
void getMagnitude(float* out, const Spectrum& s)
void getPhase(float* out, const Spectrum& s)
...
It would also great, if there would be an compiler option (some time in the future) to use vDSP, IPP or FFTW as the default.
If you're interested in my wrapper implementations drop me a PM - I'm sure, we can figure something out.
-- Benjamin
PS.: Might I ask, why you aren't using std::complex? as far as I know, it's in the STL for ages. Some googling brought up some header files dating 1994 :)