21 NChanDelayLine(
int nInputChans = 2,
int nOutputChans = 2)
22 : mNInChans(nInputChans)
23 , mNOutChans(nOutputChans)
26 void SetDelayTime(
int delayTimeSamples)
28 mDTSamples = delayTimeSamples;
29 mBuffer.Resize(mNInChans * delayTimeSamples);
36 memset(mBuffer.Get(), 0, mNInChans * mDTSamples *
sizeof(T));
39 void ProcessBlock(T** inputs, T** outputs,
int nFrames)
41 T* buffer = mBuffer.Get();
43 for (
auto s = 0 ; s < nFrames; ++s)
45 for (
auto c = 0; c < mNInChans; c++)
49 T input = inputs[c][s];
50 const int offset = c * mDTSamples;
51 outputs[c][s] = buffer[offset + mWriteAddress];
52 buffer[offset + mWriteAddress] = input;
57 mWriteAddress %= mDTSamples;
62 WDL_TypedBuf<T> mBuffer;
63 uint32_t mNInChans, mNOutChans;
64 uint32_t mWriteAddress = 0;
65 uint32_t mDTSamples = 0;