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§
Source§impl 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§
Source§impl Clone for LadderFilter
impl Clone for LadderFilter
Source§fn clone(&self) -> LadderFilter
fn clone(&self) -> LadderFilter
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more