From 7950db5f31df95261fabd5e2fe17542a00bb6545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Gauch=C3=A9?= <69854437+abscisys@users.noreply.github.com> Date: Sat, 13 May 2023 01:07:51 +0200 Subject: [PATCH] Last bugfix before big testing --- .vscode/settings.json | 5 +- src/minidexed.cpp | 41 +++--- src/minidexed.h | 2 +- src/mixing_console.hpp | 1 + src/uimenu.cpp | 298 ++++++++++++++++++++++++++++++++++++----- src/uimenu.h | 12 ++ 6 files changed, 300 insertions(+), 59 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3cc8ed9..5c71762 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -108,7 +108,10 @@ "xtr1common": "cpp", "xtree": "cpp", "netfwd": "cpp", - "*.def": "cpp" + "*.def": "cpp", + "support_functions.h": "c", + "nemath.h": "c", + "arm_helium_utils.h": "c" }, "C_Cpp.errorSquiggles": "disabled", "C_Cpp.intelliSenseEngine": "Tag Parser", diff --git a/src/minidexed.cpp b/src/minidexed.cpp index 4c0e922..230ac5c 100644 --- a/src/minidexed.cpp +++ b/src/minidexed.cpp @@ -82,14 +82,14 @@ CMiniDexed::CMiniDexed ( m_nNoteLimitHigh[i] = 127; m_nNoteShift[i] = 0; - m_nModulationWheelRange[i]=99; - m_nModulationWheelTarget[i]=7; - m_nFootControlRange[i]=99; - m_nFootControlTarget[i]=0; - m_nBreathControlRange[i]=99; - m_nBreathControlTarget[i]=0; - m_nAftertouchRange[i]=99; - m_nAftertouchTarget[i]=0; + m_nModulationWheelRange[i] = 99; + m_nModulationWheelTarget[i] = 7; + m_nFootControlRange[i] = 99; + m_nFootControlTarget[i] = 0; + m_nBreathControlRange[i] = 99; + m_nBreathControlTarget[i] = 0; + m_nAftertouchRange[i] = 99; + m_nAftertouchTarget[i] = 0; #if defined(MIXING_CONSOLE_ENABLE) memset(this->m_nFXSendLevel[i], 0, MixerOutput::kFXCount * sizeof(unsigned)); @@ -595,18 +595,12 @@ void CMiniDexed::setMixingConsoleReturnLevel(MixerOutput ret, MixerOutput fx, un assert (fx < MixerOutput::kFXCount); if(ret == fx) { - nFXReturn = 0; + this->mixing_console_->setReturnLevel(ret, fx, 0.0f); } -#if defined(DEBUG) else { - nFXReturn = constrain((int)nFXReturn, 0, 99); + this->mixing_console_->setReturnLevel(ret, fx, nFXReturn / 99.0f); } -#endif - - this->mixing_console_->setReturnLevel(ret, fx, nFXReturn / 99.0f); - - this->m_UI.ParameterChanged(); } #elif defined(PLATE_REVERB_ENABLE) @@ -816,13 +810,8 @@ void CMiniDexed::ControllersRefresh (unsigned nTG) void CMiniDexed::SetParameter (TParameter Parameter, int nValue) { -#if defined(MIXING_CONSOLE_ENABLE) - assert(this->mixing_console_); -#elif defined(PLATE_REVERB_ENABLE) - assert(this->reverb); -#endif - assert(Parameter < TParameter::ParameterUnknown); + m_nParameter[Parameter] = nValue; switch (Parameter) @@ -1493,6 +1482,7 @@ void CMiniDexed::SetParameter (TParameter Parameter, int nValue) reverb->level (nValue / 99.0f); m_FXSpinLock.Release (); break; + #endif default: @@ -1503,7 +1493,8 @@ void CMiniDexed::SetParameter (TParameter Parameter, int nValue) int CMiniDexed::GetParameter (TParameter Parameter) { - assert (Parameter < ParameterUnknown); + assert(Parameter < TParameter::ParameterUnknown); + return m_nParameter[Parameter]; } @@ -1558,7 +1549,7 @@ void CMiniDexed::SetTGParameter (TTGParameter Parameter, int nValue, unsigned nT case TTGParameter::TGParameterMixingSendFXTube: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Tube, nValue); break; case TTGParameter::TGParameterMixingSendFXChorus: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Chorus, nValue); break; case TTGParameter::TGParameterMixingSendFXFlanger: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Flanger, nValue); break; - case TTGParameter::TGParameterMixingSendFXOrbittone: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Orbitone, nValue); break; + case TTGParameter::TGParameterMixingSendFXOrbitone: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Orbitone, nValue); break; case TTGParameter::TGParameterMixingSendFXPhaser: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Phaser, nValue); break; case TTGParameter::TGParameterMixingSendFXDelay: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_Delay, nValue); break; case TTGParameter::TGParameterMixingSendFXPlateReverb: this->setMixingConsoleSendLevel(nTG, MixerOutput::FX_PlateReverb, nValue); break; @@ -1596,7 +1587,7 @@ int CMiniDexed::GetTGParameter (TTGParameter Parameter, unsigned nTG) case TTGParameter::TGParameterMixingSendFXTube: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Tube); case TTGParameter::TGParameterMixingSendFXChorus: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Chorus); case TTGParameter::TGParameterMixingSendFXFlanger: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Flanger); - case TTGParameter::TGParameterMixingSendFXOrbittone: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Orbitone); + case TTGParameter::TGParameterMixingSendFXOrbitone: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Orbitone); case TTGParameter::TGParameterMixingSendFXPhaser: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Phaser); case TTGParameter::TGParameterMixingSendFXDelay: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_Delay); case TTGParameter::TGParameterMixingSendFXPlateReverb: return this->getMixingConsoleSendLevel(nTG, MixerOutput::FX_PlateReverb); diff --git a/src/minidexed.h b/src/minidexed.h index fb674f8..feae483 100644 --- a/src/minidexed.h +++ b/src/minidexed.h @@ -347,7 +347,7 @@ public: TGParameterMixingSendFXTube, TGParameterMixingSendFXChorus, TGParameterMixingSendFXFlanger, - TGParameterMixingSendFXOrbittone, + TGParameterMixingSendFXOrbitone, TGParameterMixingSendFXPhaser, TGParameterMixingSendFXDelay, TGParameterMixingSendFXPlateReverb, diff --git a/src/mixing_console.hpp b/src/mixing_console.hpp index e93d3c2..c7c7b64 100644 --- a/src/mixing_console.hpp +++ b/src/mixing_console.hpp @@ -687,6 +687,7 @@ void MixingConsole::process(float32_t* outL, float32_t* outR) { this->processSample(*outL, *outR); } + ++outL; ++outR; } diff --git a/src/uimenu.cpp b/src/uimenu.cpp index d4ece77..e2341e6 100644 --- a/src/uimenu.cpp +++ b/src/uimenu.cpp @@ -59,15 +59,15 @@ const CUIMenu::TMenuItem CUIMenu::s_MainMenu[] = #if defined(MIXING_CONSOLE_ENABLE) const CUIMenu::TMenuItem CUIMenu::s_TGFXMenu[] = { - {"Tube-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube}, - {"Chorus-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus}, - {"FlangR-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger}, - {"Orb-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbittone}, - {"Phaser-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser}, - {"Delay-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay}, - {"Plate-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb}, - {"Rev-Send", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator}, - {"Main Out", CUIMenu::EditTGParameter, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput}, + {"Tube-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube}, + {"Chorus-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus}, + {"FlangR-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger}, + {"Orb-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone}, + {"Phaser-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser}, + {"Delay-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay}, + {"Plate-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb}, + {"Rev-Send", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator}, + {"Main Out", CUIMenu::EditTGParameter2, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput}, {0} }; #endif @@ -162,6 +162,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXPlateReverb[] = {"Diffusion", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterReverbDiffusion}, {"Level", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterReverbLevel}, #if defined(MIXING_CONSOLE_ENABLE) + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXPlateReverbLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXPlateReverbReturn}, #endif {0} @@ -175,6 +176,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXTube[] = { {"Enable", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTubeEnable}, {"Overdrv", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTubeOverdrive}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXTubeLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXTubeReturn}, {0} }; @@ -184,6 +186,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXChorus[] = {"Enable", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorusEnable}, {"Rate", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorusRate}, {"Depth", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorusDepth}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXChorusLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXChorusReturn}, {0} }; @@ -194,6 +197,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXFlanger[] = {"Rate", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlangerRate}, {"Depth", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlangerDepth}, {"Feedbck", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlangerFeedback}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXFlangerLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXFlangerReturn}, {0} }; @@ -203,6 +207,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXOrbitone[] = {"Enable", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitoneEnable}, {"Rate", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitoneRate}, {"Depth", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitoneDepth}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXOrbitoneLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXOrbitoneReturn}, {0} }; @@ -214,6 +219,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXPhaser[] = {"Depth", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaserDepth}, {"Feedbck", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaserFeedback}, {"Stages", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaserNbStages}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXPhaserLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXPhaserReturn}, {0} }; @@ -226,6 +232,7 @@ const CUIMenu::TMenuItem CUIMenu::s_FXDelay[] = {"Feedbck", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelayFeedback}, {"Flt Rte", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelayFlutterRate}, {"Flt Amt", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelayFlutterAmount}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXDelayLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXDelayReturn}, {0} }; @@ -237,23 +244,68 @@ const CUIMenu::TMenuItem CUIMenu::s_FXReverberator[] = {"Time", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberatorTime}, {"Diffus", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberatorDiffusion}, {"LowPass", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberatorLP}, + {"Levels", CUIMenu::MenuHandler, CUIMenu::s_FXReverberatorLevels}, {"Return", CUIMenu::MenuHandler, CUIMenu::s_FXReverberatorReturn}, {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXTubeLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 7}, +#endif + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_TubeReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_TubeReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_TubeReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_TubeReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_TubeReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_TubeReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_TubeReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXTubeReturn[] = { - {"ChR Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_ChorusReturn}, - {"Flg Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_FlangerReturn}, - {"Orb Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_OrbitoneReturn}, - {"PhR Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_PhaserReturn}, - {"Dly Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_DelayReturn}, - {"Plt Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_PlateReverbReturn}, - {"Rev Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_ReverberatorReturn}, + {"ChR Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ChorusReturn}, + {"Flg Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_FlangerReturn}, + {"Orb Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_OrbitoneReturn}, + {"PhR Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PhaserReturn}, + {"Dly Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_DelayReturn}, + {"Plt Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PlateReverbReturn}, + {"Rev Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ReverberatorReturn}, {"MainOut", CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterFXTube_MainOutput}, {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXChorusLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ChorusReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_ChorusReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_ChorusReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_ChorusReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_ChorusReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_ChorusReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_ChorusReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXChorusReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_TubeReturn}, @@ -267,6 +319,28 @@ const CUIMenu::TMenuItem CUIMenu::s_FXChorusReturn[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXFlangerLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_FlangerReturn}, + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_FlangerReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_FlangerReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_FlangerReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_FlangerReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_FlangerReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_FlangerReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXFlangerReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_TubeReturn}, @@ -280,6 +354,28 @@ const CUIMenu::TMenuItem CUIMenu::s_FXFlangerReturn[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXOrbitoneLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_OrbitoneReturn}, + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_OrbitoneReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_OrbitoneReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_OrbitoneReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_OrbitoneReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_OrbitoneReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_OrbitoneReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXOrbitoneReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_TubeReturn}, @@ -293,6 +389,28 @@ const CUIMenu::TMenuItem CUIMenu::s_FXOrbitoneReturn[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXPhaserLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PhaserReturn}, + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_PhaserReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_PhaserReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_PhaserReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_PhaserReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_PhaserReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_PhaserReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXPhaserReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_TubeReturn}, @@ -306,6 +424,28 @@ const CUIMenu::TMenuItem CUIMenu::s_FXPhaserReturn[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXDelayLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_DelayReturn}, + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_DelayReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_DelayReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_DelayReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_DelayReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_DelayReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_DelayReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXDelayReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_TubeReturn}, @@ -319,6 +459,28 @@ const CUIMenu::TMenuItem CUIMenu::s_FXDelayReturn[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXPlateReverbLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PlateReverbReturn}, + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_PlateReverbReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_PlateReverbReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_PlateReverbReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_PlateReverbReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_PlateReverbReturn}, + {"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_PlateReverbReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXPlateReverbReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_TubeReturn}, @@ -332,6 +494,28 @@ const CUIMenu::TMenuItem CUIMenu::s_FXPlateReverbReturn[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_FXReverberatorLevels[] = +{ + {"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 0}, +#if defined(ARM_ALLOW_MULTI_CORE) + {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 1}, + {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 2}, + {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 3}, + {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 4}, + {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 5}, + {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 6}, + {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 7}, +#endif + {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ReverberatorReturn}, + {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_ReverberatorReturn}, + {"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_ReverberatorReturn}, + {"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_ReverberatorReturn}, + {"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_ReverberatorReturn}, + {"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_ReverberatorReturn}, + {"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_ReverberatorReturn}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_FXReverberatorReturn[] = { {"Tub Rtn", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_TubeReturn}, @@ -553,7 +737,7 @@ const CUIMenu::TParameter CUIMenu::s_GlobalParameter[CMiniDexed::TParameter::Par {0, 99, 1}, // ParameterFXReverberator_PhaserReturn, {0, 99, 1}, // ParameterFXReverberator_DelayReturn, {0, 99, 1}, // ParameterFXReverberator_PlateReverbReturn, - {0, 99, 1} // ParameterFXReverberator_MainOutput, + {0, 99, 1}, // ParameterFXReverberator_MainOutput, #endif // END FX global parameters mapping definition @@ -597,6 +781,7 @@ const CUIMenu::TParameter CUIMenu::s_TGParameter[CMiniDexed::TTGParameter::TGPar {0, 1, 1, ToOnOff}, //AT Pitch {0, 1, 1, ToOnOff}, //AT Amp {0, 1, 1, ToOnOff} //AT EGBias + #if defined(MIXING_CONSOLE_ENABLE) , {0, 99, 1}, // TGParameterMixingSendFXTube, @@ -743,23 +928,18 @@ void CUIMenu::MenuHandler (CUIMenu *pUIMenu, TMenuEvent Event) case MenuEventSelect: // push menu assert (pUIMenu->m_nCurrentMenuDepth < MaxMenuDepth); - pUIMenu->m_MenuStackParent[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pParentMenu; - pUIMenu->m_MenuStackMenu[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pCurrentMenu; - pUIMenu->m_nMenuStackItem[pUIMenu->m_nCurrentMenuDepth] - = pUIMenu->m_nCurrentMenuItem; - pUIMenu->m_nMenuStackSelection[pUIMenu->m_nCurrentMenuDepth] - = pUIMenu->m_nCurrentSelection; - pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth] - = pUIMenu->m_nCurrentParameter; + pUIMenu->m_MenuStackParent[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pParentMenu; + pUIMenu->m_MenuStackMenu[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_pCurrentMenu; + pUIMenu->m_nMenuStackItem[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_nCurrentMenuItem; + pUIMenu->m_nMenuStackSelection[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_nCurrentSelection; + pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth] = pUIMenu->m_nCurrentParameter; pUIMenu->m_nCurrentMenuDepth++; - pUIMenu->m_pParentMenu = pUIMenu->m_pCurrentMenu; - pUIMenu->m_nCurrentParameter = - pUIMenu->m_pCurrentMenu[pUIMenu->m_nCurrentSelection].Parameter; - pUIMenu->m_pCurrentMenu = - pUIMenu->m_pCurrentMenu[pUIMenu->m_nCurrentSelection].MenuItem; - pUIMenu->m_nCurrentMenuItem = pUIMenu->m_nCurrentSelection; - pUIMenu->m_nCurrentSelection = 0; + pUIMenu->m_pParentMenu = pUIMenu->m_pCurrentMenu; + pUIMenu->m_nCurrentParameter = pUIMenu->m_pCurrentMenu[pUIMenu->m_nCurrentSelection].Parameter; + pUIMenu->m_pCurrentMenu = pUIMenu->m_pCurrentMenu[pUIMenu->m_nCurrentSelection].MenuItem; + pUIMenu->m_nCurrentMenuItem = pUIMenu->m_nCurrentSelection; + pUIMenu->m_nCurrentSelection = 0; break; case MenuEventStepDown: @@ -1070,6 +1250,60 @@ void CUIMenu::EditTGParameter2 (CUIMenu *pUIMenu, TMenuEvent Event) // second me } +void CUIMenu::EditTGParameter3(CUIMenu *pUIMenu, TMenuEvent Event) +{ + unsigned nTG = pUIMenu->m_MenuStackMenu[pUIMenu->m_nCurrentMenuDepth - 1]->Parameter2; + + CMiniDexed::TTGParameter Param = (CMiniDexed::TTGParameter) pUIMenu->m_nCurrentParameter; + + const TParameter &rParam = s_TGParameter[Param]; + + int nValue = pUIMenu->m_pMiniDexed->GetTGParameter (Param, nTG); + + switch (Event) + { + case MenuEventUpdate: + break; + + case MenuEventStepDown: + nValue -= rParam.Increment; + if (nValue < rParam.Minimum) + { + nValue = rParam.Minimum; + } + pUIMenu->m_pMiniDexed->SetTGParameter (Param, nValue, nTG); + break; + + case MenuEventStepUp: + nValue += rParam.Increment; + if (nValue > rParam.Maximum) + { + nValue = rParam.Maximum; + } + pUIMenu->m_pMiniDexed->SetTGParameter (Param, nValue, nTG); + break; + + case MenuEventPressAndStepDown: + case MenuEventPressAndStepUp: + pUIMenu->TGShortcutHandler (Event); + return; + + default: + return; + } + + string TG ("TG"); + TG += to_string (nTG+1); + + string Value = GetTGValueString (Param, pUIMenu->m_pMiniDexed->GetTGParameter (Param, nTG)); + + pUIMenu->m_pUI->DisplayWrite (TG.c_str (), + pUIMenu->m_pParentMenu[pUIMenu->m_nCurrentMenuItem].Name, + Value.c_str (), + nValue > rParam.Minimum, nValue < rParam.Maximum); + +} + void CUIMenu::EditVoiceParameter (CUIMenu *pUIMenu, TMenuEvent Event) { unsigned nTG = pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth-2]; diff --git a/src/uimenu.h b/src/uimenu.h index 1055777..9d3cb9a 100644 --- a/src/uimenu.h +++ b/src/uimenu.h @@ -63,6 +63,9 @@ private: TMenuHandler *Handler; const TMenuItem *MenuItem; unsigned Parameter; +#if defined(MIXING_CONSOLE_ENABLE) + unsigned Parameter2 = 0; +#endif }; typedef std::string TToString (int nValue); @@ -85,6 +88,7 @@ private: static void EditOPParameter (CUIMenu *pUIMenu, TMenuEvent Event); static void SavePerformance (CUIMenu *pUIMenu, TMenuEvent Event); static void EditTGParameter2 (CUIMenu *pUIMenu, TMenuEvent Event); + static void EditTGParameter3 (CUIMenu *pUIMenu, TMenuEvent Event); static void EditTGParameterModulation (CUIMenu *pUIMenu, TMenuEvent Event); static void PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event); static void SavePerformanceNewFile (CUIMenu *pUIMenu, TMenuEvent Event); @@ -142,24 +146,32 @@ private: #if defined(MIXING_CONSOLE_ENABLE) static const TMenuItem s_TGFXMenu[]; static const TMenuItem s_FXTube[]; + static const TMenuItem s_FXTubeLevels[]; static const TMenuItem s_FXTubeReturn[]; static const TMenuItem s_FXChorus[]; + static const TMenuItem s_FXChorusLevels[]; static const TMenuItem s_FXChorusReturn[]; static const TMenuItem s_FXFlanger[]; + static const TMenuItem s_FXFlangerLevels[]; static const TMenuItem s_FXFlangerReturn[]; static const TMenuItem s_FXOrbitone[]; + static const TMenuItem s_FXOrbitoneLevels[]; static const TMenuItem s_FXOrbitoneReturn[]; static const TMenuItem s_FXPhaser[]; + static const TMenuItem s_FXPhaserLevels[]; static const TMenuItem s_FXPhaserReturn[]; static const TMenuItem s_FXDelay[]; + static const TMenuItem s_FXDelayLevels[]; static const TMenuItem s_FXDelayReturn[]; #endif #if defined(PLATE_REVERB_ENABLE) || defined(MIXING_CONSOLE_ENABLE) static const TMenuItem s_FXPlateReverb[]; #endif #if defined(MIXING_CONSOLE_ENABLE) + static const TMenuItem s_FXPlateReverbLevels[]; static const TMenuItem s_FXPlateReverbReturn[]; static const TMenuItem s_FXReverberator[]; + static const TMenuItem s_FXReverberatorLevels[]; static const TMenuItem s_FXReverberatorReturn[]; #endif static const TMenuItem s_EditVoiceMenu[];