-
midi1.0的协议协商包
midi1.0协议协商包的格式如下:
-
第一个字节:为协议类型,值为 0x01;
-
第二个字节:为协议版本,值为 0x00;
-
第三个字节:为协议扩展,如果两个设备通过协议协商后均支持UMP格式的传输,那么就可以使用MIDI1.0协议的已定义扩展。扩展字段是标志位,每个标志位表示一个扩展或可选功能,其扩展标志位详情如下:
-
s值为扩展标志位的大小
值为0时,交换的UMP大小不得超过64位,即8比特;
值为1时,可以交换大小为96位(12字节)和128位(16字节)的UMP。这个更大的包是支持SysEx 8和混合数据集所必需的;
-
J值为减少抖动时间戳的扩展标志位
当J值1时,应在每次MIDI1.0协议协商时使用。
当S值0和J值1时,设备能够处理大小为64位的UMP,加上UMP里JR时间戳的32位,总大小为96位(12字节)。
当S值1和J值1时,设备能够处理大小为128位的UMP,加上UMP里JR时间戳的32位,总大小为160位(20字节)。
-
midi2.0的协议协商包
midi2.0协议协商包的格式如下:
-
第一个字节:为协议类型,值为 0x02;
-
第二个字节:为协议版本,值为 0x00;
-
第三个字节:为协议扩展,扩展标志位只有J值,当值为1时,应在每次MIDI2.0协议协商时使用;
使用UMP格式的MIDI 2.0协议的设备能够处理大小为128位(16字节)的UMP。
J值为1时,设备能够处理128位大小的UMP,加上UMP里JR时间戳的32位,总大小为160位(20字节)。
参考资料:
https://www.midi.org/specifications/midi-2-0-specifications/midi2-core/universal-midi-packet-and-midi-2-0-protocol-specification,M2-104-UM_v1-0_UMP_and_MIDI_2-0_Protocol_Specification.pdf,16-20,20230128