Intel IPP JUCE FFT Wrapper


#1

Has anyone created a wrapper class for the Intel IPP FFT? Basically a drop in replacement class for the JUCE FFT class?

Cheers,

Rail


#2

I have a wrapper for IPP for my own FFT interface (IPP or FFTW), as I’m not using JUCE code in DSP paths.


#3

If you want to share it perhaps I can make it into a JUCE wrapper?? Otherwise I’ll start from scratch and see what I can come up with…

Cheers,

Rail


#4

Sure, you can see then here: https://github.com/mbrucher/AudioTK/blob/master/ATK/Utility/FFT.cpp
I would suppose that was is of interest is:


#5

Thanks! I’ll schedule some time to work on this next week!

EDIT: A quick look and it looks like you’re using the DFT, I’ll probably split it into two classes (I think)???

Cheers,

Rail


#6

Thanks, that’s a typo, it should have been the FFT version (not even usre why they offer the non fast version).


#7

Oh, I see, the DFT handles all sizes, whereas fft doesn’t. Annoying as FFTW does handle them.


#8

Probably so they don’t have to re-allocate memory.

Cheers,

Rail


#9

On the develop branch, I have a version that switches between implementations depending on size.


#10

Note that this isn’t super-trivial, because JUCE’s FFT class has a unique API different from all other FFT libraries for the real transform (which is the more common FFT which one would use for example when implementing convolutions etc), where JUCE returns all the frequencies twice.


#11

If he uses something similar to my wrapper, he has everything required, as I also return the full spectrum, not considering that the input signal is real and so that the second half spectrum is the conjugated first half.


#12

I wrote a wrapper for the IPP FFT some time ago which is not a drop in for the JUCE one, but offers RAII and a more JUCEly coding style. Check the comments for how to use it:

and

License says GPL, but use this file as you like.


#13

Thanks Chris!

Rail