Struct synfx_dsp::EnvRetrigAD
source · [−]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
sourceimpl EnvRetrigAD
impl EnvRetrigAD
sourcepub fn set_sample_rate(&mut self, srate: f32)
pub fn set_sample_rate(&mut self, srate: f32)
Set the sample rate of the envelope. Unit in samples per second.
sourcepub fn tick(
&mut self,
trigger: f32,
attack_ms: f32,
attack_shape: f32,
decay_ms: f32,
decay_shape: f32
) -> (f32, f32)
pub fn tick(
&mut self,
trigger: f32,
attack_ms: f32,
attack_shape: f32,
decay_ms: f32,
decay_shape: f32
) -> (f32, f32)
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
sourceimpl Clone for EnvRetrigAD
impl Clone for EnvRetrigAD
sourcefn clone(&self) -> EnvRetrigAD
fn clone(&self) -> EnvRetrigAD
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations
impl RefUnwindSafe for EnvRetrigAD
impl Send for EnvRetrigAD
impl Sync for EnvRetrigAD
impl Unpin for EnvRetrigAD
impl UnwindSafe for EnvRetrigAD
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more