#![allow(non_snake_case)]
use std::fmt::Debug;
use super::config::*;
mod biquad;
mod biquadbank;
mod dummy;
mod seriesbiquad;
mod zpkmodel;
mod butter;
mod octave;
pub use super::ps::FreqWeighting;
pub use biquad::Biquad;
pub use biquadbank::BiquadBank;
pub use octave::{StandardFilterDescriptor, G, FREQ_REF};
pub use dummy::DummyFilter;
pub use seriesbiquad::SeriesBiquad;
pub use zpkmodel::{PoleOrZero, ZPKModel, FilterSpec};
pub trait Filter: Send + Debug {
fn filter(&mut self, input: &[Flt]) -> Vd;
fn reset(&mut self);
fn clone_dyn(&self) -> Box<dyn Filter>;
}
pub trait TransferFunction<'a, T>: Send
where
T: AsArray<'a, Flt>,
{
fn tf(&self, fs: Flt, freq: T) -> Ccol;
}
impl Clone for Box<dyn Filter> {
fn clone(&self) -> Self {
self.clone_dyn()
}
}