#include "InterpolatedCombFilter.h" template InterpolatedCombFilter::InterpolatedCombFilter() { } template InterpolatedCombFilter::~InterpolatedCombFilter() { } template void InterpolatedCombFilter::prepare(SampleType sampleRate) { this->sampleRate = sampleRate; circularBuffer.prepare(sampleRate); circularBuffer.setSize(2*sampleRate); circularBuffer.setDelayInSamples(delaySamples); } template void InterpolatedCombFilter::setDelayMs(SampleType delayInMs) { this->delaySamples = (delayInMs / 1000) * sampleRate; circularBuffer.setDelayInSamples(this->delaySamples); } template void InterpolatedCombFilter::setDelaySamples(SampleType delayInSamples) { this->delaySamples = delayInSamples; circularBuffer.setDelayInSamples(delaySamples); } template void InterpolatedCombFilter::setFeedback(SampleType newFeedback) { newFeedback >= FEEDBACK_LIMIT ? newFeedback = FEEDBACK_LIMIT : newFeedback = newFeedback; //newFeedback <= 0.0 ? newFeedback = 0.0 : newFeedback = newFeedback; this->feedback = newFeedback; } template SampleType InterpolatedCombFilter::processSample(SampleType input) { SampleType in = input + feedback*lastOutput; SampleType out = circularBuffer.popSample(); circularBuffer.pushSample(in); lastOutput = out; return out; } template void InterpolatedCombFilter::process(SampleType* channelData, int startSample, int endSample) { for(int sample = startSample; sample < endSample; ++sample) channelData[sample] = processSample(channelData[sample]); } template class InterpolatedCombFilter; template class InterpolatedCombFilter;