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:
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()