MIDI信号对虚拟乐器的控制
2023-07-14康健
康健
关键词:MIDI;乐器数字接口;虚拟乐器;MIDI 控制器;MIDI 1.0 规范;MIDI 2.0 规范。
一、MIDI 规范概述
产生于80 年代的“MIDI 1.0 规范”解决了各种设备的兼容问题。1983 年首批搭载“MIDI 1.0 规范”的合成器Prophet 600 和Roland JP-6 发布[1],标志着正式开启MIDI 时代。此后,所有的商用电子乐器都配置了5针MIDI 接口。然而,早期的MIDI 1.0 仅解决了传输规范问题,音源本身的规范却未涉及。使用不同厂家的设备播放时,往往会产生混乱的声音,为了应对该问题,定义音源的MIDI 标准应运而生。
(一)MIDI 标准
目前为止, 常见的MIDI 标准分别为GM、GS、XG。这些标准跨品牌定义了乐器规范,使音乐家能够在符合规范的不同品牌设备上创作和播放。GS 标准是MIDI 1.0 规范下第一个用于定义音源标准化的方式,隶属于Roland 公司,因此不具备通用性。1991 年,MIDI制造商协会(MMA)以及日本MIDI 标准化委员会(JMSC)在GS 标准基础上共同制定了GM1(General MIDI systemLevel1)标准。1994 年,继GM 之后YAMAHA 公司又推出XG(Extended General MIDI)标准,在保持与GM兼容的同时,又增加了许多新功能。
(二)GM 的主要进展
所有标准中,仅GM 来自行业组织,因此具有普遍性和代表性,很多虚拟乐器都是建立在“通用MIDI 标准”上的。GM 发展至今已经产生两个标准,即GM1 和GM2[2]。
GM1 规定所有设备必须具备24 个同时发声数,其中包含16 个旋律声部和8 个打击乐声部;至少有16 个能够同时发送和接收的同步通道;具备128 个标准音色;通道10 为打击乐器通道,47 种打击乐器在这个通道上按照固定键位排列,每个键演奏不同类型的打击乐器;键盘“中央C”的位置被确定为音符60。此外,一些全局参数的編号也在修订之列,便于标准化定义。
此后数年,随着硬件的完善和音乐家需求的增长,MIDI 标准也逐渐趋于成熟。1999 年,GM2 标准问世,相比GM1 有很多变化。例如同时发声数增加到32 个;通道11 被新增为第二鼓通道,即打击乐具备10/11 两个通道;在之前128 种标准音色的基础上扩充为 256 种音色;在录制MIDI 时,控制信息可以保存下来,并支持设备之间传输或重放;注册参数码(RPN)和系统专用信息(SysEx)等项目也得到较大扩充。
二、MIDI 信号
(一)MIDI DIN 电器规范
MIDI 1.0 规范中,MIDI DIN 电路使用了当时常见的5V 电路信号。该规范在2014 年进行了更新,更改为3.3V电路信号,并为信号引脚增加了铁氧体磁珠射频滤波器,以减少射频干扰。此外,还为MIDI 插口的接地屏蔽连接器定义了接地规则(见图1、图2)。
(二)输入设备
MIDI 输入设备泛指可以产生并传输用于触发声音和演奏MIDI 数据的硬件乐器。这类乐器不具备音色,也不能产生声音,仅能通过表演者按压、敲击、吹打或触摸等动作产生MIDI 数据,经由MIDI 电缆传送给兼容MIDI 的声音模块或合成器产生声音。MIDI 输入设备有多种形式,根据演奏特点和用途分为“通用型”和“专用型”。“MIDI 键盘”“MPE 标准控制器”“打击PAD”均属于“通用型”控制器。例如,“MIDI 键盘”使用推子、旋钮等传统方式进行控制,适合任何乐器音色的输入,但在演奏表现上有一定局限性;基于“MPE标准”的控制器,允许在多通道下控制声音,实现各种复音变化,使声音表现更接近原声乐器;网格式“打击PAD”控制器,多用于电子类LOOP 采样触发,虽然可以输入和弦、旋律,但不够直观(见图3)。
“MIDI 吹管”“MIDI 吉他”“电子鼓和鼓机”,这些均属于“专用型”控制器,例如,MIDI 吹管擅长表现管乐类吹奏乐器;MIDI 吉他擅长吉他类的各种技巧,尤其在拨弦感上非常逼真;电子鼓则适合敲击感和声音瞬态表现,鼓机适合电子节奏编程。上述控制器在各自所属的演奏表现范畴和仿真度上优于通用型控制器,这也是它们存在的意义(见图4)。
MIDI 控制器:用于DAW 实时控制的设备,同样分为“通用控制器”和“专用控制器”两类,提供与乐器更多的联系感和演奏体验。通用控制器(如MackieControl Universal Pro)被设计用于各种DAW;专用控制器,如Akai APC40 适用于Abletonlive 的控制(见图5)。
除去MPE 标准控制器和DAW 控制器,上述所有控制器类型在使用上均有限制:
①无法准确模仿特定乐器的演奏技巧。例如通用键盘控制器无法满足弦乐、拨弦、吹管等乐器演奏技巧的表现。
②控制方式一定程度上限制了音乐表达需求。上述控制器仍采用推子、旋钮、按键等物理控制方式,不便于多乐器演奏,以及多种控制器参数表现需求。
③品种繁多的专用控制器不利于现场演奏,用户需要集控制和演奏于一身、表现更优秀的控制器。那么,符合MPE 标准的控制器是否能满足要求?
三、MIDI 在DAW 软件中的工作原理
数字音频工作站(DAW)是将来自音频接口的模拟信号转换为可在计算机上处理的数字信号,并以波形、钢琴卷帘窗、MIDI 事件窗、五线谱等的形式直观表现出来,通过操作这些声音数据完成音乐制作过程。典型的DAW 提供录制和编辑音频、播放虚拟乐器、音频效果处理、混音和母带处理等基本功能。
一个典型的DAW 制作系统包含计算机、DAW 软件、输入设备(MIDI 键盘或合成器)。当在输入设备上演奏时,所有与演奏相关的物理动作都将作为MIDI 信息传输到DAW 软件并记录下来。回放所录制的MIDI 序列时,DAW 读取 MIDI 信息并触发音频响应。以上过程中,计算机是一个运算平台,MIDI 信息是演奏动作的简短数字描述,例如按下琴键、转动旋钮,所有动作都被编码为MIDI 信息并经过运算处理。
MIDI 信息包含“通道信息”和“系统信息”两种类型。
其中,通道信息用于处理演奏相关的动作描述;系统信息用于处理技术功能。在DAW 所记录的MIDI 信息中,“通道信息”最为复杂,它详细描述了演奏相关的动作、音符结构、演奏技巧、效果调制以及音色变换、控制改变等信息(见表1)。
演奏动作和音符结构类:
当按下某个琴键时,MIDI 输出端口会发送一个“音符开(Note On)”信息。该信息包括被按下琴键的音高信息(音符编码为0~127,即C-2~G8)、音符所在的MIDI 通道(1~16),以及按下琴键的速度、力度(数值范围为0~127)。
当释放该琴键时会发送“音符关(Note Off)”信息,用于中止音符开信息所触发的音符。该信息包含离键速度、释放琴键时的力度(注:部分MIDI 设备不使用该参数)。此外,“音符开”和“音符关”两者共同构成音符长度信息,即音符时值。
演奏技巧和效果调制类:
弯音轮允许升高或降低当前演奏音符的音高,产生“弯音(Pitch bend)”信息。该信息通常用于模仿乐器的演奏技巧,如吉他推弦、弦乐的滑音,或者演奏装饰音等等。为了更精确描述音高变化,弯音的数值范围为0~16383。其中,0 为中心位置,音高无变化;音高升至最高,弯音数值为+8191;音高降至最低,弯音数值为-8192。
当按下琴键并继续施压时, 会产生“ 触后(Aftertouch)”信息( 部分MIDI 设备不支持触后),该信息的发送顺序位于“音符开”之后。触后信息通常被分配用来触发颤音效果,然而根据音色不同,它也可以触发音量、声像等参数。
音色变换类:
演奏中音色变换, 产生“ 程序改变(Programchange)”信息,该信息用于改变或分配MIDI 通道中的音色。由于现今合成器所储存的音色远超128 种,为了便于组织和分配音色,使用了庫(banks) 的单位概念。即,音色库包含了多个banks,而每一个banks 最多存放128 种音色,由此扩大了音色库的容量。为了方便调用这些音色,则需要同时使用“库选择信息”和“程序改变信息”。其中,前者视MIDI 设备品牌和型号而定,后者是MIDI 标准信息类型。大多数设备中,都使用CC#0 或CC#32 来进行库选择(有时两者也可能组合使用)。
控制改变类:
MIDI 标准提供了128 个(CC#0~CC#127)标准化控制改变信息(Control change),可以被所有MIDI 设备识别,这类信息允许对MIDI 通道的特定参数进行控制,其数值范围均为0~127。
DAW 音序中会频繁使用一些控制参数,如CC#1(调制)、CC#7(通道音量)、CC#10(通道声像)、CC#11(表情)、CC#64(延音踏板)这些控制器除了能够极大改善MIDI 模仿原生乐器的演奏效果,也能增强对MIDI 设备控制能力。
在DAW 所记录的MIDI 信息中,“MIDI 系统信息”相对比较少,以下是最常见的一些信息描述。
传输控制:协同输入设备和DAW 同步工作,如开始播放、停止、录音等;
时钟:使输入设备与主时钟(DAW)同步;
Sysex:系统专用信息,由设备制造商指定;
MIDI 事件: 上述所有事件的集合,通过数字信息串描述演奏相关的动作或指令。
此外,软件VSTi(VST instruments)同样是建立在MID 标准上的虚拟乐器。由于“VST2(软件接口2.0 技术)”的应用,使得插件能够接收并处理MIDI 数据,最新规范的VST 已经更新到3.5 版本,其性能差异(见表2)。
很显然,VST3.0 的处理精度更符合现代制作需求,其性能方面也获得极大提升,如VST 乐器的音频输入、多个 MIDI 输入/ 输出、可选 SKI(Steinberg 内核接口)集成。VST 3.5 之后,新增了音符表达(以复音排列的单个音符事件),以提供广泛的发音信息。提升了演奏灵活性、支持了更自然的演奏感觉[3]。
四、演奏数据在MIDI 1.0 中的控制定义
演奏数据泛指与演奏相关的事件,如谱面相关的音符时值、音高、力度;演奏相关的颤音、表情、延音;演奏控制相关的弯音、触后、音色、通道,等一系列信息在MIDI1.0 规范中的实现方式。
(一)音高
“音高”可用于定义如下场景:乐器音高控制、演奏法切换、效果音切换、控制功能切换。MIDI1.0 规范中定义了128 个音高编码,中央C 为60,标准音A440 为69,88 健全尺寸钢琴键盘的音域对应音符为21~108。符合该规范的软/ 硬件MIDI 乐器音高方面均执行该标准(见图6)。
音高编码在虚拟乐器中可作为“按键切换”区域使用,用于切换音色中的演奏法、效果音以及控制功能等,通常这些区域被安排在音色音域以外的位置。例如Ample Guitar M Lite 将C3~A6 定义为“按键切换”区域,大致布局为C3~D5 为各种扫弦演奏法;F5~C6 为各种演奏噪声;F6~G6 为左手演奏噪声;A6 为吉他谱播放键(力度≥ 64 为开启,≤ 63 为关闭)。
(二)力度
“力度”可用于定义如下场景:音量控制、音色变化、组切换等功能控制。
在音乐制作中,音符的音量变化(音量控制)是至关重要的。将“力度”参数用于采样回放音量控制,取值为1-127(0 为不播放;力度最大127 时采样音量无衰减;力度最小为1 时可设定一个默认的衰减量,如-24db)。在真实演奏中,音量衰减不是以线性变化的,以著名采样引擎Kontakt 为例,允许用户对力度衰减曲线进行选择和自定义(见图7)。
衰减量的延展参数,即力度灵敏度(0% - 100%),可允许用户自行改变力度对音量的影响,如厂商设定最大力度衰减为-24db 时,用户改变力度灵敏度为50%,则实际最大衰减为-12db,当灵敏度为0 时,力度不再对回放音量产生影响。
真实演奏中,音符力度会带来音量和音色的变化。力度大意味着音量大、高频成分多,实际听感更加硬朗、明亮;力度小则音量小,音色更加柔和暗淡,那么可以利用该特性实现音色变化的仿真目的。在采样回放引擎中,通过输入不同的力度值来触发不同力度的多个采样(见图8),为了避免在力度分层变化的临界点出现的音色跳变,可以在分层间进行交叉融合。
不同的力度值可以触发不同的采样组或演奏技巧(组切换)。例如在Ample Guitar 长音组Sustain 上以最大力度127 触发一个非长音的勾弦采样Pop 或人工泛音采样Pinch Harmonic。
这里引入一个应用实例:在Ample Metal 金属风格吉他的设计中,因为金属Riff 需要频繁地在开放音Sustain 和闷音Palm Mute 间切换,这时候Keyswitch 触发不同技巧的操作将变得非常烦琐,为了简化操作,更便于演奏,那么可将力度63 设置为分界点,大于63 的力度触发开放音采样组,而小于63 力度触发闷音采样组,以此实现“组切换”功能。
在虚拟乐器中还可以利用输入力度变化控制各种功能或参数变化(功能切换)。例如Ample Guitar 使用C#6 音符大力度可以触发Strummer 扫弦模式,而小力度则关闭Strummer 模式;使用D#6 音符力度变化切换打音连奏、滑音连奏等不同的连奏模式。
在Ample China 系列产品中,由于民族乐器技巧众多,仅仅依靠Keyswitch 分配将占据大量的键位,且不方便用户的学习和使用。我们在设计上对大量演奏法进行编组,把属性相近的演奏法编排到同一个Keyswitch上,再利用输入力度细分演奏法。比如大力度触发匀速的颤音,而小力度触发变速的颤音。MIDI 力度是最常用最方便实时演奏的参数之一,利用MIDI 力度控制虚拟乐器的参数变化,在用户体验上优于MIDI CC 的控制,且不需要借助过多的外部设备予以实现。
(三)时间参数
“时间参数”可用于定义如下场景:定义音符长度、用时间参数判断虚拟音色变化、采样切换。
“Note-On(音符开)”和“Note-Off(音符关)”两个信息结合,定义了完整的音符长度信息。
“时间参数判断虚拟音色变化”则是利用了时间衰减特性。以拨弦乐器为例,由于时间衰减,那么不同时间点触发的连奏必将随时间的变化而变化。比如,吉他上演奏音符A3 到B3 的上滑音,由于两音是先后触发的,将导致音色上区别较大。此时需要取得音符的时间参数,再根据乐器的物理特性计算连奏的变化量,该技术的本质是对多次物理震动之间彼此影响的计算。
“采样切换”同样是根据时间参数判断不同的采样触发,是一种重要的虚拟乐器仿真技术。以Toontracks的EZDrummer 产品设计为例,打击乐可以演奏一个大镲,再演奏一个捏镲的Articulation。那么这个捏镲动作是基于敲击大镲后进入的时间点判断的,其结果用于触发不同的捏镲声音采样。
此外,时间参数Note-On(音符开)和Note-Off(音符关)也可用于音量包络的节点触发。例如,当系统接收到Note-On 信息时,声音包络就进入Start(开始时间)、Attack(起音)等阶段,直到Sustain(保持)阶段收到Note-Off 信息时,包络才会进入Release(释放)阶段。
(四)控制器
“控制器”可控制虚拟乐器中任意需要被控制的参数,常用场景有:颤音、表情、延音、控制功能切换、控制DSP 处理。根据GM 规范的控制器定义,可将常用参数赋予GM 默认控制器,如CC#1(颤音)、CC#11(表情)、CC#64(延音)等。一些新的采样引擎支持MIDICC 用户自定义,并具备学习功能。标准MIDI 键盘已经集成了部分控制器,如需更多的控制能力,可外接第三方控制器。
颤音(Vibrato)是虚拟乐器中最常见的演奏法之一,常见的控件是颤音轮(Mod Wheel)。当颤音轮被推起时,CC#1 可以触发相应幅度的LFO 调制,对信号的音高进行微调。而最新的技术,是对复音乐器中每个独立音色进行不同调制。为了获得真实自然的仿真效果,每一个调制再独立赋予一个颤音调制包络(见图9)。这样CC#1 只需保持在一个相对固定的值即可自动实现颤音效果,从而大幅度简化了用户操作。此外,在SAHDS系统中,当颤音幅度超过阈值时,还会随LFO 不同速率,触发琴弦摩擦指板的音效。
表情(Expression)是一组连续数据,因此可用于控制连续不断的音色音量变化。如弓弦类乐器的二胡、吹奏类乐器的笛箫、拨弦类乐器的轮指或各种形式的Tremolo 类技巧等。其中音量变化的实现较为简单,而音色变化的部分,则由多种方式予以实现。
延音(CC#64) 是为了模拟钢琴的延音踏板效果。当踩下延音踏板时(值为127),系统将屏蔽Note-Off(音符关)信息,音符永不停止。所以一般情况下,延音效果和音量包络中将Release 值加到最长是不同的。延音没有衰减,而Release 有衰减。
在拨弦类乐器仿真系统中,延音可用于简化演奏,演奏者无需长时间按住琴键以保持延音。还可用于扫弦仿真,当持续不断的扫动琴弦时,其声音信号不会因Note-Off(音符关)而进入Release(释放)阶段。
在笛箫二胡等无需延音的虚拟乐器上,也可以利用延音踏板作为某种常用功能的开关,例如双连奏模式開关。因此在MIDI 1.0 标准下,设计者必须借助一切可利用的输入信息简化操作,实现复杂的演奏指令。
(五)弯音信息
“弯音信息”用于控制线性音高变化。MIDI 规范最高支持24 个(+/- 24 个半音)音高的弯曲范围,而MPE标准将其扩展到96 个(+/- 96 个半音)音高。弯音是一个14 位控制器,取值范围0~16383(+8191~0~-8192)。
(六)触后信息
“触后”用于触发颤音、自定义控制。某些midi键盘具备触后响应,即按键后,继续在键盘上施加压力,可产生“触后”信息。该信息用于触发音量、颤音和其他控制参数。“触后”有两种类型:“通道触后”(仅有压力最大的键可以响应)、“复音触后”(每个键的不同压力可产生独立响应值)。
(七)音色信息
“音色信息”用于切换预置音色。使用连续控制器CC#0 和CC#32 共同构成14 比特数值,音色选择的范围达到16384 个音色库,每库包含128 个音色。
(八)通道信息
“通道信息”用于多乐器协同工作、定义对拨弦乐器中琴弦的选择。“通道”是音源按照不同声部发声的功能,MIDI 规格中有16 个基本通道(在位置字节中,只能分出4 位来区分通道,即2 的4 次方为16)。
实际应用中,通过“MIDI 端口+ 通道”的指定,可实现多乐器协同工作,或组成多个音源的MIDI 系统。
此外,还可通过“通道”信息指定不同的演奏区域。例如Ample Guitar 的MIDI 吉他模式,利用1-6 MIDI 通道,来定义吉他上的六根琴弦。与支持多通道输出的MIDI吉他相配合,可准确重现吉他指法. 这对于使用MIDI吉他控制吉他虚拟乐器是至关重要的。此外,该技术还可用于Guitar Pro 软件读取吉他双音技巧,将推弦音和固定音发送到不同的MIDI 通道分别进行处理。
五、MIDI 2.0 技术规范及展望
MIDI 2.0 是建立在 MIDI 1.0 核心架构和语义上的完整扩展环境,包括MIDI-CI、配置文件、属性交换、新的通用MIDI 数据包和新的MIDI 2.0 协议。它并没有取代 MIDI 1.0,MIDI 2.0 设备仍可以在MIDI 2.0 环境中使用MIDI 1.0 协议。其扩展的基础体系结构由 MIDI 功能查询(MIDI-CI)规范定义,MIDI-CI 允许设备双向通信,并使用超出 MIDI 1.0 中已定义的扩展 MIDI 功能,同时保持向后兼容性[5](见图10)。
MIDI2.0 规范的几个重大改进:
(一)具备了双向通讯能力
MIDI 1.0 采用单向通信(控制器→计算机)方式,而MIDI 2.0 采用的是双向通信(控制器→计算机)方式,因此控制器和计算机之间可以相互通信,这也意味着系统内相同设置的两个或多个 MIDI 控制器也将相互通信。
(二)配置文件设置
为了减少在 DAW 中设置控制器所花费的时间,用户仅需将功能分配给旋钮和推子,MIDI 2.0 会自动配置设备所需的设置文件。
(三)属性交换
当“配置文件设置”在设备中生效时,“属性交换”消息会提供特定而详细的信息共享,用于检索和设置MIDI 设备的所有信息,包括设备配置设置、带有名称和其他元数据的程序列表、控制器及其目标列表等等。“属性交换”实际应用的优势在于,允许设备自动映射控制器,按名称选择程序甚至更改状态,还可以向DAW 提供可视化信息,使 DAW 和硬件控制器更紧密集成。例如,DAW 可以显示与外部合成器有关的所有信息,从而有效地将硬件合成器提升到与软件合成器相同的可调用水平。
(四)协议协商
允许设备在使用 MIDI 1.0 协议或 MIDI 2.0 协议之间进行选择,如果连接的设备仅具有 MIDI 1.0 功能,则2.0设备将作为 1.0 设备进行通信。MIDI 1.0 协议和 MIDI 2.0协议有许多共同消息,因此可以在两种协议中通用。此外,MIDI 2.0 协议也扩展了一些 MIDI 1.0 消息,而有些消息则是MIDI 2.0 协议独有的。
(五)MIDI 2.0 改进的数据传输
MIDI 2.0 提供了前所未有的艺术表现力。例如256个MIDI 通道,比MIDI 1.0 标准下增加了240 个通道;32 位处理精度,比MIDI 1.0 的 7 位通信更詳细高效;MIDI 1.0 参数限制在 0~127,MIDI 2.0 有 1000 个参数限制,允许更详细的参数分配和调整;MIDI 2.0 可以自动获取所有连接设备的信息,包括任何参数信息、生产信息、预设和音色列表,以及任何控制器映射。
从以上几个显著特征可以看到MIDI 2.0 对于MIDI功能的大规模扩展。它使得人机交互更加友好,也增强了设备的控制能力。此外,MIDI 2.0 有一个新的通用MIDI 数据包格式,用于携带MIDI 1.0 和MIDI 2.0 协议信息,32 位信息数据包,使 MIDI 的表现更加生动。该数据包格式适用于USB 或网络高速传输,以及应用程序之间发送 MIDI 数据。
六、结束语
MIDI 2.0 协议的MIDI-CI 是应用的核心,该协议提高了数据处理精度,增强了系统性能和音乐表现力。MPE 标准是目前突破虚拟乐器的表现能力的最佳方案,现在越来越多的虚拟乐器都支持MPE 功能,以获得完善的Per-Note Expressive(将音符和相应MIDI 信息发送到不同通道上,实现各种复音变化)支持。同时,这也是我们未来在虚拟乐器设计中的重点。