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 679528582727df09d0a883744017435c7f210d0e
parent 6dd63ab5b77ee50aea3103b1f3ef092cb701cd34
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Thu,  1 Aug 2024 16:23:20 +0200

define enums for CCs, single and multi parameters

Diffstat:
Msource/nord/n2x/n2xLib/n2xmiditypes.h | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msource/nord/n2x/n2xLib/n2xstate.cpp | 86++++++++++++++++++++++++++++++++++++++++----------------------------------------
2 files changed, 172 insertions(+), 43 deletions(-)

diff --git a/source/nord/n2x/n2xLib/n2xmiditypes.h b/source/nord/n2x/n2xLib/n2xmiditypes.h @@ -24,6 +24,135 @@ namespace n2x IdxMsgSpec, }; + enum SingleParam + { + Gain = 17, + OctaveShift = 64, + ModWheelDest = 59, + Unison = 60, + VoiceMode = 58, + Auto = 62, + Portamento = 16, + Lfo1Rate = 21, + Lfo1Waveform = 56, + Lfo1Dest = 57, + Lfo1Level = 22, + Lfo2Rate = 23, + Lfo2Dest = 65, + ArpRange = 24, + ModEnvA = 18, + ModEnvD = 19, + ModEnvDest = 61, + ModEnvLevel = 20, + O1Waveform = 50, + O2Waveform = 51, + O2Pitch = 0, + O2PitchFine = 1, + FmDepth = 7, + O2Keytrack = 54, + PW = 6, + Sync = 52, + Mix = 2, + AmpEnvA = 12, + AmpEnvD = 13, + AmpEnvS = 14, + AmpEnvR = 15, + FilterEnvA = 8, + FilterEnvD = 9, + FilterEnvS = 10, + FilterEnvR = 11, + FilterType = 53, + Cutoff = 3, + Resonance = 4, + FilterEnvAmount = 5, + FilterVelocity = 63, + FilterKeytrack = 55, + Distortion = 52 + }; + + enum ControlChange + { + CCGain = 7, + CCOctaveShift = 17, + CCModWheelDest = 18, + CCUnison = 16, + CCVoiceMode = 15, + CCAuto = 65, + CCPortamento = 5, + CCLfo1Rate = 19, + CCLfo1Waveform = 20, + CCLfo1Dest = 21, + CCLfo1Level = 22, + CCLfo2Rate = 23, + CCLfo2Dest = 24, + CCArpRange = 25, + CCModEnvA = 26, + CCModEnvD = 27, + CCModEnvDest = 28, + CCModEnvLevel = 29, + CCO1Waveform = 30, + CCO2Waveform = 31, + CCO2Pitch = 78, + CCO2PitchFine = 33, + CCFmDepth = 70, + CCO2Keytrack = 34, + CCPW = 79, + CCSync = 35, + CCMix = 8, + CCAmpEnvA = 73, + CCAmpEnvD = 36, + CCAmpEnvS = 37, + CCAmpEnvR = 72, + CCFilterEnvA = 38, + CCFilterEnvD = 39, + CCFilterEnvS = 40, + CCFilterEnvR = 41, + CCFilterType = 44, + CCCutoff = 74, + CCResonance = 42, + CCFilterEnvAmount = 43, + CCFilterVelocity = 45, + CCFilterKeytrack = 46, + CCDistortion = 80, + }; + + enum MultiParam + { + SlotAMidiChannel = 264, + SlotALfo1Sync = 268, + SlotALfo2Sync = 272, + SlotAFilterEnvTrigger = 276, + SlotAFilterEnvTrigMidiChannel = 280, + SlotAFilterEnvTrigMidiNoteNumber = 284, + SlotAAmpEnvTrigger = 288, + SlotAAmpEnvTrigMidiChannel = 292, + SlotAAmpEnvTrigMidiNoteNumber = 296, + SlotAMorphTrigger = 300, + SlotAMorphTrigMidiChannel = 304, + SlotAMorphTrigMidiNoteNumber = 308, + BendRange = 312, + UnisonDetune, + OutModeABCD, + GlobalMidiChannel, + MidiProgramChange, + MidiControl, + MasterTune, + PedalType, + LocalControl, + KeyboardOctaveShift, + SelectedChannel, + ArpMidiOut, + SlotAChannelActive, + SlotAProgramSelect = 328, + SlotABankSelect = 332, + SlotAChannelPressureAmount = 336, + SlotAChannelPressureDest = 340, + SlotAExpressionPedalAmount = 344, + SlotAExpressionPedalDest = 348, + KeyboardSplitActive = 352, + KeyboardSplitPointPoint + }; + static constexpr uint32_t g_sysexHeaderSize = 6; // F0, IdClavia, IdDevice, IdN2x, MsgType, MsgSpec static constexpr uint32_t g_sysexFooterSize = 1; // F7 static constexpr uint32_t g_sysexContainerSize = g_sysexHeaderSize + g_sysexFooterSize; diff --git a/source/nord/n2x/n2xLib/n2xstate.cpp b/source/nord/n2x/n2xLib/n2xstate.cpp @@ -82,50 +82,50 @@ namespace n2x using MultiDefaultData = std::array<uint8_t, ((g_multiDataSize - g_singleDataSize * 4)>>1)>; - const std::unordered_map<uint8_t, uint32_t> g_controllerMap = + const std::unordered_map<ControlChange, SingleParam> g_controllerMap = { - { 7, 17}, // Gain - {17, 64}, // OctaveShift - {18, 59}, // ModWheelDest - {16, 60}, // Unison - {15, 58}, // VoiceMode - {65, 62}, // Auto - { 5, 16}, // Portamento - {19, 21}, // Lfo1Rate - {20, 56}, // Lfo1Waveform - {21, 57}, // Lfo1Dest - {22, 22}, // Lfo1Level - {23, 23}, // Lfo2Rate - {24, 65}, // Lfo2Dest - {25, 24}, // ArpRange - {26, 18}, // ModEnvA - {27, 19}, // ModEnvD - {28, 61}, // ModEnvDest - {29, 20}, // ModEnvLevel - {30, 50}, // O1Waveform - {31, 51}, // O2Waveform - {78, 0}, // O2Pitch - {33, 1}, // O2PitchFine - {70, 7}, // FmDepth - {34, 54}, // O2Keytrack - {79, 6}, // PW - {35, 52}, // Sync - { 8, 2}, // Mix - {73, 12}, // AmpEnvA - {36, 13}, // AmpEnvD - {37, 14}, // AmpEnvS - {72, 15}, // AmpEnvR - {38, 8}, // FilterEnvA - {39, 9}, // FilterEnvD - {40, 10}, // FilterEnvS - {41, 11}, // FilterEnvR - {44, 53}, // FilterType - {74, 3}, // Cutoff - {42, 4}, // Resonance - {43, 5}, // FilterEnvAmount - {45, 63}, // FilterVelocity - {46, 55}, // FilterKeytrack - {80, 52}, // Distortion + {ControlChange::CCGain , SingleParam::Gain }, + {ControlChange::CCOctaveShift , SingleParam::OctaveShift }, + {ControlChange::CCModWheelDest , SingleParam::ModWheelDest }, + {ControlChange::CCUnison , SingleParam::Unison }, + {ControlChange::CCVoiceMode , SingleParam::VoiceMode }, + {ControlChange::CCAuto , SingleParam::Auto }, + {ControlChange::CCPortamento , SingleParam::Portamento }, + {ControlChange::CCLfo1Rate , SingleParam::Lfo1Rate }, + {ControlChange::CCLfo1Waveform , SingleParam::Lfo1Waveform }, + {ControlChange::CCLfo1Dest , SingleParam::Lfo1Dest }, + {ControlChange::CCLfo1Level , SingleParam::Lfo1Level }, + {ControlChange::CCLfo2Rate , SingleParam::Lfo2Rate }, + {ControlChange::CCLfo2Dest , SingleParam::Lfo2Dest }, + {ControlChange::CCArpRange , SingleParam::ArpRange }, + {ControlChange::CCModEnvA , SingleParam::ModEnvA }, + {ControlChange::CCModEnvD , SingleParam::ModEnvD }, + {ControlChange::CCModEnvDest , SingleParam::ModEnvDest }, + {ControlChange::CCModEnvLevel , SingleParam::ModEnvLevel }, + {ControlChange::CCO1Waveform , SingleParam::O1Waveform }, + {ControlChange::CCO2Waveform , SingleParam::O2Waveform }, + {ControlChange::CCO2Pitch , SingleParam::O2Pitch }, + {ControlChange::CCO2PitchFine , SingleParam::O2PitchFine }, + {ControlChange::CCFmDepth , SingleParam::FmDepth }, + {ControlChange::CCO2Keytrack , SingleParam::O2Keytrack }, + {ControlChange::CCPW , SingleParam::PW }, + {ControlChange::CCSync , SingleParam::Sync }, + {ControlChange::CCMix , SingleParam::Mix }, + {ControlChange::CCAmpEnvA , SingleParam::AmpEnvA }, + {ControlChange::CCAmpEnvD , SingleParam::AmpEnvD }, + {ControlChange::CCAmpEnvS , SingleParam::AmpEnvS }, + {ControlChange::CCAmpEnvR , SingleParam::AmpEnvR }, + {ControlChange::CCFilterEnvA , SingleParam::FilterEnvA }, + {ControlChange::CCFilterEnvD , SingleParam::FilterEnvD }, + {ControlChange::CCFilterEnvS , SingleParam::FilterEnvS }, + {ControlChange::CCFilterEnvR , SingleParam::FilterEnvR }, + {ControlChange::CCFilterType , SingleParam::FilterType }, + {ControlChange::CCCutoff , SingleParam::Cutoff }, + {ControlChange::CCResonance , SingleParam::Resonance }, + {ControlChange::CCFilterEnvAmount , SingleParam::FilterEnvAmount }, + {ControlChange::CCFilterVelocity , SingleParam::FilterVelocity }, + {ControlChange::CCFilterKeytrack , SingleParam::FilterKeytrack }, + {ControlChange::CCDistortion , SingleParam::Distortion } }; MultiDefaultData createMultiDefaultData()