commit 38c50aab34f548432f29e8ac93804951f2941443
parent 6f903c4164f4360019907de9db5f0e07b22fc863
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Thu, 30 Dec 2021 22:46:28 +0100
use strong typed enum for getSingle()
Diffstat:
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/source/virusLib/microcontroller.cpp b/source/virusLib/microcontroller.cpp
@@ -196,7 +196,7 @@ bool Microcontroller::sendMIDI(const SMidiEvent& _ev, bool cancelIfFull/* = fals
if(singleMode)
{
- if(getSingle(m_currentBank, _ev.b, single))
+ if(getSingle(fromArrayIndex(m_currentBank), _ev.b, single))
{
m_currentSingle = _ev.b;
return writeSingle(BankNumber::EditBuffer, SINGLE, single);
@@ -593,11 +593,17 @@ std::vector<TWord> Microcontroller::presetToDSPWords(const TPreset& _preset)
return preset;
}
-bool Microcontroller::getSingle(uint32_t _bank, uint32_t _preset, TPreset& _result) const
+bool Microcontroller::getSingle(BankNumber _bank, uint32_t _preset, TPreset& _result) const
{
- if(_bank >= m_singles.size())
+ if (_bank == BankNumber::EditBuffer)
return false;
- const auto& s = m_singles[_bank];
+
+ const auto bank = toArrayIndex(_bank);
+
+ if(bank >= m_singles.size())
+ return false;
+
+ const auto& s = m_singles[bank];
if(_preset >= s.size())
return false;
@@ -645,7 +651,7 @@ bool Microcontroller::requestSingle(BankNumber _bank, uint8_t _program, TPreset&
}
// Load from flash
- return getSingle(toArrayIndex(_bank), _program, _data);
+ return getSingle(_bank, _program, _data);
}
bool Microcontroller::writeSingle(BankNumber _bank, uint8_t _program, const TPreset& _data)
@@ -706,7 +712,7 @@ bool Microcontroller::partProgramChange(const uint8_t _part, const uint8_t _valu
{
TPreset single;
- const auto bank = m_multiEditBuffer[MD_PART_BANK_NUMBER + _part];
+ const auto bank = fromMidiByte(m_multiEditBuffer[MD_PART_BANK_NUMBER + _part]);
if(getSingle(bank, _value, single))
{
diff --git a/source/virusLib/microcontroller.h b/source/virusLib/microcontroller.h
@@ -51,7 +51,7 @@ private:
void waitUntilReady() const;
void waitUntilBufferEmpty() const;
static std::vector<dsp56k::TWord> presetToDSPWords(const TPreset& _preset);
- bool getSingle(uint32_t _bank, uint32_t _preset, TPreset& _result) const;
+ bool getSingle(BankNumber _bank, uint32_t _preset, TPreset& _result) const;
bool partBankSelect(uint8_t _part, uint8_t _value, bool _immediatelySelectSingle);
bool partProgramChange(uint8_t _part, uint8_t _value);