aboutsummaryrefslogtreecommitdiff
path: root/src/DSP/SchroederReverb.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/SchroederReverb.cpp
parent6084053d60d2afb4de6a4e1448436fd13ab88493 (diff)
downloadSchroederReverb-960adde7e467d2a0c0ee541ed4ee2ec2219221e4.tar.gz
SchroederReverb-960adde7e467d2a0c0ee541ed4ee2ec2219221e4.zip
Tune filters and get reverb to work
Diffstat (limited to 'src/DSP/SchroederReverb.cpp')
-rw-r--r--src/DSP/SchroederReverb.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/DSP/SchroederReverb.cpp b/src/DSP/SchroederReverb.cpp
index 8bd764d..785e84c 100644
--- a/src/DSP/SchroederReverb.cpp
+++ b/src/DSP/SchroederReverb.cpp
@@ -1,15 +1,17 @@
#include "SchroederReverb.h"
void SchroederReverb::prepare(double sampleRate, int samplesPerBlock) {
- combFilter0.prepare(sampleRate, samplesPerBlock);
- combFilter1.prepare(sampleRate, samplesPerBlock);
- combFilter2.prepare(sampleRate, samplesPerBlock);
- combFilter3.prepare(sampleRate, samplesPerBlock);
- allPassFilter0.prepare(sampleRate, samplesPerBlock);
- allPassFilter1.prepare(sampleRate, samplesPerBlock);
+ combFilter0.prepare(sampleRate, samplesPerBlock, 4799, 0.742f);
+ combFilter1.prepare(sampleRate, samplesPerBlock, 4999, 0.733f);
+ combFilter2.prepare(sampleRate, samplesPerBlock, 5399, 0.715f);
+ combFilter3.prepare(sampleRate, samplesPerBlock, 5801, 0.697f);
+ allPassFilter0.prepare(sampleRate, samplesPerBlock, 1051, 0.7f);
+ allPassFilter1.prepare(sampleRate, samplesPerBlock, 337, 0.7f);
}
void SchroederReverb::process(float *sample) {
+ juce::ScopedNoDenormals noDenormals;
+
float in0 = *sample;
float in1 = *sample;
float in2 = *sample;
@@ -20,8 +22,9 @@ void SchroederReverb::process(float *sample) {
combFilter2.process(&in2);
combFilter3.process(&in3);
- float allPassIn = in0 + in1 + in2 + in3;
+ float allPassIn = 0.25f * (in0 + in1 + in2 + in3);
allPassFilter0.process(&allPassIn);
allPassFilter1.process(&allPassIn);
+
*sample = allPassIn;
}