Struct synfx_dsp::fh_va::LadderFilter
source · [−]pub struct LadderFilter {
pub params: Arc<FilterParams>,
pub s: [f32x4; 4],
/* private fields */
}
Expand description
This is a 4-pole lowpass ladder filter.
This is a 4-pole lowpass ladder filter loosely based on the ones found in
Moog synthesizers. It distorts nicely and is capable of stable
self-oscillation when k_ladder==4
, and can output other slopes too.
Resonance is limited by the differential BJT buffers.
It converges very well, usually only taking 2 iterations, and almost never more than 4. Could just always do 2, especially when oversampled.
Circuit solved by applying KCL, finding the jacobian of the entire system and then applying newton’s method.
By mixing the output of the different stages, and the output of the feedback, we can create many other filter types. See LadderMode
Fields
params: Arc<FilterParams>
s: [f32x4; 4]
Implementations
sourceimpl LadderFilter
impl LadderFilter
pub fn new(params: Arc<FilterParams>) -> Self
pub fn reset(&mut self)
pub fn set_mix(&mut self, mode: LadderMode)
sourcepub fn tick_newton(&mut self, input: f32x4) -> f32x4
pub fn tick_newton(&mut self, input: f32x4) -> f32x4
performs a complete filter process (newton-raphson method)
sourcepub fn tick_pivotal(&mut self, input: f32x4) -> f32x4
pub fn tick_pivotal(&mut self, input: f32x4) -> f32x4
performs a complete filter process (solved with Mystran’s fixed-pivot method).
sourcepub fn tick_linear(&mut self, input: f32x4) -> f32x4
pub fn tick_linear(&mut self, input: f32x4) -> f32x4
performs a complete filter process (linear without distortion)
Trait Implementations
sourceimpl Clone for LadderFilter
impl Clone for LadderFilter
sourcefn clone(&self) -> LadderFilter
fn clone(&self) -> LadderFilter
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more