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 57f04ea479fa7253958971be05c41e7ff39cb1d7
parent 80fd79edd6c51c7bef5bcbc8df1c2d7512cfa980
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Thu,  1 Aug 2024 20:20:18 +0200

parse performance

Diffstat:
Msource/nord/n2x/n2xJucePlugin/n2xController.cpp | 18+++++++++++++++++-
Msource/nord/n2x/n2xJucePlugin/n2xController.h | 10+++++++---
Msource/nord/n2x/n2xJucePlugin/parameterDescriptions_n2x.json | 152+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
3 files changed, 170 insertions(+), 10 deletions(-)

diff --git a/source/nord/n2x/n2xJucePlugin/n2xController.cpp b/source/nord/n2x/n2xJucePlugin/n2xController.cpp @@ -100,6 +100,7 @@ namespace n2xJucePlugin if(bank == n2x::SysexByte::SingleDumpBankEditBuffer && program < getPartCount()) { + std::copy(_msg.begin(), _msg.end(), m_singles[program].begin()); applyPatchParameters(params, program); return true; } @@ -110,7 +111,22 @@ namespace n2xJucePlugin bool Controller::parseMultiDump(const pluginLib::SysEx& _msg) { - return false; + pluginLib::MidiPacket::Data data; + pluginLib::MidiPacket::ParamValues params; + + if(!parseMidiPacket(midiPacketName(MidiPacketType::MultiDump), data, params, _msg)) + return false; + + const auto bank = data[pluginLib::MidiDataType::Bank]; + + if(bank != n2x::SysexByte::MultiDumpBankEditBuffer) + return false; + + std::copy(_msg.begin(), _msg.end(), m_multi.begin()); + + applyPatchParameters(params, 0); + + return true; } bool Controller::parseControllerMessage(const synthLib::SMidiEvent& _e) diff --git a/source/nord/n2x/n2xJucePlugin/n2xController.h b/source/nord/n2x/n2xJucePlugin/n2xController.h @@ -1,6 +1,7 @@ #pragma once #include "jucePluginLib/controller.h" +#include "n2xLib/n2xstate.h" class AudioPluginAudioProcessor; @@ -29,7 +30,7 @@ namespace n2xJucePlugin uint8_t getPartCount() override { - return 4; + return static_cast<uint8_t>(m_singles.size()); } bool parseSysexMessage(const pluginLib::SysEx&, synthLib::MidiEventSource) override; @@ -46,5 +47,9 @@ namespace n2xJucePlugin bool activatePatch(const std::vector<uint8_t>& _sysex, uint32_t _part); bool isDerivedParameter(pluginLib::Parameter& _derived, pluginLib::Parameter& _base) const override; + + private: + std::array<n2x::State::SingleDump, 4> m_singles; + n2x::State::MultiDump m_multi; }; -} -\ No newline at end of file +} diff --git a/source/nord/n2x/n2xJucePlugin/parameterDescriptions_n2x.json b/source/nord/n2x/n2xJucePlugin/parameterDescriptions_n2x.json @@ -138,8 +138,7 @@ {"class":"NonPartSensitive", "page":10, "index":311, "name":"PerfMorfTriggerNoteNumberD", "min":23, "max":127, "isDiscrete":true}, {"class":"NonPartSensitive", "page":10, "index":312, "name":"PerfBendRange", "min":0, "max":8, "isDiscrete":true}, {"class":"NonPartSensitive", "page":10, "index":313, "name":"PerfUnisonDetune", "min":0, "max":8, "isDiscrete":true}, - {"class":"NonPartSensitive", "page":10, "index":314, "name":"PerfOutModeAB", "min":0, "max":8, "isDiscrete":true}, - {"class":"NonPartSensitive", "page":10, "index":314, "name":"PerfOutModeCD", "min":0, "max":3, "isDiscrete":true}, + {"class":"NonPartSensitive", "page":10, "index":314, "name":"PerfOutModeABCD", "min":0, "max":8, "isDiscrete":true}, {"class":"NonPartSensitive", "page":10, "index":315, "name":"PerfGlobalMidiChannel", "min":0, "max":15, "isDiscrete":true}, {"class":"NonPartSensitive", "page":10, "index":316, "name":"PerfProgramChange", "min":0, "max":1, "isBool":true}, {"class":"NonPartSensitive", "page":10, "index":317, "name":"PerfMidiControl", "min":0, "max":1, "isBool":true}, @@ -330,15 +329,156 @@ "multidump": [ {"type": "byte", "value": "f0"}, - {"type": "byte", "value": "3e"}, - {"type": "byte", "value": "0e"}, + {"type": "byte", "value": "33"}, {"type": "deviceid"}, - {"type": "byte", "value": "11"}, + {"type": "byte", "value": "04"}, {"type": "bank"}, {"type": "program"}, - {"type": "null"}, + // 4 * single dump without sysex container = 4 * 66 * 2 parameters + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"},{"type": "null"}, + {"type":"param", "name":"PerfMidiChannelA"}, {"type":"param", "name":"PerfMidiChannelA", "shiftL":4}, + {"type":"param", "name":"PerfMidiChannelB"}, {"type":"param", "name":"PerfMidiChannelB", "shiftL":4}, + {"type":"param", "name":"PerfMidiChannelC"}, {"type":"param", "name":"PerfMidiChannelC", "shiftL":4}, + {"type":"param", "name":"PerfMidiChannelD"}, {"type":"param", "name":"PerfMidiChannelD", "shiftL":4}, + {"type":"param", "name":"PerfLfo1SyncA"}, {"type":"param", "name":"PerfLfo1SyncA", "shiftL":4}, + {"type":"param", "name":"PerfLfo1SyncB"}, {"type":"param", "name":"PerfLfo1SyncB", "shiftL":4}, + {"type":"param", "name":"PerfLfo1SyncC"}, {"type":"param", "name":"PerfLfo1SyncC", "shiftL":4}, + {"type":"param", "name":"PerfLfo1SyncD"}, {"type":"param", "name":"PerfLfo1SyncD", "shiftL":4}, + {"type":"param", "name":"PerfLfo2SyncA"}, {"type":"param", "name":"PerfLfo2SyncA", "shiftL":4}, + {"type":"param", "name":"PerfLfo2SyncB"}, {"type":"param", "name":"PerfLfo2SyncB", "shiftL":4}, + {"type":"param", "name":"PerfLfo2SyncC"}, {"type":"param", "name":"PerfLfo2SyncC", "shiftL":4}, + {"type":"param", "name":"PerfLfo2SyncD"}, {"type":"param", "name":"PerfLfo2SyncD", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerA"}, {"type":"param", "name":"PerfFilterEnvTriggerA", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerB"}, {"type":"param", "name":"PerfFilterEnvTriggerB", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerC"}, {"type":"param", "name":"PerfFilterEnvTriggerC", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerD"}, {"type":"param", "name":"PerfFilterEnvTriggerD", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelA"}, {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelA", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelB"}, {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelB", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelC"}, {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelC", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelD"}, {"type":"param", "name":"PerfFilterEnvTriggerMidiChannelD", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberA"}, {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberA", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberB"}, {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberB", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberC"}, {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberC", "shiftL":4}, + {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberD"}, {"type":"param", "name":"PerfFilterEnvTriggerNoteNumberD", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerA"}, {"type":"param", "name":"PerfAmpEnvTriggerA", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerB"}, {"type":"param", "name":"PerfAmpEnvTriggerB", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerC"}, {"type":"param", "name":"PerfAmpEnvTriggerC", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerD"}, {"type":"param", "name":"PerfAmpEnvTriggerD", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelA"}, {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelA", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelB"}, {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelB", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelC"}, {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelC", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelD"}, {"type":"param", "name":"PerfAmpEnvTriggerMidiChannelD", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberA"}, {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberA", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberB"}, {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberB", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberC"}, {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberC", "shiftL":4}, + {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberD"}, {"type":"param", "name":"PerfAmpEnvTriggerNoteNumberD", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerA"}, {"type":"param", "name":"PerfMorfTriggerA", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerB"}, {"type":"param", "name":"PerfMorfTriggerB", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerC"}, {"type":"param", "name":"PerfMorfTriggerC", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerD"}, {"type":"param", "name":"PerfMorfTriggerD", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerMidiChannelA"}, {"type":"param", "name":"PerfMorfTriggerMidiChannelA", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerMidiChannelB"}, {"type":"param", "name":"PerfMorfTriggerMidiChannelB", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerMidiChannelC"}, {"type":"param", "name":"PerfMorfTriggerMidiChannelC", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerMidiChannelD"}, {"type":"param", "name":"PerfMorfTriggerMidiChannelD", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerNoteNumberA"}, {"type":"param", "name":"PerfMorfTriggerNoteNumberA", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerNoteNumberB"}, {"type":"param", "name":"PerfMorfTriggerNoteNumberB", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerNoteNumberC"}, {"type":"param", "name":"PerfMorfTriggerNoteNumberC", "shiftL":4}, + {"type":"param", "name":"PerfMorfTriggerNoteNumberD"}, {"type":"param", "name":"PerfMorfTriggerNoteNumberD", "shiftL":4}, + {"type":"param", "name":"PerfBendRange"}, {"type":"param", "name":"PerfBendRange", "shiftL":4}, + {"type":"param", "name":"PerfUnisonDetune"}, {"type":"param", "name":"PerfUnisonDetune", "shiftL":4}, + {"type":"param", "name":"PerfOutModeABCD"}, {"type":"param", "name":"PerfOutModeABCD", "shiftL":4}, + {"type":"param", "name":"PerfGlobalMidiChannel"}, {"type":"param", "name":"PerfGlobalMidiChannel", "shiftL":4}, + {"type":"param", "name":"PerfProgramChange"}, {"type":"param", "name":"PerfProgramChange", "shiftL":4}, + {"type":"param", "name":"PerfMidiControl"}, {"type":"param", "name":"PerfMidiControl", "shiftL":4}, + {"type":"param", "name":"PerfMasterTune"}, {"type":"param", "name":"PerfMasterTune", "shiftL":4}, + {"type":"param", "name":"PerfPedalType"}, {"type":"param", "name":"PerfPedalType", "shiftL":4}, + {"type":"param", "name":"PerfLocalControl"}, {"type":"param", "name":"PerfLocalControl", "shiftL":4}, + {"type":"param", "name":"PerfKeyboardOctaveShift"}, {"type":"param", "name":"PerfKeyboardOctaveShift", "shiftL":4}, + {"type":"param", "name":"PerfSelectedSlot"}, {"type":"param", "name":"PerfSelectedSlot", "shiftL":4}, + {"type":"param", "name":"PerfArpMidiOut"}, {"type":"param", "name":"PerfArpMidiOut", "shiftL":4}, + {"type":"param", "name":"PerfSlotActiveA"}, {"type":"param", "name":"PerfSlotActiveA", "shiftL":4}, + {"type":"param", "name":"PerfSlotActiveB"}, {"type":"param", "name":"PerfSlotActiveB", "shiftL":4}, + {"type":"param", "name":"PerfSlotActiveC"}, {"type":"param", "name":"PerfSlotActiveC", "shiftL":4}, + {"type":"param", "name":"PerfSlotActiveD"}, {"type":"param", "name":"PerfSlotActiveD", "shiftL":4}, + {"type":"param", "name":"PerfProgramSelectA"}, {"type":"param", "name":"PerfProgramSelectA", "shiftL":4}, + {"type":"param", "name":"PerfProgramSelectB"}, {"type":"param", "name":"PerfProgramSelectB", "shiftL":4}, + {"type":"param", "name":"PerfProgramSelectC"}, {"type":"param", "name":"PerfProgramSelectC", "shiftL":4}, + {"type":"param", "name":"PerfProgramSelectD"}, {"type":"param", "name":"PerfProgramSelectD", "shiftL":4}, + {"type":"param", "name":"PerfBankSelectA"}, {"type":"param", "name":"PerfBankSelectA", "shiftL":4}, + {"type":"param", "name":"PerfBankSelectB"}, {"type":"param", "name":"PerfBankSelectB", "shiftL":4}, + {"type":"param", "name":"PerfBankSelectC"}, {"type":"param", "name":"PerfBankSelectC", "shiftL":4}, + {"type":"param", "name":"PerfBankSelectD"}, {"type":"param", "name":"PerfBankSelectD", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureAmountA"}, {"type":"param", "name":"PerfChannelPressureAmountA", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureAmountB"}, {"type":"param", "name":"PerfChannelPressureAmountB", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureAmountC"}, {"type":"param", "name":"PerfChannelPressureAmountC", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureAmountD"}, {"type":"param", "name":"PerfChannelPressureAmountD", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureDestA"}, {"type":"param", "name":"PerfChannelPressureDestA", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureDestB"}, {"type":"param", "name":"PerfChannelPressureDestB", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureDestC"}, {"type":"param", "name":"PerfChannelPressureDestC", "shiftL":4}, + {"type":"param", "name":"PerfChannelPressureDestD"}, {"type":"param", "name":"PerfChannelPressureDestD", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalAmountA"}, {"type":"param", "name":"PerfExpressionPedalAmountA", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalAmountB"}, {"type":"param", "name":"PerfExpressionPedalAmountB", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalAmountC"}, {"type":"param", "name":"PerfExpressionPedalAmountC", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalAmountD"}, {"type":"param", "name":"PerfExpressionPedalAmountD", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalDestA"}, {"type":"param", "name":"PerfExpressionPedalDestA", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalDestB"}, {"type":"param", "name":"PerfExpressionPedalDestB", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalDestC"}, {"type":"param", "name":"PerfExpressionPedalDestC", "shiftL":4}, + {"type":"param", "name":"PerfExpressionPedalDestD"}, {"type":"param", "name":"PerfExpressionPedalDestD", "shiftL":4}, + {"type":"param", "name":"PerfKeyboardSplit"}, {"type":"param", "name":"PerfKeyboardSplit", "shiftL":4}, + {"type":"param", "name":"PerfSplitPoint"}, {"type":"param", "name":"PerfSplitPoint", "shiftL":4}, + {"type": "byte", "value": "f7"} ] },