commit 4ac61254d314bdf4c8ca3f59745643e92fa973df
parent f5965487d20ddcc41033768652bb235435bd6aa8
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Sat, 12 Feb 2022 14:59:04 +0100
send part program change & part bank select instead of transmitting a whole preset via syex when selecting RAM/ROM presets
Diffstat:
2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/source/jucePlugin/VirusController.cpp b/source/jucePlugin/VirusController.cpp
@@ -294,9 +294,9 @@ namespace Virus
return {text};
}
- void Controller::setCurrentPartPreset(uint8_t part, virusLib::BankNumber _bank, uint8_t prg)
+ void Controller::setCurrentPartPreset(uint8_t _part, const virusLib::BankNumber _bank, uint8_t _prg)
{
- if(_bank == virusLib::BankNumber::EditBuffer || prg < 0 || prg > 127)
+ if(_bank == virusLib::BankNumber::EditBuffer || _prg > 127)
{
jassertfalse;
return;
@@ -310,16 +310,15 @@ namespace Virus
return;
}
- uint8_t pt = isMultiMode() ? part : virusLib::SINGLE;
- const auto &preset = m_singles[bank][prg];
- SysEx patch = {MessageType::DUMP_SINGLE, 0x0, pt};
- for (size_t i = 0; i < std::size(preset.data); ++i)
- patch.push_back(preset.data[i]);
- sendSysEx(constructMessage(patch));
- //sendSysEx(constructMessage({MessageType::REQUEST_ARRANGEMENT}));
+ const uint8_t pt = isMultiMode() ? _part : virusLib::SINGLE;
+
+ sendSysEx(constructMessage({ MessageType::PARAM_CHANGE_C, pt, virusLib::PART_BANK_SELECT, virusLib::toMidiByte(_bank) }));
+ sendSysEx(constructMessage({ MessageType::PARAM_CHANGE_C, pt, virusLib::PART_PROGRAM_CHANGE, _prg }));
+
sendSysEx(constructMessage({MessageType::REQUEST_SINGLE, 0x0, pt}));
- m_currentBank[part] = _bank;
- m_currentProgram[part] = prg;
+
+ m_currentBank[_part] = _bank;
+ m_currentProgram[_part] = _prg;
}
virusLib::BankNumber Controller::getCurrentPartBank(uint8_t part) const { return m_currentBank[part]; }
diff --git a/source/jucePlugin/VirusController.h b/source/jucePlugin/VirusController.h
@@ -49,7 +49,7 @@ namespace Virus
void setSinglePresetName(uint8_t part, juce::String _name);
bool isMultiMode() { return getParamValue(0, 2, 0x7a)->getValue(); }
// part 0 - 15 (ignored when single! 0x40...)
- void setCurrentPartPreset(uint8_t part, virusLib::BankNumber bank, uint8_t prg);
+ void setCurrentPartPreset(uint8_t _part, virusLib::BankNumber _bank, uint8_t _prg);
virusLib::BankNumber getCurrentPartBank(uint8_t part) const;
uint8_t getCurrentPartProgram(uint8_t part) const;
juce::String getCurrentPartPresetName(uint8_t part);