midi2.git · midi2.full.closed.schema.json
midi2.git / midi2.full.closed.schema.json
revision 232640897843394f9848cc5ef45b809e559120f5 · bounded preview
{
"$defs": {
"Uint4": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint4"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint7": {
"type": "integer",
"minimum": 0,
"maximum": 127,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint7"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint8": {
"type": "integer",
"minimum": 0,
"maximum": 255,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint8"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint14": {
"type": "integer",
"minimum": 0,
"maximum": 16383,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint14"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint16": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint16"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint21": {
"type": "integer",
"minimum": 0,
"maximum": 2097151,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint21"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint28": {
"type": "integer",
"minimum": 0,
"maximum": 268435455,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint28"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Uint32": {
"type": "integer",
"minimum": 0,
"maximum": 4294967295,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-uint32"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"Int32": {
"type": "integer",
"minimum": -2147483648,
"maximum": 2147483647,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-int32"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"ByteArray": {
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP field widths and numeric ranges",
"requirement": "ump-field-widths-bytearray"
}
],
"x-verification": [
{
"kind": "schema-verifier",
"id": "Scripts/verify_spec_provenance.py::schema-constraint-validation"
}
]
},
"UmpMessageType": {
"type": "integer",
"enum": [
0,
1,
2,
3,
4,
5,
13,
15
],
"description": "UMP Message Type nibble: 0=Utility,1=System,2=MIDI1 Ch Voice,3=SysEx7,4=MIDI2 Ch Voice,5=SysEx8/MDS,13=Flex,15=Stream.",
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP message types and packet sizes",
"requirement": "ump-packet-structure-umpmessagetype"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UmpPacketsTests.swift"
}
]
},
"Group": {
"$ref": "#/$defs/Uint4",
"description": "MIDI Group (0-15). Utility (0x0) and Stream (0xF) are groupless in v1.1+; set 0.",
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-group"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"UmpHeader32": {
"type": "object",
"required": [
"messageType"
],
"properties": {
"messageType": {
"enum": [
0,
1,
2,
3,
15
]
},
"group": {
"$ref": "#/$defs/Group"
}
},
"description": "Common 32-bit UMP header (messageType + optional group).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-umpheader32"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"UmpHeader64": {
"type": "object",
"required": [
"messageType",
"group",
"statusNibble",
"channel"
],
"properties": {
"messageType": {
"const": 4
},
"group": {
"$ref": "#/$defs/Group"
},
"statusNibble": {
"type": "integer",
"minimum": 8,
"maximum": 15
},
"channel": {
"$ref": "#/$defs/Uint4"
}
},
"description": "64-bit UMP header for MIDI 2.0 Channel Voice.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-umpheader64"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"UmpHeader128": {
"type": "object",
"required": [
"messageType"
],
"properties": {
"messageType": {
"enum": [
5,
13
]
},
"group": {
"$ref": "#/$defs/Group"
}
},
"description": "128-bit UMP header for Data (SysEx8/MDS) and Flex Data.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-umpheader128"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"UtilityOpcode": {
"type": "integer",
"enum": [
0,
1,
2
],
"description": "0=NOOP,1=JR Clock,2=JR Timestamp",
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 44,
"section": "Utility and System messages",
"requirement": "utility-system-structure-utilityopcode"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UtilityBodyTests.swift"
}
]
},
"UtilityBody": {
"type": "object",
"required": [
"opcode"
],
"properties": {
"opcode": {
"$ref": "#/$defs/UtilityOpcode"
},
"jrClock": {
"type": "object",
"required": [
"timestamp32"
],
"properties": {
"timestamp32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Present when opcode=1",
"additionalProperties": false
},
"jrTimestamp": {
"type": "object",
"required": [
"time15"
],
"properties": {
"time15": {
"type": "integer",
"minimum": 0,
"maximum": 32767
}
},
"description": "Present when opcode=2",
"additionalProperties": false
}
},
"description": "UMP Type 0x0 Utility messages (groupless).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 44,
"section": "Utility and System messages",
"requirement": "utility-system-structure-utilitybody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UtilityBodyTests.swift"
}
]
},
"SystemStatus": {
"type": "integer",
"enum": [
241,
242,
243,
246,
248,
250,
251,
252,
254,
255
],
"description": "MIDI System Common/Real-Time per UMP.",
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 44,
"section": "Utility and System messages",
"requirement": "utility-system-structure-systemstatus"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UtilityBodyTests.swift"
}
]
},
"SystemCommonRealtimeBody": {
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"$ref": "#/$defs/SystemStatus"
},
"data1": {
"$ref": "#/$defs/Uint8"
},
"data2": {
"$ref": "#/$defs/Uint8"
}
},
"description": "UMP 0x1 System Common & Real-Time.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 44,
"section": "Utility and System messages",
"requirement": "utility-system-structure-systemcommonrealtimebody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UtilityBodyTests.swift"
}
]
},
"Midi1StatusNibble": {
"type": "integer",
"enum": [
8,
9,
10,
11,
12,
13,
14
],
"description": "0x8..0xE",
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 52,
"section": "MIDI 1.0 Channel Voice messages",
"requirement": "midi1-channel-voice-midi1statusnibble"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi1ChannelVoiceBodyTests.swift"
}
]
},
"Midi1ChannelVoiceBody": {
"type": "object",
"required": [
"statusNibble",
"channel"
],
"properties": {
"statusNibble": {
"$ref": "#/$defs/Midi1StatusNibble"
},
"channel": {
"$ref": "#/$defs/Uint4"
},
"noteNumber": {
"$ref": "#/$defs/Uint7"
},
"velocity7": {
"$ref": "#/$defs/Uint7"
},
"pressure7": {
"$ref": "#/$defs/Uint7"
},
"control": {
"$ref": "#/$defs/Uint7"
},
"value7": {
"$ref": "#/$defs/Uint7"
},
"program": {
"$ref": "#/$defs/Uint7"
},
"pitchBend14": {
"$ref": "#/$defs/Uint14"
}
},
"description": "Messages share this body, with relevant fields set based on status.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 52,
"section": "MIDI 1.0 Channel Voice messages",
"requirement": "midi1-channel-voice-midi1channelvoicebody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi1ChannelVoiceBodyTests.swift"
}
]
},
"SysEx7Packet": {
"type": "object",
"required": [
"streamStatus",
"payload"
],
"properties": {
"streamStatus": {
"type": "string",
"enum": [
"single",
"start",
"continue",
"end"
]
},
"payload": {
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"maxItems": 6,
"minItems": 0
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 50,
"section": "SysEx and data messages",
"requirement": "data-message-structure-sysex7packet"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/DataMessageBodyTests.swift"
}
]
},
"SysEx7Body": {
"type": "object",
"required": [
"manufacturerId",
"packets"
],
"properties": {
"manufacturerId": {
"oneOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 1,
"maxItems": 1
},
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 3,
"maxItems": 3
}
]
},
"packets": {
"type": "array",
"items": {
"$ref": "#/$defs/SysEx7Packet"
},
"minItems": 1
}
},
"description": "7-bit clean stream framed in 32-bit UMP words (up to 6 bytes per word).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 50,
"section": "SysEx and data messages",
"requirement": "data-message-structure-sysex7body"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/DataMessageBodyTests.swift"
}
]
},
"Midi2StatusNibble": {
"type": "integer",
"enum": [
8,
9,
10,
11,
12,
13,
14,
15
],
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2statusnibble"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"NoteAttributeType": {
"type": "integer",
"minimum": 0,
"maximum": 255,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-noteattributetype"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2ChannelVoiceBody": {
"type": "object",
"required": [
"statusNibble",
"channel"
],
"properties": {
"statusNibble": {
"$ref": "#/$defs/Midi2StatusNibble"
},
"channel": {
"$ref": "#/$defs/Uint4"
},
"noteNumber": {
"$ref": "#/$defs/Uint7"
},
"velocity16": {
"$ref": "#/$defs/Uint16"
},
"attributeType": {
"$ref": "#/$defs/NoteAttributeType"
},
"attributeData16": {
"$ref": "#/$defs/Uint16"
},
"polyPressure32": {
"$ref": "#/$defs/Uint32"
},
"control": {
"$ref": "#/$defs/Uint7"
},
"controlValue32": {
"$ref": "#/$defs/Uint32"
},
"program": {
"$ref": "#/$defs/Uint7"
},
"bankMsb": {
"$ref": "#/$defs/Uint7"
},
"bankLsb": {
"$ref": "#/$defs/Uint7"
},
"bankValid": {
"type": "boolean"
},
"channelPressure32": {
"$ref": "#/$defs/Uint32"
},
"pitchBend32": {
"$ref": "#/$defs/Uint32"
},
"rpnIndexMsb": {
"$ref": "#/$defs/Uint7"
},
"rpnIndexLsb": {
"$ref": "#/$defs/Uint7"
},
"rpnData32": {
"$ref": "#/$defs/Uint32"
},
"nrpnIndexMsb": {
"$ref": "#/$defs/Uint7"
},
"nrpnIndexLsb": {
"$ref": "#/$defs/Uint7"
},
"nrpnData32": {
"$ref": "#/$defs/Uint32"
},
"rpnDelta32": {
"$ref": "#/$defs/Int32"
},
"nrpnDelta32": {
"$ref": "#/$defs/Int32"
},
"perNoteMgmt": {
"type": "object",
"properties": {
"noteNumber": {
"$ref": "#/$defs/Uint7"
},
"detach": {
"type": "boolean",
"description": "D bit"
},
"reset": {
"type": "boolean",
"description": "S bit"
}
},
"additionalProperties": false
},
"regPerNoteCtrlIndex": {
"$ref": "#/$defs/Uint8"
},
"regPerNoteCtrlValue32": {
"$ref": "#/$defs/Uint32"
},
"assignPerNoteCtrlIndex": {
"$ref": "#/$defs/Uint8"
},
"assignPerNoteCtrlValue32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Only fields relevant to the specific status are present.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2channelvoicebody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"DataMessageKind": {
"type": "string",
"enum": [
"sysex8",
"mds"
],
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 50,
"section": "SysEx and data messages",
"requirement": "data-message-structure-datamessagekind"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/DataMessageBodyTests.swift"
}
]
},
"DataMessageBody": {
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"$ref": "#/$defs/DataMessageKind"
},
"sysex8": {
"type": "object",
"required": [
"manufacturerId",
"length",
"data"
],
"properties": {
"manufacturerId": {
"oneOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 1,
"maxItems": 1
},
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 3,
"maxItems": 3
}
]
},
"length": {
"$ref": "#/$defs/Uint28"
},
"data": {
"$ref": "#/$defs/ByteArray"
}
},
"description": "8-bit clean SysEx8 payload",
"additionalProperties": false
},
"mds": {
"type": "object",
"required": [
"messageId",
"totalChunks",
"chunks"
],
"properties": {
"messageId": {
"$ref": "#/$defs/Uint16"
},
"totalChunks": {
"$ref": "#/$defs/Uint16"
},
"chunks": {
"type": "array",
"items": {
"type": "object",
"required": [
"index",
"validByteCount",
"payload"
],
"properties": {
"index": {
"$ref": "#/$defs/Uint16"
},
"validByteCount": {
"$ref": "#/$defs/Uint8"
},
"payload": {
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"maxItems": 14
}
},
"additionalProperties": false
}
}
},
"description": "Mixed Data Set chunking for large transfers",
"additionalProperties": false
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 50,
"section": "SysEx and data messages",
"requirement": "data-message-structure-datamessagebody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/DataMessageBodyTests.swift"
}
]
},
"FlexDataBody": {
"oneOf": [
{
"$ref": "#/$defs/Flex.Tempo"
},
{
"$ref": "#/$defs/Flex.TimeSignature"
},
{
"$ref": "#/$defs/Flex.Metronome"
},
{
"$ref": "#/$defs/Flex.KeySignature"
},
{
"$ref": "#/$defs/Flex.ChordName"
},
{
"$ref": "#/$defs/Flex.Text"
},
{
"$ref": "#/$defs/Flex.Lyric"
},
{
"$ref": "#/$defs/Flex.Ruby"
}
],
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 89,
"section": "Flex Data messages",
"requirement": "flex-data-structure-flexdatabody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/FlexDataBodyTests.swift"
}
]
},
"StreamOpcode": {
"type": "integer",
"enum": [
0,
1,
2,
3,
4,
5,
6,
16,
17,
18,
32,
33
],
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-streamopcode"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"StreamBody": {
"type": "object",
"required": [
"opcode"
],
"properties": {
"opcode": {
"$ref": "#/$defs/StreamOpcode"
},
"endpointDiscovery": {
"type": "object",
"properties": {
"majorVersion": {
"$ref": "#/$defs/Uint8"
},
"minorVersion": {
"$ref": "#/$defs/Uint8"
},
"maxGroups": {
"$ref": "#/$defs/Uint4"
},
"filter": {
"type": "object",
"description": "Filter bitmap (Figure 12, M2-104-UM v1.1.2 p.33)",
"properties": {
"endpointInfo": {
"type": "boolean",
"description": "Request Endpoint Info Notification"
},
"deviceIdentity": {
"type": "boolean",
"description": "Request Device Identity Notification"
},
"endpointName": {
"type": "boolean",
"description": "Request Endpoint Name Notification"
},
"productInstanceId": {
"type": "boolean",
"description": "Request Product Instance ID Notification"
},
"streamConfig": {
"type": "boolean",
"description": "Request Stream Configuration Notification"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"endpointInfoNotification": {
"type": "object",
"properties": {
"staticFunctionBlocks": {
"type": "boolean",
"description": "S bit; when true Function Blocks are static and do not change after discovery (Figure 13, M2-104-UM v1.1.2 p.33)"
},
"numberOfFunctionBlocks": {
"type": "integer",
"minimum": 0,
"maximum": 32,
"description": "Number of Function Blocks (0x00 = none, 0x01\u20130x20 = count, 0x21\u20130x7F reserved) (Figure 13, p.33)"
},
"umpVersionMajor": {
"$ref": "#/$defs/Uint8"
},
"umpVersionMinor": {
"$ref": "#/$defs/Uint8"
},
"midi2Supported": {
"type": "boolean",
"description": "M2 capability flag"
},
"midi1Supported": {
"type": "boolean",
"description": "M1 capability flag"
},
"jrTimestampsRx": {
"type": "boolean",
"description": "RXJR capability flag"
},
"jrTimestampsTx": {
"type": "boolean",
"description": "TXJR capability flag"
}
},
"additionalProperties": false
},
"deviceIdentityNotification": {
"type": "object",
"properties": {
"manufacturerId": {
"oneOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 1,
"maxItems": 1
},
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 3,
"maxItems": 3
}
],
"description": "SysEx manufacturer ID (1-byte or 3-byte, pad with zeros when 1-byte) (Figure 14, M2-104-UM v1.1.2 p.34)"
},
"deviceFamily": {
"$ref": "#/$defs/Uint16",
"description": "Device family (SysEx Device Inquiry)"
},
"deviceModel": {
"$ref": "#/$defs/Uint16",
"description": "Device family model number"
},
"softwareRevision": {
"$ref": "#/$defs/Uint32",
"description": "Software revision level"
}
},
"additionalProperties": false
},
"endpointNameNotification": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 98,
"description": "UTF-8 endpoint name; up to 98 bytes across Complete/Start/Continue/End forms (Figure 15, M2-104-UM v1.1.2 p.35)"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"productInstanceIdNotification": {
"type": "object",
"properties": {
"productInstanceId": {
"type": "string",
"maxLength": 42,
"description": "ASCII 0x20\u20130x7E Product Instance Id, up to 42 bytes across Complete/Start/Continue/End forms (Figure 16, M2-104-UM v1.1.2 p.35)"
}
},
"required": [
"productInstanceId"
],
"additionalProperties": false
},
"streamConfigRequest": {
"type": "object",
"properties": {
"protocol": {
"type": "string",
"enum": [
"midi1",
"midi2"
]
},
"jrTimestampsTx": {
"type": "boolean",
"description": "JR Transmit requested; if unsupported, receiver should send Stream Config Notification to switch protocol without JR (Section 7.2.2.3)"
},
"jrTimestampsRx": {
"type": "boolean",
"description": "JR Receive requested; if unsupported, receiver should send Stream Config Notification to switch protocol without JR (Section 7.2.2.3)"
}
},
"additionalProperties": false
},
"streamConfigNotification": {
"type": "object",
"properties": {
"protocol": {
"type": "string",
"enum": [
"midi1",
"midi2"
]
},
"jrTimestampsTx": {
"type": "boolean"
},
"jrTimestampsRx": {
"type": "boolean"
}
},
"additionalProperties": false
},
"functionBlockDiscovery": {
"type": "object",
"properties": {
"filterBitmap": {
"$ref": "#/$defs/Uint32"
}
},
"additionalProperties": false
},
"functionBlockInfo": {
"type": "object",
"properties": {
"index": {
"$ref": "#/$defs/Uint8"
},
"firstGroup": {
"$ref": "#/$defs/Uint4"
},
"groupCount": {
"$ref": "#/$defs/Uint4"
},
"active": {
"type": "boolean",
"description": "Function Block active flag (Figure 22, M2-104-UM v1.1.2 p.40)"
},
"direction": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "0=reserved, 1=input only, 2=output only, 3=bidirectional (Figure 22, p.40)"
},
"midi1Bandwidth": {
"type": "integer",
"enum": [
0,
1,
2
],
"description": "MIDI 1.0 bandwidth: 0=not MIDI1, 1=do not restrict, 2=restrict to 31.25 kbps (Figure 22, p.40)"
}
},
"additionalProperties": false
},
"processInquiry": {
"type": "object",
"properties": {
"functionBlock": {
"$ref": "#/$defs/Uint7"
},
"part": {
"$ref": "#/$defs/Uint4"
}
},
"additionalProperties": false
},
"processInquiryReply": {
"type": "object",
"properties": {
"functionBlock": {
"$ref": "#/$defs/Uint7"
},
"part": {
"$ref": "#/$defs/Uint4"
}
},
"additionalProperties": false
}
},
"description": "Endpoint discovery, protocol selection, and FB info.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-streambody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"DeltaClockstampConfig": {
"type": "object",
"properties": {
"dctpq": {
"$ref": "#/$defs/Uint16",
"description": "Ticks per quarter note"
},
"initialTempoMicrosecPerQN": {
"$ref": "#/$defs/Uint32"
},
"timeSignature": {
"type": "object",
"properties": {
"numerator": {
"type": "integer",
"minimum": 1
},
"denominatorPow2": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}
},
"description": "Clip configuration timing as used in MIDI Clip Files.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 44,
"section": "Utility and System messages",
"requirement": "utility-system-structure-deltaclockstampconfig"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UtilityBodyTests.swift"
}
]
},
"ClipEnvelope": {
"type": "object",
"properties": {
"startOfClip": {
"type": "boolean"
},
"endOfClip": {
"type": "boolean"
},
"pickupBars": {
"type": "number"
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-116-U",
"version": "1.0",
"page": 12,
"section": "MIDI Clip message envelope",
"requirement": "clip-envelope-clipenvelope"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/ClipEnvelopeTests.swift"
}
]
},
"MidiCiEnvelope": {
"type": "object",
"required": [
"scope",
"subId1",
"subId2",
"version",
"body"
],
"properties": {
"scope": {
"type": "string",
"enum": [
"nonRealtime",
"realtime"
],
"description": "0x7E or 0x7F"
},
"subId1": {
"const": 13
},
"subId2": {
"type": "integer",
"minimum": 0,
"maximum": 255
},
"version": {
"$ref": "#/$defs/Uint8"
},
"body": {
"oneOf": [
{
"$ref": "#/$defs/MidiCiDiscoveryBody"
},
{
"$ref": "#/$defs/MidiCiProfilesBody"
},
{
"$ref": "#/$defs/MidiCiPropertyExchangeBody"
},
{
"$ref": "#/$defs/MidiCiProcessInquiryBody"
},
{
"$ref": "#/$defs/MidiCiAckNakBody"
}
]
}
},
"description": "SysEx(7/8) payload for MIDI-CI transactions.",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-101-UM",
"version": "1.2",
"page": 45,
"section": "MIDI-CI message envelopes",
"requirement": "midi-ci-envelope-midicienvelope"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/MidiCiEnvelopeTests.swift"
}
]
},
"MidiCiDiscoveryBody": {
"type": "object",
"properties": {
"muid": {
"$ref": "#/$defs/Uint32"
},
"manufacturerId": {
"oneOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 1,
"maxItems": 1
},
{
"type": "array",
"items": {
"$ref": "#/$defs/Uint8"
},
"minItems": 3,
"maxItems": 3
}
]
},
"deviceFamily": {
"$ref": "#/$defs/Uint16"
},
"deviceModel": {
"$ref": "#/$defs/Uint16"
},
"softwareRev": {
"$ref": "#/$defs/Uint32"
},
"categories": {
"type": "object",
"properties": {
"profiles": {
"type": "boolean"
},
"propertyExchange": {
"type": "boolean"
},
"processInquiry": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxSysEx": {
"$ref": "#/$defs/Uint32"
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-101-UM",
"version": "1.2",
"page": 45,
"section": "MIDI-CI message envelopes",
"requirement": "midi-ci-envelope-midicidiscoverybody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/MidiCiEnvelopeTests.swift"
}
]
},
"MidiCiAckNakBody": {
"type": "object",
"properties": {
"ack": {
"type": "boolean"
},
"statusCode": {
"$ref": "#/$defs/Uint8"
},
"message": {
"type": "string"
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-101-UM",
"version": "1.2",
"page": 45,
"section": "MIDI-CI message envelopes",
"requirement": "midi-ci-envelope-midiciacknakbody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/MidiCiEnvelopeTests.swift"
}
]
},
"MidiCiProfilesBody": {
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": [
"inquiry",
"reply",
"addedReport",
"removedReport",
"setOn",
"setOff",
"enabledReport",
"disabledReport",
"detailsInquiry",
"detailsReply",
"profileSpecificData"
]
},
"profileId": {
"type": "string",
"description": "As per MA/AMEI allocation"
},
"target": {
"type": "string",
"enum": [
"channel",
"group",
"functionBlock"
]
},
"channels": {
"type": "array",
"items": {
"$ref": "#/$defs/Uint4"
}
},
"details": {
"type": "object",
"description": "Profile Details / Reports (e.g., channel mask bits cmL/cmH, ok flags)",
"additionalProperties": false
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-102-U",
"version": "1.1",
"page": 15,
"section": "Table 6",
"requirement": "profiles-structure-midiciprofilesbody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/MidiCiProfilesBodyTests.swift"
}
]
},
"MidiCiPropertyExchangeBody": {
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": [
"capInquiry",
"capReply",
"get",
"getReply",
"set",
"setReply",
"subscribe",
"subscribeReply",
"notify",
"terminate"
]
},
"subscriptionId": {
"type": "string",
"maxLength": 64,
"description": "Subscription identifier used in PE subscription flows (e.g., sub3221)"
},
"requestId": {
"$ref": "#/$defs/Uint32"
},
"encoding": {
"type": "string",
"enum": [
"json",
"binary",
"json+zlib",
"binary+zlib",
"mcoded7"
]
},
"header": {
"type": "object",
"properties": {
"resource": {
"type": "string",
"maxLength": 36,
"description": "Targeted resource (ASCII alphanumeric)"
},
"resId": {
"$ref": "#/$defs/Uint32"
},
"encoding": {
"type": "string",
"enum": [
"json",
"binary",
"json+zlib",
"binary+zlib",
"mcoded7"
]
},
"flowControl": {
"type": "boolean",
"description": "Flow Control flag for Inquiry: Get Property Data (Table 13, M2-103-UM v1.2 p.28)"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 999,
"description": "Reply status (HTTP-like codes per Table 15, M2-103-UM v1.2 p.29)"
},
"message": {
"type": "string",
"maxLength": 512,
"description": "Optional explanatory message in reply"
},
"cacheTime": {
"type": "integer",
"minimum": 0,
"description": "Seconds the document may be cached"
},
"mediaType": {
"type": "string",
"maxLength": 75,
"description": "MIME type for non-JSON Property Data (Table 16, M2-103-UM v1.2 p.31)"
}
},
"additionalProperties": false
},
"data": {
"description": "JSON or encoded non-JSON; when JSON, schema may be referenced via header.schema",
"oneOf": [
{
"type": "object",
"additionalProperties": false
},
{
"$ref": "#/$defs/ByteArray"
}
]
},
"statusCodes": {
"type": "array",
"description": "Property Exchange reply status codes (Table 15) or notify-only codes (Table 16 timeout wait via ACK)",
"items": {
"type": "integer",
"minimum": 100,
"maximum": 599,
"enum": [
200,
201,
341,
342,
343,
400,
403,
404,
405,
406,
407,
413,
415,
445,
500
]
}
},
"timeoutStatus": {
"type": "integer",
"description": "Deprecated Notify timeout status codes (100, 408) for backward compatibility per M2-103-UM v1.2 p.49",
"enum": [
100,
408
]
},
"flowControlError": {
"type": "integer",
"description": "Status to return when flowControl is requested but unsupported (406/407 per M2-103-UM v1.2 p.69\u201371)",
"enum": [
406,
407
]
},
"deltaClockstampTicksPerQuarterNote": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"description": "DCTPQ for Delta Clockstamp timing (0 reserved; Figure 33, M2-104-UM v1.1.2 p.45)"
},
"cacheTime": {
"type": "integer",
"minimum": 0,
"description": "Seconds the Property Data may be cached (Section 7.4.3, M2-103-UM v1.2 p.30\u201331)"
},
"flowControlAck": {
"type": "object",
"description": "MIDI-CI ACK flow control message (Table 94, M2-103-UM v1.2 p.69)",
"properties": {
"requestId": {
"$ref": "#/$defs/Uint8",
"description": "PE Request Id (Table 94)"
},
"chunkNumber": {
"$ref": "#/$defs/Uint16",
"description": "Chunk number (LSB first) in flow-control ACK"
},
"messageLength": {
"$ref": "#/$defs/Uint16",
"description": "Length of the message (0 when no message; reserved otherwise)"
},
"status": {
"type": "integer",
"const": 17
}
},
"additionalProperties": false
},
"flowControlNak": {
"type": "object",
"description": "MIDI-CI NAK flow control retransmit request (Table 97, M2-103-UM v1.2 p.72)",
"properties": {
"status": {
"type": "integer",
"const": 18
},
"chunkNumber": {
"$ref": "#/$defs/Uint16",
"description": "Chunk number to retransmit (LSB first)"
}
},
"additionalProperties": false
},
"subscriptionCommand": {
"type": "string",
"enum": [
"start",
"partial",
"full",
"notify",
"end"
],
"description": "Subscription command values per M2-103-UM v1.2 subscription flows"
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-103-UM",
"version": "1.2",
"page": 28,
"section": "Tables 13-16",
"requirement": "property-exchange-structure-midicipropertyexchangebody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/PropertyExchangeChunkingTests.swift"
}
]
},
"MidiCiProcessInquiryBody": {
"type": "object",
"properties": {
"command": {
"type": "string",
"enum": [
"capInquiry",
"capReply",
"messageReport",
"messageReportReply",
"endReport"
]
},
"deviceId": {
"type": "integer",
"enum": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
126,
127
],
"description": "Device ID for message report scope: 0x00\u20130x0F channel 1\u201316, 0x7E group, 0x7F function block (Table 43/45, M2-101-UM v1.2 p.61\u201363)"
},
"messageDataControl": {
"type": "integer",
"enum": [
0,
1,
127
],
"description": "Message Data Control (Table 44, M2-101-UM v1.2 p.62): 0x00 begin/end only, 0x01 non-default/active only, 0x7F full report; 0x02\u20130x7E reserved."
},
"systemMessages": {
"type": "object",
"description": "Bitmap of requested System Messages (Table 43/45, M2-101-UM v1.2 p.61\u201363)",
"properties": {
"mtcQuarterFrame": {
"type": "boolean"
},
"songPosition": {
"type": "boolean"
},
"songSelect": {
"type": "boolean"
}
},
"additionalProperties": false
},
"channelControllerMessages": {
"type": "object",
"description": "Bitmap of requested Channel Controller Messages (Table 43/45, M2-101-UM v1.2 p.61\u201363)",
"properties": {
"pitchBend": {
"type": "boolean"
},
"controlChange": {
"type": "boolean"
},
"registeredController": {
"type": "boolean"
},
"assignableController": {
"type": "boolean"
},
"programChange": {
"type": "boolean"
},
"channelPressure": {
"type": "boolean"
}
},
"additionalProperties": false
},
"noteDataMessages": {
"type": "object",
"description": "Bitmap of requested Note Data Messages (Table 43/45, M2-101-UM v1.2 p.61\u201363)",
"properties": {
"notes": {
"type": "boolean"
},
"polyPressure": {
"type": "boolean"
},
"perNotePitchBend": {
"type": "boolean"
},
"registeredPerNoteController": {
"type": "boolean"
},
"assignablePerNoteController": {
"type": "boolean"
}
},
"additionalProperties": false
},
"supportedFeatures": {
"type": "object",
"description": "Process Inquiry Supported Features bitmap (Table 42, M2-101-UM v1.2 p.60)",
"properties": {
"messageReport": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-101-UM",
"version": "1.2",
"page": 59,
"section": "Tables 40-45",
"requirement": "process-inquiry-structure-midiciprocessinquirybody"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/MidiCiProcessInquiryBodyTests.swift"
}
]
},
"FunctionBlockNameNotification": {
"type": "object",
"properties": {
"functionBlock": {
"$ref": "#/$defs/Uint7"
},
"name": {
"type": "string",
"maxLength": 91,
"description": "UTF-8 name bytes; may span multiple packets (start/continue/end per Figure 23, M2-104-UM v1.1.2 p.42)"
}
},
"required": [
"functionBlock",
"name"
],
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 37,
"section": "Figures 18-23 and stream messages",
"requirement": "ump-stream-structure-functionblocknamenotification"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/StreamMappingTests.swift"
}
]
},
"UmpPacket": {
"oneOf": [
{
"$ref": "#/$defs/UmpPacket32"
},
{
"$ref": "#/$defs/UmpPacket64"
},
{
"$ref": "#/$defs/UmpPacket128"
}
],
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP message types and packet sizes",
"requirement": "ump-packet-structure-umppacket"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UmpPacketsTests.swift"
}
]
},
"UmpPacket32": {
"type": "object",
"required": [
"messageType",
"body"
],
"properties": {
"messageType": {
"enum": [
0,
1,
2,
3,
15
]
},
"group": {
"$ref": "#/$defs/Group"
},
"body": {
"oneOf": [
{
"$ref": "#/$defs/UtilityBody"
},
{
"$ref": "#/$defs/SystemCommonRealtimeBody"
},
{
"$ref": "#/$defs/Midi1ChannelVoiceBody"
},
{
"$ref": "#/$defs/SysEx7Body"
},
{
"$ref": "#/$defs/StreamBody"
}
]
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP message types and packet sizes",
"requirement": "ump-packet-structure-umppacket32"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UmpPacketsTests.swift"
}
]
},
"UmpPacket64": {
"type": "object",
"required": [
"messageType",
"group",
"statusNibble",
"channel",
"body"
],
"properties": {
"messageType": {
"const": 4
},
"group": {
"$ref": "#/$defs/Group"
},
"statusNibble": {
"$ref": "#/$defs/Midi2StatusNibble"
},
"channel": {
"$ref": "#/$defs/Uint4"
},
"body": {
"$ref": "#/$defs/Midi2ChannelVoiceVariants"
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP message types and packet sizes",
"requirement": "ump-packet-structure-umppacket64"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UmpPacketsTests.swift"
}
]
},
"UmpPacket128": {
"type": "object",
"required": [
"messageType",
"body"
],
"properties": {
"messageType": {
"enum": [
5,
13
]
},
"group": {
"$ref": "#/$defs/Group"
},
"body": {
"oneOf": [
{
"$ref": "#/$defs/DataMessageBody"
},
{
"$ref": "#/$defs/FlexDataBody"
}
]
}
},
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 20,
"section": "UMP message types and packet sizes",
"requirement": "ump-packet-structure-umppacket128"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/UmpPacketsTests.swift"
}
]
},
"Midi2.NoteOff": {
"type": "object",
"required": [
"noteNumber",
"velocity16"
],
"properties": {
"noteNumber": {
"$ref": "#/$defs/Uint7"
},
"velocity16": {
"$ref": "#/$defs/Uint16"
},
"attributeType": {
"$ref": "#/$defs/NoteAttributeType"
},
"attributeData16": {
"$ref": "#/$defs/Uint16"
}
},
"description": "Status 0x8 (Note Off).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-noteoff"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.NoteOn": {
"type": "object",
"required": [
"noteNumber",
"velocity16"
],
"properties": {
"noteNumber": {
"$ref": "#/$defs/Uint7"
},
"velocity16": {
"$ref": "#/$defs/Uint16"
},
"attributeType": {
"$ref": "#/$defs/NoteAttributeType"
},
"attributeData16": {
"$ref": "#/$defs/Uint16"
}
},
"description": "Status 0x9 (Note On).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-noteon"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.PolyPressure": {
"type": "object",
"required": [
"noteNumber",
"polyPressure32"
],
"properties": {
"noteNumber": {
"$ref": "#/$defs/Uint7"
},
"polyPressure32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Status 0xA (Polyphonic Key Pressure).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-polypressure"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.ControlChange": {
"type": "object",
"required": [
"control",
"controlValue32"
],
"properties": {
"control": {
"$ref": "#/$defs/Uint7"
},
"controlValue32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Status 0xB (CC).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-controlchange"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.ProgramChange": {
"type": "object",
"required": [
"program"
],
"properties": {
"program": {
"$ref": "#/$defs/Uint7"
},
"bankMsb": {
"$ref": "#/$defs/Uint7"
},
"bankLsb": {
"$ref": "#/$defs/Uint7"
},
"bankValid": {
"type": "boolean"
}
},
"description": "Status 0xC (Program Change).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-programchange"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.ChannelPressure": {
"type": "object",
"required": [
"channelPressure32"
],
"properties": {
"channelPressure32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Status 0xD (Channel Pressure).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-channelpressure"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.PitchBend": {
"type": "object",
"required": [
"pitchBend32"
],
"properties": {
"pitchBend32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Status 0xE (Pitch Bend).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-pitchbend"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.RPN": {
"type": "object",
"required": [
"rpnIndexMsb",
"rpnIndexLsb",
"rpnData32"
],
"properties": {
"rpnIndexMsb": {
"$ref": "#/$defs/Uint7"
},
"rpnIndexLsb": {
"$ref": "#/$defs/Uint7"
},
"rpnData32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Registered Controller (absolute).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-rpn"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.NRPN": {
"type": "object",
"required": [
"nrpnIndexMsb",
"nrpnIndexLsb",
"nrpnData32"
],
"properties": {
"nrpnIndexMsb": {
"$ref": "#/$defs/Uint7"
},
"nrpnIndexLsb": {
"$ref": "#/$defs/Uint7"
},
"nrpnData32": {
"$ref": "#/$defs/Uint32"
}
},
"description": "Assignable Controller (absolute).",
"additionalProperties": false,
"x-midi-spec": [
{
"document": "M2-104-UM",
"version": "1.1.2",
"page": 56,
"section": "MIDI 2.0 Channel Voice messages",
"requirement": "midi2-channel-voice-midi2-nrpn"
}
],
"x-verification": [
{
"kind": "swift-test-file",
"id": "Tests/MIDI2Tests/Midi2ChannelVoiceBodyTests.swift"
}
]
},
"Midi2.RPNRelative": {
"type": "object",