What's new in KFR 3.0

15 March 2019

MSVC, GCC, and AVX512 support, as well as DFT with non-power-of-2 sizes.

MSVC and GCC supportNew in KFR 3

KFR now supports building with Microsoft Visual Studio 2017 and GCC 7+.

As before, Xcode and Clang are fully supported.

AVX512 supportNew in KFR 3

Full support for the latest Intel vector extensions has been added to achieve maximum performance on the most recent CPUs.

Fast Fourier Transform

All DFT sizes New in KFR 3

FFT now supports any input size, not only powers of two. KFR automatically selects the best algorithm internally for maximum performance.

Better performance for modern cpus Improved in KFR 3

In KFR 3, FFT performance is improved by about 15% compared to previous versions on most modern CPUs.

DSP

Resampling Improved in KFR 3

Now the highest quality of KFR resampling implementation has been proved by the well-known Sample Rate Converter comparison

Complex number support for the resampling algorithm, and other improvements

Internal filter quality can now be set at runtime

Ability to get the transition width, sidelobe attenuation, and filter order selected for a given quality

EBU R 128 loudness New in KFR 3

New class has been added to support loudness computation according to the EBU R 128 standard

FIR/IIR filters, filter design, Window functions Improved in KFR 3

FIR filter performance has been increased by around 50%-60% for up to 33 taps

Audio files support Improved in KFR 3

KFR supports reading and writing of WAV files (including W64) and reading of FLAC files

Automatic Audio sample conversion New in KFR 3

KFR can convert samples during reading and writing, letting you work with one internal type while keeping full portability

Supported OS/Compilers/ArchitecturesImproved in KFR 3

  • macOS
  • Linux
  • Windows (including MinGW)
  • Android (target OS)
  • iOS (target OS)
  • Xcode
  • Clang
  • Visual Studio 2017
  • GCC
  • AVX, AVX2, AVX512
  • SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2
  • ARM NEON, ARM64 NEON
  • Generic code as fallback

Other improvements and changes

Build system

  • Ability to include KFR as a subdirectory in a CMake project
  • Ability to link objects built for multiple architectures into one binary
  • Ability to detect the host CPU at compile time

License

Changed to GPL 2+, allowing KFR to be used in both GPL 2 and GPL 3 licensed codebases