MIDI 技术简介

此帖内容翻译自 https://www.midieditor.org/index.php?category=manual&subcategory=midi-overview

Midi - 简介

Midi (Musical Instrument Digital Interface) 是一个数字接口,人们可以用它在自己的电脑或其他硬件设备上控制虚拟的电子乐器。总体上,MIDI 协议就是用来交换类似“在乐器Z上用速度Y演奏音符X”这样的命令的。

这些命令通常是存储在 MIDI 事件(events)中并进行交换的。它们可以包含当前被演奏的音符信息,每种(虚拟)乐器的声音,或者关于这首乐曲的概要信息,例如the key,the meter,或者乐曲的名称。除了这些最常用到命令,还有一些其他命令,可用来例如:控制钢琴踏板,或者定义一个乐器的总体音量等。下面是对事件更详细的说明。

音轨(Tracks)和通道( Channels)

不同的虚拟乐器是用音轨组织在一起的,每个音轨代表一种或一组乐器。因此,每个 MIDI 事件都是关联到一个音轨上的。每个音符都要关联到播放这个音符的乐器所在的音轨上,而对于并不属于一个特定的乐器(key, meter, 等)的事件,通常是关联到一个特殊的音轨(“Tempo 轨”)。此外,每个音符和其他的特定乐器的事件还会关联到一个通道上。共有16个通道,每个通道有一个定义的声音(例如“钢琴”或“弦乐合奏”)。虽然听起来让每个音符都要关联一个音轨和一个通道有点多余,但这个概念是说得通的。你看,因为 一个设备A要求设备B播放音符,设备A是知道关于不同音轨的信息的。设备B只会接收一个通道的信息,此通道用于播放这个音符,这样就减少了交换信息所需的数据量。因此,音轨(多数情况下)的目的是为了让用户更方便地编辑一个MIDI文件。通常,一个音轨中所有的音符都会被关联到一个通道中。然而,也有特殊情况,例如当一组弦乐被分成两部分,一部分演奏拨弦(pizzicato)另一部分演奏弓弦(legato)时,两部分的音符都可以写在一个音轨里,但必须使用不同的通道,因为每一部分都有不同的声音。

MIDI 事件

下面的清单展示了不同的 MIDI 事件及其功能简介。

  • Note On/Off Events 音符开关事件 每个音符(note)都由两个事件构成,一个事件指明音符的开始,另一个事件用于结束此音符。音高是用一个从 0(C0)至 127(G10)的数字表示的,音符力度(音量)也是用 0 至 127 表示。音符被关联到一个通道中,通道的配置指定了音符的音色。

  • Tempo Change Events 速度变更事件 速度变更事件设置当前的速度。速度以每分钟节拍数(BPM)设定。数值越高表示节奏越快。

  • Time Signature Events 节拍记号事件 MIDI 中任何节拍(meter)的变化都用一个时间签名时间表示。此事件含有两个参数,即节拍的分子和分母。例如,要表示一个 2/2 拍,分子要设置为 2 ,分母设置为半个音符(half notes)。

  • Key Signature Events 调号事件 调号事件定义了乐曲的调式(C 大调、G小调)。

  • Program Change Events 音色变更事件 音色变更事件用于定义关联到每个通道的音色(或乐器)。例如,在通道5 上设置了 Church Organ教堂风琴 音色后,所有在通道5上的音符都会以风琴的音色演奏。

  • Control Change Events 控制变更事件 除了关联到通道上的音色外,还有很多其他关于一个通道上声音的属性可以通过控制变更事件设置。每个通道有多达128中不同的控制,它们可以被设置为 0 - 127 之间的值。可用于控制包括钢琴踏板,通道的整体音量,和调制轮等。

  • Key/Channel Pressure Events 键/通道压力事件 这两个事件控制某个音符的压力 (Key Pressure Events),或控制指定通道中所有音符的压力 (Channel Pressure Events)。

  • Pitch Bend Events 弯音事件 用于修改给定通道中的音高(弯音轮)。

  • Text Events 文本事件 歌词,乐器/音轨名称或概要信息(版权等)可存储在文本事件中。

  • System Exclusive Events 系统特有事件 系统特有事件为设备厂商提供了发送仅供特定设备使用的消息的方式。

Midi I/O

(软件)合成器可以被很方便的安装并运行在计算机上,也有很多硬件可用于播放或录制 MIDI 数据(例如数码钢琴或硬件合成器)。 这些硬件通常通过USB连接到计算机上。合成器或键盘是运行在计算机上或作为独立的硬件连接到计算机上并不影响在 MIDI 软件(如 MidiEditor)中对它们的使用方式。两种情况下,每个设备都会存在一个 MIDI 端口以供软件接收数据或向设备发送数据。

相关文章

http://www.homerecordinghub.com/midi-recording.html

2 Likes

多插一句,在早期还是硬件音源的时代,MIDI 文件还真的是可以拿来听的,但是随着 Windows 修改了 MIDI 相关的组件以及软件音源(VSTi/DXi/AU)兴起以后,MIDI 回归了它原本的目的:一个用来传递音乐信息的协议

4 Likes

回归本源挺好的,喜欢它的原因之一就是简单,纯净!

1 Like

其实不是很懂为什么这里会减少交换信息量 :upside_down_face: