modwave Property Exchange MIDI Implementation Version 1.1 (2025/9/8) ------------------------------------------------------------------------------------- 1. TRANSMITTED / RECOGNIZED RECEIVE Message ------------------------------------------------------------------------------------- +-----------------------------------------------------------------------------------+ | Message | Transmitted | Recognized | +-----------------------------------------------------+--------------+--------------+ | Discovery | O | O | | Reply to Discovery | O | O | | Inquiry: Property Exchange Capabilities | X | O | | Reply to Property Exchange Capabilities | O | X | | Inquiry: Get Property Data | X | O | | Reply to Get Property Data | O | X | | Subscription | X | O | | Reply to Subscription | O | X | | Invalidate MUID | O | O | +-----------------------------------------------------+--------------+--------------+ ------------------------------------------------------------------------------------- 2. TRANSMITTED / RECOGNIZED RECEIVE DATA ------------------------------------------------------------------------------------- Structure of Property Exchange System Exclusive Messages +-----------------------------------------------------------------------------------+ | Byte | Value | Description | +----------+-----------+------------------------------------------------------------+ | 1 | F0 | System Exclusive Start | | 2 | 7E | Universal System Exclusive | | 3 | 7F | Destination *1 | | 4 | 0D | Universal System Exclusive Sub ID #1 (0D = MIDI-CI) | | 5 | ii | Universal System Exclusive Sub ID #2 *2 | | 6 | 01 | MIDI-CI Message Version/Format (01 = v1.1) | | 7~10 | ss | Source MUID (LSB first) *3 | | 11~14 | dd | Destination MUID (LSB first) *3 | | : | : | | | Last | F7 | End Universal System Exclusive | +----------+-----------+------------------------------------------------------------+ *1: Destination 7F = to/from whole MIDI Port 00-0F = to/from MIDI Channels 1-16 *2: Sub ID #2 Code List +------------------------------------------------------+ | Sub ID #2 | Description/Function | | [Hex] | | +-----------+------------------------------------------+ | 70 | Discovery | | 71 | Reply to Discovery | | 30 | Inquiry: Property Exchange Capabilities | | 31 | Reply to Property Exchange Capabilities | | 34 | Inquiry: Get Property Data | | 35 | Reply to Get Property Data | | 38 | Subscription | | 39 | Reply to Subscription | | 7E | Invalidate MUID | +------------------------------------------------------+ *3: 28 bit random number generated by a MIDI-CI Device. ------------------------------------------------------------------------------------- 3. TRANSMITTED / RECOGNIZED RECEIVE LIST ------------------------------------------------------------------------------------- +-----------------------------------------------------------------------------------+ | List | Transmited | Recognized | +-----------------------------------------------------+--------------+--------------+ | ResourceList | O | X | | DeviceInfo | O | X | | ChannelList | O | X | | ProgramList | O | X | | X-ParameterList | O *6 | X | | X-ProgramEdit | O *6 | X | +-----------------------------------------------------+--------------+--------------+ *6 Refer to modwave_PE_ResourceList.txt. ------------------------------------------------------------------------------------- 4. MIDI Exclusive Format ------------------------------------------------------------------------------------- (R:Receive, T:Transmit) [4-1] Discovery Message R,T +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 70 | Sub ID #2: 70 = Discovery | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | 7F, 7F, 7F, 7F | Destination MUID (LSB First) (to Broadcast MUID) | | mm, mm, mm | Device Manufacturer ID (System Exclusive ID Number) *4 | | ff, ff | Device Family ID (LSB first) *4 | | nn, nn | Device Family Model Number (LSB first) *4 | | vv, vv, vv, vv | Software Revision Level (Format is Device specific) | | cc | Capability Inquiry Category Supported *5 | | rr, rr, rr, rr | Receivable Maximum SysEx Message Size (LSB first) | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives this message, it transmits a Discovery Reply message. [4-2] Reply to Discovery Message R,T +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 71 | Sub ID #2: 71 = Discovery Reply | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | mm, mm, mm | Device Manufacturer ID (System Exclusive ID Number) *4 | | ff, ff | Device Family ID (LSB first) *4 | | nn, nn | Device Family Model Number (LSB first) *4 | | vv, vv, vv, vv | Software Revision Level (Format is Device specific) | | cc | Capability Inquiry Category Supported *5 | | rr, rr, rr, rr | Receivable Maximum SysEx Message Size (LSB first) | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives a Discovery message, it transmits this message. *4: modwave Device Manufacturer ID: 42 00 0 Device Family ID: 65 01 Device Family Model Number (modwave, modwave native) : 01 00 Device Family Model Number (modwave MkII) : 1D 00 Device Family Model Number (modwave Module) : 14 00 *5: Capability Inquiry Category Supported bit0: 0x00-0x0F Reserved bit1: 0x10-0x1F Protocol Negotiation Supported bit2: 0x20-0x2F Profile Configuration Supported bit3: 0x30-0x3F Property Exchange Supported bit4: 0x40-0x4F Reserved bit5: 0x50-0x5F Reserved bit6: 0x60-0x6F Reserved [4-3] Inquiry: Property Exchange Capabilities Message R,- +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 30 | Sub ID #2: 30 = Capability | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | rr | Number of Simultaneous Property Exchange Requests Supported | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives this message, it transmits a Property Exchange Capability Reply message. [4-4] Reply to Property Exchange Capabilities Message -,T +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 31 | Sub ID #2: 31 = Capability Reply | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | rr | Number of Simultaneous Property Exchange Requests Supported | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives an Inquiry: Property Exchange Capabilities message, it transmits this message. [4-5] Inquiry: Get Property Data Message R,- +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 34 | Sub ID #2: 34 = Get Property Data | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | rr | RequestID | | ee, ee | Length of Following Header Data(in this Chunk) (LSB first) | | hh... | Header Data (n byte: JSON compliant with defined restrictions.) | | cc, cc | Number of Chunks in Message (LSB first) | | gg, gg | Number of This Chunk(count starts from 0x0001) (LSB first) | | ff, ff | Length of Following Property Data (in this Chunk) (LSB first) | | pp... | Property Data | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives this message, it transmits a Get Property Data Reply message. [4-6] Reply to Get Property Data Message -,T +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 35 | Sub ID #2: 35 = Get Property Data Reply | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | rr | RequestID | | ee, ee | Length of Following Header Data(in this Chunk) (LSB first) | | hh... | Header Data (n byte: JSON compliant with defined restrictions.) | | cc, cc | Number of Chunks in Message (LSB first) | | gg, gg | Number of This Chunk(count starts from 0x0001) (LSB first) | | ff, ff | Length of Following Property Data (in this Chunk) (LSB first) | | pp... | Property Data | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives a Get Property Data message, it transmits this message. [4-7] Subscription Message R,- +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 38 | Sub ID #2: 38 = Subscription | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | rr | RequestID | | ee, ee | Length of Following Header Data(in this Chunk) (LSB first) | | hh... | Header Data (n byte: JSON compliant with defined restrictions.) | | cc, cc | Number of Chunks in Message (LSB first) | | gg, gg | Number of This Chunk(count starts from 0x0001) (LSB first) | | ff, ff | Length of Following Property Data (in this Chunk) (LSB first) | | pp... | Property Data | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives this message, it transmits a Subscription Reply message. [4-8] Reply to Subscription Message -,T +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 39 | Sub ID #2: 39 = Subscription Reply | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | dd, dd, dd, dd | Destination MUID (LSB First) | | rr | RequestID | | ee, ee | Length of Following Header Data(in this Chunk) (LSB first) | | hh... | Header Data (n byte: JSON compliant with defined restrictions.) | | cc, cc | Number of Chunks in Message (LSB first) | | gg, gg | Number of This Chunk(count starts from 0x0001) (LSB first) | | ff, ff | Length of Following Property Data (in this Chunk) (LSB first) | | pp... | Property Data | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ When the modwave receives a Subscription message, it transmits this message. [4-9] Invalidate MUID Message R,- +----------------+------------------------------------------------------------------+ | Byte | Description | +----------------+------------------------------------------------------------------+ | F0 | System Exclusive Start | | 7E | Universal System Exclusive | | 7F | Destination: 7F = to MIDI Port | | 0D | Sub ID #1: 0D = MIDI-CI | | 7E | Sub ID #2: 7E = Invalidate MUID | | 01 | MIDI-CI Message Version/Format: 01 = v1.1 | | ss, ss, ss, ss | Source MUID (LSB First) | | 7F, 7F, 7F, 7F | Destination MUID (LSB First) (to Broadcast MUID) | | tt, tt, tt, tt | Target MUID (the MUID to Invalidate) (LSB first) | | F7 | End Universal System Exclusive | +-----------------------------------------------------------------------------------+ A Device sends this message when it is shutting down or if for any other reason the Device will not continue to use its MUID.