28 : buffer_(buffer), max_delay_(
max_delay), write_pos_(0) {}
32 buffer_[write_pos_] = sample;
34 if (write_pos_ >= max_delay_) {
44 float read(uint32_t delay)
const {
45 if (delay >= max_delay_) delay = max_delay_ - 1;
46 uint32_t pos = (write_pos_ + max_delay_ - delay - 1) % max_delay_;
59 uint32_t int_delay =
static_cast<uint32_t
>(delay);
60 float frac = delay -
static_cast<float>(int_delay);
62 float a =
read(int_delay);
63 float b =
read(int_delay + 1);
65 return a + frac * (b - a);
70 for (uint32_t i = 0; i < max_delay_; ++i) {
float read_fractional(float delay) const
Read with fractional delay (float)
void clear()
Zero all samples in the buffer.
uint32_t max_delay() const
Maximum delay in samples.
void write(float sample)
Write a sample to the delay line.
DelayLine(float *buffer, uint32_t max_delay)
Construct with caller-provided buffer.
float read(uint32_t delay) const
Read a sample at integer delay.
DSP atoms for audio signal processing.