commit 061e40d087bdf90f6a28e7082fbcac972fa9512b
parent 25ffd32e4731b844d00f0cdefc7b1620f27b3b4b
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Fri, 19 Apr 2024 20:40:36 +0200
fix main volume not read from global dump
Diffstat:
3 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/source/xtJucePlugin/parameterDescriptions_xt.json b/source/xtJucePlugin/parameterDescriptions_xt.json
@@ -292,19 +292,19 @@
// MULTI
// GLOBAL
- {"page":200, "index":12, "class":"Global", "name":"MainVolume"},
+ {"page":20, "index":12, "class":"Global", "name":"MainVolume"},
// SOFT KNOBS
- {"page":300, "index":0, "name":"PlayParamValueA", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamA", "softknobTargetList":"playParamTargets"},
- {"page":300, "index":1, "name":"PlayParamValueB", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamB", "softknobTargetList":"playParamTargets"},
- {"page":300, "index":2, "name":"PlayParamValueC", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamC", "softknobTargetList":"playParamTargets"},
- {"page":300, "index":3, "name":"PlayParamValueD", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamD", "softknobTargetList":"playParamTargets"},
+ {"page":30, "index":0, "name":"PlayParamValueA", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamA", "softknobTargetList":"playParamTargets"},
+ {"page":30, "index":1, "name":"PlayParamValueB", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamB", "softknobTargetList":"playParamTargets"},
+ {"page":30, "index":2, "name":"PlayParamValueC", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamC", "softknobTargetList":"playParamTargets"},
+ {"page":30, "index":3, "name":"PlayParamValueD", "min":0, "max":127, "isPublic":true, "softknobTargetSelect":"PlayParamD", "softknobTargetList":"playParamTargets"},
// CONTROLLERS
- {"page":400, "index":0, "name":"ControlW"},
- {"page":400, "index":1, "name":"ControlX"},
- {"page":400, "index":2, "name":"ControlY"},
- {"page":400, "index":3, "name":"ControlZ"}
+ {"page":40, "index":0, "name":"ControlW"},
+ {"page":40, "index":1, "name":"ControlX"},
+ {"page":40, "index":2, "name":"ControlY"},
+ {"page":40, "index":3, "name":"ControlZ"}
],
"valuelists":
{
diff --git a/source/xtJucePlugin/xtController.cpp b/source/xtJucePlugin/xtController.cpp
@@ -44,10 +44,10 @@ namespace
return g_midiPacketNames[static_cast<uint32_t>(_type)];
}
- constexpr uint8_t g_pageMulti = 100;
- constexpr uint8_t g_pageGlobal = 200;
- constexpr uint8_t g_pageSoftKnobs = 300;
- constexpr uint8_t g_pageControllers = 400;
+ constexpr uint32_t g_pageMulti = 10;
+ constexpr uint32_t g_pageGlobal = 20;
+ constexpr uint32_t g_pageSoftKnobs = 30;
+ constexpr uint32_t g_pageControllers = 40;
}
Controller::Controller(AudioPluginAudioProcessor& p, unsigned char _deviceId) : pluginLib::Controller(p, loadParameterDescriptions()), m_deviceId(_deviceId)
@@ -250,6 +250,13 @@ void Controller::parseMulti(const pluginLib::SysEx& _msg, const pluginLib::MidiP
}
}
+void Controller::parseGlobal(const pluginLib::SysEx& _msg, const pluginLib::MidiPacket::Data& _data, const pluginLib::MidiPacket::ParamValues& _params)
+{
+ memcpy(m_globalData.data(), &_msg[xt::IdxGlobalParamFirst], sizeof(m_globalData));
+
+ applyPatchParameters(_params, 0);
+}
+
void Controller::parseSysexMessage(const pluginLib::SysEx& _msg)
{
if(_msg.size() >= 5)
@@ -286,7 +293,7 @@ void Controller::parseSysexMessage(const pluginLib::SysEx& _msg)
}
else if(name == midiPacketName(GlobalDump))
{
- memcpy(m_globalData.data(), &_msg[xt::IdxGlobalParamFirst], sizeof(m_globalData));
+ parseGlobal(_msg, data, parameterValues);
}
else if(name == midiPacketName(ModeDump))
{
diff --git a/source/xtJucePlugin/xtController.h b/source/xtJucePlugin/xtController.h
@@ -92,6 +92,7 @@ private:
void applyPatchParameters(const pluginLib::MidiPacket::ParamValues& _params, uint8_t _part) const;
void parseSingle(const pluginLib::SysEx& _msg, const pluginLib::MidiPacket::Data& _data, const pluginLib::MidiPacket::ParamValues& _params);
void parseMulti(const pluginLib::SysEx& _msg, const pluginLib::MidiPacket::Data& _data, const pluginLib::MidiPacket::ParamValues& _params) const;
+ void parseGlobal(const pluginLib::SysEx& _msg, const pluginLib::MidiPacket::Data& _data, const pluginLib::MidiPacket::ParamValues& _params);
void parseSysexMessage(const pluginLib::SysEx&) override;
bool parseMidiPacket(MidiPacketType _type, pluginLib::MidiPacket::Data& _data, pluginLib::MidiPacket::AnyPartParamValues& _params, const pluginLib::SysEx& _sysex) const;