pub struct EnvelopeFollower { /* private fields */ }Expand description
Attack-release envelope follower producing a smooth modulation signal.
Implementations§
Source§impl EnvelopeFollower
impl EnvelopeFollower
Sourcepub fn new(attack_ms: f32, release_ms: f32, sample_rate: u32) -> Self
pub fn new(attack_ms: f32, release_ms: f32, sample_rate: u32) -> Self
Create a new envelope follower.
attack_ms: Time to reach ~63% of a step increase.
release_ms: Time to decay to ~37% of a step decrease.
Sourcepub fn process(&mut self, input_abs: f32) -> f32
pub fn process(&mut self, input_abs: f32) -> f32
Process one sample (provide absolute value of input).
Returns the current envelope value. NaN/inf inputs are treated as zero to prevent permanent envelope corruption.
Sourcepub fn process_block(&mut self, samples: &[f32]) -> f32
pub fn process_block(&mut self, samples: &[f32]) -> f32
Process a block and return the final envelope value.
Useful when you only need the envelope at block boundaries.
Trait Implementations§
Source§impl Clone for EnvelopeFollower
impl Clone for EnvelopeFollower
Source§fn clone(&self) -> EnvelopeFollower
fn clone(&self) -> EnvelopeFollower
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for EnvelopeFollower
impl Debug for EnvelopeFollower
impl Copy for EnvelopeFollower
Auto Trait Implementations§
impl Freeze for EnvelopeFollower
impl RefUnwindSafe for EnvelopeFollower
impl Send for EnvelopeFollower
impl Sync for EnvelopeFollower
impl Unpin for EnvelopeFollower
impl UnsafeUnpin for EnvelopeFollower
impl UnwindSafe for EnvelopeFollower
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.