RolandJansen/intermix.js

View on GitHub
src/registry/midiActionDefs.ts

Summary

Maintainability
D
2 days
Test Coverage
import { IInternalActionDef } from "../interfaces/IActions";

// WARNING!: Currently not in use.

/**
 * This list is ment to be a short reference but could also
 * be used as a lookup table for plugins (onChange).
 * Control numbers 120 - 127 are in a seperate actionDef array.
 * For a detailed list see
 * https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2
 */
export const midiActionTypes: string[] = [
    // Shouldn't this be an enum? Does it makes sense at all?
    "00_BANK_SELECT",
    "01_MODULATION_WHEEL",
    "02_BREATH_CONTROLLER",
    "03_UNDEFINED",
    "04_FOOT_CONTROLLER",
    "05_PORTAMENTO_TIME",
    "06_DATA_ENTRY_MSB",
    "07_CHANNEL_VOLUME",
    "08_BALANCE",
    "09_UNDEFINED",
    "10_PAN",
    "11_EXPRESSION_CONTROLLER",
    "12_EFFECT_CONTROL_1",
    "13_EFFECT_CONTROL_2",
    "14_UNDEFINED",
    "15_UNDEFINED",
    "16_GENERAL_PURPOSE_CONTROLLER_1",
    "17_GENERAL_PURPOSE_CONTROLLER_2",
    "18_GENERAL_PURPOSE_CONTROLLER_3",
    "19_GENERAL_PURPOSE_CONTROLLER_4",
    "20_UNDEFINED",
    "21_UNDEFINED",
    "22_UNDEFINED",
    "23_UNDEFINED",
    "24_UNDEFINED",
    "25_UNDEFINED",
    "26_UNDEFINED",
    "27_UNDEFINED",
    "28_UNDEFINED",
    "29_UNDEFINED",
    "30_UNDEFINED",
    "31_UNDEFINED",
    "32_LSB_FOR_CONTROL_0",
    "33_LSB_FOR_CONTROL_1",
    "34_LSB_FOR_CONTROL_2",
    "35_LSB_FOR_CONTROL_3",
    "36_LSB_FOR_CONTROL_4",
    "37_LSB_FOR_CONTROL_5",
    "38_LSB_FOR_CONTROL_6",
    "39_LSB_FOR_CONTROL_7",
    "40_LSB_FOR_CONTROL_8",
    "41_LSB_FOR_CONTROL_9",
    "42_LSB_FOR_CONTROL_10",
    "43_LSB_FOR_CONTROL_11",
    "44_LSB_FOR_CONTROL_12",
    "45_LSB_FOR_CONTROL_13",
    "46_LSB_FOR_CONTROL_14",
    "47_LSB_FOR_CONTROL_15",
    "48_LSB_FOR_CONTROL_16",
    "49_LSB_FOR_CONTROL_17",
    "50_LSB_FOR_CONTROL_18",
    "51_LSB_FOR_CONTROL_19",
    "52_LSB_FOR_CONTROL_20",
    "53_LSB_FOR_CONTROL_21",
    "54_LSB_FOR_CONTROL_22",
    "55_LSB_FOR_CONTROL_23",
    "56_LSB_FOR_CONTROL_24",
    "57_LSB_FOR_CONTROL_25",
    "58_LSB_FOR_CONTROL_26",
    "59_LSB_FOR_CONTROL_27",
    "60_LSB_FOR_CONTROL_28",
    "61_LSB_FOR_CONTROL_29",
    "62_LSB_FOR_CONTROL_30",
    "63_LSB_FOR_CONTROL_31",
    "64_DAMPER_PEDAL_ON_OFF",
    "65_PORTAMENTO_ON_OFF",
    "66_SOSTENUTO_ON_OFF",
    "67_SOFT_PEDAL_ON_OFF",
    "68_LEGATO_FOOTSWITCH_ON_OFF",
    "69_HOLD_2",
    "70_SOUND_CONTROLLER_1",
    "71_SOUND_CONTROLLER_2",
    "72_SOUND_CONTROLLER_3",
    "73_SOUND_CONTROLLER_4",
    "74_SOUND_CONTROLLER_5",
    "75_SOUND_CONTROLLER_6",
    "76_SOUND_CONTROLLER_7",
    "77_SOUND_CONTROLLER_8",
    "78_SOUND_CONTROLLER_9",
    "79_SOUND_CONTROLLER_10",
    "80_GENERAL_PURPOSE_CONTROLLER_5",
    "81_GENERAL_PURPOSE_CONTROLLER_6",
    "82_GENERAL_PURPOSE_CONTROLLER_7",
    "83_GENERAL_PURPOSE_CONTROLLER_8",
    "84_PORTAMENTO_CONTROL",
    "85_UNDEFINED",
    "86_UNDEFINED",
    "87_UNDEFINED",
    "88_HIGH_RESOLUTION_VELOCITY_PREFIX",
    "89_UNDEFINED",
    "90_UNDEFINED",
    "91_EFFECTS_1_DEPTH",
    "92_EFFECTS_2_DEPTH",
    "93_EFFECTS_3_DEPTH",
    "94_EFFECTS_4_DEPTH",
    "95_EFFECTS_5_DEPTH",
    "96_DATA_INCREMENT",
    "97_DATA_DECREMENT",
    "98_NRPN-LSB",
    "99_NRPN-MSB",
    "100_RPN-LSB",
    "101_RPN-MSB",
    // channel mode messages below
    "120_ALL_SOUND_OFF",
    "121_RESET_ALL_CONTROLLERS",
    "122_LOCAL_CONTROL_ON_OFF",
    "123_ALL_NOTES_OFF",
    "124_OMNI_MODE_OFF",
    "125_OMNI_MODE_ON",
    "126_MONO_MODE_ON",
    "127_POLY_MODE_ON",
];

