Fixing navigation in TG FX Send shortcuts and Performance lod/save FX parameters

pull/495/head
Vincent GAUCHE 2 years ago
parent 5e1418bb08
commit 8437803790
  1. 12
      src/fx.cpp
  2. 6
      src/fx.h
  3. 5
      src/fx_unit2.hpp
  4. 72
      src/minidexed.cpp
  5. 8
      src/minidexed.h
  6. 45
      src/mixing_console.hpp
  7. 302
      src/performance.ini
  8. 105
      src/performanceconfig.cpp
  9. 25
      src/performanceconfig.h
  10. 307
      src/uimenu.cpp
  11. 4
      src/uimenu.h
  12. BIN
      wiki-update/Tube--overdrive-response.png
  13. 19
      wiki-update/fx-page.md

@ -16,7 +16,8 @@ float32_t FXBase::getSamplingRate() const
FXElement::FXElement(float32_t sampling_rate, float32_t output_level_corrector) :
FXBase(sampling_rate),
OutputLevelCorrector(output_level_corrector)
OutputLevelCorrector(output_level_corrector),
bypass_fx_process_(false)
{
}
@ -24,6 +25,15 @@ FXElement::~FXElement()
{
}
void FXElement::bypassFXProcess(bool bypass)
{
this->bypass_fx_process_ = bypass;
}
bool FXElement::bypassFXProcess() const
{
return this->bypass_fx_process_;
}
FX::FX(float32_t sampling_rate) :
FXBase(sampling_rate)

@ -60,7 +60,13 @@ protected:
public:
virtual ~FXElement();
virtual void bypassFXProcess(bool bypass);
virtual bool bypassFXProcess() const;
virtual void processSample(float32_t inL, float32_t inR, float32_t& outL, float32_t& outR) = 0;
private:
bool bypass_fx_process_;
};
class FX : public FXBase

