本文将介绍不依赖于任何平台实现、API 或平台专用功能的通用 MIDI 架构。
主要概念
事件
该 MIDI 协议专为基于事件的通信而设计。
事件表示已经发生或即将在特定时间发生的事情。MIDI 事件用信息(原子式信息包)表示。
传输
MMIDI 信息通过传输层(简称“传输”)进行编码和传递,传输层会将原始 MIDI 数据发送给接收者,以便接收者随后将数据解码为信息。
基于硬件的 MIDI 传输包括:
使用 5 针 DIN 连接器的 MIDI 1.0 电流回路
USB
蓝牙低功耗 (BLE)
信息呈现方式
MIDI 传输规范介绍了信息的传递方式。
尽管在最低级别信息的封装是特定于传输层进行的,但是在较高级别,应用可以将按时间排序的信息序列视为已划分界线的字节流。
这可能是因为,只要已知信息边界的起点,则每条信息都会包含足够的信息来确定其总长度。
大多数 MIDI 信息都比较短(一到三个字节),不过您可以通过 SysEx 实现较长的信息。
时间戳
时间戳是在发出或接收信息时(具体取决于传输)附加到信息中的可选标签。时间戳用时间单位表示,例如秒或滴答声。
在没有显式时间戳的情况下,系统必须替换紧挨着的上一条信息或当前时间的时间戳。这些时间戳(无论显式或隐式)的准确性是影响基于 MIDI 的系统的可靠性的重要因素。
时间戳不是 MIDI 1.0 协议的组成部分,它们通常会被添加为平台专用 API 的一部分。BLE 传输有时间戳,用于表明一个 BLE 数据包内多条信息各自的发送时间。
设备
外围设备为计算机提供输入/输出 (I/O) 功能。“MIDI 外围设备”和“MI