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 55422db8d242c11cd44d1bfd5ab69654744ad261
parent f8843247b181d93f77095cbc994fda11feb7ccd7
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Sat, 28 Sep 2024 02:15:30 +0200

support loading arbitrary sysex data as state

Diffstat:
Msource/virusLib/device.cpp | 14+++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/source/virusLib/device.cpp b/source/virusLib/device.cpp @@ -7,6 +7,7 @@ #include "dsp56kEmu/jit.h" #include "synthLib/deviceException.h" +#include "synthLib/midiToSysex.h" #include <cstring> @@ -183,8 +184,19 @@ namespace virusLib bool Device::setStateFromUnknownCustomData(const std::vector<uint8_t>& _state) { std::vector<synthLib::SMidiEvent> messages; - if(!parseTIcontrolPreset(messages, _state)) + + if(parseTIcontrolPreset(messages, _state)) + return m_mc->setState(messages); + + std::vector<std::vector<uint8_t>> sysexMessages; + synthLib::MidiToSysex::splitMultipleSysex(sysexMessages, _state, false); + + if(sysexMessages.empty()) return false; + + for (const auto& sysexMessage : sysexMessages) + messages.emplace_back().sysex = sysexMessage; + return m_mc->setState(messages); } #endif