More advanced version
This commit is contained in:
@@ -15,16 +15,105 @@ NeuralSynthAudioProcessor::NeuralSynthAudioProcessor() : parameters(*this, nullp
|
||||
, audioEngine(sp)
|
||||
{
|
||||
parameters.addParameterListener("waveform", this);
|
||||
//sp.waveform = parameters.getRawParameterValue("waveform");
|
||||
|
||||
parameters.addParameterListener("attack", this);
|
||||
parameters.addParameterListener("decay", this);
|
||||
parameters.addParameterListener("sustain", this);
|
||||
parameters.addParameterListener("release", this);
|
||||
// === Chorus ===
|
||||
parameters.addParameterListener("chorus_rate", this);
|
||||
parameters.addParameterListener("chorus_depth", this);
|
||||
parameters.addParameterListener("chorus_centre", this);
|
||||
parameters.addParameterListener("chorus_feedback", this);
|
||||
parameters.addParameterListener("chorus_mix", this);
|
||||
|
||||
sp.attack = parameters.getRawParameterValue("attack");
|
||||
sp.decay = parameters.getRawParameterValue("decay");
|
||||
sp.sustain = parameters.getRawParameterValue("sustain");
|
||||
sp.release = parameters.getRawParameterValue("release");
|
||||
sp.chorusRate = parameters.getRawParameterValue("chorus_rate");
|
||||
sp.chorusDepth = parameters.getRawParameterValue("chorus_depth");
|
||||
sp.chorusCentre = parameters.getRawParameterValue("chorus_centre");
|
||||
sp.chorusFeedback = parameters.getRawParameterValue("chorus_feedback");
|
||||
sp.chorusMix = parameters.getRawParameterValue("chorus_mix");
|
||||
|
||||
// === Delay ===
|
||||
parameters.addParameterListener("delay_delay", this);
|
||||
sp.delayTime = parameters.getRawParameterValue("delay_delay");
|
||||
|
||||
// === Reverb ===
|
||||
parameters.addParameterListener("reverb_roomSize", this);
|
||||
parameters.addParameterListener("reverb_damping", this);
|
||||
parameters.addParameterListener("reverb_wetLevel", this);
|
||||
parameters.addParameterListener("reverb_dryLevel", this);
|
||||
parameters.addParameterListener("reverb_width", this);
|
||||
parameters.addParameterListener("reverb_freezeMode", this);
|
||||
|
||||
sp.reverbRoomSize = parameters.getRawParameterValue("reverb_roomSize");
|
||||
sp.reverbDamping = parameters.getRawParameterValue("reverb_damping");
|
||||
sp.reverbWetLevel = parameters.getRawParameterValue("reverb_wetLevel");
|
||||
sp.reverbDryLevel = parameters.getRawParameterValue("reverb_dryLevel");
|
||||
sp.reverbWidth = parameters.getRawParameterValue("reverb_width");
|
||||
sp.reverbFreezeMode = parameters.getRawParameterValue("reverb_freezeMode");
|
||||
|
||||
// === ADSR ===
|
||||
parameters.addParameterListener("adsr_attack", this);
|
||||
parameters.addParameterListener("adsr_decay", this);
|
||||
parameters.addParameterListener("adsr_sustain", this);
|
||||
parameters.addParameterListener("adsr_release", this);
|
||||
|
||||
sp.adsrAttack = parameters.getRawParameterValue("adsr_attack");
|
||||
sp.adsrDecay = parameters.getRawParameterValue("adsr_decay");
|
||||
sp.adsrSustain = parameters.getRawParameterValue("adsr_sustain");
|
||||
sp.adsrRelease = parameters.getRawParameterValue("adsr_release");
|
||||
|
||||
// === Flanger ===
|
||||
parameters.addParameterListener("flanger_rate", this);
|
||||
parameters.addParameterListener("flanger_depth", this);
|
||||
parameters.addParameterListener("flanger_feedback", this);
|
||||
parameters.addParameterListener("flanger_dryMix", this);
|
||||
parameters.addParameterListener("flanger_phase", this);
|
||||
parameters.addParameterListener("flanger_delay", this);
|
||||
|
||||
sp.flangerRate = parameters.getRawParameterValue("flanger_rate");
|
||||
sp.flangerDepth = parameters.getRawParameterValue("flanger_depth");
|
||||
sp.flangerFeedback = parameters.getRawParameterValue("flanger_feedback");
|
||||
sp.flangerDryMix = parameters.getRawParameterValue("flanger_dryMix");
|
||||
sp.flangerPhase = parameters.getRawParameterValue("flanger_phase");
|
||||
sp.flangerDelay = parameters.getRawParameterValue("flanger_delay");
|
||||
|
||||
// === Filter ===
|
||||
parameters.addParameterListener("filter_cutoff", this);
|
||||
parameters.addParameterListener("filter_resonance", this);
|
||||
parameters.addParameterListener("filter_type", this);
|
||||
parameters.addParameterListener("filter_drive", this);
|
||||
parameters.addParameterListener("filter_mod", this);
|
||||
parameters.addParameterListener("filter_key", this);
|
||||
|
||||
sp.filterCutoff = parameters.getRawParameterValue("filter_cutoff");
|
||||
sp.filterResonance = parameters.getRawParameterValue("filter_resonance");
|
||||
sp.filterType = parameters.getRawParameterValue("filter_type");
|
||||
sp.filterDrive = parameters.getRawParameterValue("filter_drive");
|
||||
sp.filterMod = parameters.getRawParameterValue("filter_mod");
|
||||
sp.filterKey = parameters.getRawParameterValue("filter_key");
|
||||
|
||||
// === Distortion ===
|
||||
parameters.addParameterListener("distortion_drive", this);
|
||||
parameters.addParameterListener("distortion_mix", this);
|
||||
parameters.addParameterListener("distortion_bias", this);
|
||||
parameters.addParameterListener("distortion_tone", this);
|
||||
parameters.addParameterListener("distortion_shape", this);
|
||||
|
||||
sp.distortionDrive = parameters.getRawParameterValue("distortion_drive");
|
||||
sp.distortionMix = parameters.getRawParameterValue("distortion_mix");
|
||||
sp.distortionBias = parameters.getRawParameterValue("distortion_bias");
|
||||
sp.distortionTone = parameters.getRawParameterValue("distortion_tone");
|
||||
sp.distortionShape = parameters.getRawParameterValue("distortion_shape");
|
||||
|
||||
|
||||
|
||||
parameters.addParameterListener("master", this);
|
||||
parameters.addParameterListener("lowEQ", this);
|
||||
parameters.addParameterListener("midEQ", this);
|
||||
parameters.addParameterListener("highEQ", this);
|
||||
|
||||
sp.masterDbls = parameters.getRawParameterValue("master");
|
||||
sp.lowGainDbls = parameters.getRawParameterValue("lowEQ");
|
||||
sp.midGainDbls = parameters.getRawParameterValue("midEQ");
|
||||
sp.highGainDbls = parameters.getRawParameterValue("highEQ");
|
||||
}
|
||||
|
||||
NeuralSynthAudioProcessor::~NeuralSynthAudioProcessor()
|
||||
@@ -179,6 +268,16 @@ juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
|
||||
return new NeuralSynthAudioProcessor();
|
||||
}
|
||||
|
||||
void NeuralSynthAudioProcessor::buildParams(std::vector<std::unique_ptr<juce::RangedAudioParameter>> ¶ms, const std::string& paramGroup) {
|
||||
const auto& paramGroupSettings = PARAM_SETTINGS.at(paramGroup);
|
||||
|
||||
for (const auto& [name, paramSettings] : paramGroupSettings) {
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>(paramGroup + "_" + name, paramSettings.label,
|
||||
juce::NormalisableRange<float>(paramSettings.min, paramSettings.max, paramSettings.interval),
|
||||
paramSettings.defValue));
|
||||
}
|
||||
}
|
||||
|
||||
juce::AudioProcessorValueTreeState::ParameterLayout NeuralSynthAudioProcessor::createParameterLayout()
|
||||
{
|
||||
std::vector<std::unique_ptr<juce::RangedAudioParameter>> params;
|
||||
@@ -187,15 +286,23 @@ juce::AudioProcessorValueTreeState::ParameterLayout NeuralSynthAudioProcessor::c
|
||||
"waveform", "Waveform",
|
||||
juce::StringArray{ "Sine", "Saw", "Square", "Triangle" }, 0));
|
||||
|
||||
// Start/end/interval
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("attack", "Attack",
|
||||
juce::NormalisableRange<float>(0.0f, 1.0f, 0.01f), 0.1f));
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("decay", "Decay",
|
||||
juce::NormalisableRange<float>(0.0f, 1.0f, 0.01f), 0.5f));
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("sustain", "Sustain",
|
||||
juce::NormalisableRange<float>(0.0f, 1.0f, 0.01f), 0.8f));
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("release", "Release",
|
||||
juce::NormalisableRange<float>(0.01f, 1.0f, 0.01f), 1.0f));
|
||||
buildParams(params, "adsr");
|
||||
buildParams(params, "chorus");
|
||||
buildParams(params, "delay");
|
||||
buildParams(params, "reverb");
|
||||
buildParams(params, "flanger");
|
||||
buildParams(params, "distortion");
|
||||
buildParams(params, "filter");
|
||||
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("master", "Master",
|
||||
juce::NormalisableRange<float>(-24.0f, 24.0f, 0.1f), 0.1f));
|
||||
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("lowEQ", "Low Gain",
|
||||
juce::NormalisableRange<float>(-24.0f, 24.0f, 0.1f), 0.5f));
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("midEQ", "Mid EQ",
|
||||
juce::NormalisableRange<float>(-24.0f, 24.0f, 0.1f), 0.8f));
|
||||
params.push_back(std::make_unique<juce::AudioParameterFloat>("highEQ", "High EQ",
|
||||
juce::NormalisableRange<float>(-24.0f, 24.0f, 0.1f), 1.0f));
|
||||
|
||||
return { params.begin(), params.end() };
|
||||
}
|
||||
Reference in New Issue
Block a user