diff --git a/modules/gin b/modules/gin index 839e487..c75e324 160000 --- a/modules/gin +++ b/modules/gin @@ -1 +1 @@ -Subproject commit 839e4878ae17cfe48f2be92bf864813f442404f3 +Subproject commit c75e324070450f9d9fd257b9ce2deac5f59770c2 diff --git a/plugin/Source/Panels.h b/plugin/Source/Panels.h index 6e041d5..b6110d9 100644 --- a/plugin/Source/Panels.h +++ b/plugin/Source/Panels.h @@ -331,11 +331,12 @@ public: ReverbBox (WavetableAudioProcessor& proc_) : gin::ParamBox ("Reverb"), proc (proc_) { - addControl (new gin::Knob (proc.reverbParams.damping), 0, 0); - addControl (new gin::Knob (proc.reverbParams.freezeMode), 1, 0); - addControl (new gin::Knob (proc.reverbParams.roomSize), 2, 0); - addControl (new gin::Knob (proc.reverbParams.width), 0.5f, 1.0f); - addControl (new gin::Knob (proc.reverbParams.mix), 1.5f, 1.0f); + addControl (new gin::Knob (proc.reverbParams.size), 0, 0); + addControl (new gin::Knob (proc.reverbParams.decay), 1, 0); + addControl (new gin::Knob (proc.reverbParams.lowpass), 2, 0); + addControl (new gin::Knob (proc.reverbParams.damping), 0, 1); + addControl (new gin::Knob (proc.reverbParams.predelay), 1, 1); + addControl (new gin::Knob (proc.reverbParams.mix), 2, 1); setSize (168, 163); } diff --git a/plugin/Source/PluginProcessor.cpp b/plugin/Source/PluginProcessor.cpp index 14eb75f..ddc1cd4 100644 --- a/plugin/Source/PluginProcessor.cpp +++ b/plugin/Source/PluginProcessor.cpp @@ -299,11 +299,12 @@ void WavetableAudioProcessor::ReverbParams::setup (WavetableAudioProcessor& p) { 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); - freezeMode = p.addExtParam ("rvbFreeze", "Freeze", "", "", {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); - width = p.addExtParam ("rvbWidth", "Width", "", "", {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); + size = p.addExtParam ("rvbSize", "Size", "", "", {0.0f, 1.0f, 0.0f, 2.0f}, 0.0f, 0.0f); + decay = p.addExtParam ("rvbDecay", "Decay", "", "", {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); + 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); } //============================================================================== @@ -438,7 +439,7 @@ void WavetableAudioProcessor::prepareToPlay (double newSampleRate, int newSample chorus.setSampleRate (newSampleRate); distortion.setSampleRate (newSampleRate); stereoDelay.setSampleRate (newSampleRate); - reverb.setSampleRate (newSampleRate); + reverb.setSampleRate (float (newSampleRate)); for (auto& l : modLFOs) l.setSampleRate (newSampleRate); @@ -529,7 +530,7 @@ void WavetableAudioProcessor::applyEffects (juce::AudioSampleBuffer& buffer) // Apply Reverb 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 outputGain.process (buffer); @@ -649,19 +650,13 @@ void WavetableAudioProcessor::updateParams (int newBlockSize) // Update Reverb 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 diff --git a/plugin/Source/PluginProcessor.h b/plugin/Source/PluginProcessor.h index d45bb94..f6a4768 100644 --- a/plugin/Source/PluginProcessor.h +++ b/plugin/Source/PluginProcessor.h @@ -171,7 +171,7 @@ public: { 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); @@ -206,7 +206,7 @@ public: gin::Modulation chorus { 0.5f }; gin::Distortion distortion; gin::StereoDelay stereoDelay { 120.1 }; - juce::Reverb reverb; + gin::PlateReverb reverb; gin::GainProcessor outputGain; gin::AudioFifo fifo { 2, 44100 };