pub struct EnvRetrigAD { /* private fields */ }
Expand description

A retriggerable AD (Attack & Decay) envelope with modifyable shapes for the attack and decay.

For a more elaborate example see EnvRetrigAD::tick.

 use synfx_dsp::EnvRetrigAD;

 let mut env = EnvRetrigAD::new();
 // ..
 env.set_sample_rate(44100.0);
 // ..
 let attack_ms = 3.0;
 let decay_ms  = 10.0;
 let attack_shape = 0.5; // 0.5 == linear
 let decay_shape = 0.5; // 0.5 == linear
 let trigger_signal = 0.0; // Raise to 1.0 for trigger.

 let (value, retrig) = env.tick(trigger_signal, attack_ms, attack_shape, decay_ms, decay_shape);
 // ..

Note: The code for this envelope is used and tested by the Ad node of HexoDSP.

Implementations

Creates a new instance of the envelope.

Set the sample rate of the envelope. Unit in samples per second.

Reset the internal state of the envelope.

Computes the next tick for this envelope. The inputs can be changed on each tick.

  • trigger - Trigger input signal, will trigger like crate::Trigger.
  • attack_ms - The milliseconds for the attack stage.
  • attack_shape - The shape for the attack stage. Value in the range [[0.0, 1.0]]. 0.5 is linear. See also crate::sqrt4_to_pow4.
  • decay_ms - The milliseconds for the decay stage.
  • decay_shape - The shape for the decay stage. Value in the range [[0.0, 1.0]]. 0.5 is linear. See also crate::sqrt4_to_pow4.

Returned are two values:

  • First the envelope value
  • Second a trigger signal at the end of the envelope.
 use synfx_dsp::EnvRetrigAD;
 let mut env = EnvRetrigAD::new();
 env.set_sample_rate(10.0); // Yes, 10 samples per second for testing here :-)

 for _ in 0..2 {
     env.tick(1.0, 500.0, 0.5, 500.0, 0.5);
 }

 let (value, _retrig) = env.tick(1.0, 500.0, 0.5, 500.0, 0.5);
 assert!((value - 0.6).abs() < 0.0001);

 for _ in 0..5 {
     env.tick(1.0, 500.0, 0.5, 500.0, 0.5);
 }

 let (value, _retrig) = env.tick(1.0, 500.0, 0.5, 500.0, 0.5);
 assert!((value - 0.2).abs() < 0.0001);

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.