diff options
| author | Dominik Kaiser | 2025-10-06 21:14:55 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2025-10-06 21:14:55 +0200 |
| commit | 796c40a0dac68bd2bc9ccd676ad714f2fd3872fc (patch) | |
| tree | 80fe403c5657828a08ce5ff4a8ce4325dcce1a9c /src/DSP/SchroederReverb.cpp | |
| parent | 64c508863cb21929cb545b4978edb5d25fed7380 (diff) | |
| download | SchroederReverb-796c40a0dac68bd2bc9ccd676ad714f2fd3872fc.tar.gz SchroederReverb-796c40a0dac68bd2bc9ccd676ad714f2fd3872fc.zip | |
Add Decay
Diffstat (limited to 'src/DSP/SchroederReverb.cpp')
| -rw-r--r-- | src/DSP/SchroederReverb.cpp | 32 |
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); |
