NeuralAmpModelerPlugin

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

commit 348f2be34d5245370e68852f384f3faa983a461b
parent fbce0d60ca37021b08564bdd72d9589a200855cb
Author: Oli Larkin <olilarkin@googlemail.com>
Date:   Mon, 29 May 2023 15:10:35 +0200

Run clang-format

Diffstat:
MNeuralAmpModeler/NeuralAmpModeler.cpp | 46+++++++++++++++++++++++++---------------------
MNeuralAmpModeler/NeuralAmpModeler.h | 2+-
MNeuralAmpModeler/NeuralAmpModelerControls.h | 73+++++++++++++++++++++++++++++++++++++++----------------------------------
3 files changed, 65 insertions(+), 56 deletions(-)

diff --git a/NeuralAmpModeler/NeuralAmpModeler.cpp b/NeuralAmpModeler/NeuralAmpModeler.cpp @@ -162,7 +162,10 @@ NeuralAmpModeler::NeuralAmpModeler(const InstanceInfo& info) const float fileHeight = 30.0f; const float fileYSpace = 8.0f; const float irYOffset = 38.0f; - const IRECT modelArea = content.GetFromBottom((2.0f * fileHeight) + fileYSpace).GetFromTop(fileHeight).GetMidHPadded(fileWidth).GetTranslated(0.0f, -1); + const IRECT modelArea = content.GetFromBottom((2.0f * fileHeight) + fileYSpace) + .GetFromTop(fileHeight) + .GetMidHPadded(fileWidth) + .GetTranslated(0.0f, -1); const IRECT irArea = modelArea.GetTranslated(0.0f, irYOffset); // Areas for meters @@ -201,7 +204,7 @@ NeuralAmpModeler::NeuralAmpModeler(const InstanceInfo& info) std::cout << "Loaded: " << fileName.Get() << std::endl; } }; - + // IR loader button auto loadIRCompletionHandler = [&](const WDL_String& fileName, const WDL_String& path) { if (fileName.GetLength()) @@ -219,10 +222,14 @@ NeuralAmpModeler::NeuralAmpModeler(const InstanceInfo& info) } }; - pGraphics->AttachControl(new NAMFileBrowserControl(modelArea, kMsgTagClearModel, "Select model...", "nam", loadModelCompletionHandler, style, - fileSVG, closeButtonSVG, leftArrowSVG, rightArrowSVG), kCtrlTagModelFileBrowser); - pGraphics->AttachControl(new NAMFileBrowserControl(irArea, kMsgTagClearIR, "Select IR...", "wav", loadIRCompletionHandler, style, - fileSVG, closeButtonSVG, leftArrowSVG, rightArrowSVG), kCtrlTagIRFileBrowser); + pGraphics->AttachControl( + new NAMFileBrowserControl(modelArea, kMsgTagClearModel, "Select model...", "nam", loadModelCompletionHandler, + style, fileSVG, closeButtonSVG, leftArrowSVG, rightArrowSVG), + kCtrlTagModelFileBrowser); + pGraphics->AttachControl( + new NAMFileBrowserControl(irArea, kMsgTagClearIR, "Select IR...", "wav", loadIRCompletionHandler, style, fileSVG, + closeButtonSVG, leftArrowSVG, rightArrowSVG), + kCtrlTagIRFileBrowser); // TODO all these magic numbers pGraphics->AttachControl(new NAMSwitchControl( @@ -247,7 +254,8 @@ NeuralAmpModeler::NeuralAmpModeler(const InstanceInfo& info) pGraphics->AttachControl(new NAMKnobControl(noiseGateArea, kNoiseGateThreshold, "", style, knobRotateBitmap)); pGraphics->AttachControl(new NAMKnobControl(bassKnobArea, kToneBass, "", style, knobRotateBitmap), -1, "EQ_KNOBS"); pGraphics->AttachControl(new NAMKnobControl(middleKnobArea, kToneMid, "", style, knobRotateBitmap), -1, "EQ_KNOBS"); - pGraphics->AttachControl(new NAMKnobControl(trebleKnobArea, kToneTreble, "", style, knobRotateBitmap), -1, "EQ_KNOBS"); + pGraphics->AttachControl( + new NAMKnobControl(trebleKnobArea, kToneTreble, "", style, knobRotateBitmap), -1, "EQ_KNOBS"); pGraphics->AttachControl(new NAMKnobControl(outputKnobArea, kOutputLevel, "", style, knobRotateBitmap)); // toggle IR on / off @@ -494,9 +502,10 @@ int NeuralAmpModeler::UnserializeState(const IByteChunk& chunk, int startPos) void NeuralAmpModeler::OnUIOpen() { Plugin::OnUIOpen(); - + if (this->mNAMPath.GetLength()) - SendControlMsgFromDelegate(kCtrlTagModelFileBrowser, kMsgTagLoadedModel, this->mNAMPath.GetLength(), this->mNAMPath.Get()); + SendControlMsgFromDelegate( + kCtrlTagModelFileBrowser, kMsgTagLoadedModel, this->mNAMPath.GetLength(), this->mNAMPath.Get()); if (this->mIRPath.GetLength()) SendControlMsgFromDelegate(kCtrlTagIRFileBrowser, kMsgTagLoadedIR, this->mIRPath.GetLength(), this->mIRPath.Get()); if (this->mNAM != nullptr) @@ -515,8 +524,7 @@ void NeuralAmpModeler::OnParamChangeUI(int paramIdx, EParamSource source) case kEQActive: pGraphics->ForControlInGroup("EQ_KNOBS", [active](IControl* pControl) { pControl->SetDisabled(!active); }); break; - case kIRToggle: - pGraphics->GetControlWithTag(kCtrlTagIRFileBrowser)->SetDisabled(!active); + case kIRToggle: pGraphics->GetControlWithTag(kCtrlTagIRFileBrowser)->SetDisabled(!active); default: break; } } @@ -526,14 +534,9 @@ bool NeuralAmpModeler::OnMessage(int msgTag, int ctrlTag, int dataSize, const vo { switch (msgTag) { - case kMsgTagClearModel: - mFlagRemoveNAM = true; - return true; - case kMsgTagClearIR: - mFlagRemoveIR = true; - return true; - default: - return false; + case kMsgTagClearModel: mFlagRemoveNAM = true; return true; + case kMsgTagClearIR: mFlagRemoveIR = true; return true; + default: return false; } } @@ -617,12 +620,13 @@ std::string NeuralAmpModeler::_GetNAM(const WDL_String& modelPath) auto dspPath = std::filesystem::u8path(modelPath.Get()); mStagedNAM = get_dsp(dspPath); this->mNAMPath = modelPath; - SendControlMsgFromDelegate(kCtrlTagModelFileBrowser, kMsgTagLoadedModel, this->mNAMPath.GetLength(), this->mNAMPath.Get()); + SendControlMsgFromDelegate( + kCtrlTagModelFileBrowser, kMsgTagLoadedModel, this->mNAMPath.GetLength(), this->mNAMPath.Get()); } catch (std::exception& e) { SendControlMsgFromDelegate(kCtrlTagModelFileBrowser, kMsgTagLoadFailed); - + if (this->mStagedNAM != nullptr) { this->mStagedNAM = nullptr; diff --git a/NeuralAmpModeler/NeuralAmpModeler.h b/NeuralAmpModeler/NeuralAmpModeler.h @@ -143,7 +143,7 @@ private: // Flags to take away the modules at a safe time. std::atomic<bool> mFlagRemoveNAM; std::atomic<bool> mFlagRemoveIR; - + std::atomic<bool> mNewNAMLoadedInDSP = false; // Tone stack modules diff --git a/NeuralAmpModeler/NeuralAmpModelerControls.h b/NeuralAmpModeler/NeuralAmpModelerControls.h @@ -60,7 +60,11 @@ public: float data[2][2]; RadialPoints(angle, cx + 1, cy, mInnerPointerFrac * widgetRadius, mInnerPointerFrac * widgetRadius, 2, data); g.PathCircle(data[1][0], data[1][1], 3); - g.PathFill(IPattern::CreateRadialGradient(data[1][0], data[1][1], 4.0f, {{GetColor(mMouseIsOver ? kX3 : kX1), 0.f}, {GetColor(mMouseIsOver ? kX3 : kX1), 0.8f}, {COLOR_TRANSPARENT, 1.0f}}), {}, &mBlend); + g.PathFill(IPattern::CreateRadialGradient(data[1][0], data[1][1], 4.0f, + {{GetColor(mMouseIsOver ? kX3 : kX1), 0.f}, + {GetColor(mMouseIsOver ? kX3 : kX1), 0.8f}, + {COLOR_TRANSPARENT, 1.0f}}), + {}, &mBlend); g.DrawCircle(COLOR_BLACK.WithOpacity(0.5f), data[1][0], data[1][1], 3, &mBlend); } }; @@ -107,20 +111,20 @@ public: : IVButtonControl(bounds, DefaultClickActionFunc, label, style) { } - + void SetLabelAndTooltip(const char* str) { SetLabelStr(str); SetTooltip(str); } - + void SetLabelAndTooltipEllipsizing(const WDL_String& fileName) { auto EllipsizeFilePath = [](const char* filePath, size_t prefixLength, size_t suffixLength, size_t maxLength) { const std::string ellipses = "..."; - assert (maxLength <= (prefixLength + suffixLength + ellipses.size())); - std::string str {filePath}; - + assert(maxLength <= (prefixLength + suffixLength + ellipses.size())); + std::string str{filePath}; + if (str.length() <= maxLength) { return str; @@ -130,7 +134,7 @@ public: return str.substr(0, prefixLength) + ellipses + str.substr(str.length() - suffixLength); } }; - + auto ellipsizedFileName = EllipsizeFilePath(fileName.get_filepart(), 22, 22, 45); SetLabelStr(ellipsizedFileName.c_str()); SetTooltip(fileName.get_filepart()); @@ -141,8 +145,8 @@ class NAMFileBrowserControl : public IDirBrowseControlBase { public: NAMFileBrowserControl(const IRECT& bounds, int clearMsgTag, const char* labelStr, const char* fileExtension, - IFileDialogCompletionHandlerFunc ch, const IVStyle& style, - const ISVG& loadSVG, const ISVG& clearSVG, const ISVG& leftSVG, const ISVG& rightSVG) + IFileDialogCompletionHandlerFunc ch, const IVStyle& style, const ISVG& loadSVG, + const ISVG& clearSVG, const ISVG& leftSVG, const ISVG& rightSVG) : IDirBrowseControlBase(bounds, fileExtension, true) , mClearMsgTag(clearMsgTag) , mDefaultLabelStr(labelStr) @@ -156,8 +160,10 @@ public: mIgnoreMouse = true; mShowFileExtensions = false; } - - void Draw(IGraphics& g) override { /* NO-OP */ } + + void Draw(IGraphics& g) override + { /* NO-OP */ + } void OnPopupMenuSelection(IPopupMenu* pSelectedMenu, int valIdx) override { @@ -196,20 +202,19 @@ public: auto loadFileFunc = [&](IControl* pCaller) { WDL_String fileName; WDL_String path; - pCaller->GetUI()->PromptForFile(fileName, path, EFileAction::Open, mExtension.Get(), - [&](const WDL_String& fileName, const WDL_String& path) { - - if (fileName.GetLength()) - { - ClearPathList(); - AddPath(path.Get(), ""); - SetupMenu(); - SetSelectedFile(fileName.Get()); - LoadFileAtCurrentIndex(); - } - }); + pCaller->GetUI()->PromptForFile( + fileName, path, EFileAction::Open, mExtension.Get(), [&](const WDL_String& fileName, const WDL_String& path) { + if (fileName.GetLength()) + { + ClearPathList(); + AddPath(path.Get(), ""); + SetupMenu(); + SetSelectedFile(fileName.Get()); + LoadFileAtCurrentIndex(); + } + }); }; - + auto clearFileFunc = [&](IControl* pCaller) { pCaller->GetDelegate()->SendArbitraryMsgFromUI(mClearMsgTag); mFileNameControl->SetLabelAndTooltip(mDefaultLabelStr.Get()); @@ -235,18 +240,18 @@ public: const auto leftButtonBounds = padded.ReduceFromLeft(buttonWidth); const auto rightButtonBounds = padded.ReduceFromLeft(buttonWidth); const auto fileNameButtonBounds = padded; - + AddChildControl(new NAMSquareButtonControl(loadFileButtonBounds, DefaultClickActionFunc, mLoadSVG)) - ->SetAnimationEndActionFunction(loadFileFunc); + ->SetAnimationEndActionFunction(loadFileFunc); AddChildControl(new NAMSquareButtonControl(leftButtonBounds, DefaultClickActionFunc, mLeftSVG)) - ->SetAnimationEndActionFunction(prevFileFunc); + ->SetAnimationEndActionFunction(prevFileFunc); AddChildControl(new NAMSquareButtonControl(rightButtonBounds, DefaultClickActionFunc, mRightSVG)) - ->SetAnimationEndActionFunction(nextFileFunc); + ->SetAnimationEndActionFunction(nextFileFunc); AddChildControl(mFileNameControl = new NAMFileNameControl(fileNameButtonBounds, mDefaultLabelStr.Get(), mStyle)) - ->SetAnimationEndActionFunction(chooseFileFunc); + ->SetAnimationEndActionFunction(chooseFileFunc); AddChildControl(new NAMSquareButtonControl(clearButtonBounds, DefaultClickActionFunc, mClearSVG)) - ->SetAnimationEndActionFunction(clearFileFunc); - + ->SetAnimationEndActionFunction(clearFileFunc); + mFileNameControl->SetLabelAndTooltip(mDefaultLabelStr.Get()); } @@ -280,16 +285,16 @@ public: AddPath(fileName.Get(), ""); SetupMenu(); - //reset + // reset fileName.Set(reinterpret_cast<const char*>(pData)); SetSelectedFile(fileName.Get()); mFileNameControl->SetLabelAndTooltipEllipsizing(fileName); break; } - default: - break; + default: break; } } + private: WDL_String mDefaultLabelStr; IFileDialogCompletionHandlerFunc mCompletionHandlerFunc;