Which FFT engine is used per default?

Hi everybody,

I have a couple of questions regarding the FFT class.

I understand that Juce automatically selects the best engine for the framework being used. Nevertheless, the documentation for the FFT class states that “This is only a simple low-footprint implementation and isn’t tuned for speed - it may be useful for simple applications where one of the more complex FFT libraries would be overkill.”

  • I assume the documentation out-of-date. Or are these some extra steps required?

  • How can one tell which engine is being used during runtime?

  • Which engine is used per default on Android devices?


At the moment there’s no API to find which engine is being used. You could stick a breakpoint in createBestEngineForPlatform to see which engine gets created.

It looks to me like JUCE’s fallback engine will be used by default on Android. You may also be able to use FFTW, assuming its license terms are compatible with your project. It doesn’t look like FFTW is distributed in compiled form for Android, so you may need to build this library yourself, too. There’s more information about setting this up in the documentation for the JUCE_DSP_USE_STATIC_FFTW option in the juce_dsp.h header.

1 Like

Perfect, thanks!