aboutsummaryrefslogtreecommitdiff
path: root/src/DSP/CombFilter.cpp
diff options
context:
space:
mode:
authorDominik Kaiser2025-09-28 13:58:50 +0200
committerDominik Kaiser2025-09-28 13:58:50 +0200
commit960adde7e467d2a0c0ee541ed4ee2ec2219221e4 (patch)
tree460d428c3cdee2a9e15083ef84857761f788c703 /src/DSP/CombFilter.cpp
parent6084053d60d2afb4de6a4e1448436fd13ab88493 (diff)
downloadSchroederReverb-960adde7e467d2a0c0ee541ed4ee2ec2219221e4.tar.gz
SchroederReverb-960adde7e467d2a0c0ee541ed4ee2ec2219221e4.zip
Tune filters and get reverb to work
Diffstat (limited to 'src/DSP/CombFilter.cpp')
-rw-r--r--src/DSP/CombFilter.cpp14
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;
}