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