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