39 std::vector<double>&
a, std::vector<double>&
b);
50 std::vector<double>&
a, std::vector<double>&
b);
61 std::vector<double>&
a, std::vector<double>&
b);
72 std::vector<double>&
a, std::vector<double>&
b);
87 std::vector<double>&
a, std::vector<double>&
b);
99 double sample_rate, std::vector<double>&
a, std::vector<double>&
b);
111 double sample_rate, std::vector<double>&
a, std::vector<double>&
b);
123 double sample_rate, std::vector<double>&
a, std::vector<double>&
b);
144[[nodiscard]] MAYAFLUX_API std::vector<double>
sinc_lowpass(
145 double frequency,
double sample_rate,
size_t taps);
159 double frequency,
double sample_rate,
size_t taps);
174 double low_hz,
double high_hz,
double sample_rate,
size_t taps);
206 size_t window,
size_t poly_order,
size_t derivative = 0);
235 double delay,
size_t order);
258MAYAFLUX_API
void resonator(
double pole_radius,
double pole_angle,
259 std::vector<double>&
a, std::vector<double>&
b);
272MAYAFLUX_API
void one_pole(
double pole,
273 std::vector<double>&
a, std::vector<double>&
b);
286MAYAFLUX_API
void dc_block(
double pole,
287 std::vector<double>&
a, std::vector<double>&
b);
305[[nodiscard]] MAYAFLUX_API std::vector<double>
cascade(
306 std::span<const double> lhs, std::span<const double> rhs);
354 double frequency,
double q,
double sample_rate)
noexcept;
366 double seconds,
double sample_rate)
noexcept;
379 double seconds,
double sample_rate)
noexcept;
388 double radius,
double sample_rate)
noexcept;
400 double frequency,
double seconds,
double sample_rate)
noexcept;
410 double frequency,
double q,
double sample_rate)
noexcept;
435 size_t count,
double ratio,
bool unit_sum =
false);
std::weak_ptr< Core::Window > window
void lagrange_weights(double delay, std::span< double > weights) noexcept
Lagrange interpolation weights written to an array, without allocating.
std::vector< double > delay(std::span< const double > data, uint32_t delay_samples, double fill_value)
Prepend delay_samples zero-valued (or fill_value) samples, returning a new vector.
std::vector< double > moving_average_weights(size_t count)
Equal weights summing to 1: Taper::rectangular scaled by 1 / count.
void biquad_notch(double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b)
Second-order notch coefficients.
void 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.
std::vector< double > backward_difference_weights(size_t order)
Weights of the backward difference of a given order.
void biquad_lowpass(double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b)
Second-order lowpass coefficients.
void biquad_highpass(double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b)
Second-order highpass coefficients.
double decay_from_q(double frequency, double q, double sample_rate) noexcept
Ring time of a bandpass section of a given Q.
double pole_radius_from_decay(double seconds, double sample_rate) noexcept
Pole radius whose impulse response falls by 1/e in a given time.
double 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.
std::vector< double > savitzky_golay(size_t window, size_t poly_order, size_t derivative)
Savitzky-Golay FIR coefficients for smoothing or differentiation.
std::vector< double > sinc_lowpass(double frequency, double sample_rate, size_t taps)
Windowed-sinc lowpass FIR coefficients.
std::vector< double > lagrange_delay(double delay, size_t order)
Lagrange fractional-delay FIR coefficients.
void biquad_peaking(double frequency, double q, double gain_db, double sample_rate, std::vector< double > &a, std::vector< double > &b)
Second-order peaking coefficients.
void dc_block(double pole, std::vector< double > &a, std::vector< double > &b)
DC blocking filter.
double max_pole_magnitude(std::span< const double > a)
Largest pole magnitude of a denominator polynomial.
void one_pole(double pole, std::vector< double > &a, std::vector< double > &b)
One-pole filter specified by pole position.
void biquad_allpass(double frequency, double q, double sample_rate, std::vector< double > &a, std::vector< double > &b)
Second-order allpass coefficients.
std::vector< double > sinc_highpass(double frequency, double sample_rate, size_t taps)
Windowed-sinc highpass FIR coefficients.
std::vector< double > cascade(std::span< const double > lhs, std::span< const double > rhs)
Polynomial product of two coefficient vectors.
void 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 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.
double q_from_decay(double frequency, double seconds, double sample_rate) noexcept
Q that gives the bandpass section a stated ring time.
std::vector< double > geometric_weights(size_t count, double ratio, bool unit_sum)
Weights that fall by a constant ratio with age.
void resonator(double pole_radius, double pole_angle, std::vector< double > &a, std::vector< double > &b)
Two-pole resonator specified by z-plane pole position.
double decay_per_sample(double seconds, double sample_rate) noexcept
Per-sample factor that falls by 1/e in a given time.
std::vector< double > sinc_bandpass(double low_hz, double high_hz, double sample_rate, size_t taps)
Windowed-sinc bandpass FIR coefficients.
Second order section with a[0] normalised to 1, returned by value.