I thought I would post some examples of the new fft_real() / ifft_real() JSFX functions. Here is a pulse tone generator, that uses the FFT to convert a naive waveform into its Fourier coefficients (in @init). It then uses the inverse FFT to generate an alias-free waveform (in @slider). It seems to be about twice as fast as when doing the same using the complex FFT, while using only half the memory, plus you don't have to worry about mirroring the negative frequency bins. Code:
--------------------- '08 M5 Sepang Bronze/Portland - Modded- '11 328i M Sport Le Manns Blue/Oyster - wifeymobile '02 525i Touring Alpine White/Sand - Getting modded '06 Mini Cooper JCW GP#1281 - SOLD '10 MiniCooper S Laurel Sport Edition 1/100 - SOLD '99 M Coupe Laguna S
Sounds great ! I am not an expert on that issue at all, but from some discussion about FFT in JSFX I learned that there are some standard tasks that seemingly nearl always need to be done (e.g. managing the FFT window with respect to the sample block size). This is said to be rather time consuming when done in loops in the JSFX. I wonder if there could be a chance to do native code support functions that allow for speeding up certain standard tasks that are related to FFT handling. Thanks for listening, -Michael
--------------------- "I love you for what you should be, not for what you are"- James Demmitt
I analyzed the "FFT SPlitter" JSFX and did some testing. I understand that the (complex) FFT can convert two (real) signals at the same time and provided that the action done to the spectrum are linear (e.g. a multiplication with another spectrum to do a convolution), the inverse FFT will provide the action (e.g. convolution) applied to both signals. Is this correct ? Is it correct to assume that the "real FFT" only handles a single signal and runs faster with the same window size ? -Michael