A SIMD optimised biquad, for running N biquads in parallel. More...
#include <marvin_SIMDBiquad.h>
Public Member Functions | |
SIMDBiquad () | |
auto | setCoeffs (BiquadCoefficients< SampleType > coeffs) noexcept -> void |
auto | setCoeffs (size_t index, BiquadCoefficients< SampleType > coeffs) noexcept -> void |
auto | operator() (std::span< SampleType, N > x) noexcept -> void |
auto | reset () noexcept -> void |
A SIMD optimised biquad, for running N biquads in parallel.
From benchmarks, only gives a speedup in certain cases, and even in those cases, only ~100ns. That being said, a robust parallel structure for filters is arguably nicer than a std::array<filter, N>.
SampleType | float or double |
N | The number of parallel biquads to process |
|
inline |
Constructor
|
inlinenoexcept |
Processes all samples in x through their respective biquads, and overwrites the values in x
x | An array-like containing N samples to be filtered. |
|
inlinenoexcept |
Zeroes all internal state (except coefficients).
|
inlinenoexcept |
Sets the coefficients for all filters to the ones passed to the coeffs
arg
coeffs | A BiquadCoefficients<SampleType> containing the coeffs you want to set. |
|
inlinenoexcept |
Sets the coefficients for a specific biquad
index | |
coeffs |