/**
 * Sound based midi control messages.
 * Controller numbers 102-119 are omited
 * because they are not in use.
 */
export const midiActionDefs: IInternalActionDef[] = [
    {
        type: "00_BANK_SELECT",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "01_MODULATION_WHEEL",
        desc: "also for lever",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "02_BREATH_CONTROLLER",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "03_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "04_FOOT_CONTROLLER",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "05_PORTAMENTO_TIME",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "06_DATA_ENTRY_MSB",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "07_CHANNEL_VOLUME",
        desc: "formerly Main Volume",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "08_BALANCE",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "09_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "10_PAN",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "11_EXPRESSION_CONTROLLER",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "12_EFFECT_CONTROL_1",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "13_EFFECT_CONTROL_2",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "14_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "15_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "16_GENERAL_PURPOSE_CONTROLLER_1",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "17_GENERAL_PURPOSE_CONTROLLER_2",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "18_GENERAL_PURPOSE_CONTROLLER_3",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "19_GENERAL_PURPOSE_CONTROLLER_4",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "20_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "21_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "22_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "23_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "24_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "25_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "26_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "27_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "28_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "29_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "30_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "31_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "32_LSB_FOR_CONTROL_0",
        desc: "Bank Select",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "33_LSB_FOR_CONTROL1",
        desc: "Modulation Wheel or Lever",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "34_LSB_FOR_CONTROL2",
        desc: "Breath Controller",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "35_LSB_FOR_CONTROL3",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "36_LSB_FOR_CONTROL4",
        desc: "Foot Controller",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "37_LSB_FOR_CONTROL5",
        desc: "Portamento Time",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "38_LSB_FOR_CONTROL6",
        desc: "Data Entry",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "39_LSB_FOR_CONTROL7",
        desc: "Channel Volume, formerly Main Volume",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "40_LSB_FOR_CONTROL8",
        desc: "Balance",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "41_LSB_FOR_CONTROL9",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "42_LSB_FOR_CONTROL10",
        desc: "Pan",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "43_LSB_FOR_CONTROL11",
        desc: "Expression Controller",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "44_LSB_FOR_CONTROL12",
        desc: "Effect control 1",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "45_LSB_FOR_CONTROL13",
        desc: "Effect control 2",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "46_LSB_FOR_CONTROL14",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "47_LSB_FOR_CONTROL15",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "48_LSB_FOR_CONTROL16",
        desc: "General Purpose Controller 1",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "49_LSB_FOR_CONTROL17",
        desc: "General Purpose Controller 2",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "50_LSB_FOR_CONTROL18",
        desc: "General Purpose Controller 3",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "51_LSB_FOR_CONTROL19",
        desc: "General Purpose Controller 4",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "52_LSB_FOR_CONTROL20",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "53_LSB_FOR_CONTROL21",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "54_LSB_FOR_CONTROL22",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "55_LSB_FOR_CONTROL23",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "56_LSB_FOR_CONTROL24",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "57_LSB_FOR_CONTROL25",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "58_LSB_FOR_CONTROL26",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "59_LSB_FOR_CONTROL27",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "60_LSB_FOR_CONTROL28",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "61_LSB_FOR_CONTROL29",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "62_LSB_FOR_CONTROL30",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "63_LSB_FOR_CONTROL31",
        desc: "Undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "64_DAMPER_PEDAL_ON_OFF",
        desc: "Sustain: <=63 off, >=64 on",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "65_PORTAMENTO_ON_OFF",
        desc: "<=63 off, >=64 on",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "66_SOSTENUTO_ON_OFF",
        desc: "<=63 off, >=64 on",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "67_SOFT_PEDAL_ON_OFF",
        desc: "<=63 off, >=64 on",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "68_LEGATO_FOOTSWITCH_ON_OFF",
        desc: "<=63 off, >=64 on",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "69_HOLD_2",
        desc: "<=63 off, >=64 on",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "70_SOUND_CONTROLLER_1",
        desc: "default: Sound Variation",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "71_SOUND_CONTROLLER_2",
        desc: "default: Timbre/Harmonic Intens.",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "72_SOUND_CONTROLLER_3",
        desc: "default: Release Time",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "73_SOUND_CONTROLLER_4",
        desc: "default: Attack Time",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "74_SOUND_CONTROLLER_5",
        desc: "default: Brightness",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "75_SOUND_CONTROLLER_6",
        desc: "default: Decay Time",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "76_SOUND_CONTROLLER_7",
        desc: "default: Vibrato Rate",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "77_SOUND_CONTROLLER_8",
        desc: "default: Vibrato Depth",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "78_SOUND_CONTROLLER_9",
        desc: "default: Vibrato Delay",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "79_SOUND_CONTROLLER_10",
        desc: "default: undefined",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "80_GENERAL_PURPOSE_CONTROLLER_5",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "81_GENERAL_PURPOSE_CONTROLLER_6",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "82_GENERAL_PURPOSE_CONTROLLER_7",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "83_GENERAL_PURPOSE_CONTROLLER_8",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "84_PORTAMENTO_CONTROL",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "85_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "86_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "87_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "88_HIGH_RESOLUTION_VELOCITY_PREFIX",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "89_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "90_UNDEFINED",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "91_EFFECTS_1_DEPTH",
        desc: "default: Reverb Send Level",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "92_EFFECTS_2_DEPTH",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "93_EFFECTS_3_DEPTH",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "94_EFFECTS_4_DEPTH",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "95_EFFECTS_5_DEPTH",
        desc: "",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "96_DATA_INCREMENT",
        desc: "Data Entry +1",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "97_DATA_DECREMENT",
        desc: "Data Entry -1",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "98_NRPN-LSB",
        desc: "Non-Registered Parameter Number",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "99_NRPN-MSB",
        desc: "Non-Registered Parameter Number",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "100_RPN-LSB",
        desc: "Registered Parameter Number",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "101_RPN-MSB",
        desc: "Registered Parameter Number",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
];

/**
 * Controller numbers 120-127 are reserved for
 * channel mode messages (not for sound devices).
 */
export const midiChannelActionDefs: IActionDef[] = [
    {
        type: "120_ALL_SOUND_OFF",
        desc: "Channel Mode Message",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "121_RESET_ALL_CONTROLLERS",
        desc: "Channel Mode Message",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "122_LOCAL_CONTROL_ON_OFF",
        desc: "0=off, 127=on (Channel Mode Message)",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "123_ALL_NOTES_OFF",
        desc: "Channel Mode Message",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "124_OMNI_MODE_OFF",
        desc: "+ all notes off (Channel Mode Message)",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "125_OMNI_MODE_ON",
        desc: "+ all notes off (Channel Mode Message)",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
    {
        type: "126_MONO_MODE_ON",
        desc: "+ poly off, + all notes off (Channel Mode Message)",
        minVal: 0,
        maxVal: 127,
        defVal: 0,
        steps: 128,
    },
    {
        type: "127_POLY_MODE_ON",
        desc: "+ mono off, + all notes off (Channel Mode Message)",
        minVal: 0,
        maxVal: 0,
        defVal: 0,
        steps: 0,
    },
];