aboutsummaryrefslogtreecommitdiff
path: root/src/DSP
diff options
context:
space:
mode:
Diffstat (limited to 'src/DSP')
-rw-r--r--src/DSP/AllPassFilter.cpp16
-rw-r--r--src/DSP/AllPassFilter.h4
-rw-r--r--src/DSP/CombFilter.cpp13
-rw-r--r--src/DSP/CombFilter.h4
-rw-r--r--src/DSP/SchroederReverb.cpp24
-rw-r--r--src/DSP/SchroederReverb.h2
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;