Struct EnvelopeFollower
pub struct EnvelopeFollower { /* private fields */ }Expand description
Envelope follower for dynamics-based modulation.
Tracks the amplitude envelope of an audio signal, producing a control signal for auto-wah, compressor side-chains, or dynamic modulation. Uses asymmetric attack/release smoothing for natural response.
Implementations§
§impl EnvelopeFollower
impl EnvelopeFollower
pub fn new(sample_rate: f64) -> EnvelopeFollower
pub fn new(sample_rate: f64) -> EnvelopeFollower
Create a new envelope follower with default parameters.
Default: 10ms attack, 100ms release, unity sensitivity.
pub fn from_rc(
attack_r: f64,
attack_c: f64,
release_r: f64,
release_c: f64,
sensitivity_r: f64,
sample_rate: f64,
) -> EnvelopeFollower
pub fn from_rc( attack_r: f64, attack_c: f64, release_r: f64, release_c: f64, sensitivity_r: f64, sample_rate: f64, ) -> EnvelopeFollower
Create an envelope follower from physical RC timing components.
This mirrors real envelope detector circuits where attack and release time constants are set by RC networks, and sensitivity is set by an input gain resistor.
attack_r: Attack timing resistor (Ω)attack_c: Attack timing capacitor (F)release_r: Release timing resistor (Ω)release_c: Release timing capacitor (F)sensitivity_r: Sensitivity resistor (Ω) — gain = sensitivity_r / 10kΩ
Time constants: τ_attack = R_attack × C_attack (in seconds), τ_release = R_release × C_release (in seconds).
pub fn set_attack(&mut self, ms: f64)
pub fn set_attack(&mut self, ms: f64)
Set attack time in milliseconds.
Shorter attack responds faster to transients but may track individual waveform cycles. Typical range: 1-50ms.
pub fn set_release(&mut self, ms: f64)
pub fn set_release(&mut self, ms: f64)
Set release time in milliseconds.
Longer release gives smoother output but slower response to level drops. Typical range: 50-500ms.
pub fn set_sensitivity(&mut self, sens: f64)
pub fn set_sensitivity(&mut self, sens: f64)
Set input sensitivity/gain.
Higher sensitivity amplifies the input before envelope detection, useful for low-level signals. Typical range: 0.5-5.0.
pub fn sensitivity(&self) -> f64
pub fn sensitivity(&self) -> f64
Get current sensitivity.
pub fn process(&mut self, input: f64) -> f64
pub fn process(&mut self, input: f64) -> f64
Process one audio sample and return the envelope value.
The envelope tracks the rectified (absolute value) input with asymmetric attack/release smoothing. Output range is 0.0 upward, typically staying below 1.0 for normalized audio input.
pub fn reset(&mut self)
pub fn reset(&mut self)
Reset envelope to zero.
pub fn set_sample_rate(&mut self, sample_rate: f64)
pub fn set_sample_rate(&mut self, sample_rate: f64)
Update sample rate and recalculate coefficients.
Trait Implementations§
§impl Clone for EnvelopeFollower
impl Clone for EnvelopeFollower
§fn clone(&self) -> EnvelopeFollower
fn clone(&self) -> EnvelopeFollower
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more