NeuralAmpModelerPlugin

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

commit e6dfb2e7280e800cc4ace76b56cb9725ac3975db
parent 77f44041e4e504c695435ffe3144e08e75baeef7
Author: Steven Atkinson <steven@atkinson.mn>
Date:   Sun, 16 Apr 2023 22:37:51 -0700

Set output normalization state disable state correctly on DAW startup (#200)

* Guard setting disable state of output normalization

* format
Diffstat:
MNeuralAmpModeler/NeuralAmpModeler.cpp | 30++++++++++++++++++++++++++++--
MNeuralAmpModeler/NeuralAmpModeler.h | 4++++
2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -113,6 +113,8 @@ NeuralAmpModeler::NeuralAmpModeler(const InstanceInfo& info) , mStagedIR(nullptr) , mFlagRemoveNAM(false) , mFlagRemoveIR(false) +, mFlagSetDisableNormalization(false) +, mSetDisableNormalization(false) , mDefaultNAMString("Select model...") , mDefaultIRString("Select IR...") , mToneBass() @@ -645,8 +647,8 @@ void NeuralAmpModeler::_ApplyDSPStaging() // Move from staged to active DSP this->mNAM = std::move(this->mStagedNAM); this->mStagedNAM = nullptr; - // Disable Normalization toggle when no loudness data in model metadata - GetUI()->GetControlWithTag(kOutNorm)->SetDisabled(!mNAM->HasLoudness()); + this->mFlagSetDisableNormalization = true; + this->mSetDisableNormalization = !mNAM->HasLoudness(); } if (this->mStagedIR != nullptr) { @@ -668,6 +670,30 @@ void NeuralAmpModeler::_ApplyDSPStaging() this->_UnsetIRMsg(); this->mFlagRemoveIR = false; } + if (this->mFlagSetDisableNormalization) + { + try + { + // Disable Normalization toggle when no loudness data in model metadata + // Sometimes the UI isn't initialized, so we have to try again later. + auto ui = GetUI(); + if (ui != nullptr) + { + auto c = ui->GetControlWithTag(kOutNorm); + if (c != nullptr) + { + c->SetDisabled(this->mSetDisableNormalization); + if (c->IsDisabled() == this->mSetDisableNormalization) + { + this->mFlagSetDisableNormalization = false; + } + } + } + } + catch (std::runtime_error& e) + { + } + } } void NeuralAmpModeler::_DeallocateIOPointers() diff --git a/NeuralAmpModeler/NeuralAmpModeler.h b/NeuralAmpModeler/NeuralAmpModeler.h @@ -143,6 +143,10 @@ private: const WDL_String mDefaultNAMString; const WDL_String mDefaultIRString; + // Try to set the diable state of output normalization + bool mFlagSetDisableNormalization; + bool mSetDisableNormalization; // True = Disable + // Tone stack modules recursive_linear_filter::LowShelf mToneBass; recursive_linear_filter::Peaking mToneMid;