-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathErosion.h
More file actions
49 lines (38 loc) · 1.4 KB
/
Erosion.h
File metadata and controls
49 lines (38 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#pragma once
#include <JuceHeader.h>
//==============================================================================
/*
*/
class Erosion
{
public:
Erosion(juce::AudioParameterFloat* param1, juce::AudioParameterFloat* param2, juce::AudioParameterFloat* param3) : delayLine(200) {
erosionAmount = param1;
jassert(erosionAmount);
erosionFrequency = param2;
jassert(erosionAmount);
erosionQ = param3;
jassert(erosionAmount);
}
~Erosion() {
};
void processBlock(dsp::AudioBlock<float>& block, double sampleRate);
void processSidechainedBlock(dsp::AudioBlock<float>& block, dsp::AudioBlock<float>& sidechain, double sampleRate);
void prepareToPlay(double sampleRate, int samplesPerBlock);
private:
juce::AudioParameterFloat *erosionAmount = nullptr;
juce::AudioParameterFloat *erosionFrequency = nullptr;
juce::AudioParameterFloat *erosionQ = nullptr;
// stereo delay line
dsp::DelayLine<float, dsp::DelayLineInterpolationTypes::Linear> delayLine;
// iir filter
dsp::ProcessorDuplicator<dsp::IIR::Filter<float>, dsp::IIR::Coefficients<float>> iirFilter;
// noise generator
juce::Random random;
// random noise buffer
AudioBuffer<float> randomBuffer;
dsp::AudioBlock<float> randomBlock;
double oldSampleRate;
double oldSamplesPerBlock;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Erosion)
};