@ -87,6 +87,11 @@ public:
outL = 0.0f;
outR = 0.0f;
}
else if(this->bypassFXProcess())
{
outL = inL;
outR = inR;
}
else
{
this->is_reset_ = false;

@ -92,7 +92,7 @@ CMiniDexed::CMiniDexed (
m_nAftertouchTarget[i] = 0;
#if defined(MIXING_CONSOLE_ENABLE)
memset(this->m_nFXSendLevel[i], 0, MixerOutput::kFXCount * sizeof(unsigned));
memset(this->m_nTGSendLevel[i], 0, MixerOutput::kFXCount * sizeof(unsigned));
#elif defined(PLATE_REVERB_ENABLE)
m_nReverbSend[i] = 0;
#endif
@ -104,6 +104,17 @@ CMiniDexed::CMiniDexed (
m_pTG[i]->activate ();
}
#if defined(MIXING_CONSOLE_ENABLE)
for(size_t i = MixerOutput::FX_Tube; i < (MixerOutput::kFXCount - 1); ++i)
{
memset(this->m_nFXSendLevel[i], 0, MixerOutput::kFXCount * sizeof(unsigned));
}
this->m_nTGSendLevel[0][MixerOutput::MainOutput] = 99;
this->m_nTGSendLevel[0][MixerOutput::FX_PlateReverb] = 99;
this->m_nFXSendLevel[MixerOutput::FX_PlateReverb][MixerOutput::MainOutput] = 99;
#endif
for (unsigned i = 0; i < CConfig::MaxUSBMIDIDevices; i++)
{
m_pMIDIKeyboard[i] = new CMIDIKeyboard (this, pConfig, &m_UI, i);
@ -158,7 +169,7 @@ CMiniDexed::CMiniDexed (
// Tube parameters
this->SetParameter(TParameter::ParameterFXTubeEnable, 1);
this->SetParameter(TParameter::ParameterFXTubeOverdrive, 10);
this->SetParameter(TParameter::ParameterFXTubeOverdrive, 25);
// Chorus parameters
this->SetParameter(TParameter::ParameterFXChorusEnable, 1);
@ -205,18 +216,8 @@ CMiniDexed::CMiniDexed (
this->SetParameter(TParameter::ParameterFXReverberatorDiffusion, 80);
this->SetParameter(TParameter::ParameterFXReverberatorLP, 70);
// Initializes Send parameters to 0
size_t end = MixerOutput::kFXCount - 1;
for(size_t from = 0; from < end; ++from)
{
for(size_t toFX = 0; toFX < MixerOutput::kFXCount; ++toFX)
{
this->setMixingConsoleFXSendLevel(static_cast<MixerOutput>(from), static_cast<MixerOutput>(toFX), 0);
}
}
// Send all Reverb signal to MainOutput
this->SetParameter(TParameter::ParameterFXPlateReverb_MainOutput, 99);
// Bypass
this->SetParameter(TParameter::ParameterFXBypass, 0);
#elif defined(PLATE_REVERB_ENABLE)
@ -277,13 +278,12 @@ bool CMiniDexed::Initialize (void)
m_pTG[i]->setATController (99, 1, 0);
#if defined(MIXING_CONSOLE_ENABLE)
// setup the mixer so that it remains identical to the initial version of the synth
this->mixing_console_->reset();
this->mixing_console_->setPan(i, this->m_nPan[i] / 127.0f);
float32_t sendRev = this->m_nFXSendLevel[i][MixerOutput::FX_PlateReverb] / 99.0f;
this->mixing_console_->setSendLevel(i, MixerOutput::FX_PlateReverb, 1.0f);
this->mixing_console_->setSendLevel(i, MixerOutput::MainOutput, 1.0f - sendRev);
this->mixing_console_->setSendLevel(MixerOutput::FX_PlateReverb, MixerOutput::MainOutput, sendRev);
this->mixing_console_->setSendLevel(i, MixerOutput::FX_PlateReverb, this->m_nTGSendLevel[i][MixerOutput::FX_PlateReverb] / 99.0f);
this->mixing_console_->setSendLevel(i, MixerOutput::MainOutput, this->m_nTGSendLevel[i][MixerOutput::MainOutput] / 99.0f);
this->mixing_console_->setFXSendLevel(MixerOutput::FX_PlateReverb, MixerOutput::MainOutput, this->m_nFXSendLevel[MixerOutput::FX_PlateReverb][MixerOutput::FX_PlateReverb] / 99.0f);
#elif defined(PLATE_REVERB_ENABLE)
@ -575,7 +575,7 @@ void CMiniDexed::SetPan (unsigned nPan, unsigned nTG)
unsigned CMiniDexed::getMixingConsoleSendLevel(unsigned nTG, MixerOutput fx) const
{
assert (nTG < CConfig::ToneGenerators);
return this->m_nFXSendLevel[nTG][fx];
return this->m_nTGSendLevel[nTG][fx];
}
void CMiniDexed::setMixingConsoleSendLevel(unsigned nTG, MixerOutput fx, unsigned nFXSend)
@ -583,23 +583,21 @@ void CMiniDexed::setMixingConsoleSendLevel(unsigned nTG, MixerOutput fx, unsigne
assert (nTG < CConfig::ToneGenerators);
nFXSend = constrain((int)nFXSend, 0, 99);
this->m_nFXSendLevel[nTG][fx] = nFXSend;
this->m_nTGSendLevel[nTG][fx] = nFXSend;
this->mixing_console_->setSendLevel(nTG, fx, nFXSend / 99.0f);
this->m_UI.ParameterChanged();
}
void CMiniDexed::setMixingConsoleFXSendLevel(MixerOutput ret, MixerOutput fx, unsigned nFXSend)
{
assert (ret < (MixerOutput::kFXCount - 1));
assert (fx < MixerOutput::kFXCount);
if(ret == fx)
void CMiniDexed::setMixingConsoleFXSendLevel(MixerOutput fromFX, MixerOutput toFX, unsigned nFXSend)
{
this->mixing_console_->setFXSendLevel(ret, fx, 0.0f);
}
else
assert(fromFX < (MixerOutput::kFXCount - 1));
assert(toFX < MixerOutput::kFXCount);
if(fromFX != toFX)
{
this->mixing_console_->setFXSendLevel(ret, fx, nFXSend / 99.0f);
nFXSend = constrain((int)nFXSend, 0, 99);
this->m_nFXSendLevel[fromFX][toFX] = nFXSend;
this->mixing_console_->setFXSendLevel(fromFX, toFX, nFXSend / 99.0f);
}
}
@ -1432,6 +1430,12 @@ void CMiniDexed::SetParameter (TParameter Parameter, int nValue)
this->m_FXSpinLock.Release();
break;
case TParameter::ParameterFXBypass:
this->m_FXSpinLock.Acquire();
this->mixing_console_->bypass(!!nValue);
this->m_FXSpinLock.Release();
break;
#elif defined(PLATE_REVERB_ENABLE)
case TParameter::ParameterReverbEnable:
@ -1937,7 +1941,7 @@ bool CMiniDexed::DoSavePerformance (void)
#ifdef MIXING_CONSOLE_ENABLE
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx)
{
this->m_PerformanceConfig.SetFXSendLevel(nTG, static_cast<MixerOutput>(fx), this->m_nFXSendLevel[nTG][fx]);
this->m_PerformanceConfig.SetTGSendLevel(nTG, static_cast<MixerOutput>(fx), this->m_nTGSendLevel[nTG][fx]);
}
#endif
@ -2061,6 +2065,8 @@ bool CMiniDexed::DoSavePerformance (void)
this->m_PerformanceConfig.SetFXSendLevel(MixerOutput::FX_Reverberator, MixerOutput::FX_PlateReverb, this->m_nParameter[TParameter::ParameterFXReverberator_PlateReverbSend]);
this->m_PerformanceConfig.SetFXSendLevel(MixerOutput::FX_Reverberator, MixerOutput::MainOutput, this->m_nParameter[TParameter::ParameterFXReverberator_MainOutput]);
this->m_PerformanceConfig.SetFXBypass(this->mixing_console_->bypass());
#endif
if(m_bSaveAsDeault)
@ -2398,7 +2404,6 @@ void CMiniDexed::LoadPerformanceParameters(void)
{
for (unsigned nTG = 0; nTG < CConfig::ToneGenerators; nTG++)
{
BankSelectLSB (m_PerformanceConfig.GetBankNumber (nTG), nTG);
ProgramChange (m_PerformanceConfig.GetVoiceNumber (nTG), nTG);
SetMIDIChannel (m_PerformanceConfig.GetMIDIChannel (nTG), nTG);
@ -2427,7 +2432,7 @@ void CMiniDexed::LoadPerformanceParameters(void)
#ifdef MIXING_CONSOLE_ENABLE
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx)
{
this->setMixingConsoleSendLevel(nTG, static_cast<MixerOutput>(fx), this->m_PerformanceConfig.GetFXSendLevel(nTG, static_cast<MixerOutput>(fx)));
this->setMixingConsoleSendLevel(nTG, static_cast<MixerOutput>(fx), this->m_PerformanceConfig.GetTGSendLevel(nTG, static_cast<MixerOutput>(fx)));
}
#else
SetReverbSend (m_PerformanceConfig.GetReverbSend (nTG), nTG);
@ -2549,6 +2554,7 @@ void CMiniDexed::LoadPerformanceParameters(void)
this->SetParameter(TParameter::ParameterFXReverberator_PlateReverbSend, this->m_PerformanceConfig.GetFXSendLevel(MixerOutput::FX_Reverberator, MixerOutput::FX_PlateReverb));
this->SetParameter(TParameter::ParameterFXReverberator_MainOutput, this->m_PerformanceConfig.GetFXSendLevel(MixerOutput::FX_Reverberator, MixerOutput::MainOutput));
this->mixing_console_->bypass(this->m_PerformanceConfig.IsFXBypass());
#endif
}

@ -103,7 +103,7 @@ public:
#if defined(MIXING_CONSOLE_ENABLE)
unsigned getMixingConsoleSendLevel(unsigned nTG, MixerOutput fx) const;
void setMixingConsoleSendLevel(unsigned nTG, MixerOutput fx, unsigned nFXSend);
void setMixingConsoleFXSendLevel(MixerOutput ret, MixerOutput fx, unsigned nFXReturn);
void setMixingConsoleFXSendLevel(MixerOutput fromFX, MixerOutput toFX, unsigned nFXReturn);
#elif defined(PLATE_REVERB_ENABLE)
void SetReverbSend (unsigned nReverbSend, unsigned nTG); // 0 .. 127
#endif
@ -285,6 +285,9 @@ public:
ParameterFXReverberator_PlateReverbSend,
ParameterFXReverberator_MainOutput,
// Bypass FX
ParameterFXBypass,
#endif
// END FX global parameters definition
@ -427,7 +430,8 @@ private:
int m_nNoteShift[CConfig::ToneGenerators];
#ifdef MIXING_CONSOLE_ENABLE
unsigned m_nFXSendLevel[CConfig::ToneGenerators][MixerOutput::kFXCount];
unsigned m_nTGSendLevel[CConfig::ToneGenerators][MixerOutput::kFXCount];
unsigned m_nFXSendLevel[MixerOutput::kFXCount - 1][MixerOutput::kFXCount];
#elif defined(PLATE_REVERB_ENABLE)
unsigned m_nReverbSend[CConfig::ToneGenerators];
#endif

@ -45,6 +45,9 @@ public:
inline size_t getChannelNumber() const;
inline void bypass(bool bypass);
inline bool bypass() const;
// Send section
inline void setChannelLevel(size_t in, float32_t lvl);
inline void setPan(size_t in, float32_t pan);
@ -54,7 +57,7 @@ public:
inline void setInputSampleBuffer(size_t in, float32_t* samples);
// Return section
inline void setFXSendLevel(MixerOutput ret, MixerOutput dest, float32_t lvl);
inline void setFXSendLevel(MixerOutput fromFX, MixerOutput toFX, float32_t lvl);
inline void setReturnSample(MixerOutput ret, float32_t sampleL, float32_t sampleR);
// Get FX
@ -88,6 +91,8 @@ private:
const size_t BufferSize;
bool bypass_;
float32_t channel_level_[nb_inputs];
float32_t pan_[StereoChannels::kNumChannels + 1][nb_inputs];
bool swap_stereo_image_;
@ -334,6 +339,7 @@ template<size_t nb_inputs>
MixingConsole<nb_inputs>::MixingConsole(float32_t sampling_rate, size_t buffer_size, bool swapStereoImage) :
FXBase(sampling_rate),
BufferSize(buffer_size),
bypass_(true),
swap_stereo_image_(swapStereoImage),
m_nSamples(0)
{
@ -356,6 +362,8 @@ MixingConsole<nb_inputs>::MixingConsole(float32_t sampling_rate, size_t buffer_s
this->fx_[MixerOutput::FX_Reverberator] = this->reverberator_ = new FXUnit2<Reverberator>(sampling_rate);
this->fx_[MixerOutput::MainOutput] = this->dry_ = new FXUnit2<Dry>(sampling_rate);
this->bypass(false);
this->init();
}
@ -378,6 +386,31 @@ MixingConsole<nb_inputs>::~MixingConsole()
}
}
template<size_t nb_inputs>
void MixingConsole<nb_inputs>::bypass(bool bypass)
{
if(this->bypass_ != bypass)
{
this->bypass_ = bypass;
for(size_t fx = MixerOutput::FX_Tube; fx < MixerOutput::kFXCount; ++fx)
{
this->getFX(fx)->bypassFXProcess(bypass);
}
if(!bypass)
{
this->reset();
}
}
}
template<size_t nb_inputs>
bool MixingConsole<nb_inputs>::bypass() const
{
return this->bypass_;
}
template<size_t nb_inputs>
size_t MixingConsole<nb_inputs>::getChannelNumber() const
{
@ -443,18 +476,18 @@ void MixingConsole<nb_inputs>::setInputSampleBuffer(size_t in, float32_t* sample
// Return section
template<size_t nb_inputs>
void MixingConsole<nb_inputs>::setFXSendLevel(MixerOutput ret, MixerOutput dest, float32_t lvl)
void MixingConsole<nb_inputs>::setFXSendLevel(MixerOutput fromFX, MixerOutput toFX, float32_t lvl)
{
assert(ret < (MixerOutput::kFXCount - 1));
assert(dest < MixerOutput::kFXCount);
assert(fromFX < (MixerOutput::kFXCount - 1));
assert(toFX < MixerOutput::kFXCount);
if(ret == dest)
if(fromFX == toFX)
{
// An FX cannot feedback on itself
return;
}
this->setLevel(nb_inputs + ret, dest, lvl);
this->setLevel(nb_inputs + fromFX, toFX, lvl);
}
template<size_t nb_inputs>

@ -320,154 +320,154 @@ FXReverberatorTime=75
FXReverberatorDiffusion=75
FXReverberatorLP=80
FXSendLevel_0_x_Tube=0
FXSendLevel_0_x_Chorus=0
FXSendLevel_0_x_Flanger=0
FXSendLevel_0_x_Orbitone=0
FXSendLevel_0_x_Phaser=0
FXSendLevel_0_x_Delay=0
FXSendLevel_0_x_PlateReverb=0
FXSendLevel_0_x_Reverberator=0
FXSendLevel_0_x_MainOutput=0
FXSendLevel_1_x_Tube=0
FXSendLevel_1_x_Chorus=0
FXSendLevel_1_x_Flanger=0
FXSendLevel_1_x_Orbitone=0
FXSendLevel_1_x_Phaser=0
FXSendLevel_1_x_Delay=0
FXSendLevel_1_x_PlateReverb=0
FXSendLevel_1_x_Reverberator=0
FXSendLevel_1_x_MainOutput=0
FXSendLevel_2_x_Tube=0
FXSendLevel_2_x_Chorus=0
FXSendLevel_2_x_Flanger=0
FXSendLevel_2_x_Orbitone=0
FXSendLevel_2_x_Phaser=0
FXSendLevel_2_x_Delay=0
FXSendLevel_2_x_PlateReverb=0
FXSendLevel_2_x_Reverberator=0
FXSendLevel_2_x_MainOutput=0
FXSendLevel_3_x_Tube=0
FXSendLevel_3_x_Chorus=0
FXSendLevel_3_x_Flanger=0
FXSendLevel_3_x_Orbitone=0
FXSendLevel_3_x_Phaser=0
FXSendLevel_3_x_Delay=0
FXSendLevel_3_x_PlateReverb=0
FXSendLevel_3_x_Reverberator=0
FXSendLevel_3_x_MainOutput=0
FXSendLevel_4_x_Tube=0
FXSendLevel_4_x_Chorus=0
FXSendLevel_4_x_Flanger=0
FXSendLevel_4_x_Orbitone=0
FXSendLevel_4_x_Phaser=0
FXSendLevel_4_x_Delay=0
FXSendLevel_4_x_PlateReverb=0
FXSendLevel_4_x_Reverberator=0
FXSendLevel_4_x_MainOutput=0
FXSendLevel_5_x_Tube=0
FXSendLevel_5_x_Chorus=0
FXSendLevel_5_x_Flanger=0
FXSendLevel_5_x_Orbitone=0
FXSendLevel_5_x_Phaser=0
FXSendLevel_5_x_Delay=0
FXSendLevel_5_x_PlateReverb=0
FXSendLevel_5_x_Reverberator=0
FXSendLevel_5_x_MainOutput=0
FXSendLevel_6_x_Tube=0
FXSendLevel_6_x_Chorus=0
FXSendLevel_6_x_Flanger=0
FXSendLevel_6_x_Orbitone=0
FXSendLevel_6_x_Phaser=0
FXSendLevel_6_x_Delay=0
FXSendLevel_6_x_PlateReverb=0
FXSendLevel_6_x_Reverberator=0
FXSendLevel_6_x_MainOutput=0
FXSendLevel_7_x_Tube=0
FXSendLevel_7_x_Chorus=0
FXSendLevel_7_x_Flanger=0
FXSendLevel_7_x_Orbitone=0
FXSendLevel_7_x_Phaser=0
FXSendLevel_7_x_Delay=0
FXSendLevel_7_x_PlateReverb=0
FXSendLevel_7_x_Reverberator=0
FXSendLevel_7_x_MainOutput=0
FXReturnLevel_Tube_x_Chorus=0
FXReturnLevel_Tube_x_Flanger=0
FXReturnLevel_Tube_x_Orbitone=0
FXReturnLevel_Tube_x_Phaser=0
FXReturnLevel_Tube_x_Delay=0
FXReturnLevel_Tube_x_PlateReverb=0
FXReturnLevel_Tube_x_Reverberator=0
FXReturnLevel_Tube_x_MainOutput=0
FXReturnLevel_Chorus_x_Tube=0
FXReturnLevel_Chorus_x_Flanger=0
FXReturnLevel_Chorus_x_Orbitone=0
FXReturnLevel_Chorus_x_Phaser=0
FXReturnLevel_Chorus_x_Delay=0
FXReturnLevel_Chorus_x_PlateReverb=0
FXReturnLevel_Chorus_x_Reverberator=0
FXReturnLevel_Chorus_x_MainOutput=0
FXReturnLevel_Flanger_x_Tube=0
FXReturnLevel_Flanger_x_Chorus=0
FXReturnLevel_Flanger_x_Orbitone=0
FXReturnLevel_Flanger_x_Phaser=0
FXReturnLevel_Flanger_x_Delay=0
FXReturnLevel_Flanger_x_PlateReverb=0
FXReturnLevel_Flanger_x_Reverberator=0
FXReturnLevel_Flanger_x_MainOutput=0
FXReturnLevel_Orbitone_x_Tube=0
FXReturnLevel_Orbitone_x_Chorus=0
FXReturnLevel_Orbitone_x_Flanger=0
FXReturnLevel_Orbitone_x_Phaser=0
FXReturnLevel_Orbitone_x_Delay=0
FXReturnLevel_Orbitone_x_PlateReverb=0
FXReturnLevel_Orbitone_x_Reverberator=0
FXReturnLevel_Orbitone_x_MainOutput=0
FXReturnLevel_Phaser_x_Tube=0
FXReturnLevel_Phaser_x_Chorus=0
FXReturnLevel_Phaser_x_Flanger=0
FXReturnLevel_Phaser_x_Orbitone=0
FXReturnLevel_Phaser_x_Delay=0
FXReturnLevel_Phaser_x_PlateReverb=0
FXReturnLevel_Phaser_x_Reverberator=0
FXReturnLevel_Phaser_x_MainOutput=0
FXReturnLevel_Delay_x_Tube=0
FXReturnLevel_Delay_x_Chorus=0
FXReturnLevel_Delay_x_Flanger=0
FXReturnLevel_Delay_x_Orbitone=0
FXReturnLevel_Delay_x_Phaser=0
FXReturnLevel_Delay_x_PlateReverb=0
FXReturnLevel_Delay_x_Reverberator=0
FXReturnLevel_Delay_x_MainOutput=0
FXReturnLevel_PlateReverb_x_Tube=0
FXReturnLevel_PlateReverb_x_Chorus=0
FXReturnLevel_PlateReverb_x_Flanger=0
FXReturnLevel_PlateReverb_x_Orbitone=0
FXReturnLevel_PlateReverb_x_Phaser=0
FXReturnLevel_PlateReverb_x_Delay=0
FXReturnLevel_PlateReverb_x_Reverberator=0
FXReturnLevel_PlateReverb_x_MainOutput=0
FXReturnLevel_Reverberator_x_Tube=0
FXReturnLevel_Reverberator_x_Chorus=0
FXReturnLevel_Reverberator_x_Flanger=0
FXReturnLevel_Reverberator_x_Orbitone=0
FXReturnLevel_Reverberator_x_Phaser=0
FXReturnLevel_Reverberator_x_Delay=0
FXReturnLevel_Reverberator_x_PlateReverb=0
FXReturnLevel_Reverberator_x_MainOutput=0
FXSend_TG0_to_Tube=0
FXSend_TG0_to_Chorus=0
FXSend_TG0_to_Flanger=0
FXSend_TG0_to_Orbitone=0
FXSend_TG0_to_Phaser=0
FXSend_TG0_to_Delay=0
FXSend_TG0_to_PlateReverb=99
FXSend_TG0_to_Reverberator=0
FXSend_TG0_to_MainOutput=99
FXSend_TG1_to_Tube=0
FXSend_TG1_to_Chorus=0
FXSend_TG1_to_Flanger=0
FXSend_TG1_to_Orbitone=0
FXSend_TG1_to_Phaser=0
FXSend_TG1_to_Delay=0
FXSend_TG1_to_PlateReverb=0
FXSend_TG1_to_Reverberator=0
FXSend_TG1_to_MainOutput=0
FXSend_TG2_to_Tube=0
FXSend_TG2_to_Chorus=0
FXSend_TG2_to_Flanger=0
FXSend_TG2_to_Orbitone=0
FXSend_TG2_to_Phaser=0
FXSend_TG2_to_Delay=0
FXSend_TG2_to_PlateReverb=0
FXSend_TG2_to_Reverberator=0
FXSend_TG2_to_MainOutput=0
FXSend_TG3_to_Tube=0
FXSend_TG3_to_Chorus=0
FXSend_TG3_to_Flanger=0
FXSend_TG3_to_Orbitone=0
FXSend_TG3_to_Phaser=0
FXSend_TG3_to_Delay=0
FXSend_TG3_to_PlateReverb=0
FXSend_TG3_to_Reverberator=0
FXSend_TG3_to_MainOutput=0
FXSend_TG4_to_Tube=0
FXSend_TG4_to_Chorus=0
FXSend_TG4_to_Flanger=0
FXSend_TG4_to_Orbitone=0
FXSend_TG4_to_Phaser=0
FXSend_TG4_to_Delay=0
FXSend_TG4_to_PlateReverb=0
FXSend_TG4_to_Reverberator=0
FXSend_TG4_to_MainOutput=0
FXSend_TG5_to_Tube=0
FXSend_TG5_to_Chorus=0
FXSend_TG5_to_Flanger=0
FXSend_TG5_to_Orbitone=0
FXSend_TG5_to_Phaser=0
FXSend_TG5_to_Delay=0
FXSend_TG5_to_PlateReverb=0
FXSend_TG5_to_Reverberator=0
FXSend_TG5_to_MainOutput=0
FXSend_TG6_to_Tube=0
FXSend_TG6_to_Chorus=0
FXSend_TG6_to_Flanger=0
FXSend_TG6_to_Orbitone=0
FXSend_TG6_to_Phaser=0
FXSend_TG6_to_Delay=0
FXSend_TG6_to_PlateReverb=0
FXSend_TG6_to_Reverberator=0
FXSend_TG6_to_MainOutput=0
FXSend_TG7_to_Tube=0
FXSend_TG7_to_Chorus=0
FXSend_TG7_to_Flanger=0
FXSend_TG7_to_Orbitone=0
FXSend_TG7_to_Phaser=0
FXSend_TG7_to_Delay=0
FXSend_TG7_to_PlateReverb=0
FXSend_TG7_to_Reverberator=0
FXSend_TG7_to_MainOutput=0
FXSend_Tube_to_Chorus=0
FXSend_Tube_to_Flanger=0
FXSend_Tube_to_Orbitone=0
FXSend_Tube_to_Phaser=0
FXSend_Tube_to_Delay=0
FXSend_Tube_to_PlateReverb=0
FXSend_Tube_to_Reverberator=0
FXSend_Tube_to_MainOutput=0
FXSend_Chorus_to_Tube=0
FXSend_Chorus_to_Flanger=0
FXSend_Chorus_to_Orbitone=0
FXSend_Chorus_to_Phaser=0
FXSend_Chorus_to_Delay=0
FXSend_Chorus_to_PlateReverb=0
FXSend_Chorus_to_Reverberator=0
FXSend_Chorus_to_MainOutput=0
FXSend_Flanger_to_Tube=0
FXSend_Flanger_to_Chorus=0
FXSend_Flanger_to_Orbitone=0
FXSend_Flanger_to_Phaser=0
FXSend_Flanger_to_Delay=0
FXSend_Flanger_to_PlateReverb=0
FXSend_Flanger_to_Reverberator=0
FXSend_Flanger_to_MainOutput=0
FXSend_Orbitone_to_Tube=0
FXSend_Orbitone_to_Chorus=0
FXSend_Orbitone_to_Flanger=0
FXSend_Orbitone_to_Phaser=0
FXSend_Orbitone_to_Delay=0
FXSend_Orbitone_to_PlateReverb=0
FXSend_Orbitone_to_Reverberator=0
FXSend_Orbitone_to_MainOutput=0
FXSend_Phaser_to_Tube=0
FXSend_Phaser_to_Chorus=0
FXSend_Phaser_to_Flanger=0
FXSend_Phaser_to_Orbitone=0
FXSend_Phaser_to_Delay=0
FXSend_Phaser_to_PlateReverb=0
FXSend_Phaser_to_Reverberator=0
FXSend_Phaser_to_MainOutput=0
FXSend_Delay_to_Tube=0
FXSend_Delay_to_Chorus=0
FXSend_Delay_to_Flanger=0
FXSend_Delay_to_Orbitone=0
FXSend_Delay_to_Phaser=0
FXSend_Delay_to_PlateReverb=0
FXSend_Delay_to_Reverberator=0
FXSend_Delay_to_MainOutput=0
FXSend_PlateReverb_to_Tube=0
FXSend_PlateReverb_to_Chorus=0
FXSend_PlateReverb_to_Flanger=0
FXSend_PlateReverb_to_Orbitone=0
FXSend_PlateReverb_to_Phaser=0
FXSend_PlateReverb_to_Delay=0
FXSend_PlateReverb_to_Reverberator=0
FXSend_PlateReverb_to_MainOutput=99
FXSend_Reverberator_to_Tube=0
FXSend_Reverberator_to_Chorus=0
FXSend_Reverberator_to_Flanger=0
FXSend_Reverberator_to_Orbitone=0
FXSend_Reverberator_to_Phaser=0
FXSend_Reverberator_to_Delay=0
FXSend_Reverberator_to_PlateReverb=0
FXSend_Reverberator_to_MainOutput=0

@ -100,8 +100,10 @@ bool CPerformanceConfig::Load (void)
PropertyName.Format ("NoteShift%u", nTG+1);
m_nNoteShift[nTG] = m_Properties.GetSignedNumber (PropertyName, 0);
#if defined(PLATE_REVERB_ENABLE)
PropertyName.Format ("ReverbSend%u", nTG+1);
m_nReverbSend[nTG] = m_Properties.GetNumber (PropertyName, 50);
#endif
PropertyName.Format ("PitchBendRange%u", nTG+1);
m_nPitchBendRange[nTG] = m_Properties.GetNumber (PropertyName, 2);
@ -198,31 +200,42 @@ bool CPerformanceConfig::Load (void)
this->m_nFXReverberatorDiffusion = this->m_Properties.GetNumber("FXReverberatorDiffusion", 30);
this->m_nFXReverberatorLP = this->m_Properties.GetNumber("FXReverberatorLP", 99);
for(unsigned in = 0; in < CConfig::ToneGenerators; ++in)
bool revUsed = false;
for(unsigned nTG = 0; nTG < CConfig::ToneGenerators; ++nTG)
{
for(unsigned fx = 0; fx < MixerOutput::kFXCount; ++fx)
CString reverbSendProp;
reverbSendProp.Format ("ReverbSend%u", nTG + 1);
unsigned reverbSend = m_Properties.GetNumber(reverbSendProp, 50);
revUsed |= (reverbSend > 0);
for(unsigned toFX = 0; toFX < MixerOutput::kFXCount; ++toFX)
{
std::ostringstream oss("FXSendLevel_");
oss << in << "_x_" << toString(static_cast<MixerOutput>(fx));
CString propertyName;
propertyName.Format("FXSend_TG%u_to_%s", nTG + 1, toString(static_cast<MixerOutput>(toFX)).c_str());
unsigned defaultLevel = 0;
if(fx == MixerOutput::MainOutput) defaultLevel = 50;
else if(fx == MixerOutput::FX_PlateReverb) defaultLevel = 50;
this->m_nFXSendLevel[in][fx] = this->m_Properties.GetNumber(oss.str().c_str(), defaultLevel);
if(nTG == 0)
{
if(toFX == MixerOutput::FX_PlateReverb) defaultLevel = reverbSend;
else if(toFX == MixerOutput::MainOutput) defaultLevel = 99 - reverbSend;
}
this->m_nTGSendLevel[nTG][toFX] = this->m_Properties.GetNumber(propertyName, defaultLevel);
}
}
size_t end = MixerOutput::kFXCount - 1;
for(size_t ret = 0; ret < end; ++ret)
for(size_t fromFX = 0; fromFX < end; ++fromFX)
{
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx)
for(size_t toFX = 0; toFX < MixerOutput::kFXCount; ++toFX)
{
std::ostringstream oss("FXReturnLevel_");
oss << toString(static_cast<MixerOutput>(ret)) << "_x_" << toString(static_cast<MixerOutput>(fx));
CString propertyName;
propertyName.Format("FXSend_%s_to_%s", toString(static_cast<MixerOutput>(fromFX)).c_str(), toString(static_cast<MixerOutput>(toFX)).c_str());
unsigned defaultLevel = 0;
if(ret == MixerOutput::FX_PlateReverb && fx == MixerOutput::MainOutput) defaultLevel = 50;
this->m_nFXReturnLevel[ret][fx] = this->m_Properties.GetNumber(oss.str().c_str(), defaultLevel);
if(fromFX == MixerOutput::FX_PlateReverb && toFX == MixerOutput::MainOutput) defaultLevel = revUsed ? 99 : 0;
this->m_nFXSendLevel[fromFX][toFX] = this->m_Properties.GetNumber(propertyName, defaultLevel);
}
}
this->m_bFXBypass = this->m_Properties.GetNumber("FXBypass", 0);
#endif
return bResult;
@ -282,8 +295,10 @@ bool CPerformanceConfig::Save (void)
PropertyName.Format ("NoteShift%u", nTG+1);
m_Properties.SetSignedNumber (PropertyName, m_nNoteShift[nTG]);
#if defined(PLATE_REVERB_ENABLE)
PropertyName.Format ("ReverbSend%u", nTG+1);
m_Properties.SetNumber (PropertyName, m_nReverbSend[nTG]);
#endif
PropertyName.Format ("PitchBendRange%u", nTG+1);
m_Properties.SetNumber (PropertyName, m_nPitchBendRange[nTG]);
@ -335,6 +350,7 @@ bool CPerformanceConfig::Save (void)
m_Properties.SetNumber ("CompressorEnable", m_bCompressorEnable ? 1 : 0);
#if defined(PLATE_REVERB_ENABLE) || defined(MIXING_CONSOLE_ENABLE)
m_Properties.SetNumber ("ReverbEnable", m_bReverbEnable ? 1 : 0);
m_Properties.SetNumber ("ReverbSize", m_nReverbSize);
m_Properties.SetNumber ("ReverbHighDamp", m_nReverbHighDamp);
@ -342,8 +358,9 @@ bool CPerformanceConfig::Save (void)
m_Properties.SetNumber ("ReverbLowPass", m_nReverbLowPass);
m_Properties.SetNumber ("ReverbDiffusion", m_nReverbDiffusion);
m_Properties.SetNumber ("ReverbLevel", m_nReverbLevel);
#endif
#ifdef MIXING_CONSOLE_ENABLE
#if defined(MIXING_CONSOLE_ENABLE)
this->m_Properties.SetNumber("FXTubeEnable", this->m_bFXTubeEnable ? 1 : 0);
this->m_Properties.SetNumber("FXTubeOverdrive", this->m_nFXTubeOverdrive);
@ -379,26 +396,28 @@ bool CPerformanceConfig::Save (void)
this->m_Properties.SetNumber("FXReverberatorDiffusion", this->m_nFXReverberatorDiffusion);
this->m_Properties.SetNumber("FXReverberatorLP", this->m_nFXReverberatorLP);
for(unsigned in = 0; in < CConfig::ToneGenerators; ++in)
for(unsigned nTG = 0; nTG < CConfig::ToneGenerators; nTG++)
{
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx)
for(size_t toFX = 0; toFX < MixerOutput::kFXCount; ++toFX)
{
std::ostringstream oss("FXSendLevel_");
oss << in << "_x_" << toString(static_cast<MixerOutput>(fx));
this->m_Properties.SetNumber(oss.str().c_str(), this->m_nFXSendLevel[in][fx]);
CString propertyName;
propertyName.Format("FXSend_TG%u_to_%s", nTG + 1, toString(static_cast<MixerOutput>(toFX)).c_str());
this->m_Properties.SetNumber(propertyName, this->m_nTGSendLevel[nTG][toFX]);
}
}
size_t end = MixerOutput::kFXCount - 1;
for(size_t ret = 0; ret < end; ++ret)
for(size_t fromFX = 0; fromFX < end; ++fromFX)
{
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx)
for(size_t toFX = 0; toFX < MixerOutput::kFXCount; ++toFX)
{
std::ostringstream oss("FXReturnLevel_");
oss << toString(static_cast<MixerOutput>(ret)) << "_x_" << toString(static_cast<MixerOutput>(fx));
this->m_Properties.SetNumber(oss.str().c_str(), this->m_nFXReturnLevel[ret][fx]);
CString propertyName;
propertyName.Format("FXSend_%s_to_%s", toString(static_cast<MixerOutput>(fromFX)).c_str(), toString(static_cast<MixerOutput>(toFX)).c_str());
this->m_Properties.SetNumber(propertyName, this->m_nFXSendLevel[fromFX][toFX]);
}
}
this->m_Properties.SetNumber("FXBypass", this->m_bFXBypass ? 1 : 0);
#endif
return m_Properties.Save ();
@ -470,11 +489,13 @@ int CPerformanceConfig::GetNoteShift (unsigned nTG) const
return m_nNoteShift[nTG];
}
#if defined(PLATE_REVERB_ENABLE)
unsigned CPerformanceConfig::GetReverbSend (unsigned nTG) const
{
assert (nTG < CConfig::ToneGenerators);
return m_nReverbSend[nTG];
}
#endif
void CPerformanceConfig::SetBankNumber (unsigned nValue, unsigned nTG)
{
@ -542,11 +563,13 @@ void CPerformanceConfig::SetNoteShift (int nValue, unsigned nTG)
m_nNoteShift[nTG] = nValue;
}
#if defined(PLATE_REVERB_ENABLE)
void CPerformanceConfig::SetReverbSend (unsigned nValue, unsigned nTG)
{
assert (nTG < CConfig::ToneGenerators);
m_nReverbSend[nTG] = nValue;
}
#endif
bool CPerformanceConfig::GetCompressorEnable (void) const
{
@ -1190,18 +1213,18 @@ unsigned CPerformanceConfig::GetFXReverberatorLP(void) const
return this->m_nFXReverberatorLP;
}
unsigned CPerformanceConfig::GetFXSendLevel(unsigned in, MixerOutput fx) const
unsigned CPerformanceConfig::GetTGSendLevel(unsigned in, MixerOutput fx) const
{
assert(in < CConfig::ToneGenerators);
assert(fx < MixerOutput::kFXCount);
return this->m_nFXSendLevel[in][fx];
return this->m_nTGSendLevel[in][fx];
}
unsigned CPerformanceConfig::GetFXReturnLevel(MixerOutput ret, MixerOutput fx) const
unsigned CPerformanceConfig::GetFXSendLevel(MixerOutput fromFX, MixerOutput toFX) const
{
assert(ret < (MixerOutput::kFXCount - 1));
assert(fx < MixerOutput::kFXCount);
return (ret == fx) ? 0 : this->m_nFXReturnLevel[ret][fx];
assert(fromFX < (MixerOutput::kFXCount - 1));
assert(toFX < MixerOutput::kFXCount);
return (fromFX == toFX) ? 0 : this->m_nFXSendLevel[fromFX][toFX];
}
void CPerformanceConfig::SetFXTubeEnable(bool bValue)
@ -1344,18 +1367,28 @@ void CPerformanceConfig::SetFXReverberatorLP(unsigned nValue)
this->m_nFXReverberatorLP = nValue;
}
void CPerformanceConfig::SetFXSendLevel(unsigned in, MixerOutput fx, unsigned nValue)
void CPerformanceConfig::SetTGSendLevel(unsigned in, MixerOutput fx, unsigned nValue)
{
assert(in < CConfig::ToneGenerators);
assert(fx < MixerOutput::kFXCount);
this->m_nFXSendLevel[in][fx] = nValue;
this->m_nTGSendLevel[in][fx] = nValue;
}
void CPerformanceConfig::SetFXReturnLevel(MixerOutput ret, MixerOutput fx, unsigned nValue)
void CPerformanceConfig::SetFXSendLevel(MixerOutput fromFX, MixerOutput toFX, unsigned nValue)
{
assert(ret < (MixerOutput::kFXCount - 1));
assert(fx < MixerOutput::kFXCount);
this->m_nFXReturnLevel[ret][fx] = (ret == fx) ? 0 : nValue;
assert(fromFX < (MixerOutput::kFXCount - 1));
assert(toFX < MixerOutput::kFXCount);
this->m_nFXSendLevel[fromFX][toFX] = (fromFX == toFX) ? 0 : nValue;
}
void CPerformanceConfig::SetFXBypass(bool bypass)
{
this->m_bFXBypass = bypass;
}
bool CPerformanceConfig::IsFXBypass() const
{
return this->m_bFXBypass;
}
#endif

