NeuralAmpModelerPlugin

Plugin for Neural Amp Modeler
Log | Files | Refs | Submodules | README | LICENSE

commit 495907058d2689f192155deca8c895dcabe891f9
parent 85d63b840f306a8c38b278e2095569684b11cfd7
Author: Steven Atkinson <steven@atkinson.mn>
Date:   Sun, 10 Mar 2024 12:23:58 -0700

Move tone stack params to OnParamChange()

Diffstat:
MNeuralAmpModeler/NeuralAmpModeler.cpp | 64++++++++++++++++++++++++++++++++++++++++------------------------
MNeuralAmpModeler/NeuralAmpModeler.h | 1+
2 files changed, 41 insertions(+), 24 deletions(-)

diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -326,30 +326,6 @@ void NeuralAmpModeler::ProcessBlock(iplug::sample** inputs, iplug::sample** outp sample** toneStackOutPointers = gateGainOutput; if (toneStackActive) { - // Translate params from knob 0-10 to dB. - // Tuned ranges based on my ear. E.g. seems treble doesn't need nearly as - // much swing as bass can use. - const double bassGainDB = 4.0 * (GetParam(kToneBass)->Value() - 5.0); // +/- 20 - const double midGainDB = 3.0 * (GetParam(kToneMid)->Value() - 5.0); // +/- 15 - const double trebleGainDB = 2.0 * (GetParam(kToneTreble)->Value() - 5.0); // +/- 10 - - const double bassFrequency = 150.0; - const double midFrequency = 425.0; - const double trebleFrequency = 1800.0; - const double bassQuality = 0.707; - // Wider EQ on mid bump up to sound less honky. - const double midQuality = midGainDB < 0.0 ? 1.5 : 0.7; - const double trebleQuality = 0.707; - - // Define filter parameters - recursive_linear_filter::BiquadParams bassParams(sampleRate, bassFrequency, bassQuality, bassGainDB); - recursive_linear_filter::BiquadParams midParams(sampleRate, midFrequency, midQuality, midGainDB); - recursive_linear_filter::BiquadParams trebleParams(sampleRate, trebleFrequency, trebleQuality, trebleGainDB); - // Apply tone stack - // Set parameters - mToneBass.SetParams(bassParams); - mToneMid.SetParams(midParams); - mToneTreble.SetParams(trebleParams); sample** bassPointers = mToneBass.Process(gateGainOutput, numChannelsInternal, numFrames); sample** midPointers = mToneMid.Process(bassPointers, numChannelsInternal, numFrames); sample** treblePointers = mToneTreble.Process(midPointers, numChannelsInternal, numFrames); @@ -462,6 +438,46 @@ void NeuralAmpModeler::OnUIOpen() mCheckSampleRateWarning = true; } +void NeuralAmpModeler::OnParamChange(int paramIdx) +{ + switch (paramIdx) + { + case kToneBass: + { + const double sampleRate = GetSampleRate(); + const double bassGainDB = 4.0 * (GetParam(kToneBass)->Value() - 5.0); // +/- 20 + const double bassFrequency = 150.0; + const double bassQuality = 0.707; + recursive_linear_filter::BiquadParams bassParams(sampleRate, bassFrequency, bassQuality, bassGainDB); + mToneBass.SetParams(bassParams); + } + + break; + case kToneMid: + { + const double sampleRate = GetSampleRate(); + const double midGainDB = 3.0 * (GetParam(kToneMid)->Value() - 5.0); // +/- 15 + const double midFrequency = 425.0; + // Wider EQ on mid bump up to sound less honky. + const double midQuality = midGainDB < 0.0 ? 1.5 : 0.7; + recursive_linear_filter::BiquadParams midParams(sampleRate, midFrequency, midQuality, midGainDB); + mToneMid.SetParams(midParams); + } + break; + case kToneTreble: + { + const double sampleRate = GetSampleRate(); + const double trebleGainDB = 2.0 * (GetParam(kToneTreble)->Value() - 5.0); // +/- 10 + const double trebleFrequency = 1800.0; + const double trebleQuality = 0.707; + recursive_linear_filter::BiquadParams trebleParams(sampleRate, trebleFrequency, trebleQuality, trebleGainDB); + mToneTreble.SetParams(trebleParams); + } + break; + default: break; + } +} + void NeuralAmpModeler::OnParamChangeUI(int paramIdx, EParamSource source) { if (auto pGraphics = GetUI()) diff --git a/NeuralAmpModeler/NeuralAmpModeler.h b/NeuralAmpModeler/NeuralAmpModeler.h @@ -216,6 +216,7 @@ public: void OnUIOpen() override; bool OnHostRequestingSupportedViewConfiguration(int width, int height) override { return true; } + void OnParamChange(int paramIdx) override; void OnParamChangeUI(int paramIdx, iplug::EParamSource source) override; bool OnMessage(int msgTag, int ctrlTag, int dataSize, const void* pData) override;