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:
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;