Switch juce::Reverb for gin::PlateReverb

This commit is contained in:
Roland Rabien 2023-08-23 11:40:44 -07:00
commit 28402bfa0e
4 changed files with 23 additions and 27 deletions

@ -1 +1 @@
Subproject commit 839e4878ae17cfe48f2be92bf864813f442404f3 Subproject commit c75e324070450f9d9fd257b9ce2deac5f59770c2

View file

@ -331,11 +331,12 @@ public:
ReverbBox (WavetableAudioProcessor& proc_) ReverbBox (WavetableAudioProcessor& proc_)
: gin::ParamBox ("Reverb"), proc (proc_) : gin::ParamBox ("Reverb"), proc (proc_)
{ {
addControl (new gin::Knob (proc.reverbParams.damping), 0, 0); addControl (new gin::Knob (proc.reverbParams.size), 0, 0);
addControl (new gin::Knob (proc.reverbParams.freezeMode), 1, 0); addControl (new gin::Knob (proc.reverbParams.decay), 1, 0);
addControl (new gin::Knob (proc.reverbParams.roomSize), 2, 0); addControl (new gin::Knob (proc.reverbParams.lowpass), 2, 0);
addControl (new gin::Knob (proc.reverbParams.width), 0.5f, 1.0f); addControl (new gin::Knob (proc.reverbParams.damping), 0, 1);
addControl (new gin::Knob (proc.reverbParams.mix), 1.5f, 1.0f); addControl (new gin::Knob (proc.reverbParams.predelay), 1, 1);
addControl (new gin::Knob (proc.reverbParams.mix), 2, 1);
setSize (168, 163); setSize (168, 163);
} }

View file

@ -299,10 +299,11 @@ void WavetableAudioProcessor::ReverbParams::setup (WavetableAudioProcessor& p)
{ {
enable = p.addIntParam ("rvEnable", "Enable", "", "", { 0.0, 1.0, 1.0, 1.0 }, 0.0, 0.0f); enable = p.addIntParam ("rvEnable", "Enable", "", "", { 0.0, 1.0, 1.0, 1.0 }, 0.0, 0.0f);
damping = p.addExtParam ("rvbDamping", "Damping", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f); size = p.addExtParam ("rvbSize", "Size", "", "", {0.0f, 1.0f, 0.0f, 2.0f}, 0.0f, 0.0f);
freezeMode = p.addExtParam ("rvbFreeze", "Freeze", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f); decay = p.addExtParam ("rvbDecay", "Decay", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f);
roomSize = p.addExtParam ("rvbSize", "Size", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f); lowpass = p.addExtParam ("rvbLowpass", "Lowpass", "", "", {0.0f, 1.0f, 16.0f, 20000.0f}, 0.0f, 0.0f);
width = p.addExtParam ("rvbWidth", "Width", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f); damping = p.addExtParam ("rvbDamping", "Damping", "", "", {0.0f, 1.0f, 16.0f, 20000.0f}, 0.0f, 0.0f);
predelay = p.addExtParam ("rvbPredelay", "Predelay", "", "", {0.0f, 1.0f, 0.0f, 0.1f}, 0.0f, 0.0f);
mix = p.addExtParam ("rvbMix", "Mix", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f); mix = p.addExtParam ("rvbMix", "Mix", "", "", {0.0f, 1.0f, 0.0f, 1.0f}, 0.0f, 0.0f);
} }
@ -438,7 +439,7 @@ void WavetableAudioProcessor::prepareToPlay (double newSampleRate, int newSample
chorus.setSampleRate (newSampleRate); chorus.setSampleRate (newSampleRate);
distortion.setSampleRate (newSampleRate); distortion.setSampleRate (newSampleRate);
stereoDelay.setSampleRate (newSampleRate); stereoDelay.setSampleRate (newSampleRate);
reverb.setSampleRate (newSampleRate); reverb.setSampleRate (float (newSampleRate));
for (auto& l : modLFOs) for (auto& l : modLFOs)
l.setSampleRate (newSampleRate); l.setSampleRate (newSampleRate);
@ -529,7 +530,7 @@ void WavetableAudioProcessor::applyEffects (juce::AudioSampleBuffer& buffer)
// Apply Reverb // Apply Reverb
if (reverbParams.enable->isOn()) if (reverbParams.enable->isOn())
reverb.processStereo (buffer.getWritePointer (0), buffer.getWritePointer (1), buffer.getNumSamples ()); reverb.process (buffer.getWritePointer (0), buffer.getWritePointer (1), buffer.getNumSamples ());
// Output gain // Output gain
outputGain.process (buffer); outputGain.process (buffer);
@ -649,19 +650,13 @@ void WavetableAudioProcessor::updateParams (int newBlockSize)
// Update Reverb // Update Reverb
if (reverbParams.enable->isOn()) if (reverbParams.enable->isOn())
{ {
juce::Reverb::Parameters p; reverb.setSize (modMatrix.getValue (reverbParams.size));
reverb.setDecay (modMatrix.getValue (reverbParams.decay));
reverb.setLowpass (modMatrix.getValue (reverbParams.lowpass));
reverb.setDamping (modMatrix.getValue (reverbParams.damping));
reverb.setPredelay (modMatrix.getValue (reverbParams.predelay));
reverb.setMix (modMatrix.getValue (reverbParams.mix));
auto mix = modMatrix.getValue (reverbParams.mix);
gin::WetDryMix wetDry (mix);
p.damping = modMatrix.getValue (reverbParams.damping);
p.freezeMode = modMatrix.getValue (reverbParams.freezeMode);
p.roomSize = modMatrix.getValue (reverbParams.roomSize);
p.width = modMatrix.getValue (reverbParams.width);
p.dryLevel = wetDry.dryGain;
p.wetLevel = wetDry.wetGain;
reverb.setParameters (p);
} }
// Output gain // Output gain

View file

@ -171,7 +171,7 @@ public:
{ {
ReverbParams() = default; ReverbParams() = default;
gin::Parameter::Ptr enable, damping, freezeMode, roomSize, width, mix; gin::Parameter::Ptr enable, size, decay, lowpass, damping, predelay, mix;
void setup (WavetableAudioProcessor& p); void setup (WavetableAudioProcessor& p);
@ -206,7 +206,7 @@ public:
gin::Modulation chorus { 0.5f }; gin::Modulation chorus { 0.5f };
gin::Distortion distortion; gin::Distortion distortion;
gin::StereoDelay stereoDelay { 120.1 }; gin::StereoDelay stereoDelay { 120.1 };
juce::Reverb reverb; gin::PlateReverb<float, int> reverb;
gin::GainProcessor outputGain; gin::GainProcessor outputGain;
gin::AudioFifo fifo { 2, 44100 }; gin::AudioFifo fifo { 2, 44100 };