#ifndef __STEREODELAYLINE_H__ #define __STEREODELAYLINE_H__ #include #include "frame.h" template class StereoDelayLine { private: frame samples[CAPACITY] = {{0, 0}}; size_t cursor; public: size_t size; StereoDelayLine(size_t size = CAPACITY) : size(size) {} inline frame tick() { ++cursor; if(cursor == size) { cursor = 0; } return samples[cursor]; } inline frame tick(frame in) { samples[cursor++] = in; if(cursor == size) { cursor = 0; } return samples[cursor]; } inline frame tap(size_t n) { size_t index = cursor + n; if(index < size) { return samples[index]; } else { return samples[index - size]; } } }; #endif