Skip to main content

Adsr

Struct Adsr 

Source
pub struct Adsr { /* private fields */ }
Expand description

ADSR Envelope Generator

A classic Attack-Decay-Sustain-Release envelope with gate and retrigger inputs. Outputs normal and inverted envelope signals, plus end-of-cycle trigger.

§Segment timing

The decay and release parameters denote the true duration of their respective segments (peak→sustain and current-level→zero), not the time to traverse the full 0..1 span. Per-sample rates are therefore scaled by the span actually traversed: decay_rate = (1 - sustain) / (decay_time · fs) and release_rate = release_start_level / (release_time · fs), where release_start_level is captured at the instant the gate falls.

§Curve shape

The shape input selects the segment curve: 0V (default) gives classic linear ramps; a high level (> GATE_THRESHOLD_V, e.g. 5V) selects an exponential one-pole approach toward each stage’s target (attack→1, decay→ sustain, release→0) using env_coef with the stage time as the time constant.

§Retrigger semantics

A retrigger (or a fresh gate) restarts the contour at the Attack stage but continues from the current level — it does not reset the level to zero. Retriggering during Sustain therefore ramps back up from the sustain level rather than restarting from silence.

Implementations§

Source§

impl Adsr

Source

pub fn new(sample_rate: f64) -> Self

Trait Implementations§

Source§

impl Default for Adsr

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl GraphModule for Adsr

Source§

fn port_spec(&self) -> &PortSpec

Returns the module’s port specification
Source§

fn tick(&mut self, inputs: &PortValues, outputs: &mut PortValues)

Process one sample given port values
Source§

fn reset(&mut self)

Reset internal state
Source§

fn set_sample_rate(&mut self, sample_rate: f64)

Set sample rate
Source§

fn type_id(&self) -> &'static str

Get module type identifier for serialization
Source§

fn process_block( &mut self, inputs: &BlockPortValues, outputs: &mut BlockPortValues, frames: usize, )

Process a block of samples (optional optimization). Read more
Source§

fn breaks_feedback_cycle(&self) -> bool

Whether this module breaks a feedback cycle in the patch graph. Read more
Source§

fn params(&self) -> &[ParamDef]

Get parameter definitions for UI binding. Read more
Source§

fn get_param(&self, _id: ParamId) -> Option<f64>

Get a parameter value. Read more
Source§

fn set_param(&mut self, _id: ParamId, _value: f64)

Set a parameter value. Read more
Source§

fn serialize_state(&self) -> Option<Value>

Available on crate feature alloc only.
Serialize module state (alloc feature only)
Source§

fn deserialize_state(&mut self, _state: &Value) -> Result<(), String>

Available on crate feature alloc only.
Deserialize module state (alloc feature only)
Source§

fn introspect(&self) -> Option<&dyn ModuleIntrospection>

Available on crate feature alloc only.
Downcast this module to its ModuleIntrospection view, if it exposes one. Read more
Source§

fn introspect_mut(&mut self) -> Option<&mut dyn ModuleIntrospection>

Available on crate feature alloc only.
Mutable companion to introspect, used to set internal parameters.
Source§

impl ModuleIntrospection for Adsr

Available on crate feature alloc only.
Source§

fn param_infos(&self) -> Vec<ParamInfo>

Get all parameter descriptors for this module Read more
Source§

fn get_param_info(&self, id: &str) -> Option<ParamInfo>

Get a specific parameter by its ID
Source§

fn set_param_by_id(&mut self, _id: &str, _value: f64) -> bool

Set a parameter value by its ID Read more

Auto Trait Implementations§

§

impl Freeze for Adsr

§

impl RefUnwindSafe for Adsr

§

impl Send for Adsr

§

impl Sync for Adsr

§

impl Unpin for Adsr

§

impl UnsafeUnpin for Adsr

§

impl UnwindSafe for Adsr

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.