aboutsummaryrefslogtreecommitdiff
path: root/src/DSP/SchroederReverb.cpp
diff options
context:
space:
mode:
authorDominik Kaiser2025-10-06 21:14:55 +0200
committerDominik Kaiser2025-10-06 21:14:55 +0200
commit796c40a0dac68bd2bc9ccd676ad714f2fd3872fc (patch)
tree80fe403c5657828a08ce5ff4a8ce4325dcce1a9c /src/DSP/SchroederReverb.cpp
parent64c508863cb21929cb545b4978edb5d25fed7380 (diff)
downloadSchroederReverb-796c40a0dac68bd2bc9ccd676ad714f2fd3872fc.tar.gz
SchroederReverb-796c40a0dac68bd2bc9ccd676ad714f2fd3872fc.zip
Add Decay
Diffstat (limited to 'src/DSP/SchroederReverb.cpp')
-rw-r--r--src/DSP/SchroederReverb.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/DSP/SchroederReverb.cpp b/src/DSP/SchroederReverb.cpp
index 97406d2..1b84712 100644
--- a/src/DSP/SchroederReverb.cpp
+++ b/src/DSP/SchroederReverb.cpp
@@ -3,30 +3,34 @@
void
SchroederReverb::prepare(double sampleRate, int samplesPerBlock)
{
- combFilter0.prepare(sampleRate, samplesPerBlock, 1557, 0.742f);
- combFilter1.prepare(sampleRate, samplesPerBlock, 1613, 0.733f);
- combFilter2.prepare(sampleRate, samplesPerBlock, 1499, 0.715f);
- combFilter3.prepare(sampleRate, samplesPerBlock, 1427, 0.697f);
+ preDelay.prepare(sampleRate, samplesPerBlock);
+ combFilter0.prepare(sampleRate, samplesPerBlock, 1557);
+ combFilter1.prepare(sampleRate, samplesPerBlock, 1613);
+ combFilter2.prepare(sampleRate, samplesPerBlock, 1499);
+ combFilter3.prepare(sampleRate, samplesPerBlock, 1427);
allPassFilter0.prepare(sampleRate, samplesPerBlock, 347, 0.7f);
allPassFilter1.prepare(sampleRate, samplesPerBlock, 1137, 0.7f);
}
void
-SchroederReverb::process(float& sample, float dryWetMix)
+SchroederReverb::process(float& sample, float dryWetMix, float decayFactor)
{
juce::ScopedNoDenormals noDenormals;
- float in0 = sample;
- float in1 = sample;
- float in2 = sample;
- float in3 = sample;
+ float in = sample;
- combFilter0.process(in0);
- combFilter1.process(in1);
- combFilter2.process(in2);
- combFilter3.process(in3);
- float allPassIn = 0.25f * (in0 + in1 + in2 + in3);
+ float cf0in = in;
+ float cf1in = in;
+ float cf2in = in;
+ float cf3in = in;
+
+ combFilter0.process(cf0in, decayFactor);
+ combFilter1.process(cf1in, decayFactor);
+ combFilter2.process(cf2in, decayFactor);
+ combFilter3.process(cf3in, decayFactor);
+
+ float allPassIn = 0.25f * (cf0in + cf1in + cf2in + cf3in);
allPassFilter0.process(allPassIn);
allPassFilter1.process(allPassIn);