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 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:
Msource/xtJucePlugin/parameterDescriptions_xt.json | 18+++++++++---------
Msource/xtJucePlugin/xtController.cpp | 17++++++++++++-----
Msource/xtJucePlugin/xtController.h | 1+
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;