10 releases (4 breaking)
0.5.0 | May 22, 2023 |
---|---|
0.4.0 | Mar 22, 2023 |
0.3.0 | Oct 22, 2022 |
0.1.0-alpha.6 | May 25, 2022 |
0.1.0-alpha.3 | Mar 25, 2022 |
#1196 in Audio
Used in audio-processor-metronome
125KB
583 lines
augmented-adsr-envelope
Implementation of an ADSR envelope.
Basic usage
use std::time::Duration;
use augmented_adsr_envelope::Envelope;
// Create an exponential envelope.
// The envelope configuration uses atomics, so it doesn't need
// to be an immutable reference.
let envelope = Envelope::exp();
// Set settings
envelope.set_sample_rate(1000.0);
envelope.set_attack(Duration::from_millis(200));
// Trigger the envelope
envelope.note_on();
for i in 0..10000 {
// Tick the envelope by 1 sample
envelope.tick();
// Get the current volume
let _volume = envelope.volume();
}
// Trigger the release stage
envelope.note_off();
Plots
Envelope::default();
| Attack | 0.3 | | Decay | 0.3 | | Sustain | 0.8 | | Release | 0.3 |
Envelope::exp();
| Attack | 0.3 | | Decay | 0.3 | | Sustain | 0.8 | | Release | 0.3 |
License: MIT
Dependencies
~2MB
~45K SLoC