Customer feedback
Where KFR Is Used
- Audio and music technology: instruments, effects, amp modeling, mixing, mastering, and real-time plugins.
- Medical diagnostics: EEG, polysomnography, sleep testing, and physiological-signal analysis.
- Test, measurement, and communications: oscilloscopes, RF instruments, automotive diagnostics, software-defined radios, spectrum analysis, and direction finding.
- Scientific, industrial, and embedded systems: numerical analysis, instrumentation, robotics, sensor processing, quality assurance, environmental monitoring, and ML preprocessing.
- Creative technology: interactive sequencing, experimental music, audio recognition, pitch detection, and multimedia research.
Case stories
Here is a selection of user stories and customer feedback.
reFX, Nexus
We use kfrlib with great success. It has ready to use convolution, FFT and other goodies. Builds for x64, arm, etc. with full optimizations and native SIMD usage. We’re using it in Nexus for FFT and convolution.
LIGO, Virgo and KAGRA, Gravitational-wave research
The integration of KFR library, a modern C++ library actively maintained for around a decade, enables ROOT data analysis framework with two agnostic key features: rapid FFT calculations and advanced signal processing. KFR allows efficient handling of large signals through high-performance Fast Fourier Transform (FFT) computations in n-dimensions and also robust signal processing techniques, including windowing functions, Finite Impulse Response (FIR), and Infinite Impulse Response (IIR) filtering.
Jean-Michaël Celerier, Ossia
Jean-Michaël Celerier (SCRIME, Université de Bordeaux) used KFR’s FFT as a benchmark in his paper “A Cross-Platform Development Toolchain for JIT-Compilation in Multimedia Software”, presented at the 17th Linux Audio Conference (LAC-19, CCRMA, Stanford, 2019).
For this benchmark, we compare the run time of a Fast Fourier Transform algorithm implemented in the KFR library mentioned earlier.
This library provides hand-optimized versions for many different instructions sets, ranging from SSE2 to AVX2. The results are presented in Table 1. The test is done on a large array: 16384 double-precision floatingpoint values.
Table 1: Performance increases yielded by using the proper instruction set. Machine Generic JIT Time saved Broadwell 214 µs 144 µs 32.7% Coffeelake 172 µs 107 µs 37.8%
Marco Meyer-Conde, Assistant Professor at Tokyo City University
To achieve this enhancement, we employ the KFR modern C++ library, specifically designed for advanced signal processing and digital complex filtering. This integration is seamlessly performed in use of ROOT software.