From fa348937db219622d75f9761fa4afdf04d19024d Mon Sep 17 00:00:00 2001 From: probonopd Date: Thu, 24 Apr 2025 08:32:30 +0200 Subject: [PATCH] Add "Master Volume" menu entry (#885) --- src/minidexed.h | 1 + src/uimenu.cpp | 28 ++++++++++++++++++++++++++++ src/uimenu.h | 1 + 3 files changed, 30 insertions(+) diff --git a/src/minidexed.h b/src/minidexed.h index b1622d0..1658482 100644 --- a/src/minidexed.h +++ b/src/minidexed.h @@ -239,6 +239,7 @@ public: bool DoSavePerformance (void); void setMasterVolume (float32_t vol); + int GetMasterVolume127() const { return (int)(nMasterVolume >= 1.0f ? 127 : (nMasterVolume <= 0.0f ? 0 : sqrtf(nMasterVolume) * 127.0f)); } bool InitNetwork(); void UpdateNetwork(); diff --git a/src/uimenu.cpp b/src/uimenu.cpp index 5bf7285..dabea87 100644 --- a/src/uimenu.cpp +++ b/src/uimenu.cpp @@ -29,6 +29,7 @@ #include #include #include +#include using namespace std; LOGMODULE ("uimenu"); @@ -63,6 +64,7 @@ const CUIMenu::TMenuItem CUIMenu::s_MainMenu[] = #endif #endif {"Effects", MenuHandler, s_EffectsMenu}, + {"Master Volume", EditMasterVolume, 0, 0}, {"Performance", MenuHandler, s_PerformanceMenu}, {0} }; @@ -2016,3 +2018,29 @@ void CUIMenu::EditTGParameterModulation (CUIMenu *pUIMenu, TMenuEvent Event) nValue > rParam.Minimum, nValue < rParam.Maximum); } + +void CUIMenu::EditMasterVolume(CUIMenu *pUIMenu, TMenuEvent Event) +{ + TParameter rParam = {0, 127, 8, ToVolume}; + int nValue = pUIMenu->m_pMiniDexed->GetMasterVolume127(); + switch (Event) + { + case MenuEventUpdate: + case MenuEventUpdateParameter: + break; + case MenuEventStepDown: + nValue -= rParam.Increment; + if (nValue < rParam.Minimum) nValue = rParam.Minimum; + pUIMenu->m_pMiniDexed->setMasterVolume(nValue / 127.0f); + break; + case MenuEventStepUp: + nValue += rParam.Increment; + if (nValue > rParam.Maximum) nValue = rParam.Maximum; + pUIMenu->m_pMiniDexed->setMasterVolume(nValue / 127.0f); + break; + default: + return; + } + std::string valueStr = ToVolume(pUIMenu->m_pMiniDexed->GetMasterVolume127()); + pUIMenu->m_pUI->DisplayWrite("Master Volume", "", valueStr.c_str(), nValue > rParam.Minimum, nValue < rParam.Maximum); +} diff --git a/src/uimenu.h b/src/uimenu.h index 6ff6571..6c72f36 100644 --- a/src/uimenu.h +++ b/src/uimenu.h @@ -96,6 +96,7 @@ private: static void PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event); static void SavePerformanceNewFile (CUIMenu *pUIMenu, TMenuEvent Event); static void EditPerformanceBankNumber (CUIMenu *pUIMenu, TMenuEvent Event); + static void EditMasterVolume (CUIMenu *pUIMenu, TMenuEvent Event); static std::string GetGlobalValueString (unsigned nParameter, int nValue); static std::string GetTGValueString (unsigned nTGParameter, int nValue);