45 float value() const noexcept {
return value_; }
50 static bool duration_frames_valid(
double seconds,
51 double sample_rate)
noexcept;
52 static std::uint64_t seconds_to_frames(
double seconds,
53 double sample_rate)
noexcept;
56 void advance_from_peak_stage(
bool preserve_current_value)
noexcept;
60 std::uint64_t stage_frame_ = 0;
61 std::uint64_t attack_frames_ = 0;
62 std::uint64_t hold_frames_ = 0;
63 std::uint64_t decay_frames_ = 0;
64 std::uint64_t release_frames_ = 0;
66 float release_start_ = 0.0f;
EnvelopeStage stage() const noexcept
Definition instrument_envelope.hpp:44
bool active() const noexcept
Definition instrument_envelope.hpp:46
bool prepare(const AhdsrEnvelopeConfig &config) noexcept
float value() const noexcept
Definition instrument_envelope.hpp:45
float next_sample() noexcept
void render(std::span< float > destination) noexcept
Definition analyzer_provider.hpp:12
EnvelopeStage
Definition instrument_envelope.hpp:8
@ Decay
Definition instrument_envelope.hpp:12
@ Release
Definition instrument_envelope.hpp:14
@ Hold
Definition instrument_envelope.hpp:11
@ Sustain
Definition instrument_envelope.hpp:13
@ Attack
Definition instrument_envelope.hpp:10
@ Idle
Definition instrument_envelope.hpp:9
Definition instrument_envelope.hpp:17
double hold_seconds
Definition instrument_envelope.hpp:20
double release_seconds
Definition instrument_envelope.hpp:23
double attack_seconds
Definition instrument_envelope.hpp:19
double sample_rate
Definition instrument_envelope.hpp:18
double sustain_level
Definition instrument_envelope.hpp:22
double decay_seconds
Definition instrument_envelope.hpp:21