MIDI 基础新手向完全指南!
数字乐器接口协议,也就是众所周知的 MIDI(Musical Instrument Digital Interface protocol),自 1980 年代初就已经存在,直至目前仍然在音乐制作领域中充当着关键的角色。任何使用 Logic Pro、Pro Tools、Ableton Live 等电子音乐或者数字音频工作站 (DAW) 的用户都需要理解 MIDI 的定义以及如何用其制作音乐。本文将介绍 MIDI 相关的基础知识,并介绍 MIDI 2.0 协议中引入的最新改进。
历史发展回顾
在 1980 年代初期,电子乐器制造商意识到应该在不同的硬件设备和计算机之间建立一种标准的数字通信方式。MIDI 技术于 1983 年由音乐行业代表小组标准化,并由 MIDI 制造商协会 (MMA) 进行维护。该标准允许设备之间无视制造商的区别进行有效的通信。并使用五针 MIDI 线缆做为统一的连接标准。后来,通过 USB 线缆和无线信号连接进行通信的标准被陆续添加至 MIDI 规范标准中。
初学者中最常见的误解是认为 MIDI 传达的是音频信号。然而并非如此,它只能够传输指示合成器、声音模块和计算机等连接设备生成声音的数据。它可以指定音高并提供更改其他参数的方式。
MIDI 协议即数字音乐接口(Musical Instrument Digital Interface),是电子乐器、合成器等演奏设备之间的一种即时通信协议,用于硬件之间的实时演奏数据传递。MIDI 协议诞生之初希望解决的事情是通过统一通信协议让不同乐器制造商的设备可以互相兼容,比如把 Roland 键盘接入 Yamaha 合成器。MIDI 协议的编码经过拓展后也可以作为一种记录音乐信息的文件格式,被称为“标准 MIDI 文件格式”。
在音乐技术研发中除了需要与音频打交道之外,许多场景中还需要直接处理音符信息。如果说 wav 与 mp3 记录的是音乐的物理现象,那么 MIDI 协议与 MIDI 文件则记录的是音乐这门语言的“文字”。本文的目的是让开发中涉及到音乐“本体”的同学可以了解这一最通用的演奏信息交互和文件存储格式的编码规则。同时通过对 MIDI 事件流等概念的认识,能在开发中更好地抽象自己的业务逻辑。
1.1 MIDI 数据流 & 编码
和 HTTP 这类协议不同,MIDI 作为传输协议时所有传递的信息都需要被实时响应,比如一个触键信息、一个效果器参数的改变都需要立刻被执行,所以其采用数据流的方式进行数据传输。MIDI 定义了一个 8 位的二进制数据流,许多时候我们可以使用 ASCII 码来将其表示为 16 进制的字符用于传输和保存。 我们正处于 MIDI 的黄金时代,一个近期发布并让大家期待已久的开发项目是 MIDI 2.0,其在连接和控制方面进行了优化。这个全新的协议包含了两个巨大的更新内容:
MPE(MIDI 复音表情(MIDI Polyphonic Expression)—— 可以在单一音符中对弯音、颤音、音色和音量等参数进行独立控制,而 MIDI 以前仅允许在轨道维度或者通道维度中控制这些参数。并非所有虚拟乐器、硬件合成器或者控制器都支持 MPE 功能,但这种情况正在迅速改变。现在越来越多的虚拟乐器配备了这个功能,例如 Logic Pro 的 Alchemy。
页:
[1]