#include "PluginParameters.h" namespace FDNReverb { juce::AudioProcessorValueTreeState::ParameterLayout ParameterHelper::createLayout() { std::vector> params; auto addFloat = [&](const juce::String& id, const juce::String& name, float min, float max, float def, float skew = 1.0f, const juce::String& label = "") { params.push_back(std::make_unique( id, name, juce::NormalisableRange(min, max, 0.01f, skew), def, juce::AudioParameterFloatAttributes().withLabel(label))); }; params.push_back(std::make_unique( ParamID::Algorithm, "Algorithm", juce::StringArray{ "ROOM1","ROOM2","HALL1","HALL2","PLATE","SPRING","GOLDFOIL" }, 0)); addFloat(ParamID::PreDelay, "Pre-Delay", 0.0f, 500.0f, 10.0f, 1.0f, "ms"); addFloat(ParamID::RoomSize, "Room Size", 0.3f, 2.0f, 1.0f); addFloat(ParamID::DecayTime, "Decay Time", 0.1f, 20.0f, 1.5f, 0.35f, "s"); addFloat(ParamID::HFDamping, "HF Damping", 0.0f, 1.0f, 0.0f); addFloat(ParamID::LFAbsorption, "LF Absorption", 0.0f, 1.0f, 0.0f); addFloat(ParamID::Diffusion, "Diffusion", 0.0f, 1.0f, 0.7f); addFloat(ParamID::ModAmount, "Mod Amount", 0.0f, 1.0f, 0.25f); addFloat(ParamID::ModRate, "Mod Rate", 0.05f, 2.0f, 0.5f, 1.0f, "Hz"); addFloat(ParamID::StereoWidth, "Stereo Width", 0.0f, 1.0f, 0.8f); addFloat(ParamID::ERLevel, "ER Level", 0.0f, 1.0f, 0.6f); addFloat(ParamID::Saturation, "Saturation", 0.0f, 1.0f, 0.0f); params.push_back(std::make_unique( ParamID::SatType, "Sat Type", juce::StringArray{ "Warm","Tape","Tube","Hard" }, 0, juce::AudioParameterChoiceAttributes().withAutomatable(false))); // * Step B: Wet -6dB / Dry 0dB change // internal offset -3dB (PluginProcessor.cpp) // effective Wet displayed value -3dB . // Wet=-6dB -> effective -9dB, Wet=0dB -> effective -3dB addFloat(ParamID::WetLevel, "Wet", -60.0f, 0.0f, -4.0f, 1.0f, "dB"); addFloat(ParamID::DryLevel, "Dry", -60.0f, 0.0f, 0.0f, 1.0f, "dB"); addFloat(ParamID::DuckAmount, "Ducking", 0.0f, 20.0f, 0.0f, 1.0f, "dB"); addFloat(ParamID::DuckAttack, "Duck Attack", 0.5f, 100.0f, 10.0f, 0.4f, "ms"); addFloat(ParamID::DuckRelease, "Duck Release", 10.0f, 2000.0f, 200.0f, 0.4f, "ms"); addFloat(ParamID::DuckThresh, "Duck Thresh", -60.0f, 0.0f, -20.0f, 1.0f, "dB"); params.push_back(std::make_unique( ParamID::ERSolo, "ER Solo", false, juce::AudioParameterBoolAttributes().withAutomatable(false))); params.push_back(std::make_unique( ParamID::ProMode, "Pro Mode", false, juce::AudioParameterBoolAttributes().withAutomatable(false))); addFloat(ParamID::TiltLow, "Tilt Low", 0.5f, 2.0f, 1.0f); addFloat(ParamID::TiltMid, "Tilt Mid", 0.5f, 2.0f, 1.0f); addFloat(ParamID::TiltHigh, "Tilt High", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand0, "RT 31Hz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand1, "RT 62Hz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand2, "RT 125Hz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand3, "RT 250Hz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand4, "RT 500Hz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand5, "RT 1kHz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand6, "RT 2kHz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand7, "RT 4kHz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand8, "RT 8kHz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::RTBand9, "RT 16kHz", 0.5f, 2.0f, 1.0f); addFloat(ParamID::LoCut, "Lo Cut", 20.0f, 500.0f, 20.0f, 0.3f, "Hz"); addFloat(ParamID::HiCut, "Hi Cut", 1000.0f, 20000.0f, 20000.0f, 0.3f, "Hz"); return { params.begin(), params.end() }; } } // namespace FDNReverb