diff options
Diffstat (limited to 'src/DSP/CombFilter.cpp')
| -rw-r--r-- | src/DSP/CombFilter.cpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/DSP/CombFilter.cpp b/src/DSP/CombFilter.cpp index 3d11f2f..dc4de96 100644 --- a/src/DSP/CombFilter.cpp +++ b/src/DSP/CombFilter.cpp @@ -1,22 +1,27 @@ #include "CombFilter.h" -void CombFilter::prepare(double sampleRate, int samplesPerBlock, int delayInSamples, float gain) { - int maxDelayTimeMs = 500; - int maxDelaySamples = static_cast<int>(sampleRate * maxDelayTimeMs / 1000.0); +void +CombFilter::prepare(double sampleRate, int samplesPerBlock, int delayInSamples, float gain) +{ + int maxDelayTimeMs = 500; + int maxDelaySamples = static_cast<int>(sampleRate * maxDelayTimeMs / 1000.0); - delayBuffer.resize(maxDelaySamples, 0.0f); - std::fill(delayBuffer.begin(), delayBuffer.end(), 0.0f); - delayBufferWritePos = 0; - this->delayInSamples_ = delayInSamples; - this->gain = gain; + delayBuffer.resize(maxDelaySamples, 0.0f); + std::fill(delayBuffer.begin(), delayBuffer.end(), 0.0f); + delayBufferWritePos = 0; + this->delayInSamples_ = delayInSamples; + this->gain = gain; } -void CombFilter::process(float* sample) { - int delayBufferLength = (int)delayBuffer.size(); - int delayReadPos = (delayBufferWritePos - delayInSamples_ + delayBufferLength) % delayBufferLength; - float delayedSample = delayBuffer[delayReadPos]; - float yn = *sample + gain * delayedSample; - delayBuffer[delayBufferWritePos] = yn; - delayBufferWritePos = (delayBufferWritePos + 1) % delayBufferLength; - *sample = delayedSample; +void +CombFilter::process(float* sample) +{ + int delayBufferLength = (int)delayBuffer.size(); + int delayReadPos + = (delayBufferWritePos - delayInSamples_ + delayBufferLength) % delayBufferLength; + float delayedSample = delayBuffer[delayReadPos]; + float yn = *sample + gain * delayedSample; + delayBuffer[delayBufferWritePos] = yn; + delayBufferWritePos = (delayBufferWritePos + 1) % delayBufferLength; + *sample = delayedSample; } |
