augmented-adsr-envelope

Crates.ioaugmented-adsr-envelope
lib.rsaugmented-adsr-envelope
version0.5.0
sourcesrc
created_at2022-01-16 22:57:10.016988
updated_at2023-05-22 00:26:15.078527
descriptionADSR envelope implementation
homepagehttps://github.com/yamadapc/augmented-audio
repositoryhttps://github.com/yamadapc/augmented-audio
max_upload_size
id515181
size172,741
Pedro Tacla Yamada (yamadapc)

documentation

README

augmented-adsr-envelope

crates.io docs.rs


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

Commit count: 3017

cargo fmt