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. 339
      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) : FXElement::FXElement(float32_t sampling_rate, float32_t output_level_corrector) :
FXBase(sampling_rate), 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) : FX::FX(float32_t sampling_rate) :
FXBase(sampling_rate) FXBase(sampling_rate)

@ -60,7 +60,13 @@ protected:
public: public:
virtual ~FXElement(); 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; 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 class FX : public FXBase

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

@ -92,7 +92,7 @@ CMiniDexed::CMiniDexed (
m_nAftertouchTarget[i] = 0; m_nAftertouchTarget[i] = 0;
#if defined(MIXING_CONSOLE_ENABLE) #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) #elif defined(PLATE_REVERB_ENABLE)
m_nReverbSend[i] = 0; m_nReverbSend[i] = 0;
#endif #endif
@ -104,6 +104,17 @@ CMiniDexed::CMiniDexed (
m_pTG[i]->activate (); 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++) for (unsigned i = 0; i < CConfig::MaxUSBMIDIDevices; i++)
{ {
m_pMIDIKeyboard[i] = new CMIDIKeyboard (this, pConfig, &m_UI, i); m_pMIDIKeyboard[i] = new CMIDIKeyboard (this, pConfig, &m_UI, i);
@ -158,7 +169,7 @@ CMiniDexed::CMiniDexed (
// Tube parameters // Tube parameters
this->SetParameter(TParameter::ParameterFXTubeEnable, 1); this->SetParameter(TParameter::ParameterFXTubeEnable, 1);
this->SetParameter(TParameter::ParameterFXTubeOverdrive, 10); this->SetParameter(TParameter::ParameterFXTubeOverdrive, 25);
// Chorus parameters // Chorus parameters
this->SetParameter(TParameter::ParameterFXChorusEnable, 1); this->SetParameter(TParameter::ParameterFXChorusEnable, 1);
@ -205,18 +216,8 @@ CMiniDexed::CMiniDexed (
this->SetParameter(TParameter::ParameterFXReverberatorDiffusion, 80); this->SetParameter(TParameter::ParameterFXReverberatorDiffusion, 80);
this->SetParameter(TParameter::ParameterFXReverberatorLP, 70); this->SetParameter(TParameter::ParameterFXReverberatorLP, 70);
// Initializes Send parameters to 0 // Bypass
size_t end = MixerOutput::kFXCount - 1; this->SetParameter(TParameter::ParameterFXBypass, 0);
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);
#elif defined(PLATE_REVERB_ENABLE) #elif defined(PLATE_REVERB_ENABLE)
@ -277,13 +278,12 @@ bool CMiniDexed::Initialize (void)
m_pTG[i]->setATController (99, 1, 0); m_pTG[i]->setATController (99, 1, 0);
#if defined(MIXING_CONSOLE_ENABLE) #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_->reset();
this->mixing_console_->setPan(i, this->m_nPan[i] / 127.0f); 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::FX_PlateReverb, this->m_nTGSendLevel[i][MixerOutput::FX_PlateReverb] / 99.0f);
this->mixing_console_->setSendLevel(i, MixerOutput::MainOutput, 1.0f - sendRev); this->mixing_console_->setSendLevel(i, MixerOutput::MainOutput, this->m_nTGSendLevel[i][MixerOutput::MainOutput] / 99.0f);
this->mixing_console_->setSendLevel(MixerOutput::FX_PlateReverb, MixerOutput::MainOutput, sendRev); 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) #elif defined(PLATE_REVERB_ENABLE)
@ -575,7 +575,7 @@ void CMiniDexed::SetPan (unsigned nPan, unsigned nTG)
unsigned CMiniDexed::getMixingConsoleSendLevel(unsigned nTG, MixerOutput fx) const unsigned CMiniDexed::getMixingConsoleSendLevel(unsigned nTG, MixerOutput fx) const
{ {
assert (nTG < CConfig::ToneGenerators); 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) 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); assert (nTG < CConfig::ToneGenerators);
nFXSend = constrain((int)nFXSend, 0, 99); 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->mixing_console_->setSendLevel(nTG, fx, nFXSend / 99.0f);
this->m_UI.ParameterChanged(); this->m_UI.ParameterChanged();
} }
void CMiniDexed::setMixingConsoleFXSendLevel(MixerOutput ret, MixerOutput fx, unsigned nFXSend) void CMiniDexed::setMixingConsoleFXSendLevel(MixerOutput fromFX, MixerOutput toFX, unsigned nFXSend)
{ {
assert (ret < (MixerOutput::kFXCount - 1)); assert(fromFX < (MixerOutput::kFXCount - 1));
assert (fx < MixerOutput::kFXCount); assert(toFX < MixerOutput::kFXCount);
if(ret == fx) if(fromFX != toFX)
{
this->mixing_console_->setFXSendLevel(ret, fx, 0.0f);
}
else
{ {
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(); this->m_FXSpinLock.Release();
break; break;
case TParameter::ParameterFXBypass:
this->m_FXSpinLock.Acquire();
this->mixing_console_->bypass(!!nValue);
this->m_FXSpinLock.Release();
break;
#elif defined(PLATE_REVERB_ENABLE) #elif defined(PLATE_REVERB_ENABLE)
case TParameter::ParameterReverbEnable: case TParameter::ParameterReverbEnable:
@ -1937,7 +1941,7 @@ bool CMiniDexed::DoSavePerformance (void)
#ifdef MIXING_CONSOLE_ENABLE #ifdef MIXING_CONSOLE_ENABLE
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx) 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 #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::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.SetFXSendLevel(MixerOutput::FX_Reverberator, MixerOutput::MainOutput, this->m_nParameter[TParameter::ParameterFXReverberator_MainOutput]);
this->m_PerformanceConfig.SetFXBypass(this->mixing_console_->bypass());
#endif #endif
if(m_bSaveAsDeault) if(m_bSaveAsDeault)
@ -2398,7 +2404,6 @@ void CMiniDexed::LoadPerformanceParameters(void)
{ {
for (unsigned nTG = 0; nTG < CConfig::ToneGenerators; nTG++) for (unsigned nTG = 0; nTG < CConfig::ToneGenerators; nTG++)
{ {
BankSelectLSB (m_PerformanceConfig.GetBankNumber (nTG), nTG); BankSelectLSB (m_PerformanceConfig.GetBankNumber (nTG), nTG);
ProgramChange (m_PerformanceConfig.GetVoiceNumber (nTG), nTG); ProgramChange (m_PerformanceConfig.GetVoiceNumber (nTG), nTG);
SetMIDIChannel (m_PerformanceConfig.GetMIDIChannel (nTG), nTG); SetMIDIChannel (m_PerformanceConfig.GetMIDIChannel (nTG), nTG);
@ -2427,7 +2432,7 @@ void CMiniDexed::LoadPerformanceParameters(void)
#ifdef MIXING_CONSOLE_ENABLE #ifdef MIXING_CONSOLE_ENABLE
for(size_t fx = 0; fx < MixerOutput::kFXCount; ++fx) 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 #else
SetReverbSend (m_PerformanceConfig.GetReverbSend (nTG), nTG); 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_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->SetParameter(TParameter::ParameterFXReverberator_MainOutput, this->m_PerformanceConfig.GetFXSendLevel(MixerOutput::FX_Reverberator, MixerOutput::MainOutput));
this->mixing_console_->bypass(this->m_PerformanceConfig.IsFXBypass());
#endif #endif
} }

@ -103,7 +103,7 @@ public:
#if defined(MIXING_CONSOLE_ENABLE) #if defined(MIXING_CONSOLE_ENABLE)
unsigned getMixingConsoleSendLevel(unsigned nTG, MixerOutput fx) const; unsigned getMixingConsoleSendLevel(unsigned nTG, MixerOutput fx) const;
void setMixingConsoleSendLevel(unsigned nTG, MixerOutput fx, unsigned nFXSend); 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) #elif defined(PLATE_REVERB_ENABLE)
void SetReverbSend (unsigned nReverbSend, unsigned nTG); // 0 .. 127 void SetReverbSend (unsigned nReverbSend, unsigned nTG); // 0 .. 127
#endif #endif
@ -285,6 +285,9 @@ public:
ParameterFXReverberator_PlateReverbSend, ParameterFXReverberator_PlateReverbSend,
ParameterFXReverberator_MainOutput, ParameterFXReverberator_MainOutput,
// Bypass FX
ParameterFXBypass,
#endif #endif
// END FX global parameters definition // END FX global parameters definition
@ -427,7 +430,8 @@ private:
int m_nNoteShift[CConfig::ToneGenerators]; int m_nNoteShift[CConfig::ToneGenerators];
#ifdef MIXING_CONSOLE_ENABLE #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) #elif defined(PLATE_REVERB_ENABLE)
unsigned m_nReverbSend[CConfig::ToneGenerators]; unsigned m_nReverbSend[CConfig::ToneGenerators];
#endif #endif

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

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

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

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

@ -99,7 +99,7 @@ const CUIMenu::TMenuItem CUIMenu::s_TGMenu[] =
const CUIMenu::TMenuItem CUIMenu::s_EffectsMenu[] = const CUIMenu::TMenuItem CUIMenu::s_EffectsMenu[] =
{ {
{"Compress",CUIMenu::EditGlobalParameter, 0, CMiniDexed::ParameterCompressorEnable}, {"Compress",CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterCompressorEnable},
#if defined(MIXING_CONSOLE_ENABLE) #if defined(MIXING_CONSOLE_ENABLE)
{"Tube", CUIMenu::MenuHandler, CUIMenu::s_FXTube}, {"Tube", CUIMenu::MenuHandler, CUIMenu::s_FXTube},
{"Chorus", CUIMenu::MenuHandler, CUIMenu::s_FXChorus}, {"Chorus", CUIMenu::MenuHandler, CUIMenu::s_FXChorus},
@ -113,6 +113,8 @@ const CUIMenu::TMenuItem CUIMenu::s_EffectsMenu[] =
#elif defined(MIXING_CONSOLE_ENABLE) #elif defined(MIXING_CONSOLE_ENABLE)
{"Plt Rvb", CUIMenu::MenuHandler, CUIMenu::s_FXPlateReverb}, {"Plt Rvb", CUIMenu::MenuHandler, CUIMenu::s_FXPlateReverb},
{"Rvbrtor", CUIMenu::MenuHandler, CUIMenu::s_FXReverberator}, {"Rvbrtor", CUIMenu::MenuHandler, CUIMenu::s_FXReverberator},
{"MainOut", CUIMenu::MenuHandler, CUIMenu::s_FXMainOutputLevels},
{"Bypass", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXBypass},
#endif #endif
{0} {0}
}; };
@ -251,15 +253,15 @@ const CUIMenu::TMenuItem CUIMenu::s_FXReverberator[] =
const CUIMenu::TMenuItem CUIMenu::s_FXTubeLevels[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXTube},
#endif #endif
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_TubeSend}, {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_TubeSend},
{"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXChorus},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ChorusSend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ChorusSend},
{"Flg >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXFlanger_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXFlanger},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_FlangerSend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_FlangerSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXOrbitone},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_OrbitoneSend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_OrbitoneSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPhaser},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PhaserSend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PhaserSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXDelay},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_DelaySend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_DelaySend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXPlateReverb},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PlateReverbSend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_PlateReverbSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_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[] = 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) #if defined(ARM_ALLOW_MULTI_CORE)
{"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 1}, {"TG2 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 2}, {"TG3 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 3}, {"TG4 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 4}, {"TG5 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 5}, {"TG6 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 6}, {"TG7 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
{"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator, 7}, {"TG8 >", CUIMenu::EditTGParameter3, 0, CMiniDexed::TTGParameter::TGParameterMixingSendFXReverberator},
#endif #endif
{"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ReverberatorSend}, {"Tub >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXTube_ReverberatorSend},
{"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_ReverberatorSend}, {"ChR >", CUIMenu::EditGlobalParameter, 0, CMiniDexed::TParameter::ParameterFXChorus_ReverberatorSend},
@ -529,6 +531,29 @@ const CUIMenu::TMenuItem CUIMenu::s_FXReverberatorSend[] =
{0} {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 #endif
// inserting menu items before "OP1" affect OPShortcutHandler() // inserting menu items before "OP1" affect OPShortcutHandler()
@ -660,85 +685,86 @@ const CUIMenu::TParameter CUIMenu::s_GlobalParameter[CMiniDexed::TParameter::Par
{0, 99, 1}, // ParameterFXReverberatorLP {0, 99, 1}, // ParameterFXReverberatorLP
// FX > Tube Return parameters // FX > Tube Return parameters
{0, 99, 1}, // ParameterFXTube_ChorusReturn, {0, 99, 1}, // ParameterFXTube_ChorusSend
{0, 99, 1}, // ParameterFXTube_FlangerReturn, {0, 99, 1}, // ParameterFXTube_FlangerSend
{0, 99, 1}, // ParameterFXTube_OrbitoneReturn, {0, 99, 1}, // ParameterFXTube_OrbitoneSend
{0, 99, 1}, // ParameterFXTube_PhaserReturn, {0, 99, 1}, // ParameterFXTube_PhaserSend
{0, 99, 1}, // ParameterFXTube_DelayReturn, {0, 99, 1}, // ParameterFXTube_DelaySend
{0, 99, 1}, // ParameterFXTube_PlateReverbReturn, {0, 99, 1}, // ParameterFXTube_PlateReverbSend
{0, 99, 1}, // ParameterFXTube_ReverberatorReturn, {0, 99, 1}, // ParameterFXTube_ReverberatorSend
{0, 99, 1}, // ParameterFXTube_MainOutput, {0, 99, 1}, // ParameterFXTube_MainOutput
// FX > Chorus Return parameters // FX > Chorus Return parameters
{0, 99, 1}, // ParameterFXChorus_TubeReturn, {0, 99, 1}, // ParameterFXChorus_TubeSend
{0, 99, 1}, // ParameterFXChorus_FlangerReturn, {0, 99, 1}, // ParameterFXChorus_FlangerSend
{0, 99, 1}, // ParameterFXChorus_OrbitoneReturn, {0, 99, 1}, // ParameterFXChorus_OrbitoneSend
{0, 99, 1}, // ParameterFXChorus_PhaserReturn, {0, 99, 1}, // ParameterFXChorus_PhaserSend
{0, 99, 1}, // ParameterFXChorus_DelayReturn, {0, 99, 1}, // ParameterFXChorus_DelaySend
{0, 99, 1}, // ParameterFXChorus_PlateReverbReturn, {0, 99, 1}, // ParameterFXChorus_PlateReverbSend
{0, 99, 1}, // ParameterFXChorus_ReverberatorReturn, {0, 99, 1}, // ParameterFXChorus_ReverberatorSend
{0, 99, 1}, // ParameterFXChorus_MainOutput, {0, 99, 1}, // ParameterFXChorus_MainOutput
// FX > Flanger Return parameters // FX > Flanger Return parameters
{0, 99, 1}, // ParameterFXFlanger_TubeReturn, {0, 99, 1}, // ParameterFXFlanger_TubeSend
{0, 99, 1}, // ParameterFXFlanger_ChorusReturn, {0, 99, 1}, // ParameterFXFlanger_ChorusSend
{0, 99, 1}, // ParameterFXFlanger_OrbitoneReturn, {0, 99, 1}, // ParameterFXFlanger_OrbitoneSend
{0, 99, 1}, // ParameterFXFlanger_PhaserReturn, {0, 99, 1}, // ParameterFXFlanger_PhaserSend
{0, 99, 1}, // ParameterFXFlanger_DelayReturn, {0, 99, 1}, // ParameterFXFlanger_DelaySend
{0, 99, 1}, // ParameterFXFlanger_PlateReverbReturn, {0, 99, 1}, // ParameterFXFlanger_PlateReverbSend
{0, 99, 1}, // ParameterFXFlanger_ReverberatorReturn, {0, 99, 1}, // ParameterFXFlanger_ReverberatorSend
{0, 99, 1}, // ParameterFXFlanger_MainOutput, {0, 99, 1}, // ParameterFXFlanger_MainOutput
// FX > Orbitone Return parameters // FX > Orbitone Return parameters
{0, 99, 1}, // ParameterFXOrbitone_TubeReturn, {0, 99, 1}, // ParameterFXOrbitone_TubeSend
{0, 99, 1}, // ParameterFXOrbitone_ChorusReturn, {0, 99, 1}, // ParameterFXOrbitone_ChorusSend
{0, 99, 1}, // ParameterFXOrbitone_FlangerReturn, {0, 99, 1}, // ParameterFXOrbitone_FlangerSend
{0, 99, 1}, // ParameterFXOrbitone_PhaserReturn, {0, 99, 1}, // ParameterFXOrbitone_PhaserSend
{0, 99, 1}, // ParameterFXOrbitone_DelayReturn, {0, 99, 1}, // ParameterFXOrbitone_DelaySend
{0, 99, 1}, // ParameterFXOrbitone_PlateReverbReturn, {0, 99, 1}, // ParameterFXOrbitone_PlateReverbSend
{0, 99, 1}, // ParameterFXOrbitone_ReverberatorReturn, {0, 99, 1}, // ParameterFXOrbitone_ReverberatorSend
{0, 99, 1}, // ParameterFXOrbitone_MainOutput, {0, 99, 1}, // ParameterFXOrbitone_MainOutput
// FX > Phaser Return parameters // FX > Phaser Return parameters
{0, 99, 1}, // ParameterFXPhaser_TubeReturn, {0, 99, 1}, // ParameterFXPhaser_TubeSend
{0, 99, 1}, // ParameterFXPhaser_ChorusReturn, {0, 99, 1}, // ParameterFXPhaser_ChorusSend
{0, 99, 1}, // ParameterFXPhaser_FlangerReturn, {0, 99, 1}, // ParameterFXPhaser_FlangerSend
{0, 99, 1}, // ParameterFXPhaser_OrbitoneReturn, {0, 99, 1}, // ParameterFXPhaser_OrbitoneSend
{0, 99, 1}, // ParameterFXPhaser_DelayReturn, {0, 99, 1}, // ParameterFXPhaser_DelaySend
{0, 99, 1}, // ParameterFXPhaser_PlateReverbReturn, {0, 99, 1}, // ParameterFXPhaser_PlateReverbSend
{0, 99, 1}, // ParameterFXPhaser_ReverberatorReturn, {0, 99, 1}, // ParameterFXPhaser_ReverberatorSend
{0, 99, 1}, // ParameterFXPhaser_MainOutput, {0, 99, 1}, // ParameterFXPhaser_MainOutput
// FX > Delay Return parameters // FX > Delay Return parameters
{0, 99, 1}, // ParameterFXDelay_TubeReturn, {0, 99, 1}, // ParameterFXDelay_TubeSend
{0, 99, 1}, // ParameterFXDelay_ChorusReturn, {0, 99, 1}, // ParameterFXDelay_ChorusSend
{0, 99, 1}, // ParameterFXDelay_FlangerReturn, {0, 99, 1}, // ParameterFXDelay_FlangerSend
{0, 99, 1}, // ParameterFXDelay_OrbitoneReturn, {0, 99, 1}, // ParameterFXDelay_OrbitoneSend
{0, 99, 1}, // ParameterFXDelay_PhaserReturn, {0, 99, 1}, // ParameterFXDelay_PhaserSend
{0, 99, 1}, // ParameterFXDelay_PlateReverbReturn, {0, 99, 1}, // ParameterFXDelay_PlateReverbSend
{0, 99, 1}, // ParameterFXDelay_ReverberatorReturn, {0, 99, 1}, // ParameterFXDelay_ReverberatorSend
{0, 99, 1}, // ParameterFXDelay_MainOutput, {0, 99, 1}, // ParameterFXDelay_MainOutput
// FX > Reverb Return parameters // FX > Reverb Return parameters
{0, 99, 1}, // ParameterFXReverb_TubeReturn, {0, 99, 1}, // ParameterFXPlateReverb_TubeSend
{0, 99, 1}, // ParameterFXReverb_ChorusReturn, {0, 99, 1}, // ParameterFXPlateReverb_ChorusSend
{0, 99, 1}, // ParameterFXReverb_FlangerReturn, {0, 99, 1}, // ParameterFXPlateReverb_FlangerSend
{0, 99, 1}, // ParameterFXReverb_OrbitoneReturn, {0, 99, 1}, // ParameterFXPlateReverb_OrbitoneSend
{0, 99, 1}, // ParameterFXReverb_PhaserReturn, {0, 99, 1}, // ParameterFXPlateReverb_PhaserSend
{0, 99, 1}, // ParameterFXReverb_DelayReturn, {0, 99, 1}, // ParameterFXPlateReverb_DelaySend
{0, 99, 1}, // ParameterFXReverb_ReverberatorReturn, {0, 99, 1}, // ParameterFXPlateReverb_ReverberatorSend
{0, 99, 1}, // ParameterFXReverb_MainOutput, {0, 99, 1}, // ParameterFXPlateReverb_MainOutput
// FX > Reverberator Return parameters // FX > Reverberator Return parameters
{0, 99, 1}, // ParameterFXReverberator_TubeReturn, {0, 99, 1}, // ParameterFXReverberator_TubeSend
{0, 99, 1}, // ParameterFXReverberator_ChorusReturn, {0, 99, 1}, // ParameterFXReverberator_ChorusSend
{0, 99, 1}, // ParameterFXReverberator_FlangerReturn, {0, 99, 1}, // ParameterFXReverberator_FlangerSend
{0, 99, 1}, // ParameterFXReverberator_OrbitoneReturn, {0, 99, 1}, // ParameterFXReverberator_OrbitoneSend
{0, 99, 1}, // ParameterFXReverberator_PhaserReturn, {0, 99, 1}, // ParameterFXReverberator_PhaserSend
{0, 99, 1}, // ParameterFXReverberator_DelayReturn, {0, 99, 1}, // ParameterFXReverberator_DelaySend
{0, 99, 1}, // ParameterFXReverberator_PlateReverbReturn, {0, 99, 1}, // ParameterFXReverberator_PlateReverbSend
{0, 99, 1}, // ParameterFXReverberator_MainOutput, {0, 99, 1}, // ParameterFXReverberator_MainOutput
{0, 1, 1, ToOnOff} // ParameterFXBypass
#endif #endif
// END FX global parameters mapping definition // END FX global parameters mapping definition
}; };
@ -765,34 +791,35 @@ const CUIMenu::TParameter CUIMenu::s_TGParameter[CMiniDexed::TTGParameter::TGPar
{0, 1, 1, ToPortaGlissando}, // TGParameterPortamentoGlissando {0, 1, 1, ToPortaGlissando}, // TGParameterPortamentoGlissando
{0, 99, 1}, // TGParameterPortamentoTime {0, 99, 1}, // TGParameterPortamentoTime
{0, 1, 1, ToPolyMono}, // TGParameterMonoMode {0, 1, 1, ToPolyMono}, // TGParameterMonoMode
{0, 99, 1}, //MW Range {0, 99, 1}, // MW Range
{0, 1, 1, ToOnOff}, //MW Pitch {0, 1, 1, ToOnOff}, // MW Pitch
{0, 1, 1, ToOnOff}, //MW Amp {0, 1, 1, ToOnOff}, // MW Amp
{0, 1, 1, ToOnOff}, //MW EGBias {0, 1, 1, ToOnOff}, // MW EGBias
{0, 99, 1}, //FC Range {0, 99, 1}, // FC Range
{0, 1, 1, ToOnOff}, //FC Pitch {0, 1, 1, ToOnOff}, // FC Pitch
{0, 1, 1, ToOnOff}, //FC Amp {0, 1, 1, ToOnOff}, // FC Amp
{0, 1, 1, ToOnOff}, //FC EGBias {0, 1, 1, ToOnOff}, // FC EGBias
{0, 99, 1}, //BC Range {0, 99, 1}, // BC Range
{0, 1, 1, ToOnOff}, //BC Pitch {0, 1, 1, ToOnOff}, // BC Pitch
{0, 1, 1, ToOnOff}, //BC Amp {0, 1, 1, ToOnOff}, // BC Amp
{0, 1, 1, ToOnOff}, //BC EGBias {0, 1, 1, ToOnOff}, // BC EGBias
{0, 99, 1}, //AT Range {0, 99, 1}, // AT Range
{0, 1, 1, ToOnOff}, //AT Pitch {0, 1, 1, ToOnOff}, // AT Pitch
{0, 1, 1, ToOnOff}, //AT Amp {0, 1, 1, ToOnOff}, // AT Amp
{0, 1, 1, ToOnOff} //AT EGBias {0, 1, 1, ToOnOff} // AT EGBias
#if defined(MIXING_CONSOLE_ENABLE) #if defined(MIXING_CONSOLE_ENABLE)
, ,
{0, 99, 1}, // TGParameterMixingSendFXTube, {0, 99, 1}, // TGParameterMixingSendFXTube
{0, 99, 1}, // TGParameterMixingSendFXChorus, {0, 99, 1}, // TGParameterMixingSendFXChorus
{0, 99, 1}, // TGParameterMixingSendFXFlanger, {0, 99, 1}, // TGParameterMixingSendFXFlanger
{0, 99, 1}, // TGParameterMixingSendFXOrbittone, {0, 99, 1}, // TGParameterMixingSendFXOrbittone
{0, 99, 1}, // TGParameterMixingSendFXPhaser, {0, 99, 1}, // TGParameterMixingSendFXPhaser
{0, 99, 1}, // TGParameterMixingSendFXDelay, {0, 99, 1}, // TGParameterMixingSendFXDelay
{0, 99, 1}, // TGParameterMixingSendFXPlateReverb, {0, 99, 1}, // TGParameterMixingSendFXPlateReverb
{0, 99, 1}, // TGParameterMixingSendFXReverberator, {0, 99, 1}, // TGParameterMixingSendFXReverberator
{0, 99, 1} // TGParameterMixingSendFXMainOutput, {0, 99, 1} // TGParameterMixingSendFXMainOutput
#endif // MIXING_CONSOLE_ENABLE #endif // MIXING_CONSOLE_ENABLE
}; };
@ -1252,7 +1279,7 @@ void CUIMenu::EditTGParameter2 (CUIMenu *pUIMenu, TMenuEvent Event) // second me
void CUIMenu::EditTGParameter3(CUIMenu *pUIMenu, TMenuEvent Event) 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; CMiniDexed::TTGParameter Param = (CMiniDexed::TTGParameter) pUIMenu->m_nCurrentParameter;

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

Loading…
Cancel
Save