x32-osc
Version:
X32/M32 interface to all OSC parameters and meters
1,035 lines • 116 kB
JavaScript
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.x32Enums = exports.x32NodeStructure = void 0;
//: {[K: string]: string[]}
var x32Enums = {
inBlocks: [
'AN1-8',
'AN9-16',
'AN17-24',
'AN25-32',
'A1-8',
'A9-16',
'A17-24',
'A25-32',
'A33-40',
'A41-48',
'B1-8',
'B9-16',
'B17-24',
'B25-32',
'B33-40',
'B41-48',
'CARD1-8',
'CARD9-16',
'CARD17-24',
'CARD25-32',
'UIN1-8',
'UIN9-16',
'UIN17-24',
'UIN25-32',
],
auxInBlocks: [
'AUX1-4',
'AN1-2',
'AN1-4',
'AN1-6',
'A1-2',
'A1-4',
'A1-6',
'B1-2',
'B1-4',
'B1-6',
'CARD1-2',
'CARD1-4',
'CARD1-6',
'UIN1-2',
'UIN1-4',
'UIN1-6',
],
extOutBlocks: [
'AN1-8',
'AN9-16',
'AN17-24',
'AN25-32',
'A1-8',
'A9-16',
'A17-24',
'A25-32',
'A33-40',
'A41-48',
'B1-8',
'B9-16',
'B17-24',
'B25-32',
'B33-40',
'B41-48',
'CARD1-8',
'CARD9-16',
'CARD17-24',
'CARD25-32',
'OUT1-8',
'OUT9-16',
'P161-8',
'P169-16',
'AUX/CR',
'AUX/TB',
'UOUT1-8',
'UOUT9-16',
'UOUT17-24',
'UOUT25-32',
'UOUT33-40',
'UOUT41-48',
'UIN1-8',
'UIN9-16',
'UIN17-24',
'UIN25-32',
],
outBlocks1: [
'AN1-4',
'AN9-12',
'AN17-20',
'AN25-28',
'A1-4',
'A9-12',
'A17-20',
'A25-28',
'A33-36',
'A41-44',
'B1-4',
'B9-12',
'B17-20',
'B25-28',
'B33-36',
'B41-44',
'CARD1-4',
'CARD9-12',
'CARD17-20',
'CARD25-28',
'OUT1-4',
'OUT9-12',
'P161-4',
'P169-12',
'AUX/CR',
'AUX/TB',
'UOUT1-4',
'UOUT9-12',
'UOUT17-20',
'UOUT25-28',
'UOUT33-36',
'UOUT41-44',
'UIN1-4',
'UIN9-12',
'UIN17-20',
'UIN25-28',
],
outBlocks2: [
'AN5-8',
'AN13-16',
'AN21-24',
'AN29-32',
'A5-8',
'A13-16',
'A21-24',
'A29-32',
'A37-40',
'A45-48',
'B5-8',
'B13-16',
'B21-24',
'B29-32',
'B37-40',
'B45-48',
'CARD5-8',
'CARD13-16',
'CARD21-24',
'CARD29-32',
'OUT5-8',
'OUT13-16',
'P165-8',
'P1613-16',
'AUX/CR',
'AUX/TB',
'UOUT5-8',
'UOUT13-16',
'UOUT21-24',
'UOUT29-32',
'UOUT37-40',
'UOUT45-48',
'UIN5-8',
'UIN13-16',
'UIN21-24',
'UIN29-32',
],
color: ['OFF', 'RD', 'GN', 'YE', 'BL', 'MG', 'CY', 'WH', 'OFFi', 'RDi', 'GNi', 'YEi', 'BLi', 'MGi', 'CYi', 'WHi'],
inputSource: (function () {
var inputSource = ['OFF'];
for (var i = 1; i <= 32; i++)
inputSource.push('In' + i.toString().padStart(2, '0'));
for (var i = 1; i <= 6; i++)
inputSource.push('Aux ' + i);
inputSource.push('USB L');
inputSource.push('USB R');
for (var i = 1; i <= 4; i++) {
inputSource.push('Fx ' + i + 'L');
inputSource.push('Fx ' + i + 'R');
}
for (var i = 1; i <= 16; i++)
inputSource.push('Bus ' + i.toString().padStart(2, '0'));
return inputSource;
})(),
fx14Type: [
'HALL',
'AMBI',
'RPLT',
'ROOM',
'CHAM',
'PLAT',
'VREV',
'VRM',
'GATE',
'RVRS',
'DLY',
'3TAP',
'4TAP',
'CRS',
'FLNG',
'PHAS',
'DIMC',
'FILT',
'ROTA',
'PAN',
'SUB',
'D/RV',
'CR/R',
'FL/R',
'D/CR',
'D/FL',
'MODD',
'GEQ2',
'GEQ',
'TEQ2',
'TEQ',
'DES2',
'DES',
'P1A',
'P1A2',
'PQ5',
'PQ5S',
'WAVD',
'LIM',
'CMB',
'CMB2',
'FAC',
'FAC1M',
'FAC2',
'LEC',
'LEC2',
'ULC',
'ULC2',
'ENH2',
'ENH',
'EXC2',
'EXC',
'IMG',
'EDI',
'SON',
'AMP2',
'AMP',
'DRV2',
'DRV',
'PIT2',
'PIT',
],
fx58Type: [
'GEQ2',
'GEQ',
'TEQ2',
'TEQ',
'DES2',
'DES',
'P1A',
'P1A2',
'PQ5',
'PQ5S',
'WAVD',
'LIM',
'FAC',
'FAC1M',
'FAC2',
'LEC',
'LEC2',
'ULC',
'ULC2',
'ENH2',
'ENH',
'EXC2',
'EXC',
'IMG',
'EDI',
'SON',
'AMP2',
'AMP',
'DRV2',
'DRV',
'PHAS',
'FILT',
'PAN',
'SUB',
],
fxSource: [
'INS',
'MIX1',
'MIX2',
'MIX3',
'MIX4',
'MIX5',
'MIX6',
'MIX7',
'MIX8',
'MIX9',
'MIX10',
'MIX11',
'MIX12',
'MIX13',
'MIX14',
'MIX15',
'MIX16',
'M/C',
],
outputSource: (function () {
var outputSource = ['OFF', 'Main L', 'Main R', 'M/C'];
for (var i = 1; i <= 16; i++)
outputSource.push('MixBus ' + i.toString().padStart(2, '0'));
for (var i = 1; i <= 6; i++)
outputSource.push('Matrix ' + i.toString());
for (var i = 1; i <= 32; i++)
outputSource.push('DirectOut Ch ' + i.toString().padStart(2, '0'));
for (var i = 1; i <= 8; i++)
outputSource.push('DirectOut Aux ' + i.toString());
for (var i = 1; i <= 4; i++) {
outputSource.push('DirectOut FX ' + i + 'L');
outputSource.push('DirectOut FX ' + i + 'R');
}
outputSource.push('Monitor L', 'Monitor R', 'Talkback');
return outputSource;
})(),
delayFactor: ['1/4', '3/8', '1/2', '2/3', '1', '4/3', '3/2', '2', '3'],
dlyPattern: ['1/4', '1/3', '3/8', '1/2', '2/3', '3/4', '1', '1/4X', '1/3X', '3/8X', '1/2X', '2/3X', '3/4X', '1X'],
pq5MidFreq: ['200', '300', '500', '700', '1k', '1k5', '2k', '3k', '4k', '5k', '7k'],
cmbRatio: ['1.1', '1.2', '1.3', '1.5', '1.7', '2', '2.5', '3', '3.5', '4', '5', '7', '10', 'LIM'],
};
exports.x32Enums = x32Enums;
var x32TalkbackDefinition = {
level: { _type: 'level161' },
dim: { _type: 'enum', _enum: ['OFF', 'ON'] },
latch: { _type: 'enum', _enum: ['OFF', 'ON'] },
destmap: { _type: 'bitmap', _size: 18 },
};
var x32UserctrlDefinition = {
color: { _type: 'enum', _enum: x32Enums.color },
enc: (function () {
var enc = {};
for (var i = 1; i <= 4; i++)
enc["'" + i.toString()] = { _type: 'encString' };
return enc;
})(),
btn: (function () {
var btn = {};
for (var i = 5; i <= 12; i++)
btn["'" + i.toString()] = { _type: 'btnString' };
return btn;
})(),
};
var x32FilterDefinition = {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
type: { _type: 'enum', _enum: ['LC6', 'LC12', 'HC6', 'HC12', '1.0', '2.0', '3.0', '5.0', '10.0'] },
f: { _type: 'exponential', _min: 20, _max: 20000, _steps: 200, _decimals: 1, _freq: true },
};
var x32MtxDynDefinition = {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
mode: { _type: 'enum', _enum: ['COMP', 'EXP'] },
det: { _type: 'enum', _enum: ['PEAK', 'RMS'] },
env: { _type: 'enum', _enum: ['LIN', 'LOG'] },
thr: { _type: 'linear', _min: -60.0, _max: 0.0, _step: 0.5, _decimals: 1 },
ratio: { _type: 'enum', _enum: ['1.1', '1.3', '1.5', '2.0', '2.5', '3.0', '4.0', '5.0', '7.0', '10', '20', '100'] },
knee: { _type: 'linear', _min: 0.0, _max: 5.0, _step: 1.0 },
mgain: { _type: 'linear', _min: 0.0, _max: 24.0, _step: 0.5, _decimals: 2, _maxDigits: 3 },
attack: { _type: 'linear', _min: 0.0, _max: 120.0, _step: 1.0 },
hold: { _type: 'exponential', _min: 0.02, _max: 2000, _steps: 100, _decimals: 2, _maxDigits: 3 },
release: { _type: 'exponential', _min: 5, _max: 4000, _steps: 100, _decimals: 0 },
pos: { _type: 'enum', _enum: ['PRE', 'POST'] },
mix: { _type: 'linear', _min: 0, _max: 100, _step: 5 },
auto: { _type: 'enum', _enum: ['OFF', 'ON'] },
filter: x32FilterDefinition,
};
var x32DynDefinition = {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
mode: { _type: 'enum', _enum: ['COMP', 'EXP'] },
det: { _type: 'enum', _enum: ['PEAK', 'RMS'] },
env: { _type: 'enum', _enum: ['LIN', 'LOG'] },
thr: { _type: 'linear', _min: -60.0, _max: 0.0, _step: 0.5, _decimals: 1 },
ratio: { _type: 'enum', _enum: ['1.1', '1.3', '1.5', '2.0', '2.5', '3.0', '4.0', '5.0', '7.0', '10', '20', '100'] },
knee: { _type: 'linear', _min: 0.0, _max: 5.0, _step: 1.0 },
mgain: { _type: 'linear', _min: 0.0, _max: 24.0, _step: 0.5, _decimals: 2, _maxDigits: 3 },
attack: { _type: 'linear', _min: 0.0, _max: 120.0, _step: 1.0 },
hold: { _type: 'exponential', _min: 0.02, _max: 2000, _steps: 100, _decimals: 2, _maxDigits: 3 },
release: { _type: 'exponential', _min: 5, _max: 4000, _steps: 100, _decimals: 0 },
pos: { _type: 'enum', _enum: ['PRE', 'POST'] },
keysrc: { _type: 'virtualEnum', _enum: x32Enums.inputSource },
mix: { _type: 'linear', _min: 0, _max: 100, _step: 5 },
auto: { _type: 'enum', _enum: ['OFF', 'ON'] },
filter: x32FilterDefinition,
};
var x32InsertDefinition = {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
pos: { _type: 'enum', _enum: ['PRE', 'POST'] },
sel: {
_type: 'enum',
_enum: [
'OFF',
'FX1L',
'FX1R',
'FX2L',
'FX2R',
'FX3L',
'FX3R',
'FX4L',
'FX4R',
'FX5L',
'FX5R',
'FX6L',
'FX6R',
'FX7L',
'FX7R',
'FX8L',
'FX8R',
'AUX1',
'AUX2',
'AUX3',
'AUX4',
'AUX5',
'AUX6',
],
},
};
function x32EqDefinition(bands, main) {
var eq = { on: { _type: 'enum', _enum: ['OFF', 'ON'] } };
var type = { _type: 'enum', _enum: ['LCut', 'LShv', 'PEQ', 'VEQ', 'HShv', 'HCut'] };
if (main)
type = {
_type: 'enum',
_enum: [
'LCut',
'LShv',
'PEQ',
'VEQ',
'HShv',
'HCut',
'BU6',
'BU12',
'BS12',
'LR12',
'BU18',
'BU24',
'BS24',
'LR24',
],
};
var band = {
type: type,
f: { _type: 'exponential', _min: 20, _max: 20000, _steps: 200, _decimals: 1, _freq: true },
g: { _type: 'linear', _min: -15.0, _max: 15, _step: 0.25, _decimals: 2, _maxDigits: 3, _plusSign: true },
q: { _type: 'exponential', _min: 10, _max: 0.3, _steps: 71, _decimals: 1, _maxDigits: 2 },
};
for (var i = 1; i <= bands; i++) {
eq["'" + i.toString()] = band;
}
return eq;
}
function x32MixDefinition(sendsCount, main, mono, bus) {
var mixDefinition = {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
fader: { _type: 'level' },
};
if (!main)
mixDefinition.st = { _type: 'enum', _enum: ['OFF', 'ON'] };
if (!mono)
mixDefinition.pan = {
_type: 'linear',
_min: -100.0,
_max: 100.0,
_step: 2.0,
_plusSign: true,
};
if (!main) {
mixDefinition.mono = { _type: 'enum', _enum: ['OFF', 'ON'] };
mixDefinition.mlevel = { _type: 'level161' };
}
for (var i = 1; i < sendsCount; i += 2)
//mixDefinition['\'' + i.toString().padStart(2, '0')] = x32MixSendNode(i);
mixDefinition = __assign(__assign({}, mixDefinition), x32MixSendNode(i, main || bus));
return mixDefinition;
}
function x32MixSendNode(oddNumber, main) {
var _a;
var typeEnum = ['IN/LC', '<-EQ', 'EQ->', 'PRE', 'POST'];
if (!main)
typeEnum.push('GRP');
var commonLeaves = {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
level: { _type: 'level161' },
};
var mixSendOdd = {
pan: { _type: 'linear', _min: -100.0, _max: 100.0, _step: 2.0, _plusSign: true },
type: { _type: 'enum', _enum: typeEnum },
panFollow: { _type: 'virtualEnum', _enum: ['OFF', 'ON'] },
};
return _a = {},
_a["'" + oddNumber.toString().padStart(2, '0')] = __assign(__assign({}, commonLeaves), mixSendOdd),
_a["'" + (oddNumber + 1).toString().padStart(2, '0')] = commonLeaves,
_a;
}
var x32ChannelDefinition = {
config: {
name: { _type: 'string' },
icon: { _type: 'icon' },
color: { _type: 'enum', _enum: x32Enums.color },
source: { _type: 'virtualEnum', _enum: x32Enums.inputSource },
},
delay: {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
time: { _type: 'linear', _min: 0.3, _max: 500.0, _step: 0.1, _decimals: 1 },
},
preamp: {
trim: { _type: 'linear', _min: -18, _max: 18, _step: 0.25, _decimals: 1, _plusSign: true },
invert: { _type: 'enum', _enum: ['OFF', 'ON'] },
hpon: { _type: 'enum', _enum: ['OFF', 'ON'] },
hpslope: { _type: 'enum', _enum: ['12', '18', '24'] },
hpf: { _type: 'exponential', _min: 20, _max: 400, _steps: 100, _decimals: 0 },
},
gate: {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
mode: { _type: 'enum', _enum: ['EXP2', 'EXP3', 'EXP4', 'GATE', 'DUCK'] },
thr: { _type: 'linear', _min: -80.0, _max: 0.0, _step: 0.5, _decimals: 1 },
range: { _type: 'linear', _min: 3.0, _max: 60.0, _step: 1.0, _decimals: 1 },
attack: { _type: 'linear', _min: 0.0, _max: 120.0, _step: 1.0 },
hold: { _type: 'exponential', _min: 0.02, _max: 2000, _steps: 100, _decimals: 2, _maxDigits: 3 },
release: { _type: 'exponential', _min: 5, _max: 4000, _steps: 100, _decimals: 0 },
keysrc: { _type: 'virtualEnum', _enum: x32Enums.inputSource },
filter: x32FilterDefinition,
},
dyn: x32DynDefinition,
insert: x32InsertDefinition,
eq: x32EqDefinition(4),
mix: x32MixDefinition(16),
grp: {
dca: { _type: 'bitmap', _size: 8 },
mute: { _type: 'bitmap', _size: 6 },
},
automix: {
group: { _type: 'enum', _enum: ['OFF', 'X', 'Y'] },
weight: { _type: 'linear', _min: -12.0, _max: 12.0, _step: 0.5, _decimals: 1, _plusSign: true },
},
};
var x32AuxDefinition = {
config: {
name: { _type: 'string' },
icon: { _type: 'icon' },
color: { _type: 'enum', _enum: x32Enums.color },
source: { _type: 'virtualEnum', _enum: x32Enums.inputSource },
},
preamp: {
trim: { _type: 'linear', _min: -18, _max: 18, _step: 0.25, _decimals: 1, _plusSign: true },
invert: { _type: 'enum', _enum: ['OFF', 'ON'] },
},
eq: x32EqDefinition(4),
mix: x32MixDefinition(16),
grp: {
dca: { _type: 'bitmap', _size: 8 },
mute: { _type: 'bitmap', _size: 6 },
},
};
var x32FxrtnDefinition = {
config: {
name: { _type: 'string' },
icon: { _type: 'icon' },
color: { _type: 'enum', _enum: x32Enums.color },
},
eq: x32EqDefinition(4),
mix: x32MixDefinition(16),
grp: {
dca: { _type: 'bitmap', _size: 8 },
mute: { _type: 'bitmap', _size: 6 },
},
};
var x32BusDefinition = {
config: {
name: { _type: 'string' },
icon: { _type: 'icon' },
color: { _type: 'enum', _enum: x32Enums.color },
},
dyn: x32DynDefinition,
insert: x32InsertDefinition,
eq: x32EqDefinition(6),
mix: x32MixDefinition(6, false, false, true),
grp: {
dca: { _type: 'bitmap', _size: 8 },
mute: { _type: 'bitmap', _size: 6 },
},
};
var x32MtxDefinition = {
config: {
name: { _type: 'string' },
icon: { _type: 'icon' },
color: { _type: 'enum', _enum: x32Enums.color },
},
preamp: {
invert: { _type: 'enum', _enum: ['OFF', 'ON'] },
},
dyn: x32MtxDynDefinition,
insert: x32InsertDefinition,
eq: x32EqDefinition(6, true),
mix: {
on: { _type: 'enum', _enum: ['OFF', 'ON'] },
fader: { _type: 'level' },
},
grp: {
dca: { _type: 'bitmap', _size: 8 },
mute: { _type: 'bitmap', _size: 6 },
},
};
var x32FxConditional = {
HALL: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.2, _max: 5, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 24, _decimals: 1, _freq: true },
{ _name: 'Diffuse', _type: 'linear', _min: 1, _max: 30, _step: 1 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Bass Multi', _type: 'exponential', _min: 0.5, _max: 2, _steps: 50, _decimals: 2 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 50, _step: 1 },
{ _name: 'Shape', _type: 'linear', _min: 0, _max: 250, _step: 5 },
{ _name: 'Mod Speed', _type: 'linear', _min: 0, _max: 100, _step: 5 },
],
AMBI: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.2, _max: 7.3, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 24, _decimals: 1, _freq: true },
{ _name: 'Diffuse', _type: 'linear', _min: 1, _max: 30, _step: 1 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Modulate', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Tail Gain', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
RPLT: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.3, _max: 29, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 4, _max: 39, _step: 1 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 24, _decimals: 1, _freq: true },
{ _name: 'Diffuse', _type: 'linear', _min: 0, _max: 100, _step: 4 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Bass Multi', _type: 'exponential', _min: 0.25, _max: 4, _steps: 52, _decimals: 2 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 50, _step: 1 },
{ _name: 'Attack', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Spin', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Echo L', _type: 'linear', _min: 0, _max: 1200, _step: 5 },
{ _name: 'Echo R', _type: 'linear', _min: 0, _max: 1200, _step: 5 },
{ _name: 'Echo Feed L', _type: 'linear', _min: -100, _max: 100, _step: 2 },
{ _name: 'Echo Feed R', _type: 'linear', _min: -100, _max: 100, _step: 2 },
],
ROOM: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.3, _max: 29, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 4, _max: 76, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 24, _decimals: 1, _freq: true },
{ _name: 'Diffuse', _type: 'linear', _min: 0, _max: 100, _step: 4 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Bass Multi', _type: 'exponential', _min: 0.25, _max: 4, _steps: 52, _decimals: 2 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 50, _step: 1 },
{ _name: 'Shape', _type: 'linear', _min: 0, _max: 250, _step: 5 },
{ _name: 'Spin', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Echo L', _type: 'linear', _min: 0, _max: 1200, _step: 5 },
{ _name: 'Echo R', _type: 'linear', _min: 0, _max: 1200, _step: 5 },
{ _name: 'Echo Feed L', _type: 'linear', _min: -100, _max: 100, _step: 2 },
{ _name: 'Echo Feed R', _type: 'linear', _min: -100, _max: 100, _step: 2 },
],
CHAM: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.3, _max: 29, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 4, _max: 76, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 24, _decimals: 1, _freq: true },
{ _name: 'Diffuse', _type: 'linear', _min: 0, _max: 100, _step: 4 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Bass Multi', _type: 'exponential', _min: 0.25, _max: 4, _steps: 52, _decimals: 2 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 50, _step: 1 },
{ _name: 'Shape', _type: 'linear', _min: 0, _max: 250, _step: 5 },
{ _name: 'Spin', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Reflection L', _type: 'linear', _min: 0, _max: 500, _step: 5 },
{ _name: 'Reflection L', _type: 'linear', _min: 0, _max: 500, _step: 5 },
{ _name: 'Reflection Gain L', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Reflection Gain R', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
PLAT: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.5, _max: 10, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 24, _decimals: 1, _freq: true },
{ _name: 'Diffuse', _type: 'linear', _min: 1, _max: 30, _step: 1 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Bass Multi', _type: 'exponential', _min: 0.5, _max: 2, _steps: 50, _decimals: 2 },
{ _name: 'Xover', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 2 },
{ _name: 'Mod Depth', _type: 'linear', _min: 1, _max: 50, _step: 1 },
{ _name: 'Mod Speed', _type: 'linear', _min: 0, _max: 100, _step: 5 },
],
VREV: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 120, _step: 2 },
{ _name: 'Decay', _type: 'linear', _min: 0.4, _max: 4.5, _step: 0.1, _decimals: 1 },
{ _name: 'Modulate', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Vintage', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Position', _type: 'enum', _enum: ['FRONT', 'REAR'] },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 10000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Lo Multiply', _type: 'exponential', _min: 0.5, _max: 2, _steps: 50, _decimals: 2 },
{ _name: 'Hi Multiply', _type: 'exponential', _min: 0.25, _max: 1, _steps: 50, _decimals: 2 },
],
VRM: [
{ _name: 'Reverb Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.1, _max: 20, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2 },
{ _name: 'Density', _type: 'linear', _min: 1, _max: 30, _step: 1 },
{ _name: 'ER Level', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Multiply', _type: 'exponential', _min: 0.1, _max: 10, _steps: 50, _decimals: 2 },
{ _name: 'Hi Multiply', _type: 'exponential', _min: 0.1, _max: 10, _steps: 50, _decimals: 2 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'ER Left', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'ER Right', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Freeze', _type: 'enum', _enum: ['OFF', 'ON'] },
],
GATE: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'linear', _min: 140, _max: 1000, _step: 17.2, _decimals: 0 },
{ _name: 'Attack', _type: 'linear', _min: 0, _max: 30, _step: 1 },
{ _name: 'Density', _type: 'linear', _min: 1, _max: 50, _step: 1 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Shv Freq', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Hi Shv Gain', _type: 'linear', _min: -30, _max: 0, _step: 0.5, _decimals: 1 },
{ _name: 'Diffuse', _type: 'linear', _min: 1, _max: 30, _step: 1 },
],
RVRS: [
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 140, _max: 1000, _steps: 50, _decimals: 0 },
{ _name: 'Rise', _type: 'linear', _min: 0, _max: 50, _step: 1 },
{ _name: 'Diffuse', _type: 'linear', _min: 1, _max: 30, _step: 1 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Level', _type: 'linear', _min: -12, _max: 12, _step: 0.5, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Shv Freq', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Hi Shv Gain', _type: 'linear', _min: -30, _max: 0, _step: 0.5, _decimals: 1 },
],
DLY: [
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Mode', _type: 'enum', _enum: ['ST', 'X', 'M'] },
{ _name: 'Factor L', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Factor R', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Offset L/R', _type: 'linear', _min: -100, _max: 100, _step: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Feed Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Feed Left', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Feed Right', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Feed Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
],
'3TAP': [
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Gain Base', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Pan Base', _type: 'linear', _min: -100, _max: 100, _step: 5 },
{ _name: 'Feedback', _type: 'linear', _min: 0, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Factor A', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Gain A', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Pan A', _type: 'linear', _min: -100, _max: 100, _step: 5 },
{ _name: 'Factor B', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Gain B', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Pan B', _type: 'linear', _min: -100, _max: 100, _step: 5 },
{ _name: 'Cross Feed', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mono', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Dry', _type: 'enum', _enum: ['OFF', 'ON'] },
],
'4TAP': [
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Gain Base', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Feedback', _type: 'linear', _min: 0, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 6, _step: 1 },
{ _name: 'Factor A', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Gain A', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Factor B', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Gain B', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Factor C', _type: 'enum', _enum: x32Enums.delayFactor },
{ _name: 'Gain c', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Cross Feed', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mono', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Dry', _type: 'enum', _enum: ['OFF', 'ON'] },
],
CRS: [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 5, _steps: 100, _decimals: 2 },
{ _name: 'Depth L', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Depth R', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Delay L', _type: 'exponential', _min: 0.5, _max: 50, _steps: 50, _decimals: 1 },
{ _name: 'Delay R', _type: 'exponential', _min: 0.5, _max: 50, _steps: 50, _decimals: 1 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Wave', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Spread', _type: 'linear', _min: 0, _max: 100, _step: 5 },
],
FLNG: [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 5, _steps: 100, _decimals: 2 },
{ _name: 'Depth L', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Depth R', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Delay L', _type: 'exponential', _min: 0.5, _max: 20, _steps: 50, _decimals: 1 },
{ _name: 'Delay R', _type: 'exponential', _min: 0.5, _max: 20, _steps: 50, _decimals: 1 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Feed Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Feed Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Feed', _type: 'linear', _min: -90, _max: 90, _step: 5 },
],
PHAS: [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 5, _steps: 100, _decimals: 2 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Resonance', _type: 'linear', _min: 0, _max: 80, _step: 2 },
{ _name: 'Base', _type: 'linear', _min: 0, _max: 50, _step: 2 },
{ _name: 'Stages', _type: 'linear', _min: 2, _max: 12, _step: 1 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Wave', _type: 'linear', _min: -50, _max: 50, _step: 5 },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Env. Modulation', _type: 'linear', _min: -100, _max: 100, _step: 5 },
{ _name: 'Attack', _type: 'exponential', _min: 10, _max: 1000, _steps: 50, _decimals: 0 },
{ _name: 'Hold', _type: 'exponential', _min: 1, _max: 2000, _steps: 50, _decimals: 0 },
{ _name: 'Release', _type: 'exponential', _min: 10, _max: 1000, _steps: 50, _decimals: 0 },
],
DIMC: [
{ _name: 'Active', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mode', _type: 'enum', _enum: ['M', 'ST'] },
{ _name: 'Dry', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mode 1', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mode 2', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mode 3', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Mode 4', _type: 'enum', _enum: ['OFF', 'ON'] },
],
FILT: [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 20, _steps: 150, _decimals: 2 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Resonance', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Base', _type: 'exponential', _min: 20, _max: 15000, _steps: 100, _decimals: 1, _freq: true },
{ _name: 'Mode', _type: 'enum', _enum: ['LP', 'HP', 'BP', 'NO'] },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Wave', _type: 'enum', _enum: ['TRI', 'SIN', 'SAW', 'SAW-', 'RMP', 'SQU', 'RND'] },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Env. Modulation', _type: 'linear', _min: -100, _max: 100, _step: 2 },
{ _name: 'Attack', _type: 'exponential', _min: 10, _max: 250, _steps: 50, _decimals: 0 },
{ _name: 'Release', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Drive', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Pole', _type: 'enum', _enum: ['2POL', '4POL'] },
{ _name: 'Side Chain', _type: 'enum', _enum: ['OFF', 'ON'] },
],
ROTA: [
{ _name: 'Lo Speed', _type: 'exponential', _min: 0.1, _max: 4, _steps: 100, _decimals: 2 },
{ _name: 'Hi Speed', _type: 'exponential', _min: 2, _max: 10, _steps: 100, _decimals: 2 },
{ _name: 'Accelerate', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Distance', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Stop', _type: 'enum', _enum: ['RUN', 'STOP'] },
{ _name: 'Speed', _type: 'enum', _enum: ['SLOW', 'FAST'] },
],
PAN: [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 5, _steps: 100, _decimals: 2 },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Wave', _type: 'linear', _min: -50, _max: 50, _step: 5 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Env. Speed', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Env. Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Attack', _type: 'exponential', _min: 10, _max: 1000, _steps: 50, _decimals: 0 },
{ _name: 'Hold', _type: 'exponential', _min: 1, _max: 2000, _steps: 50, _decimals: 0 },
{ _name: 'Release', _type: 'exponential', _min: 10, _max: 1000, _steps: 50, _decimals: 0 },
],
SUB: [
{ _name: 'Active A', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Range A', _type: 'enum', _enum: ['LO', 'MID', 'HI'] },
{ _name: 'Dry A', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Octave-1 A', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Octave-2 A', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Active B', _type: 'enum', _enum: ['OFF', 'ON'] },
{ _name: 'Range B', _type: 'enum', _enum: ['LO', 'MID', 'HI'] },
{ _name: 'Dry B', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Octave-1 B', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Octave-2 B', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
'D/RV': [
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Pattern', _type: 'enum', _enum: x32Enums.dlyPattern },
{ _name: 'Feed Hi Cut', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Feedback', _type: 'linear', _min: 0, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Cross Feed', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5, _plusSign: true },
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.1, _max: 5, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
'CR/R': [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 4, _steps: 100, _decimals: 2 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Delay', _type: 'exponential', _min: 0.5, _max: 50, _steps: 50, _decimals: 1 },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Wave', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5, _plusSign: true },
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.1, _max: 5, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
'FL/R': [
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 4, _steps: 100, _decimals: 2 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Delay', _type: 'exponential', _min: 0.5, _max: 20, _steps: 50, _decimals: 1 },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Feed', _type: 'linear', _min: -90, _max: 90, _step: 5 },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5, _plusSign: true },
{ _name: 'Pre Delay', _type: 'linear', _min: 0, _max: 200, _step: 2 },
{ _name: 'Decay', _type: 'exponential', _min: 0.1, _max: 5, _steps: 50, _decimals: 2 },
{ _name: 'Size', _type: 'linear', _min: 2, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
'D/CR': [
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Pattern', _type: 'enum', _enum: x32Enums.dlyPattern },
{ _name: 'Feed Hi Cut', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Feedback', _type: 'linear', _min: 0, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Cross Feed', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5, _plusSign: true },
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 4, _steps: 100, _decimals: 2 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Delay', _type: 'exponential', _min: 0.5, _max: 50, _steps: 50, _decimals: 1 },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Wave', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
'D/FL': [
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Pattern', _type: 'enum', _enum: x32Enums.dlyPattern },
{ _name: 'Feed Hi Cut', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Feedback', _type: 'linear', _min: 0, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Cross Feed', _type: 'linear', _min: 0, _max: 100, _step: 2 },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5, _plusSign: true },
{ _name: 'Speed', _type: 'exponential', _min: 0.05, _max: 4, _steps: 100, _decimals: 2 },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Delay', _type: 'exponential', _min: 0.5, _max: 20, _steps: 50, _decimals: 1 },
{ _name: 'Phase', _type: 'linear', _min: 0, _max: 180, _step: 5 },
{ _name: 'Feed', _type: 'linear', _min: -90, _max: 90, _step: 5 },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
MODD: [
{ _name: 'Time', _type: 'linear', _min: 1, _max: 3000, _step: 1 },
{ _name: 'Delay Factor', _type: 'enum', _enum: ['1', '1/2', '2/3', '3/2'] },
{ _name: 'Feed', _type: 'linear', _min: 0, _max: 100, _step: 2, _decimals: 1 },
{ _name: 'Lo Cut', _type: 'exponential', _min: 10, _max: 500, _steps: 50, _decimals: 0 },
{ _name: 'Hi Cut', _type: 'exponential', _min: 200, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Depth', _type: 'linear', _min: 0, _max: 100, _step: 5 },
{ _name: 'Rate', _type: 'exponential', _min: 0.05, _max: 10, _steps: 100, _decimals: 2 },
{ _name: 'Setup', _type: 'enum', _enum: ['PAR', 'SER'] },
{ _name: 'Type', _type: 'enum', _enum: ['AMB', 'CLUB', 'HALL'] },
{ _name: 'Decay', _type: 'linear', _min: 1, _max: 10, _step: 0.5, _decimals: 1 },
{ _name: 'Damping', _type: 'exponential', _min: 1000, _max: 20000, _steps: 50, _decimals: 0, _freq: true },
{ _name: 'Balance', _type: 'linear', _min: -100, _max: 100, _step: 5, _plusSign: true },
{ _name: 'Mix', _type: 'linear', _min: 0, _max: 100, _step: 2 },
],
GEQ2: [
{ _name: '20.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '25.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '31.5 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '40.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '50.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '63.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '80.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '100.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '125.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '160.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '200.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '250.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '315.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '400.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '500.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '630.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '800.0 Hz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '1.00 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '1.25 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '1.60 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '2.00 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '2.50 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '3.15 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '4.00 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '5.00 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '6.30 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '8.00 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '10.0 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '12.5 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '16.0 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '20.0 kHz A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: 'Level A', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '20.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '25.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '31.5 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '40.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '50.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '63.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '80.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '100.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '125.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '160.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '200.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _name: '250.0 Hz B', _type: 'linear', _min: -15, _max: 15, _step: 0.5, _decimals: 1 },
{ _na