Struct knyst::envelope::EnvelopeGen

source ·
pub struct EnvelopeGen {
    pub start_value: Sample,
    pub playing: bool,
    /* private fields */
}
Expand description

An envelope Gen. Must be started by calling EnvelopeGen::start since that will initialise it based on the settings of its segments. If you want to use it offline, it can be turned into an iterator by calling EnvelopeGen::iter_mut.

Fields§

§start_value: Sample§playing: bool

Implementations§

source§

impl EnvelopeGen

source

pub fn adsr( attack_time: Sample, decay_time: Sample, sustain_level: Sample, release_time: Sample ) -> Self

Convenience method for an ADSR envelope

source

pub fn sustain(self, sustain: SustainMode) -> Self

Set the SustainMode

source

pub fn stop_action(self, stop_action: StopAction) -> Self

Set the StopAction

source

pub fn set_points(&mut self, points: Vec<(Sample, Sample)>)

Set the points of the envelope. Points are in the format (next_leve, time_to_reach_that_level_in_seconds)

source

pub fn curves(self, curves: Vec<Curve>) -> Self

If the curves are differently many from the points, fill with Curve::Linear for the later segments.

source

pub fn set_curve(&mut self, curve: Curve, index: usize)

Set a specific segment curve

source

pub fn get_point(&mut self, index: usize) -> (Sample, Sample)

source

pub fn playing(&self) -> bool

Returns if the envelope is playing

source

pub fn update_from_envelope(&mut self, other: &EnvelopeGen)

Updates the values of the this Envelope to match those of the other Envelope if it can be done without allocation. The Envelopes are assumed to match.

source

pub fn start(&mut self)

Initialises the envelope based on the start_value and the first point

source

pub fn restart_from_current(&mut self)

Initialises the envelope based on the current value and the first point

source

pub fn release(&mut self)

Releases the envelope if it is sustaining or immediately fades out if it is not.

source

pub fn fade_out(&mut self)

Immediately fade the output to 0.0. This is called if EnvelopeGen::release is called on a non sustaining and non looping envelope.

source

pub fn set_value(&mut self, value: Sample, index: usize)

Change the value of a specific point.

source

pub fn set_duration(&mut self, duration: Sample, index: usize)

Set the duration of a segment in seconds (the duration to reach the value with the same index). Will not affect the currently playing segment.

source

pub fn next_sample(&mut self) -> Sample

Get the next sample of the envelope

source

pub fn iter_mut(&mut self) -> EnvelopeIterator<'_>

Evaluate Self as an iterator. Evaluating the envelope means changing the state which is why it is mut.

source§

impl EnvelopeGen

source

pub fn new( start_value: Sample, points: Vec<(Sample, Sample)>, sustain: SustainMode, stop_action: StopAction ) -> Self

Create a new Envelope. points are in the format (level, duration) where the duration is given in seconds, and later converted to samples internally.

source

pub fn process( &mut self, release: &[Trig], restart: &[Trig], amplitude: &mut [Sample] ) -> GenState

Process block

source§

impl EnvelopeGen

source

pub fn upload(self) -> Handle<EnvelopeGenHandle>

Upload the Gen to the currently selected Graph and return a handle

Trait Implementations§

source§

impl Clone for EnvelopeGen

source§

fn clone(&self) -> EnvelopeGen

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EnvelopeGen

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Gen for EnvelopeGen

source§

fn process( &mut self, ctx: GenContext<'_, '_>, resources: &mut Resources ) -> GenState

The input and output buffers are both indexed using [in/out_index][sample_index]. Read more
source§

fn num_inputs(&self) -> usize

The number of inputs this Gen takes. Determines how big the input buffer is.
source§

fn num_outputs(&self) -> usize

The number of outputs this Gen produces. Determines how big the output buffer is.
source§

fn input_desc(&self, input: usize) -> &'static str

Return a label for a given input channel index. This sets the label in the Connection API.
source§

fn output_desc(&self, output: usize) -> &'static str

Return a label for a given output channel index. This sets the label in the Connection API.
source§

fn init(&mut self, block_size: usize, sample_rate: Sample, node_id: NodeId)

Initialize buffers etc. Default: noop
source§

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

A name identifying this Gen.

Auto Trait Implementations§

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> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

source§

impl<T> GenOrGraph for T
where T: Gen + Send + 'static,

source§

fn components( self, _parent_graph_block_size: usize, _parent_graph_sample_rate: f32, _parent_graph_oversampling: Oversampling ) -> (Option<Graph>, Box<dyn Gen + Send>)

source§

fn into_gen_or_graph_enum(self) -> GenOrGraphEnum

source§

fn num_outputs(&self) -> usize

source§

fn num_inputs(&self) -> usize

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.

§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

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

§

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>,

§

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.
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,