乐器数字界面(MIDI)协议已经为世界上音乐人与作曲家所广泛使用,自从1982/1983年期间概念成形之后。MIDI数据是表示音乐演奏信息的一种非常有效的方式,而这使得MIDI不仅吸引了作曲家或乐手,也成为制作声音的计算机程序或计算机游戏程序的选择。然而,合成器功能的标准化缺乏妨碍了程序开发商以及当今的MIDI新用户在学习时有一定难度。
幸运的是,由于通用MIDI系统规格的出版, 为广泛的PC/MIDI界面的接受,微软视窗及其它操作系统对MIDI的支持,一些低成本的音乐合成器的不断发展,MIDI协议现在已经得到了广泛且逐渐增长的应用。本文是对该标准、实践以及使用MIDI协议的声音生成相关术语的梗概性介绍。
MIDIvs.数字音频
原来的开发使得音乐人可以连接合成器,MIDI协议现在则广泛应用为传输媒介,来替代或弥补数字音频在游戏与多媒体程序中的使用。使用MIDI合成器相对从硬盘或CD-ROM中使用采样音频在声音生成方面有一些优势。第一个就是储存空间问题。用于以PCM格式(诸如.WAV文件)保存采样音频的数据文件容量更大。对于以立体声形式在高采样率下不做的长时间音乐片段来说更是如此。
MIDI数据文件,与数字采样音频文件相比就显得极小了。比如,含有高品质立体声采样音频的文件每秒需要大概10M数据,但典型的MIDI音序或许只需要占用每秒10K的数据空间。这是因为MIDI文件本身并不包含采样音频数据,它仅含有合成器所需用来播放声音的指令性数据。这些指令性数据为MIDI信息的形式,告诉合成器使用哪些音色,演奏哪些音符,以及演奏的力度等等。音色实际上是由合成器所产生的。
对于计算机来说,文件越小意味着PC用于生成声音的外设数据输出带宽的使用也越少。另外一个好处是使用MIDI来生成声音还可以轻松编辑音乐,可以分别改变回放速度与音高以及声音调子等。后者对于合成应用来说特别重要,比如卡拉OK应用,用户可以选择歌曲的速度及音乐调子。
MIDI基础
javascript:if(this.width>500)this.style.width=500;" onmousewheel="return bbimg(this)">
简单的MIDI系统
乐器数字界面(MIDI)协议提供了一种标准化高效率的将音乐演奏信息转化为电子数据的途径。MIDI信息以“MIDI讯息”(MIDIMessages)的方式传输,可以认为是告诉合成器如何演奏音乐的指令性数据。合成器接收MIDI数据再生成实际的声音。MIDI1.0详细规格则对MIDI协议做了完整的定义。
MIDI数据流是一种单向的以31.25Kbit/s速度传输的异步比特流,每个字节(起始位,8数据位,以及一个停止位)10位传输。MIDI乐器上的MIDI界面一般都有三种不同的MIDI接口,分别为输入(IN)、输出(OUT)与旁通(THRU)。MIDI数据流通常由MIDI控制器引发,比如乐器踏板,或者是MIDI音序器等。MIDI控制器是一种可以作为乐器演奏的设备,将演奏实时翻译成MIDI数据流(在演奏的同时)。MIDI音序器则是可以录制、保存、编辑、组合以及重放MIDI数据序列的设备(软件)。从MIDI控制器或音序器中的MIDI数据输出通过设备的MIDI输出接口传输出去。
这种MIDI数据流的接收者通常为MIDI音源或合成器,在MIDI输入接口接收MIDI讯息,反应播放声音。图1为简单的MIDI系统,包含MIDI键盘控制器与MIDI音源。请注意许多MIDI键盘乐器既包括键盘控制器也包括内置的MIDI音源。在这种设备内,在键盘与音源之间为内连形式,可以通过“本地控制”功能打开或关闭该设置。
一个物理MIDI通道在MIDI讯息中以4位大小通道量分成16个逻辑通道。键盘乐器一般可设置在16通道中的任何一个上进行传输。在如图1所示的系统在红,合成音源已经设置为接收键盘控制器所正在传输的通道,以演奏声音。
在MIDI设备的MIDI输入接口所接收的信息也传送到设备的MIDI旁通接口。几个MIDI合成音源可以通过旁通输出接口到下一设备的输入接口来达成菊型连接形式。