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 94643828a02a8efcda2319fef944012e3b553cd1
parent 40c88bdf53e4e5661ee3adfce8307c10ac167c17
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed,  4 Dec 2024 20:29:26 +0100

update patch name before sending to device / fix possible issue of corrupting patch data when exporting

Diffstat:
Msource/virusJucePlugin/PatchManager.cpp | 28++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/source/virusJucePlugin/PatchManager.cpp b/source/virusJucePlugin/PatchManager.cpp @@ -193,21 +193,25 @@ namespace genericVirusUI pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch) const { - pluginLib::MidiPacket::Data data; - pluginLib::MidiPacket::AnyPartParamValues parameterValues; + if (_patch->sysex.size() < 267) + return _patch->sysex; - virus::Controller::MidiPacketType usedPacketType; - if (!m_controller.parseSingle(data, parameterValues, _patch->sysex, usedPacketType)) + if (_patch->sysex[6] != virusLib::SysexMessageType::DUMP_SINGLE) return _patch->sysex; + auto result = _patch->sysex; + // apply name if (!_patch->getName().empty()) - m_controller.setSinglePresetName(parameterValues, _patch->getName()); + { + for (size_t i=0; i<10; ++i) + result[i + 249] = i >= _patch->getName().size() ? ' ' : _patch->getName()[i]; + } - // apply program - auto bank = toMidiByte(virusLib::BankNumber::A); - auto program = data[pluginLib::MidiDataType::Program]; + auto& bank = result[7]; + auto& program = result[8]; + // apply program if (_patch->program != pluginLib::patchDB::g_invalidProgram) { const auto bankOffset = _patch->program / 128; @@ -245,10 +249,10 @@ namespace genericVirusUI } } - parameterValues[indicesCategory[0]] = val0; - parameterValues[indicesCategory[1]] = val1; + result[249 + 11] = val0; + result[249 + 12] = val1; - return m_controller.createSingleDump(usedPacketType, bank, program, parameterValues); + return result; } bool PatchManager::parseFileData(pluginLib::patchDB::DataList& _results, const pluginLib::patchDB::Data& _data) @@ -412,7 +416,7 @@ namespace genericVirusUI bool PatchManager::activatePatch(const pluginLib::patchDB::PatchPtr& _patch, const uint32_t _part) { - return m_controller.activatePatch(_patch->sysex, _part); + return m_controller.activatePatch(applyModifications(_patch), _part); } void PatchManager::addRomPatches()