@ -52,7 +52,9 @@ public:
unsigned GetNoteLimitLow (unsigned nTG) const; // 0 .. 127
unsigned GetNoteLimitHigh (unsigned nTG) const; // 0 .. 127
int GetNoteShift (unsigned nTG) const; // -24 .. 24
#if defined(PLATE_REVERB_ENABLE)
unsigned GetReverbSend (unsigned nTG) const; // 0 .. 127
#endif
unsigned GetPitchBendRange (unsigned nTG) const; // 0 .. 12
unsigned GetPitchBendStep (unsigned nTG) const; // 0 .. 12
unsigned GetPortamentoMode (unsigned nTG) const; // 0 .. 1
@ -80,7 +82,9 @@ public:
void SetNoteLimitLow (unsigned nValue, unsigned nTG);
void SetNoteLimitHigh (unsigned nValue, unsigned nTG);
void SetNoteShift (int nValue, unsigned nTG);
#if defined(PLATE_REVERB_ENABLE)
void SetReverbSend (unsigned nValue, unsigned nTG);
#endif
void SetPitchBendRange (unsigned nValue, unsigned nTG);
void SetPitchBendStep (unsigned nValue, unsigned nTG);
void SetPortamentoMode (unsigned nValue, unsigned nTG);
@ -153,8 +157,8 @@ public:
unsigned GetFXReverberatorTime(void) const;
unsigned GetFXReverberatorDiffusion(void) const;
unsigned GetFXReverberatorLP(void) const;
unsigned GetFXSendLevel(unsigned in, MixerOutput fx) const;
unsigned GetFXReturnLevel(MixerOutput ret, MixerOutput fx) const;
unsigned GetTGSendLevel(unsigned in, MixerOutput fx) const;
unsigned GetFXSendLevel(MixerOutput ret, MixerOutput fx) const;
void SetFXTubeEnable(bool bValue);
void SetFXTubeOverdrive(unsigned nValue);
@ -191,8 +195,11 @@ public:
void SetFXReverberatorDiffusion(unsigned nValue);
void SetFXReverberatorLP(unsigned nValue);
void SetFXSendLevel(unsigned in, MixerOutput fx, unsigned nValue);
void SetFXReturnLevel(MixerOutput ret, MixerOutput fx, unsigned nValue);
void SetTGSendLevel(unsigned in, MixerOutput fx, unsigned nValue);
void SetFXSendLevel(MixerOutput fromFX, MixerOutput toFX, unsigned nValue);
void SetFXBypass(bool bypass);
bool IsFXBypass() const;
#endif
bool VoiceDataFilled(unsigned nTG);
@ -224,7 +231,9 @@ private:
unsigned m_nNoteLimitLow[CConfig::ToneGenerators];
unsigned m_nNoteLimitHigh[CConfig::ToneGenerators];
int m_nNoteShift[CConfig::ToneGenerators];
#if defined(PLATE_REVERB_ENABLE)
int m_nReverbSend[CConfig::ToneGenerators];
#endif
unsigned m_nPitchBendRange[CConfig::ToneGenerators];
unsigned m_nPitchBendStep[CConfig::ToneGenerators];
unsigned m_nPortamentoMode[CConfig::ToneGenerators];
@ -262,7 +271,7 @@ private:
unsigned m_nReverbDiffusion;
unsigned m_nReverbLevel;
#ifdef MIXING_CONSOLE_ENABLE
#if defined(MIXING_CONSOLE_ENABLE)
bool m_bFXTubeEnable;
unsigned m_nFXTubeWet;
unsigned m_nFXTubeOverdrive;
@ -299,8 +308,10 @@ private:
unsigned m_nFXReverberatorDiffusion;
unsigned m_nFXReverberatorLP;
unsigned m_nFXSendLevel[CConfig::ToneGenerators][MixerOutput::kFXCount];
unsigned m_nFXReturnLevel[MixerOutput::kFXCount - 1][MixerOutput::kFXCount];
unsigned m_nTGSendLevel[CConfig::ToneGenerators + MixerOutput::kFXCount - 1][MixerOutput::kFXCount];
unsigned m_nFXSendLevel[MixerOutput::kFXCount - 1][MixerOutput::kFXCount];
bool m_bFXBypass;
#endif
};

