Skip to content

Commit

Permalink
Issue491 fix - Bank number auto-switching and bank number skipping is…
Browse files Browse the repository at this point in the history
…sues in UI (#492)

* Fix for bank numbering to ensure voice/bank wrap around works as expected for first and last banks from the UI.

* Also as part of #491 fixes bank selection menu when selecting between skipped bank numbers up or down.
  • Loading branch information
diyelectromusic authored May 13, 2023
1 parent 0d30aa3 commit af0420e
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 16 deletions.
10 changes: 5 additions & 5 deletions src/sysexfileloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ void CSysExFileLoader::Load (bool bHeaderlessSysExVoices)
{
LoadBank(m_DirName.c_str (), pEntry->d_name, bHeaderlessSysExVoices, 0);
}
LOGDBG ("%u Banks loaded. Highest Bank loaded: #%u", m_nBanksLoaded, m_nNumHighestBank);
LOGDBG ("%u Banks loaded. Highest Bank loaded: #%u", m_nBanksLoaded, m_nNumHighestBank+1);

closedir (pDirectory);
}
Expand Down Expand Up @@ -189,10 +189,10 @@ void CSysExFileLoader::LoadBank (const char * sDirName, const char * sBankName,
//LOGDBG ("Bank #%u successfully loaded", nBank);

m_BankFileName[nBankIdx] = sBankName;
if (nBank > m_nNumHighestBank)
if (nBankIdx > m_nNumHighestBank)
{
// This is the bank ID of the highest loaded bank
m_nNumHighestBank = nBank;
m_nNumHighestBank = nBankIdx;
}
m_nBanksLoaded++;
bBankLoaded = true;
Expand Down Expand Up @@ -221,10 +221,10 @@ void CSysExFileLoader::LoadBank (const char * sDirName, const char * sBankName,
m_pVoiceBank[nBankIdx]->StatusEnd = 0xF7;

m_BankFileName[nBankIdx] = sBankName;
if (nBank > m_nNumHighestBank)
if (nBankIdx > m_nNumHighestBank)
{
// This is the bank ID of the highest loaded bank
m_nNumHighestBank = nBank;
m_nNumHighestBank = nBankIdx;
}
bBankLoaded = true;
m_nBanksLoaded++;
Expand Down
13 changes: 2 additions & 11 deletions src/uimenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,6 @@ void CUIMenu::EditVoiceBankNumber (CUIMenu *pUIMenu, TMenuEvent Event)
void CUIMenu::EditProgramNumber (CUIMenu *pUIMenu, TMenuEvent Event)
{
unsigned nTG = pUIMenu->m_nMenuStackParameter[pUIMenu->m_nCurrentMenuDepth-1];
int nHighestBank = pUIMenu->m_pMiniDexed->GetSysExFileLoader ()->GetNumHighestBank();

int nValue = pUIMenu->m_pMiniDexed->GetTGParameter (CMiniDexed::TGParameterProgram, nTG);

Expand All @@ -578,11 +577,7 @@ void CUIMenu::EditProgramNumber (CUIMenu *pUIMenu, TMenuEvent Event)
// Switch down a voice bank and set to the last voice
nValue = CSysExFileLoader::VoicesPerBank-1;
int nVB = pUIMenu->m_pMiniDexed->GetTGParameter(CMiniDexed::TGParameterVoiceBank, nTG);
if (--nVB < 0)
{
// Wrap around to last loaded bank
nVB = nHighestBank;
}
nVB = pUIMenu->m_pMiniDexed->GetSysExFileLoader ()->GetNextBankDown(nVB);
pUIMenu->m_pMiniDexed->SetTGParameter (CMiniDexed::TGParameterVoiceBank, nVB, nTG);
}
pUIMenu->m_pMiniDexed->SetTGParameter (CMiniDexed::TGParameterProgram, nValue, nTG);
Expand All @@ -594,11 +589,7 @@ void CUIMenu::EditProgramNumber (CUIMenu *pUIMenu, TMenuEvent Event)
// Switch up a voice bank and reset to voice 0
nValue = 0;
int nVB = pUIMenu->m_pMiniDexed->GetTGParameter(CMiniDexed::TGParameterVoiceBank, nTG);
if (++nVB > (int) nHighestBank)
{
// Wrap around to first bank
nVB = 0;
}
nVB = pUIMenu->m_pMiniDexed->GetSysExFileLoader ()->GetNextBankUp(nVB);
pUIMenu->m_pMiniDexed->SetTGParameter (CMiniDexed::TGParameterVoiceBank, nVB, nTG);
}
pUIMenu->m_pMiniDexed->SetTGParameter (CMiniDexed::TGParameterProgram, nValue, nTG);
Expand Down

0 comments on commit af0420e

Please sign in to comment.