34 : buffer_(buffer), delay_(
delay), write_pos_(0) {}
60 float delayed = buffer_[write_pos_];
62 float output = -feedback_ * x + delayed;
63 float to_buffer = x + feedback_ * output;
65 buffer_[write_pos_] = to_buffer;
68 if (write_pos_ >= delay_) {
87 for (uint32_t i = 0; i < delay_; ++i) buffer_[i] = 0.0f;
93 uint32_t
delay()
const {
return delay_; }
99 float* buffer_ =
nullptr;
101 uint32_t write_pos_ = 0;
102 float feedback_ = 0.5f;
uint32_t write_pos() const
Current write position (for external tap reads)
void clear()
Zero the buffer and reset write position.
float feedback() const
Current feedback coefficient.
uint32_t delay() const
Delay length in samples.
AllpassFilter()=default
Default constructor for array initialization (must call init() before use)
void init(float *buffer, uint32_t delay)
Initialize after default construction.
void set_feedback(float g)
Set feedback coefficient.
float process(float x)
Process a single sample.
AllpassFilter(float *buffer, uint32_t delay)
Construct with caller-provided buffer.
DSP atoms for audio signal processing.