diff options
Diffstat (limited to 'src/DSP')
| -rw-r--r-- | src/DSP/AllPassFilter.cpp | 16 | ||||
| -rw-r--r-- | src/DSP/AllPassFilter.h | 4 | ||||
| -rw-r--r-- | src/DSP/CombFilter.cpp | 13 | ||||
| -rw-r--r-- | src/DSP/CombFilter.h | 4 | ||||
| -rw-r--r-- | src/DSP/SchroederReverb.cpp | 24 | ||||
| -rw-r--r-- | src/DSP/SchroederReverb.h | 2 |
6 files changed, 30 insertions, 33 deletions
diff --git a/src/DSP/AllPassFilter.cpp b/src/DSP/AllPassFilter.cpp index a051fd4..f250656 100644 --- a/src/DSP/AllPassFilter.cpp +++ b/src/DSP/AllPassFilter.cpp @@ -9,24 +9,20 @@ AllPassFilter::prepare(double sampleRate, int samplesPerBlock, int delayInSample delayBuffer.resize(maxDelaySamples, 0.0f); std::fill(delayBuffer.begin(), delayBuffer.end(), 0.0f); delayBufferWritePos = 0; - this->delayInSamples_ = delayInSamples; + this->delayInSamples = delayInSamples; this->gain = gain; } void -AllPassFilter::process(float* sample) +AllPassFilter::process(float& sample) { int delayBufferLength = (int)delayBuffer.size(); int delayReadPos - = (delayBufferWritePos - delayInSamples_ + delayBufferLength) % delayBufferLength; - + = (delayBufferWritePos - delayInSamples + delayBufferLength) % delayBufferLength; float delayedSample = delayBuffer[delayReadPos]; - float xn = *sample; - - float bufferInput = xn + gain * delayedSample; - float yn = -gain * xn + delayedSample; + + delayBuffer[delayBufferWritePos] = sample + gain * delayedSample; + sample = -gain * sample + delayedSample; - delayBuffer[delayBufferWritePos] = bufferInput; - *sample = yn; delayBufferWritePos = (delayBufferWritePos + 1) % delayBufferLength; } diff --git a/src/DSP/AllPassFilter.h b/src/DSP/AllPassFilter.h index b989122..78342fc 100644 --- a/src/DSP/AllPassFilter.h +++ b/src/DSP/AllPassFilter.h @@ -7,11 +7,11 @@ class AllPassFilter public: void prepare(double sampleRate, int samplesPerBlock, int delayInSamples, float gain); void reset(); - void process(float* sample); + void process(float& sample); private: std::vector<float> delayBuffer; int delayBufferWritePos = 0; - int delayInSamples_ = 0; + int delayInSamples = 0; float gain = 0.7f; }; diff --git a/src/DSP/CombFilter.cpp b/src/DSP/CombFilter.cpp index dc4de96..8390675 100644 --- a/src/DSP/CombFilter.cpp +++ b/src/DSP/CombFilter.cpp @@ -9,19 +9,20 @@ CombFilter::prepare(double sampleRate, int samplesPerBlock, int delayInSamples, delayBuffer.resize(maxDelaySamples, 0.0f); std::fill(delayBuffer.begin(), delayBuffer.end(), 0.0f); delayBufferWritePos = 0; - this->delayInSamples_ = delayInSamples; + this->delayInSamples = delayInSamples; this->gain = gain; } void -CombFilter::process(float* sample) +CombFilter::process(float& sample) { int delayBufferLength = (int)delayBuffer.size(); int delayReadPos - = (delayBufferWritePos - delayInSamples_ + delayBufferLength) % delayBufferLength; + = (delayBufferWritePos - delayInSamples + delayBufferLength) % delayBufferLength; float delayedSample = delayBuffer[delayReadPos]; - float yn = *sample + gain * delayedSample; - delayBuffer[delayBufferWritePos] = yn; + + delayBuffer[delayBufferWritePos] = sample + gain * delayedSample; + sample = delayedSample; + delayBufferWritePos = (delayBufferWritePos + 1) % delayBufferLength; - *sample = delayedSample; } diff --git a/src/DSP/CombFilter.h b/src/DSP/CombFilter.h index 4e435cd..6eada89 100644 --- a/src/DSP/CombFilter.h +++ b/src/DSP/CombFilter.h @@ -7,11 +7,11 @@ class CombFilter public: void prepare(double sampleRate, int samplesPerBlock, int delayInSamples, float gain); void reset(); - void process(float* sample); + void process(float& sample); private: std::vector<float> delayBuffer; int delayBufferWritePos = 0; - int delayInSamples_ = 0; + int delayInSamples = 0; float gain = 0.7f; }; diff --git a/src/DSP/SchroederReverb.cpp b/src/DSP/SchroederReverb.cpp index 1b4d3c9..b631765 100644 --- a/src/DSP/SchroederReverb.cpp +++ b/src/DSP/SchroederReverb.cpp @@ -12,23 +12,23 @@ SchroederReverb::prepare(double sampleRate, int samplesPerBlock) } void -SchroederReverb::process(float* sample, float dryWetMix) +SchroederReverb::process(float& sample, float dryWetMix) { juce::ScopedNoDenormals noDenormals; - float in0 = *sample; - float in1 = *sample; - float in2 = *sample; - float in3 = *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); + combFilter0.process(in0); + combFilter1.process(in1); + combFilter2.process(in2); + combFilter3.process(in3); float allPassIn = 0.25f * (in0 + in1 + in2 + in3); - allPassFilter0.process(&allPassIn); - allPassFilter1.process(&allPassIn); + allPassFilter0.process(allPassIn); + allPassFilter1.process(allPassIn); - *sample = dryWetMix * allPassIn + (1.0f - dryWetMix) * *sample; + sample = dryWetMix * allPassIn + (1.0f - dryWetMix) * sample; } diff --git a/src/DSP/SchroederReverb.h b/src/DSP/SchroederReverb.h index 5db3def..c6e5110 100644 --- a/src/DSP/SchroederReverb.h +++ b/src/DSP/SchroederReverb.h @@ -9,7 +9,7 @@ class SchroederReverb public: void prepare(double sampleRate, int samplesPerBlock); void reset(); - void process(float* sample, float dryWetMix); + void process(float& sample, float dryWetMix); private: CombFilter combFilter0, combFilter1, combFilter2, combFilter3; |
