34 void set_rate(uint32_t rate) { rise_rate_ = rate; fall_rate_ = rate; }
42 int32_t delta = target - state_;
46 if (
static_cast<uint32_t
>(delta) > rise_rate_) {
47 state_ +=
static_cast<int32_t
>(rise_rate_);
51 }
else if (delta < 0) {
53 uint32_t abs_delta =
static_cast<uint32_t
>(-delta);
54 if (abs_delta > fall_rate_) {
55 state_ -=
static_cast<int32_t
>(fall_rate_);
74 uint32_t rise_rate_ = 0;
75 uint32_t fall_rate_ = 0;
void set_fall_rate(uint32_t rate)
Set maximum decrease per sample.
void reset()
Reset to zero.
Sample process(Sample target)
Process one sample toward target with rate limiting.
void set_rate(uint32_t rate)
Set both rise and fall rates to the same value.
Sample value() const
Current output value.
void set_rise_rate(uint32_t rate)
Set maximum increase per sample.
void reset(Sample initial)
Reset to a specific value.
DSP atoms for audio signal processing.