30template <
typename SampleType,
typename InterpolationType>
36template <
typename SampleType,
typename InterpolationType>
39 jassert (maximumDelayInSamples >= 0);
43 setMaximumDelayInSamples (maximumDelayInSamples);
47template <
typename SampleType,
typename InterpolationType>
50 auto upperLimit = (SampleType) getMaximumDelayInSamples();
51 jassert (isPositiveAndNotGreaterThan (newDelayInSamples, upperLimit));
53 delay = jlimit ((SampleType) 0, upperLimit, newDelayInSamples);
54 delayInt =
static_cast<int> (std::floor (delay));
55 delayFrac = delay - (SampleType) delayInt;
57 updateInternalVariables();
60template <
typename SampleType,
typename InterpolationType>
67template <
typename SampleType,
typename InterpolationType>
72 bufferData.setSize ((
int) spec.
numChannels, totalSize,
false,
false,
true);
83template <
typename SampleType,
typename InterpolationType>
86 jassert (maxDelayInSamples >= 0);
87 totalSize = jmax (4, maxDelayInSamples + 2);
88 bufferData.setSize ((
int) bufferData.getNumChannels(), totalSize,
false,
false,
true);
92template <
typename SampleType,
typename InterpolationType>
95 for (
auto vec : { &writePos, &readPos })
96 std::fill (vec->begin(), vec->end(), 0);
98 std::fill (v.begin(), v.end(),
static_cast<SampleType
> (0));
104template <
typename SampleType,
typename InterpolationType>
107 bufferData.setSample (channel, writePos[(
size_t) channel], sample);
108 writePos[(size_t) channel] = (writePos[(
size_t) channel] + totalSize - 1) % totalSize;
111template <
typename SampleType,
typename InterpolationType>
114 if (delayInSamples >= 0)
115 setDelay (delayInSamples);
117 auto result = interpolateSample (channel);
119 if (updateReadPointer)
120 readPos[(size_t) channel] = (readPos[(
size_t) channel] + totalSize - 1) % totalSize;
void prepare(const ProcessSpec &spec)
void setDelay(SampleType newDelayInSamples)
SampleType popSample(int channel, SampleType delayInSamples=-1, bool updateReadPointer=true)
void setMaximumDelayInSamples(int maxDelayInSamples)
SampleType getDelay() const
void pushSample(int channel, SampleType sample)