From 6084053d60d2afb4de6a4e1448436fd13ab88493 Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Fri, 26 Sep 2025 11:55:59 +0200 Subject: Implement SchroederReverb framework --- src/DSP/SchroederReverb.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/DSP/SchroederReverb.cpp (limited to 'src/DSP/SchroederReverb.cpp') diff --git a/src/DSP/SchroederReverb.cpp b/src/DSP/SchroederReverb.cpp new file mode 100644 index 0000000..8bd764d --- /dev/null +++ b/src/DSP/SchroederReverb.cpp @@ -0,0 +1,27 @@ +#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); +} + +void SchroederReverb::process(float *sample) { + float in0 = *sample; + float in1 = *sample; + float in2 = *sample; + float in3 = *sample; + + combFilter0.process(&in0); + combFilter1.process(&in1); + combFilter2.process(&in2); + combFilter3.process(&in3); + + float allPassIn = in0 + in1 + in2 + in3; + allPassFilter0.process(&allPassIn); + allPassFilter1.process(&allPassIn); + *sample = allPassIn; +} -- cgit v1.2.3