spessasynth_core documentation
    Preparing search index...

    Class MIDIUtils

    This class contains useful utilities for manipulating and parsing System Exclusive and other MIDI 1.0 messages.

    Index
    • Analyzes a MIDI Non-Registered Parameter Number and returns an identification and data for it.

      Parameters

      • channel: number

        The MIDI channel number.

      • nrpn: number

        The 14-bit NRPN number.

      • value: number

        The 14-bit value for that number.

      • drumPitchStep: number = 0.5

        The drum pitch coarse resolution in semitones. 0.5 for GS (SC-88 and above), 1 for XG and the SC-55 drum map (bank LSB 1).

      Returns AnalyzedParameter

      The analysis result(s) of the message.

    • Analyzes a MIDI Registered Parameter Number and returns an identification and data for it.

      Parameters

      • channel: number

        The MIDI channel number.

      • rpn: number

        The 14-bit RPN number.

      • value: number

        The 14-bit value for that number.

      Returns AnalyzedParameter

      The analysis result(s) of the message.

    • Converts MIDI channel number to GS "part number".

      Parameters

      • channel: number

        The MIDI channel number.

      Returns number

      The GS part number.

    • Gets a raw Device Control System Exclusive message bytes.

      Parameters

      • subID: number

        The sub ID.

      • data: number[]

        Data, can be multiple bytes.

      Returns number[]

      The binary MIDI message data, excluding the starting 0xF0 byte.

    • Gets a Device Control System Exclusive MIDI message.

      Parameters

      • ticks: number

        The tick time of the message.

      • subID: number

        The sub ID.

      • data: number[]

        Data, can be multiple bytes.

      Returns MIDIMessage

      The system exclusive MIDI message.

    • Gets raw GS Data set 1 (DT1) System Exclusive message bytes.

      Parameters

      • a1: number

        Address 1

      • a2: number

        Address 2

      • a3: number

        Address 3

      • data: number[]

        Data, can be multiple bytes.

      Returns number[]

      The binary data of the MIDI message, excluding the starting 0xF0 byte.

    • Gets a GS Data set 1 (DT1) System Exclusive MIDI message.

      Parameters

      • ticks: number

        The MIDI tick time of the message.

      • a1: number

        Address 1

      • a2: number

        Address 2

      • a3: number

        Address 3

      • data: number[]

        Data, can be multiple bytes.

      Returns MIDIMessage

      The System Exclusive MIDI message.

    • Converts GS part number to MIDI channel number.

      Parameters

      • part: number

        The part number.

      Returns number

      The MIDI Channel number.

    • Returns a list of MIDI events needed to set the given channel drum parameter via NRPN.

      Type Parameters

      Parameters

      • ticks: number

        The MIDI tick time of the events.

      • channel: number

        The MIDI channel number.

      • key: number

        The MIDI drum key/note number to modify.

      • parameter: P

        The parameter to set.

      • value: DrumParameter[P]

        The value to set it to.

      • drumPitchStep: number = 0.5

        The drum pitch coarse resolution in semitones. 0.5 for GS (SC-88 and above), 1 for XG and the SC-55 drum map (bank LSB 1).

      Returns MIDIMessage[]

      The list of MIDIMessages needed to set this channel drum parameter.

    • Returns a MIDI event needed to set the given drum map parameter.

      Type Parameters

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • map: number

        The GS drum map/XG drum setup number.

      • system: MIDISystem

        The system to prepare the message for. Any value other than xg will result in a GS-style message.

      • key: number

        The MIDI drum key/note number to modify.

      • parameter: P

        The parameter to set.

      • value: DrumParameter[P]

        The value to set it to.

      • gsDrumPitchStep: number = 0.5

        The GS drum pitch coarse resolution in semitones. 0.5 for SC-88 and above, 1 for the SC-55 drum map (bank LSB 1). XG always uses 1.

      Returns MIDIMessage

      The MIDIMessage needed to set this drum map parameter.

    • Returns a MIDI event needed to set the given GS Chorus Parameter.

      Type Parameters

      • P extends
            | "level"
            | "depth"
            | "preLowpass"
            | "macro"
            | "feedback"
            | "delay"
            | "rate"
            | "sendLevelToReverb"
            | "sendLevelToDelay"

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: P

        The parameter to set, or "macro" to select a chorus macro.

      • value: (
            | Extract<
                { parameter: "level"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "depth"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "preLowpass"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "feedback"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "delay"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "rate"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
            | Extract<
                {
                    parameter: "sendLevelToReverb";
                    type: "GS Chorus Param";
                    value: number;
                },
                { parameter: P },
            >
            | Extract<
                {
                    parameter: "sendLevelToDelay";
                    type: "GS Chorus Param";
                    value: number;
                },
                { parameter: P },
            >
            | Extract<
                { parameter: "macro"; type: "GS Chorus Param"; value: number },
                { parameter: P },
            >
        )["value"]

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this GS Chorus Parameter.

    • Returns a MIDI event needed to set the given GS Delay Parameter.

      Type Parameters

      • P extends
            | "level"
            | "preLowpass"
            | "macro"
            | "feedback"
            | "sendLevelToReverb"
            | "timeCenter"
            | "timeRatioLeft"
            | "timeRatioRight"
            | "levelCenter"
            | "levelLeft"
            | "levelRight"

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: P

        The parameter to set, or "macro" to select a delay macro.

      • value: (
            | Extract<
                { parameter: "level"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "preLowpass"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "feedback"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                {
                    parameter: "sendLevelToReverb";
                    type: "GS Delay Param";
                    value: number;
                },
                { parameter: P },
            >
            | Extract<
                { parameter: "timeCenter"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "timeRatioLeft"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "timeRatioRight"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "levelCenter"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "levelLeft"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "levelRight"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "macro"; type: "GS Delay Param"; value: number },
                { parameter: P },
            >
        )["value"]

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this GS Delay Parameter.

    • Returns a MIDI event needed to set the given GS Insertion Parameter.

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: number | "sendLevelToReverb" | "sendLevelToDelay" | "type" | "sendLevelToChorus"

        The parameter to set: "type", a send level name, or a 0-based effect-specific parameter number (0-19).

      • value: number

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this GS Insertion Parameter.

    • Returns a MIDI event needed to set the given GS Reverb Parameter.

      Type Parameters

      • P extends
            | "level"
            | "character"
            | "time"
            | "delayFeedback"
            | "preDelayTime"
            | "preLowpass"
            | "macro"

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: P

        The parameter to set, or "macro" to select a reverb macro.

      • value: (
            | Extract<
                { parameter: "level"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "character"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "time"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "delayFeedback"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "preDelayTime"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "preLowpass"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
            | Extract<
                { parameter: "macro"; type: "GS Reverb Param"; value: number },
                { parameter: P },
            >
        )["value"]

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this GS Reverb Parameter.

    • Returns a MIDI event needed to set the given XG Chorus Parameter.

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: number | "pan" | "type" | "return" | "sendToReverb"

        The parameter to set:

        • "type" (16-bit),
        • "return", "pan", "sendToReverb" (7-bit),
        • 0-based type-specific parameter number (0-15) (7-bit).
      • value: number

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this XG Chorus Parameter.

    • Returns a MIDI event needed to set the given XG Insertion Parameter (EFFECT 2).

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • insertionNumber: number

        The insertion effect number (second address byte).

      • parameter: number | "type" | "partNumber"

        The parameter to set:

        • "type" (16-bit),
        • "partNumber" (insertion target),
        • or a 0-based type-specific parameter number (0-15) (14-bit) Note that for 7-bit parameters, only the lower 7 bits will be used. If the 14-bit parameter has MSB of zero, the LSB-only version will be used.
      • value: number

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this XG Insertion Parameter.

    • Returns a MIDI event needed to set the given XG Reverb Parameter.

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: number | "pan" | "type" | "return"

        The parameter to set:

        • "type" (16-bit),
        • "return", "pan" (7-bit),
        • 0-based type-specific parameter number (0-15) (7-bit).
      • value: number

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this XG Reverb Parameter.

    • Returns a MIDI event needed to set the given XG Variation Parameter.

      Type Parameters

      • P extends
            | number
            | "pan"
            | "type"
            | "return"
            | "sendToReverb"
            | "sendToChorus"
            | "partNumber"
            | "connection"

      Parameters

      • ticks: number

        The MIDI tick time for the output event.

      • parameter: P

        The parameter to set:

        • "type" (16-bit),
        • "return", "pan", "sendToReverb", "sendToChorus" (7-bit),
        • "connection" ("system" or "insertion")
        • "partNumber" (insertion target, generally 0-63),
        • 0-based type-specific parameter number (0-15) (14-bit) Note that for 7-bit parameters, only the lower 7 bits will be used.
      • value: P extends "connection" ? XGVariationConnection : number

        The value to set it to.

      Returns MIDIMessage

      The MIDIMessage needed to set this XG Variation Parameter.

    • Gets raw XG System Exclusive message bytes.

      Parameters

      • a1: number

        Address 1

      • a2: number

        Address 2

      • a3: number

        Address 3

      • data: number[]

        Data, can be multiple bytes.

      Returns number[]

      The binary data of the MIDI message, excluding the starting 0xF0 byte.

    • Gets a XG System Exclusive MIDI message.

      Parameters

      • ticks: number

        The tick time of the message.

      • a1: number

        Address 1

      • a2: number

        Address 2

      • a3: number

        Address 3

      • data: number[]

        Data, can be multiple bytes.

      Returns MIDIMessage

      The System Exclusive MIDI message.