Cog/ThirdParty/libemusc/include/params.h
Christopher Snowhill e233a95c2a EmuSC experiment goes here
This is mostly working, but kind of buggy.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-03-15 00:21:43 -07:00

380 lines
20 KiB
C++

/*
* This file is part of libEmuSC, a Sound Canvas emulator library
* Copyright (C) 2023-2024 Håkon Skjelten
*
* libEmuSC is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* libEmuSC is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with libEmuSC. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __PARAMS_H__
#define __PARAMS_H__
namespace EmuSC {
// All variables for master settings as defined by the Sound Canvas lineup
enum class SystemParam : int {
// Part 1: Settings defined by SysEx chart
// These settings can be both requested and modified by SysEx messages
Tune = 0x0000, // 4B: [0x0014 - 0x07e8 : 0x0400]-100.0-100.0
Tune1 = 0x0001,
Tune2 = 0x0002,
Tune3 = 0x0003,
Volume = 0x0004, // [0x00 - 0x7f : 0x7f]
KeyShift = 0x0005, // [0x28 - 0x58 : 0x40]
Pan = 0x0006, // [0x01 - 0x7f : 0x40]
ResetGSstandardMode = 0x007f, // No data stored, but triggers a reset event
// Part 2: Settings outside SysEx chart
RxSysEx = 0x0090, // [0 - 1 : 1]
RxGMOn = 0x0091, // [0 - 1 : 1]
RxGSReset = 0x0092, // [0 - 1 : 1]
RxInstrumentChange = 0x0093, // [0 - 1 : 1]
RxFunctionControl = 0x0094, // [0 - 1 : 1]
DeviceID = 0x0095, // [1 - 32 : 17]
};
enum class PatchParam : int {
// Part 1: Settings defined by SysEx chart
// =======================================
// These settings can be both requested and modified by SysEx messages
PatchName = 0x0100,
PartialReserve = 0x0110,
ReverbMacro = 0x0130, // [0x00 - 0x07 : 0x04]
ReverbCharacter = 0x0131, // [0x00 - 0x07 : 0x04]
ReverbPreLPF = 0x0132, // [0x00 - 0x7f : 0x00]
ReverbLevel = 0x0133, // [0x00 - 0x7f : 0x40]
ReverbTime = 0x0134, // [0x00 - 0x7f : 0x40]
ReverbDelayFeedback = 0x0135, // [0x00 - 0x7f : 0x00]
ReverbPreDelayTime = 0x0137, // SC-88
ChorusMacro = 0x0138, // [0x00 - 0x07 : 0x02]
ChorusPreLPF = 0x0139, // [0x00 - 0x07 : 0x00]
ChorusLevel = 0x013a, // [0x00 - 0x7f : 0x40]
ChorusFeedback = 0x013b, // [0x00 - 0x7f : 0x08]
ChorusDelay = 0x013c, // [0x00 - 0x7f : 0x50]
ChorusRate = 0x013d, // [0x00 - 0x7f : 0x03]
ChorusDepth = 0x013e, // [0x00 - 0x7f : 0x13]
ChorusSendToReverb = 0x013f, // [0x00 - 0x7f : 0x00]
// The remaining patch paramters have separate values for each part
// All addresses are either 0x1PXX or 0x2PXX, where P = part number
ToneNumber = 0x1000, // 2B: Byte 1 = CtrlChg, Byte 2 = ProgChg
ToneNumber2 = 0x1001, // Only helper for easy access 2nd. byte
RxChannel = 0x1002, // [1 - 17] X = Part number, 17 = Off
RxPitchBend = 0x1003, // [0 - 1 : 1] 0 = Off, 1 = On
RxChPressure = 0x1004, // [0 - 1 : 1] 0 = Off, 1 = On
RxProgramChange = 0x1005, // [0 - 1 : 1] 0 = Off, 1 = On
RxControlChange = 0x1006, // [0 - 1 : 1] 0 = Off, 1 = On
RxPolyPressure = 0x1007, // [0 - 1 : 1] 0 = Off, 1 = On
RxNoteMessage = 0x1008, // [0 - 1 : 1] 0 = Off, 1 = On
RxRPN = 0x1009, // [0 - 1 : 1] 0 = Off, 1 = On
RxNRPN = 0x100a, // [0 - 1 : 1] 0 = Off, 1 = On
// Note: Set to Off if mode is set to 'GM'
RxModulation = 0x100b, // [0 - 1 : 1] 0 = Off, 1 = On
RxVolume = 0x100c, // [0 - 1 : 1] 0 = Off, 1 = On
RxPanpot = 0x100d, // [0 - 1 : 1] 0 = Off, 1 = On
RxExpression = 0x100e, // [0 - 1 : 1] 0 = Off, 1 = On
RxHold1 = 0x100f, // [0 - 1 : 1] 0 = Off, 1 = On
RxPortamento = 0x1010, // [0 - 1 : 1] 0 = Off, 1 = On
RxSostenuto = 0x1011, // [0 - 1 : 1] 0 = Off, 1 = On
RxSoft = 0x1012, // [0 - 1 : 1] 0 = Off, 1 = On
PolyMode = 0x1013, // [0 (Mono) | 1 (Poly) : 1]
AssignMode = 0x1014, // [0 - 2] 0 = Single, 1 = Limited-Multi,
// 2 = Full-Multi
UseForRhythm = 0x1015, // [0 - 3] 0 = Off, 1 = Map1, 2 = Map2
PitchKeyShift = 0x1016, // [0x28 - 0x58 : 0x40] -24 - 24 semitone
PitchOffsetFine = 0x1017, // 2B [0x08 - 0xf8 : 0x0800] -12.0 - 12.0 Hz
PitchOffsetFine2 = 0x1018,
PartLevel = 0x1019, // [0x00 - 0x7f : 0x64]
VelocitySenseDepth = 0x101a, // [0x00 - 0x7f : 0x40]
VelocitySenseOffset = 0x101b, // [0x00 - 0x7f : 0x40]
PartPanpot = 0x101c, // [0x00 - 0x7f : 0x40] 0 = rnd, left > right
KeyRangeLow = 0x101d, // [0x00 - 0x7f : 0x00]
KeyRangeHigh = 0x101e, // [0x00 - 0x7f : 0x7f]
CC1ControllerNumber = 0x101f, // [0x00 - 0x5f : 0x40]
CC2ControllerNumber = 0x1020, // [0x00 - 0x5f : 0x40]
ChorusSendLevel = 0x1021, // [0x00 - 0x7f : 0x00] (CC# 93)
ReverbSendLevel = 0x1022, // [0x00 - 0x7f : 0x28] (CC# 91)
RxBankSelect = 0x1023, // [0 - 1 : 1] Note: Missing from SC-55 OM,
// but present on SC-55mkII and onwards
RxBankSelectLSB = 0x1024, // (SC88+)
PitchFineTune = 0x102a, // [SC88+][0x0000 - 0x7f7f : 0x400] (14 bit)
PitchFineTune2 = 0x102b, // Also RPN #1 so used for that on SC-55
DelaySendLevel = 0x102c, // (SC88+)
// Tone modify
// Note: SC-55 has [0x0e - 0x72 : 0x40] for all tone modify parameters
// SC-88 has [0x00 - 0x7f : 0x40] for all tone modify parameters
VibratoRate = 0x1030, // NRPN# 8
VibratoDepth = 0x1031, // NRPN# 9
TVFCutoffFreq = 0x1032, // NRPN# 32
TVFResonance = 0x1033, // NRPN# 33
TVFAEnvAttack = 0x1034, // NRPN# 99
TVFAEnvDecay = 0x1035, // NRPN# 100
TVFAEnvRelease = 0x1036, // NRPN# 102
VibratoDelay = 0x1037, // NRPN# 10
// Scale tuning
ScaleTuningC = 0x1040, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningC_ = 0x1041, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningD = 0x1042, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningD_ = 0x1043, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningE = 0x1044, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningF = 0x1045, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningF_ = 0x1046, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningG = 0x1047, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningG_ = 0x1048, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningA = 0x1049, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningA_ = 0x104a, // [0x00 - 0x7f : 0x40], -63 - 63 cent
ScaleTuningB = 0x104b, // [0x00 - 0x7f : 0x40], -63 - 63 cent
// Controller setttings (0x41 0x2P 0xXX)
// These settings contains the current value for each controller parameter.
// Modulator
MOD_PitchControl = 0x2000, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
MOD_TVFCutoffControl= 0x2001, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
MOD_AmplitudeControl= 0x2002, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
MOD_LFO1RateControl = 0x2003, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
MOD_LFO1PitchDepth = 0x2004, // [0x00 - 0x7f : 0x0a], 0 - 600 cent
MOD_LFO1TVFDepth = 0x2005, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
MOD_LFO1TVADepth = 0x2006, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
MOD_LFO2RateControl = 0x2007, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
MOD_LFO2PitchDepth = 0x2008, // [0x00 - 0x7f : 0x00], 0 - 600 cent
MOD_LFO2TVFDepth = 0x2009, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
MOD_LFO2TVADepth = 0x200a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// Pitch Bend
PB_PitchControl = 0x2010, // [0x40 - 0x58 : 0x40], 0 - +24 semitones
PB_TVFCutoffControl = 0x2011, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
PB_AmplitudeControl = 0x2012, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
PB_LFO1RateControl = 0x2013, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
PB_LFO1PitchDepth = 0x2014, // [0x00 - 0x7f : 0x00], 0 - 600 cent
PB_LFO1TVFDepth = 0x2015, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
PB_LFO1TVADepth = 0x2016, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
PB_LFO2RateControl = 0x2017, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
PB_LFO2PitchDepth = 0x2018, // [0x00 - 0x7f : 0x00], 0 - 600 cent
PB_LFO2TVFDepth = 0x2019, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
PB_LFO2TVADepth = 0x201a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// Channel Aftertouch
CAf_PitchControl = 0x2020, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
CAf_TVFCutoffControl= 0x2021, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CAf_AmplitudeControl= 0x2022, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CAf_LFO1RateControl = 0x2023, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CAf_LFO1PitchDepth = 0x2024, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CAf_LFO1TVFDepth = 0x2025, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CAf_LFO1TVADepth = 0x2026, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CAf_LFO2RateControl = 0x2027, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CAf_LFO2PitchDepth = 0x2028, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CAf_LFO2TVFDepth = 0x2029, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CAf_LFO2TVADepth = 0x202a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// Poly Aftertouch
PAf_PitchControl = 0x2030, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
PAf_TVFCutoffControl= 0x2031, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
PAf_AmplitudeControl= 0x2032, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
PAf_LFO1RateControl = 0x2033, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
PAf_LFO1PitchDepth = 0x2034, // [0x00 - 0x7f : 0x00], 0 - 600 cent
PAf_LFO1TVFDepth = 0x2035, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
PAf_LFO1TVADepth = 0x2036, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
PAf_LFO2RateControl = 0x2037, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
PAf_LFO2PitchDepth = 0x2038, // [0x00 - 0x7f : 0x00], 0 - 600 cent
PAf_LFO2TVFDepth = 0x2039, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
PAf_LFO2TVADepth = 0x203a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// CC#1
CC1_PitchControl = 0x2040, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
CC1_TVFCutoffControl= 0x2041, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CC1_AmplitudeControl= 0x2042, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CC1_LFO1RateControl = 0x2043, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CC1_LFO1PitchDepth = 0x2044, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CC1_LFO1TVFDepth = 0x2045, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CC1_LFO1TVADepth = 0x2046, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CC1_LFO2RateControl = 0x2047, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CC1_LFO2PitchDepth = 0x2048, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CC1_LFO2TVFDepth = 0x2049, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CC1_LFO2TVADepth = 0x204a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// CC#2
CC2_PitchControl = 0x2050, // [0x20 - 0x58 : 0x40], -24 - 24 semitones
CC2_TVFCutoffControl= 0x2051, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CC2_AmplitudeControl= 0x2052, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CC2_LFO1RateControl = 0x2053, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CC2_LFO1PitchDepth = 0x2054, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CC2_LFO1TVFDepth = 0x2055, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CC2_LFO1TVADepth = 0x2056, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CC2_LFO2RateControl = 0x2057, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CC2_LFO2PitchDepth = 0x2058, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CC2_LFO2TVFDepth = 0x2059, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CC2_LFO2TVADepth = 0x205a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// SC-88 only additions TODO: FIX
// ToneMapNumber = 0x4000, // [SC-88Pro]
// ToneMap0Number = 0x4001, // [SC-88Pro]
// EqOnOff = 0x4020, // [SC-88]
// OutputAssign = 0x4021, // [SC-88Pro]
// PartEfxAssign = 0x4022, // [SC-88Pro]
// Part 2: Settings outside SysEx chart
// ====================================
// The following settings contains the latest controller inputs. These
// values are controller parameter states multiplied with controller value.
// The values of these controller inputs are updated whenever a controller
// changes value.
// Modulator
CtM_PitchControl = 0x2060, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
CtM_TVFCutoffControl= 0x2061, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CtM_AmplitudeControl= 0x2062, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CtM_LFO1RateControl = 0x2063, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtM_LFO1PitchDepth = 0x2064, // [0x00 - 0x7f : 0x0a], 0 - 600 cent
CtM_LFO1TVFDepth = 0x2065, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtM_LFO1TVADepth = 0x2066, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CtM_LFO2RateControl = 0x2067, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtM_LFO2PitchDepth = 0x2068, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtM_LFO2TVFDepth = 0x2069, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtM_LFO2TVADepth = 0x206a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// Pitch Bend
CtB_PitchControl = 0x2070, // [0x40 - 0x58 : 0x40], 0 - +24 semitones 2B
CtB_TVFCutoffControl= 0x2071, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CtB_AmplitudeControl= 0x2072, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CtB_LFO1RateControl = 0x2073, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtB_LFO1PitchDepth = 0x2074, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtB_LFO1TVFDepth = 0x2075, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtB_LFO1TVADepth = 0x2076, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CtB_LFO2RateControl = 0x2077, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtB_LFO2PitchDepth = 0x2078, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtB_LFO2TVFDepth = 0x2079, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtB_LFO2TVADepth = 0x207a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// Channel Aftertouch
CtC_PitchControl = 0x2080, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
CtC_TVFCutoffControl= 0x2081, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CtC_AmplitudeControl= 0x2082, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CtC_LFO1RateControl = 0x2083, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtC_LFO1PitchDepth = 0x2084, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtC_LFO1TVFDepth = 0x2085, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtC_LFO1TVADepth = 0x2086, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CtC_LFO2RateControl = 0x2087, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtC_LFO2PitchDepth = 0x2088, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtC_LFO2TVFDepth = 0x2089, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtC_LFO2TVADepth = 0x208a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// Poly Aftertouch
CtP_PitchControl = 0x2090, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
CtP_TVFCutoffControl= 0x2091, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
CtP_AmplitudeControl= 0x2092, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
CtP_LFO1RateControl = 0x2093, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtP_LFO1PitchDepth = 0x2094, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtP_LFO1TVFDepth = 0x2095, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtP_LFO1TVADepth = 0x2096, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
CtP_LFO2RateControl = 0x2097, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
CtP_LFO2PitchDepth = 0x2098, // [0x00 - 0x7f : 0x00], 0 - 600 cent
CtP_LFO2TVFDepth = 0x2099, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
CtP_LFO2TVADepth = 0x209a, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// CC#1
Ct1_PitchControl = 0x20a0, // [0x20 - 0x58 : 0x40], -24 - +24 semitones
Ct1_TVFCutoffControl= 0x20a1, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
Ct1_AmplitudeControl= 0x20a2, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
Ct1_LFO1RateControl = 0x20a3, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
Ct1_LFO1PitchDepth = 0x20a4, // [0x00 - 0x7f : 0x00], 0 - 600 cent
Ct1_LFO1TVFDepth = 0x20a5, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
Ct1_LFO1TVADepth = 0x20a6, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
Ct1_LFO2RateControl = 0x20a7, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
Ct1_LFO2PitchDepth = 0x20a8, // [0x00 - 0x7f : 0x00], 0 - 600 cent
Ct1_LFO2TVFDepth = 0x20a9, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
Ct1_LFO2TVADepth = 0x20aa, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// CC#2
Ct2_PitchControl = 0x20b0, // [0x20 - 0x58 : 0x40], -24 - 24 semitones
Ct2_TVFCutoffControl= 0x20b1, // [0x00 - 0x7f : 0x40], -9600 - 9600 cent
Ct2_AmplitudeControl= 0x20b2, // [0x00 - 0x7f : 0x40], -100.0 - 100.0 %
Ct2_LFO1RateControl = 0x20b3, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
Ct2_LFO1PitchDepth = 0x20b4, // [0x00 - 0x7f : 0x00], 0 - 600 cent
Ct2_LFO1TVFDepth = 0x20b5, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
Ct2_LFO1TVADepth = 0x20b6, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
Ct2_LFO2RateControl = 0x20b7, // [0x00 - 0x7f : 0x40], -10.0 - 10.0 Hz
Ct2_LFO2PitchDepth = 0x20b8, // [0x00 - 0x7f : 0x00], 0 - 600 cent
Ct2_LFO2TVFDepth = 0x20b9, // [0x00 - 0x7f : 0x00], 0 - 2400 cent
Ct2_LFO2TVADepth = 0x20ba, // [0x00 - 0x7f : 0x00], 0 - 100.0 %
// And finally a list of controller parameters that contains accumulated
// values from all 6 controllers. Updated at the same time as the controller
// inputs above, i.e. whenever a controller changes value.
Acc_PitchControl = 0x20f0, // [0x0000 - 0x7f7f : 0x4000], Note: 2 Bytes
Acc_TVFCutoffControl= 0x20f2, // [0x00 - 0x7f : 0x40]
Acc_AmplitudeControl= 0x20f3, // [0x00 - 0x7f : 0x40]
Acc_LFO1RateControl = 0x20f4, // [0x00 - 0x7f : 0x40]
Acc_LFO1PitchDepth = 0x20f5, // [0x00 - 0x7f : 0x00]
Acc_LFO1TVFDepth = 0x20f6, // [0x00 - 0x7f : 0x00]
Acc_LFO1TVADepth = 0x20f7, // [0x00 - 0x7f : 0x00]
Acc_LFO2RateControl = 0x20f8, // [0x00 - 0x7f : 0x40]
Acc_LFO2PitchDepth = 0x20f9, // [0x00 - 0x7f : 0x00]
Acc_LFO2TVFDepth = 0x20fa, // [0x00 - 0x7f : 0x00]
Acc_LFO2TVADepth = 0x20fb, // [0x00 - 0x7f : 0x00]
// Controller state values
Modulation = 0x1080, // [0x00 - 0x7f]
PitchBend = 0x1081, // [0x00 - 0x4000 : 0x2000] Note: 2 Bytes!
ChannelPressure = 0x1083, // [0x00 - 0x7f : 0]
PolyKeyPressure = 0x1084, // [0x00 - 0x7f : 0] pr. key. Need an array?
CC1Controller = 0x1085, // [0x00 - 0x7f : 0]
CC2Controller = 0x1086, // [0x00 - 0x7f : 0]
Hold1 = 0x1087, // [0x00 - 0x7f : 0] 0-63: OFF, 64-127: ON
Sostenuto = 0x1088, // [0x00 - 0x7f : 0] 0-63: OFF, 64-127: ON
Soft = 0x1089, // [0x00 - 0x7f : 0] 0-63: OFF, 64-127: ON
Expression = 0x108a, // [0x00 - 0x7f : 0xff]
Portamento = 0x108b, // [0 - 1 : 0]
PortamentoTime = 0x108c, // [0x00 - 0x7f : 0]
// Current RPN and NRPN
RPN_LSB = 0x1090, // [0x00 - 0x7f : 0]
RPN_MSB = 0x1091, // [0x00 - 0x7f : 0]
NRPN_LSB = 0x1092, // [0x00 - 0x7f : 0]
NRPN_MSB = 0x1093, // [0x00 - 0x7f : 0]
// Other patch parameters from CC / RPN / NRPN / menu
PitchCoarseTune = 0x1094 // [0x28 - 0x58 : 0x40] -24 - 24 semit. RPN#2
};
// All variables for individual parts as defined by the Sound Canvas lineup
enum class DrumParam : int {
DrumsMapName = 0x0000, // 12B ASCII
PlayKeyNumber = 0x0100, // [0x00 - 0x7f] semitones
Level = 0x0200, // [0x00 - 0x7f]
AssignGroupNumber = 0x0300, // [0x00 - 0x7f]
Panpot = 0x0400, // [0x00 - 0x7f]
ReverbDepth = 0x0500, // [0x00 - 0x7f]
ChorusDepth = 0x0600, // [0x00 - 0x7f]
RxNoteOff = 0x0700, // [0 - 1]
RxNoteOn = 0x0800 // [0 - 1]
};
}
#endif // __PARAMS_H__