diff options
Diffstat (limited to 'src/DSP/CombFilter.cpp')
| -rw-r--r-- | src/DSP/CombFilter.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/DSP/CombFilter.cpp b/src/DSP/CombFilter.cpp index f7eff21..d572d47 100644 --- a/src/DSP/CombFilter.cpp +++ b/src/DSP/CombFilter.cpp @@ -1,20 +1,22 @@ #include "CombFilter.h" -void CombFilter::prepare(double sampleRate, int samplesPerBlock) { +void CombFilter::prepare(double sampleRate, int samplesPerBlock, int delayInSamples, float gain) { int maxDelayTimeMs = 100; int maxDelaySamples = static_cast<int>(sampleRate * maxDelayTimeMs / 1000.0); delayBuffer.resize(maxDelaySamples, 0.0f); - delayInSamples = static_cast<int>(sampleRate * 0.02); + //delayInSamples = static_cast<int>(sampleRate * delayInSeconds); delayBufferWritePos = 0; + this->delayInSamples_ = delayInSamples; + this->gain = gain; } void CombFilter::process(float* sample) { int delayBufferLength = (int)delayBuffer.size(); - int delayReadPos = (delayBufferWritePos - delayInSamples + delayBufferLength) % delayBufferLength; + int delayReadPos = (delayBufferWritePos - delayInSamples_ + delayBufferLength) % delayBufferLength; float delayedSample = delayBuffer[delayReadPos]; - float out = *sample + gain * delayedSample; - delayBuffer[delayBufferWritePos] = *sample; - *sample = out; + float yn = *sample + gain * delayedSample; + delayBuffer[delayBufferWritePos] = yn; + *sample = yn; delayBufferWritePos = (delayBufferWritePos + 1) % delayBufferLength; } |
