Skip to content
/ realfft Public

realfft is the most accurate and best sounding real FFT/iFFT SIMD templated C++ class out there

Notifications You must be signed in to change notification settings

mewza/realfft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

FFTReal v1.2

This is the best (fastest, most precise and best sounding) real FFT/iFFT transform available in existence! I have gone through at least 10, and kept upgrading until I found this one, so I arranged it into a templated class that suports base types like float and double as well as simd vectors like simd_float8, simd_double4, which can be specified as a template parameter T. I also spent a great deal of time hand optimizing it in neon assembler, and then spent another month refining that, which I am pleased to announce that it is available for sale from me directly. The additional (for sale) optimization takes optimizations to a whole another level gaining about 30%-50% more performnace gain. I apologize for the extra hassle w/ transactions and emails, I will make it a paypal check out soon. The pricing for my highly optimized neon asm routines is $200/project and $1000 for a company-wide use on multiple projects - up to 10. This is an ideal package if you are doing multi-channel p rocessing that would leverage instrinsic vector architecture.

This is what I am using for now in all of my audio projects instead of AVFFT, PFFFT, etc. It is by far the best sounding and precise FFT I found, and you have my word on it, I don't just say things without testing.

v1.2 (NEW): I switched the internal dynamic arrays allocation which gives it better flexibility and efficiency for memory usage. Here's an example usage of RealFFT:

  // compute_fft_size() is an inline const function in your class
 
  const int fft_size = compute_fft_size(1024); 
  { 
        // Delcare instance of FFTReal
        FFTReal<simd_double2> fft(fft_size);

        fft.real_fft(data_in, data_out);
        
        // ... process data_out here ...
        
        // 3rd parameter optional, true = scale by 1/length, 
        // omitted or false = don't scale
        
        fft.real_ifft(data_out, data_in, true); 
  }

This style of initialization was not possible the way class was setup before (static), which required maximum FFT size initialization. Well, enjoy the world's best FFT class in the world! =)

Dmitry [email protected]

About

realfft is the most accurate and best sounding real FFT/iFFT SIMD templated C++ class out there

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages