From 4fad759d06b2ed4367edf7acb4f90ed23fddc461 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Tue, 7 Jun 2022 01:51:35 +0200 Subject: [PATCH] Mark the linear-phase LR24 crossover experimental The low frequency performance is too poor at this filter size and the DSP load impact is too high. This needs to be implemented using FFT convolution instead. --- plugins/crossover/src/crossover/fir.rs | 6 +++--- plugins/crossover/src/lib.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/crossover/src/crossover/fir.rs b/plugins/crossover/src/crossover/fir.rs index 606d28d2..18e76ac2 100644 --- a/plugins/crossover/src/crossover/fir.rs +++ b/plugins/crossover/src/crossover/fir.rs @@ -22,10 +22,10 @@ use std::simd::{f32x2, StdFloat}; use crate::biquad::{Biquad, BiquadCoefficients, NEUTRAL_Q}; use crate::NUM_BANDS; -// TODO: These filters would be more efficient when processing four samples at a time instead of -// processing two channels at a time. But this keeps the interface nicer. +// TODO: Move this to FFT convolution so we can increase the filter size and improve low latency performance -/// The size of the FIR filter window, or the number of taps. +/// The size of the FIR filter window, or the number of taps. The low frequency performance is +/// greatly limited by this. const FILTER_SIZE: usize = 121; /// The size of the FIR filter's ring buffer. This is `FILTER_SIZE` rounded up to the next power of /// two. diff --git a/plugins/crossover/src/lib.rs b/plugins/crossover/src/lib.rs index 367d1a15..cb1895e3 100644 --- a/plugins/crossover/src/lib.rs +++ b/plugins/crossover/src/lib.rs @@ -81,7 +81,7 @@ enum CrossoverType { #[name = "LR24"] LinkwitzRiley24, #[id = "lr24-lp"] - #[name = "LR24 (LP)"] + #[name = "LR24 (LP, experimental)"] LinkwitzRiley24LinearPhase, }