|
MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
|
Digital filter coefficient design for MayaFlux::Kinesis. More...
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Classes | |
| struct | MayaFlux::Kinesis::Discrete::Biquad |
| Second order section with a[0] normalised to 1, returned by value. More... | |
Namespaces | |
| namespace | MayaFlux |
| Main namespace for the Maya Flux audio engine. | |
| namespace | MayaFlux::Kinesis |
| namespace | MayaFlux::Kinesis::Discrete |
Functions | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::backward_difference_weights (size_t order) |
| Weights of the backward difference of a given order. | |
| void | MayaFlux::Kinesis::Discrete::biquad_allpass (double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order allpass coefficients. | |
| Biquad | MayaFlux::Kinesis::Discrete::biquad_bandpass (double frequency, double q, double sample_rate) noexcept |
| Constant peak gain bandpass section, returned by value. | |
| void | MayaFlux::Kinesis::Discrete::biquad_bandpass (double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order bandpass coefficients, constant 0 dB peak gain. | |
| void | MayaFlux::Kinesis::Discrete::biquad_high_shelf (double frequency, double slope, double gain_db, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order high shelf coefficients. | |
| void | MayaFlux::Kinesis::Discrete::biquad_highpass (double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order highpass coefficients. | |
| void | MayaFlux::Kinesis::Discrete::biquad_low_shelf (double frequency, double slope, double gain_db, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order low shelf coefficients. | |
| void | MayaFlux::Kinesis::Discrete::biquad_lowpass (double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order lowpass coefficients. | |
| void | MayaFlux::Kinesis::Discrete::biquad_notch (double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order notch coefficients. | |
| void | MayaFlux::Kinesis::Discrete::biquad_peaking (double frequency, double q, double gain_db, double sample_rate, std::vector< double > &a, std::vector< double > &b) |
| Second-order peaking coefficients. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::cascade (std::span< const double > lhs, std::span< const double > rhs) |
| Polynomial product of two coefficient vectors. | |
| void | MayaFlux::Kinesis::Discrete::dc_block (double pole, std::vector< double > &a, std::vector< double > &b) |
| DC blocking filter. | |
| double | MayaFlux::Kinesis::Discrete::decay_from_pole_radius (double radius, double sample_rate) noexcept |
| Time for an impulse response of a given pole radius to fall by 1/e. | |
| double | MayaFlux::Kinesis::Discrete::decay_from_q (double frequency, double q, double sample_rate) noexcept |
| Ring time of a bandpass section of a given Q. | |
| double | MayaFlux::Kinesis::Discrete::decay_per_sample (double seconds, double sample_rate) noexcept |
| Per-sample factor that falls by 1/e in a given time. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::geometric_weights (size_t count, double ratio, bool unit_sum=false) |
| Weights that fall by a constant ratio with age. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::lagrange_delay (double delay, size_t order) |
| Lagrange fractional-delay FIR coefficients. | |
| void | MayaFlux::Kinesis::Discrete::lagrange_weights (double delay, std::span< double > weights) noexcept |
| Lagrange interpolation weights written to an array, without allocating. | |
| double | MayaFlux::Kinesis::Discrete::max_pole_magnitude (std::span< const double > a) |
| Largest pole magnitude of a denominator polynomial. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::moving_average_weights (size_t count) |
| Equal weights summing to 1: Taper::rectangular scaled by 1 / count. | |
| void | MayaFlux::Kinesis::Discrete::one_pole (double pole, std::vector< double > &a, std::vector< double > &b) |
| One-pole filter specified by pole position. | |
| double | MayaFlux::Kinesis::Discrete::pole_radius_from_decay (double seconds, double sample_rate) noexcept |
| Pole radius whose impulse response falls by 1/e in a given time. | |
| double | MayaFlux::Kinesis::Discrete::q_from_decay (double frequency, double seconds, double sample_rate) noexcept |
| Q that gives the bandpass section a stated ring time. | |
| void | MayaFlux::Kinesis::Discrete::resonator (double pole_radius, double pole_angle, std::vector< double > &a, std::vector< double > &b) |
| Two-pole resonator specified by z-plane pole position. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::savitzky_golay (size_t window, size_t poly_order, size_t derivative=0) |
| Savitzky-Golay FIR coefficients for smoothing or differentiation. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::sinc_bandpass (double low_hz, double high_hz, double sample_rate, size_t taps) |
| Windowed-sinc bandpass FIR coefficients. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::sinc_highpass (double frequency, double sample_rate, size_t taps) |
| Windowed-sinc highpass FIR coefficients. | |
| std::vector< double > | MayaFlux::Kinesis::Discrete::sinc_lowpass (double frequency, double sample_rate, size_t taps) |
| Windowed-sinc lowpass FIR coefficients. | |
Digital filter coefficient design for MayaFlux::Kinesis.
Pure numerical functions producing difference-equation coefficient vectors. No MayaFlux type dependencies. Domain-agnostic: the resulting coefficients describe a recurrence over any sampled sequence, not specifically audio.
All biquad designs follow the RBJ Audio EQ Cookbook bilinear transform and are normalised so that a[0] == 1.0 on return. Coefficients are written into caller-supplied vectors, which are resized to the required order.
Convention matches the direct-form recurrence: y[n] = sum(b[i] * x[n-i]) - sum(a[i] * y[n-i]) for i >= 1
SIMD notes: Design functions are scalar and called at configuration time, not per sample. cascade() is a small convolution and is not hot-path. max_pole_magnitude() carries an Eigen dependency confined to the .cpp.
Definition in file Coefficients.hpp.