gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

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:
Msource/jucePlugin/VirusController.cpp | 21++++++++++-----------
Msource/jucePlugin/VirusController.h | 2+-
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);