diff options
Diffstat (limited to 'src/DSP/AllPassFilter.cpp')
| -rw-r--r-- | src/DSP/AllPassFilter.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/DSP/AllPassFilter.cpp b/src/DSP/AllPassFilter.cpp index a051fd4..f250656 100644 --- a/src/DSP/AllPassFilter.cpp +++ b/src/DSP/AllPassFilter.cpp @@ -9,24 +9,20 @@ AllPassFilter::prepare(double sampleRate, int samplesPerBlock, int delayInSample delayBuffer.resize(maxDelaySamples, 0.0f); std::fill(delayBuffer.begin(), delayBuffer.end(), 0.0f); delayBufferWritePos = 0; - this->delayInSamples_ = delayInSamples; + this->delayInSamples = delayInSamples; this->gain = gain; } void -AllPassFilter::process(float* sample) +AllPassFilter::process(float& sample) { int delayBufferLength = (int)delayBuffer.size(); int delayReadPos - = (delayBufferWritePos - delayInSamples_ + delayBufferLength) % delayBufferLength; - + = (delayBufferWritePos - delayInSamples + delayBufferLength) % delayBufferLength; float delayedSample = delayBuffer[delayReadPos]; - float xn = *sample; - - float bufferInput = xn + gain * delayedSample; - float yn = -gain * xn + delayedSample; + + delayBuffer[delayBufferWritePos] = sample + gain * delayedSample; + sample = -gain * sample + delayedSample; - delayBuffer[delayBufferWritePos] = bufferInput; - *sample = yn; delayBufferWritePos = (delayBufferWritePos + 1) % delayBufferLength; } |
