Struct Butterworth Filter
pub struct ButterworthFilter { /* private fields */ }Expand description
One-channel allocation-free processing using at most 16 fixed sections. Nonfinite audio propagates. There is no transition smoothing, anti-denormal, headroom or real-time deadline guarantee. Each channel needs its own owner.
use ravet_signal::{ButterworthDesign, ButterworthFilter, ButterworthResponse};
let design = ButterworthDesign::new(
ButterworthResponse::LowPass { cutoff_hz: 4000. }, 48000., 7).unwrap();
let mut filter = ButterworthFilter::new(design);
let output = filter.process_sample(1.);
assert!(output.is_finite());Implementations§
§impl ButterworthFilter
impl ButterworthFilter
pub fn new(design: ButterworthDesign) -> Self
pub fn new(design: ButterworthDesign) -> Self
Start with zero histories and the selected design.
pub fn set_design(&mut self, design: ButterworthDesign)
pub fn set_design(&mut self, design: ButterworthDesign)
Replace the complete selected-order design and reset all histories. This policy differs from existing const-generic cascade replacement, which retains histories. Prepare the design on CONTROL first.
pub fn process_sample(&mut self, input: f64) -> f64
pub fn process_sample(&mut self, input: f64) -> f64
Process one sample; finite stable coefficients do not sanitize audio.
pub fn process_in_place(&mut self, samples: &mut [f64])
pub fn process_in_place(&mut self, samples: &mut [f64])
Process an arbitrary block, retaining history between blocks.
pub fn reset(&mut self)
pub fn reset(&mut self)
Clear every history without allocation.