|
|
@ -365,14 +365,44 @@ CSysExFileLoader *CMiniDexed::GetSysExFileLoader (void) |
|
|
|
return &m_SysExFileLoader; |
|
|
|
return &m_SysExFileLoader; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMiniDexed::BankSelect (unsigned nBank, unsigned nTG) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
nBank=constrain((int)nBank,0,16383); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert (nTG < CConfig::ToneGenerators); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned nHighestBank = GetSysExFileLoader ()->GetNumHighestBank(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (nBank <= nHighestBank) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
m_nVoiceBankID[nTG] = nBank; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_UI.ParameterChanged (); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMiniDexed::BankSelectMSB (unsigned nBankMSB, unsigned nTG) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
nBankMSB=constrain((int)nBankMSB,0,127); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert (nTG < CConfig::ToneGenerators); |
|
|
|
|
|
|
|
unsigned nBank = m_nVoiceBankID[nTG]; |
|
|
|
|
|
|
|
unsigned nBankLSB = nBank & 0x7F; |
|
|
|
|
|
|
|
nBank = (nBankMSB << 7) + nBankLSB; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BankSelect(nBank, nTG); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CMiniDexed::BankSelectLSB (unsigned nBankLSB, unsigned nTG) |
|
|
|
void CMiniDexed::BankSelectLSB (unsigned nBankLSB, unsigned nTG) |
|
|
|
{ |
|
|
|
{ |
|
|
|
nBankLSB=constrain((int)nBankLSB,0,127); |
|
|
|
nBankLSB=constrain((int)nBankLSB,0,127); |
|
|
|
|
|
|
|
|
|
|
|
assert (nTG < CConfig::ToneGenerators); |
|
|
|
assert (nTG < CConfig::ToneGenerators); |
|
|
|
m_nVoiceBankID[nTG] = nBankLSB; |
|
|
|
unsigned nBank = m_nVoiceBankID[nTG]; |
|
|
|
|
|
|
|
unsigned nBankMSB = nBank >> 7; |
|
|
|
|
|
|
|
nBank = (nBankMSB << 7) + nBankLSB; |
|
|
|
|
|
|
|
|
|
|
|
m_UI.ParameterChanged (); |
|
|
|
BankSelect(nBank, nTG); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CMiniDexed::ProgramChange (unsigned nProgram, unsigned nTG) |
|
|
|
void CMiniDexed::ProgramChange (unsigned nProgram, unsigned nTG) |
|
|
@ -717,7 +747,9 @@ void CMiniDexed::SetTGParameter (TTGParameter Parameter, int nValue, unsigned nT |
|
|
|
|
|
|
|
|
|
|
|
switch (Parameter) |
|
|
|
switch (Parameter) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case TGParameterVoiceBank: BankSelectLSB (nValue, nTG); break; |
|
|
|
case TGParameterVoiceBank: BankSelect (nValue, nTG); break; |
|
|
|
|
|
|
|
case TGParameterVoiceBankMSB: BankSelectMSB (nValue, nTG); break; |
|
|
|
|
|
|
|
case TGParameterVoiceBankLSB: BankSelectLSB (nValue, nTG); break; |
|
|
|
case TGParameterProgram: ProgramChange (nValue, nTG); break; |
|
|
|
case TGParameterProgram: ProgramChange (nValue, nTG); break; |
|
|
|
case TGParameterVolume: SetVolume (nValue, nTG); break; |
|
|
|
case TGParameterVolume: SetVolume (nValue, nTG); break; |
|
|
|
case TGParameterPan: SetPan (nValue, nTG); break; |
|
|
|
case TGParameterPan: SetPan (nValue, nTG); break; |
|
|
@ -771,6 +803,8 @@ int CMiniDexed::GetTGParameter (TTGParameter Parameter, unsigned nTG) |
|
|
|
switch (Parameter) |
|
|
|
switch (Parameter) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case TGParameterVoiceBank: return m_nVoiceBankID[nTG]; |
|
|
|
case TGParameterVoiceBank: return m_nVoiceBankID[nTG]; |
|
|
|
|
|
|
|
case TGParameterVoiceBankMSB: return m_nVoiceBankID[nTG] >> 7; |
|
|
|
|
|
|
|
case TGParameterVoiceBankLSB: return m_nVoiceBankID[nTG] & 0x7F; |
|
|
|
case TGParameterProgram: return m_nProgram[nTG]; |
|
|
|
case TGParameterProgram: return m_nProgram[nTG]; |
|
|
|
case TGParameterVolume: return m_nVolume[nTG]; |
|
|
|
case TGParameterVolume: return m_nVolume[nTG]; |
|
|
|
case TGParameterPan: return m_nPan[nTG]; |
|
|
|
case TGParameterPan: return m_nPan[nTG]; |
|
|
@ -1445,7 +1479,7 @@ 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); |
|
|
|
BankSelect (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); |
|
|
|
SetVolume (m_PerformanceConfig.GetVolume (nTG), nTG); |
|
|
|
SetVolume (m_PerformanceConfig.GetVolume (nTG), nTG); |
|
|
|