@ -99,7 +99,7 @@ const CUIMenu::TMenuItem CUIMenu::s_TGMenu[] =
const CUIMenu::TMenuItem CUIMenu::s_EffectsMenu[] =
{
{"Compress",CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterCompressorEnable},
{"Compress",CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterCompressorEnable},
#if defined(MIXING_CONSOLE_ENABLE)
{"Tube", CUIMenu::MenuHandler, CUIMenu::s_FXTube},
{"Chorus", CUIMenu::MenuHandler, CUIMenu::s_FXChorus},
@ -113,6 +113,8 @@ const CUIMenu::TMenuItem CUIMenu::s_EffectsMenu[] =
#elif defined(MIXING_CONSOLE_ENABLE)
{"Plt Rvb", CUIMenu::MenuHandler, CUIMenu::s_FXPlateReverb},
{"Rvbrtor", CUIMenu::MenuHandler, CUIMenu::s_FXReverberator},
{"MainOut", CUIMenu::MenuHandler, CUIMenu::s_FXMainOutputLevels},
{"Bypass", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXBypass},
#endif
{0}
};
@ -251,15 +253,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXReverberator[] =
const CUIMenu::TMenuItem CUIMenu::s_FXTubeLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
#endif
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_TubeSend},
{"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_TubeSend},
@ -286,15 +288,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXTubeSend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXChorusLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ChorusSend},
{"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_ChorusSend},
@ -321,15 +323,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXChorusSend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXFlangerLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_FlangerSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_FlangerSend},
@ -356,15 +358,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXFlangerSend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXOrbitoneLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_OrbitoneSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_OrbitoneSend},
@ -391,15 +393,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXOrbitoneSend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXPhaserLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PhaserSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_PhaserSend},
@ -426,15 +428,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXPhaserSend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXDelayLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_DelaySend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_DelaySend},
@ -461,15 +463,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXDelaySend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXPlateReverbLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PlateReverbSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_PlateReverbSend},
@ -496,15 +498,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXPlateReverbSend[] =
const CUIMenu::TMenuItem CUIMenu::s_FXReverberatorLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 0},
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
#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},
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ReverberatorSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_ReverberatorSend},
@ -529,6 +531,29 @@ const CUIMenu::TMenuItem CUIMenu::s_FXReverberatorSend[] =
{0}
};
const CUIMenu::TMenuItem CUIMenu::s_FXMainOutputLevels[] =
{
{"TG1 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
#if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXMainOutput},
#endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_MainOutput},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_MainOutput},
{"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_MainOutput},
{"Orb >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXOrbitone_MainOutput},
{"PhR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPhaser_MainOutput},
{"Dly >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXDelay_MainOutput},
{"Plt >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXPlateReverb_MainOutput},
{"Rev >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXReverberator_MainOutput},
{0}
};
#endif
// inserting menu items before "OP1" affect OPShortcutHandler()
@ -660,85 +685,86 @@ const CUIMenu::TParameter CUIMenu::s_GlobalParameter[CMiniDexed::TParameter::Par
{0, 99, 1}, // ParameterFXReverberatorLP
// FX > Tube Return parameters
{0, 99, 1}, // ParameterFXTube_ChorusReturn,
{0, 99, 1}, // ParameterFXTube_FlangerReturn,
{0, 99, 1}, // ParameterFXTube_OrbitoneReturn,
{0, 99, 1}, // ParameterFXTube_PhaserReturn,
{0, 99, 1}, // ParameterFXTube_DelayReturn,
{0, 99, 1}, // ParameterFXTube_PlateReverbReturn,
{0, 99, 1}, // ParameterFXTube_ReverberatorReturn,
{0, 99, 1}, // ParameterFXTube_MainOutput,
{0, 99, 1}, // ParameterFXTube_ChorusSend
{0, 99, 1}, // ParameterFXTube_FlangerSend
{0, 99, 1}, // ParameterFXTube_OrbitoneSend
{0, 99, 1}, // ParameterFXTube_PhaserSend
{0, 99, 1}, // ParameterFXTube_DelaySend
{0, 99, 1}, // ParameterFXTube_PlateReverbSend
{0, 99, 1}, // ParameterFXTube_ReverberatorSend
{0, 99, 1}, // ParameterFXTube_MainOutput
// FX > Chorus Return parameters
{0, 99, 1}, // ParameterFXChorus_TubeReturn,
{0, 99, 1}, // ParameterFXChorus_FlangerReturn,
{0, 99, 1}, // ParameterFXChorus_OrbitoneReturn,
{0, 99, 1}, // ParameterFXChorus_PhaserReturn,
{0, 99, 1}, // ParameterFXChorus_DelayReturn,
{0, 99, 1}, // ParameterFXChorus_PlateReverbReturn,
{0, 99, 1}, // ParameterFXChorus_ReverberatorReturn,
{0, 99, 1}, // ParameterFXChorus_MainOutput,
{0, 99, 1}, // ParameterFXChorus_TubeSend
{0, 99, 1}, // ParameterFXChorus_FlangerSend
{0, 99, 1}, // ParameterFXChorus_OrbitoneSend
{0, 99, 1}, // ParameterFXChorus_PhaserSend
{0, 99, 1}, // ParameterFXChorus_DelaySend
{0, 99, 1}, // ParameterFXChorus_PlateReverbSend
{0, 99, 1}, // ParameterFXChorus_ReverberatorSend
{0, 99, 1}, // ParameterFXChorus_MainOutput
// FX > Flanger Return parameters
{0, 99, 1}, // ParameterFXFlanger_TubeReturn,
{0, 99, 1}, // ParameterFXFlanger_ChorusReturn,
{0, 99, 1}, // ParameterFXFlanger_OrbitoneReturn,
{0, 99, 1}, // ParameterFXFlanger_PhaserReturn,
{0, 99, 1}, // ParameterFXFlanger_DelayReturn,
{0, 99, 1}, // ParameterFXFlanger_PlateReverbReturn,
{0, 99, 1}, // ParameterFXFlanger_ReverberatorReturn,
{0, 99, 1}, // ParameterFXFlanger_MainOutput,
{0, 99, 1}, // ParameterFXFlanger_TubeSend
{0, 99, 1}, // ParameterFXFlanger_ChorusSend
{0, 99, 1}, // ParameterFXFlanger_OrbitoneSend
{0, 99, 1}, // ParameterFXFlanger_PhaserSend
{0, 99, 1}, // ParameterFXFlanger_DelaySend
{0, 99, 1}, // ParameterFXFlanger_PlateReverbSend
{0, 99, 1}, // ParameterFXFlanger_ReverberatorSend
{0, 99, 1}, // ParameterFXFlanger_MainOutput
// FX > Orbitone Return parameters
{0, 99, 1}, // ParameterFXOrbitone_TubeReturn,
{0, 99, 1}, // ParameterFXOrbitone_ChorusReturn,
{0, 99, 1}, // ParameterFXOrbitone_FlangerReturn,
{0, 99, 1}, // ParameterFXOrbitone_PhaserReturn,
{0, 99, 1}, // ParameterFXOrbitone_DelayReturn,
{0, 99, 1}, // ParameterFXOrbitone_PlateReverbReturn,
{0, 99, 1}, // ParameterFXOrbitone_ReverberatorReturn,
{0, 99, 1}, // ParameterFXOrbitone_MainOutput,
{0, 99, 1}, // ParameterFXOrbitone_TubeSend
{0, 99, 1}, // ParameterFXOrbitone_ChorusSend
{0, 99, 1}, // ParameterFXOrbitone_FlangerSend
{0, 99, 1}, // ParameterFXOrbitone_PhaserSend
{0, 99, 1}, // ParameterFXOrbitone_DelaySend
{0, 99, 1}, // ParameterFXOrbitone_PlateReverbSend
{0, 99, 1}, // ParameterFXOrbitone_ReverberatorSend
{0, 99, 1}, // ParameterFXOrbitone_MainOutput
// FX > Phaser Return parameters
{0, 99, 1}, // ParameterFXPhaser_TubeReturn,
{0, 99, 1}, // ParameterFXPhaser_ChorusReturn,
{0, 99, 1}, // ParameterFXPhaser_FlangerReturn,
{0, 99, 1}, // ParameterFXPhaser_OrbitoneReturn,
{0, 99, 1}, // ParameterFXPhaser_DelayReturn,
{0, 99, 1}, // ParameterFXPhaser_PlateReverbReturn,
{0, 99, 1}, // ParameterFXPhaser_ReverberatorReturn,
{0, 99, 1}, // ParameterFXPhaser_MainOutput,
{0, 99, 1}, // ParameterFXPhaser_TubeSend
{0, 99, 1}, // ParameterFXPhaser_ChorusSend
{0, 99, 1}, // ParameterFXPhaser_FlangerSend
{0, 99, 1}, // ParameterFXPhaser_OrbitoneSend
{0, 99, 1}, // ParameterFXPhaser_DelaySend
{0, 99, 1}, // ParameterFXPhaser_PlateReverbSend
{0, 99, 1}, // ParameterFXPhaser_ReverberatorSend
{0, 99, 1}, // ParameterFXPhaser_MainOutput
// FX > Delay Return parameters
{0, 99, 1}, // ParameterFXDelay_TubeReturn,
{0, 99, 1}, // ParameterFXDelay_ChorusReturn,
{0, 99, 1}, // ParameterFXDelay_FlangerReturn,
{0, 99, 1}, // ParameterFXDelay_OrbitoneReturn,
{0, 99, 1}, // ParameterFXDelay_PhaserReturn,
{0, 99, 1}, // ParameterFXDelay_PlateReverbReturn,
{0, 99, 1}, // ParameterFXDelay_ReverberatorReturn,
{0, 99, 1}, // ParameterFXDelay_MainOutput,
{0, 99, 1}, // ParameterFXDelay_TubeSend
{0, 99, 1}, // ParameterFXDelay_ChorusSend
{0, 99, 1}, // ParameterFXDelay_FlangerSend
{0, 99, 1}, // ParameterFXDelay_OrbitoneSend
{0, 99, 1}, // ParameterFXDelay_PhaserSend
{0, 99, 1}, // ParameterFXDelay_PlateReverbSend
{0, 99, 1}, // ParameterFXDelay_ReverberatorSend
{0, 99, 1}, // ParameterFXDelay_MainOutput
// FX > Reverb Return parameters
{0, 99, 1}, // ParameterFXReverb_TubeReturn,
{0, 99, 1}, // ParameterFXReverb_ChorusReturn,
{0, 99, 1}, // ParameterFXReverb_FlangerReturn,
{0, 99, 1}, // ParameterFXReverb_OrbitoneReturn,
{0, 99, 1}, // ParameterFXReverb_PhaserReturn,
{0, 99, 1}, // ParameterFXReverb_DelayReturn,
{0, 99, 1}, // ParameterFXReverb_ReverberatorReturn,
{0, 99, 1}, // ParameterFXReverb_MainOutput,
{0, 99, 1}, // ParameterFXPlateReverb_TubeSend
{0, 99, 1}, // ParameterFXPlateReverb_ChorusSend
{0, 99, 1}, // ParameterFXPlateReverb_FlangerSend
{0, 99, 1}, // ParameterFXPlateReverb_OrbitoneSend
{0, 99, 1}, // ParameterFXPlateReverb_PhaserSend
{0, 99, 1}, // ParameterFXPlateReverb_DelaySend
{0, 99, 1}, // ParameterFXPlateReverb_ReverberatorSend
{0, 99, 1}, // ParameterFXPlateReverb_MainOutput
// FX > Reverberator Return parameters
{0, 99, 1}, // ParameterFXReverberator_TubeReturn,
{0, 99, 1}, // ParameterFXReverberator_ChorusReturn,
{0, 99, 1}, // ParameterFXReverberator_FlangerReturn,
{0, 99, 1}, // ParameterFXReverberator_OrbitoneReturn,
{0, 99, 1}, // ParameterFXReverberator_PhaserReturn,
{0, 99, 1}, // ParameterFXReverberator_DelayReturn,
{0, 99, 1}, // ParameterFXReverberator_PlateReverbReturn,
{0, 99, 1}, // ParameterFXReverberator_MainOutput,
{0, 99, 1}, // ParameterFXReverberator_TubeSend
{0, 99, 1}, // ParameterFXReverberator_ChorusSend
{0, 99, 1}, // ParameterFXReverberator_FlangerSend
{0, 99, 1}, // ParameterFXReverberator_OrbitoneSend
{0, 99, 1}, // ParameterFXReverberator_PhaserSend
{0, 99, 1}, // ParameterFXReverberator_DelaySend
{0, 99, 1}, // ParameterFXReverberator_PlateReverbSend
{0, 99, 1}, // ParameterFXReverberator_MainOutput
{0, 1, 1, ToOnOff} // ParameterFXBypass
#endif
// END FX global parameters mapping definition
};
@ -784,15 +810,16 @@ const CUIMenu::TParameter CUIMenu::s_TGParameter[CMiniDexed::TTGParameter::TGPar
#if defined(MIXING_CONSOLE_ENABLE)
,
{0, 99, 1}, // TGParameterMixingSendFXTube,
{0, 99, 1}, // TGParameterMixingSendFXChorus,
{0, 99, 1}, // TGParameterMixingSendFXFlanger,
{0, 99, 1}, // TGParameterMixingSendFXOrbittone,
{0, 99, 1}, // TGParameterMixingSendFXPhaser,
{0, 99, 1}, // TGParameterMixingSendFXDelay,
{0, 99, 1}, // TGParameterMixingSendFXPlateReverb,
{0, 99, 1}, // TGParameterMixingSendFXReverberator,
{0, 99, 1} // TGParameterMixingSendFXMainOutput,
{0, 99, 1}, // TGParameterMixingSendFXTube
{0, 99, 1}, // TGParameterMixingSendFXChorus
{0, 99, 1}, // TGParameterMixingSendFXFlanger
{0, 99, 1}, // TGParameterMixingSendFXOrbittone
{0, 99, 1}, // TGParameterMixingSendFXPhaser
{0, 99, 1}, // TGParameterMixingSendFXDelay
{0, 99, 1}, // TGParameterMixingSendFXPlateReverb
{0, 99, 1}, // TGParameterMixingSendFXReverberator
{0, 99, 1} // TGParameterMixingSendFXMainOutput
#endif // MIXING_CONSOLE_ENABLE
};
@ -1252,7 +1279,7 @@ 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;
unsigned nTG = pUIMenu->m_nCurrentMenuItem;
CMiniDexed::TTGParameter Param = (CMiniDexed::TTGParameter) pUIMenu->m_nCurrentParameter;

@ -63,9 +63,6 @@ private:
TMenuHandler *Handler;
const TMenuItem *MenuItem;
unsigned Parameter;
#if defined(MIXING_CONSOLE_ENABLE)
unsigned Parameter2 = 0;
#endif
};
typedef std::string TToString (int nValue);
@ -173,6 +170,7 @@ private:
static const TMenuItem s_FXReverberator[];
static const TMenuItem s_FXReverberatorLevels[];
static const TMenuItem s_FXReverberatorSend[];
static const TMenuItem s_FXMainOutputLevels[];
#endif
static const TMenuItem s_EditVoiceMenu[];
static const TMenuItem s_OperatorMenu[];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 202 KiB

@ -1,6 +1,6 @@
# Mixing Console & Audio Effect
![Mixing Console Synopsys](mixing-console-overview.png)
<img src="mixing-console-overview.png" alt="Mixing Console - TG Channel Strip" width="100%" style="background-color: #fff">
On multi-core devices, MiniDexed can now be equiped with a complex and versatile mixing console that is composed of a multi-FX processor.
@ -442,6 +442,23 @@ This implementation pushes the reverberation to reach almost the shimmer effect.
* **> Dly** *[0 - 99]*: The amount of signal processed by the Reverberator FX unit that will be sent to the Delay FX unit.
* **> Plt** *[0 - 99]*: The amount of signal processed by the Reverberator FX unit that will be sent to the Plate Reverb FX unit.
* **> Main** *[0 - 99]*: The amount of signal processed by the Reverberator FX unit that will be sent to the Main output.
* **MainOut**
* **TG1 >** *[0 - 99]* - shortcut to [TG1] >> [FX-Send] >> [> Main]
* **TG2 >** *[0 - 99]* - shortcut to [TG2] >> [FX-Send] >> [> Main]
* **TG3 >** *[0 - 99]* - shortcut to [TG3] >> [FX-Send] >> [> Main]
* **TG4 >** *[0 - 99]* - shortcut to [TG4] >> [FX-Send] >> [> Main]
* **TG5 >** *[0 - 99]* - shortcut to [TG5] >> [FX-Send] >> [> Main]
* **TG6 >** *[0 - 99]* - shortcut to [TG6] >> [FX-Send] >> [> Main]
* **TG7 >** *[0 - 99]* - shortcut to [TG7] >> [FX-Send] >> [> Main]
* **TG8 >** *[0 - 99]* - shortcut to [TG8] >> [FX-Send] >> [> Main]
* **Tub >** *[0 - 99]* - shortcut to [Effects] >> [Tube] >> [> Main]
* **ChR >** *[0 - 99]* - shortcut to [Effects] >> [Chorus] >> [> Main]
* **Flg >** *[0 - 99]* - shortcut to [Effects] >> [FlangR] >> [> Main]
* **Orb >** *[0 - 99]* - shortcut to [Effects] >> [Orb] >> [> Main]
* **PhR >** *[0 - 99]* - shortcut to [Effects] >> [PhasR] >> [> Main]
* **Dly >** *[0 - 99]* - shortcut to [Effects] >> [Delay] >> [> Main]
* **Plt >** *[0 - 99]* - shortcut to [Effects] >> [Plt Rvb] >> [> Main]
* **Rev >** *[0 - 99]* - shortcut to [Effects] >> [Rvbrtor] >> [> Main]
* *Performance*
* *Load*
* ...

Loading…
Cancel
Save