摘录:
Cakewalk的音色参数文件以ins为后缀(扩展名),主文件名一般用厂商或MIDI乐器品牌的名称,一个文件中含有这个厂商或品牌的一系列MIDI乐器。这个文件主要是为软件提供有关音色的参数,但还包含有MIDI控制器的作用参数。Cakewalk的安装文件中自带有许多个这样的参数文件。
1. 四个模块的结构和功能: 在ins文件内,一般可分为4个大的模块:音色名称(Patch Names)模块、音符名称(Note Names)模块,控制器名称(Controller Names)模块和乐器定义(Instrument Definitions)模块,每个部分的起始处,用英文句点加上模块的英文标题开头。后面紧跟的是该模块的参数。
各模块之间,以“;----------------”分割。其中的分号相当于汇编语言中的分号或DOS命令中的“REM”,表明该行中此标号后的字符在软件读数时,将会被忽略,它仅起注释作用,为编写或阅读参数文件者作参照。
文件中的四个模块分述如下:
① Patch Names(音色名称): 这第一个模块的作用,是定义所有的音色库及其所包含的音色名称。其中,以音色库为单位又可以分为若干个音色定义段落。每个音色库段落的第一行是加方括号的音色库名称。从第二行开始,均是定义各个音色名称的语句,每句采用赋值式的结构。它的格式是:“音色号=音色名称”。音色号取值0-127,音色名称可以是任意字符及组合。在这里,音色号的值=常规音色号 - 1。例如:
21=22 Acordion
等号右边的 Acordion(手风琴)是音色名称, Acordion音色在GM中列为22号音色,它的前面照常标为“22”,它们将会显示在音轨窗的Patch(音色)栏中。【图11 等号右边音色名称显示在Patch栏中】
等号左边,赋值音色号=22-1,因而记作“21”,它是供软件读入的音色号值。
在当前编辑的音色参数表中即将要定义的所有音源设备的所有音色库及其音色,都应当以音色库为单位,在Patch Names块内,照以上格式定义,并且最好以单个设备为线索顺序编写,以便于最后的调用。
以下是YAMAHA.ins的音色名称模块中开头的一部分段落:
--------------------------------------------------------
Patch Names ---- 模块名称
[MU80-90R Bank 0] ---- 音色库标识
0=01 GrandPno ---- 音色定义
1=02 BritePno
2=03 E.Grand
3=04 HnkyTonk
…………
[MU80-90R Bank 1 (KSP)] ---- 音色库标识
0=01 GrndPnoK ---- 音色定义
1=02 BritPnoK
2=03 ElGrPnoK
…………
[MU80-90R Bank 100]
…………
② Note Names(音符名称): 由于多数音源设备的鼓组和音效音色是按照“程序号定音色组、音符号区分单个音色”的原则排列,因此,鼓组及音效组的音色仅仅在Patch Names模块中定义是不够的,还必须在指明程序号后,再指明其各个音色所在的音位(键位),这就是Note Names模块要实现的目的。
在Note Names中,对应于上一个模块中定义的鼓组音色组,分别将每个音色组列为一个段落,再对它的每个音符(键位)的音色予以命名。如:
60=Bongo H
其中,“60”是中央C的MIDI音符号,“Bongo H” 是打击乐器音色名称(高音邦戈鼓)。
一个音色组段落内的语句是,首先以方括号列出以上定义的这个鼓组的名称,再用“音符号=音色名称”的格式,以音符号为序,分别赋予每个音位相应的音色名。这里指定的打击乐名称在鼓组音轨的钢琴卷帘窗中,将会按键盘排序予以标出。【图12 打击乐名称在钢琴卷帘窗键盘上标出】
鼓组的划分一般都是以某种特定的音乐风格为线索,集合一整套打击类乐器的音色。因而在这许多不同的组合中,有许多常用的音色(乐器)是相同的。为了减少“音符名称”定义中的大量重复,可以在其中(第二行)加上一个“Based On=××××××”语句,用作基本音位音色的缺省指定。也就是只需定义本段落中特有的音位的音色名称,其它与已经定义了的“××××××”鼓组音色相同部分的定义语句就可以省略。例如:
Note Names ---- 模块名称
[MU80-90R Analog Kit] ---- 鼓组名称
BasedOn=MU80-90R Standard Kit -- 缺省指定
28=Reverse Cymbal ----指定键位音色名
30=Hi Q
31=SD Rock H
33=Bass Drum M
35=BD Analog L
…………
[MU80-90R Standard Kit] -- 缺省指向的鼓组
13=Surdo Mute
14=Surdo Open
15=Hi Q
16=Whip Slap
17=Scratch H
…………
在这里,等号左侧的音符号供软件识别键盘,等号右侧的音色名称将会原样显示在钢琴卷帘窗中对应的键盘上。
音效组键位音色的定义与鼓组相同。
③ Controller Names(控制器名称): MIDI控制器的编号和名命在GM、GS和XG的产品中有些区别,其他规格的产品差别就更大。在Cakewalke中,可以根据产品的实际对MIDI控制器在软件中的使用作出定义。这项功能附加给了Cakewalk音色参数表的第三大模块。这里的格式与前面部分相同,每种MIDI乐器编写一个段落,首行用方括号列出“音源设备名称+Controllers”,从第二行开始,用“控制器号=控制名称”的格式,将该乐器所使用的所有控制器一一列出。控制器名称中的字符,将会在钢琴卷帘窗的控制器选项下拉菜单和MIDI事件窗的第一数据栏中显示出来。
【图13 控制器名称在钢琴卷帘窗的控制器选项下拉菜单中显示】【图14 控制器名称在MIDI事件窗的第一数据栏中显示】
④ Instrument Definitions(乐器定义): 如果说,前三大模块是建造所有MIDI乐器的各个组件的话,那么,最后的Instrument Definitions模块,就是对这个音色参数文件所含的各个乐器的音色表单元构件的总装了。
这里以每一种MIDI乐器为一个段落,同样以方括号指定音色表名称,这个音色表名将会出现在Cakewalk导入音色文件时的选单中。下面就分别指定在这个乐器音色单中需要从前面调用已经定义了的MIDI控制器、音色库及其音色、键位音色等段落。
控制器指定句是“Control=已定义的一个控制器段落名称”。控制器指定一般只有一句,因为一种乐器只有一种控制器模式。例如 Roland SC-55 音源的指定句为:
Control=Roland GS Controllers
音色库指定句的格式为“Patch[x]=已定义的一个音色库音色段落名称”。一句指定一个音色库,直到指定了该MIDI乐器的所有音色库为止。 这里的x值,就是让软件识别的音色库号编码。例如
Patch[2]=Roland SC-88 Map Capital Tones
指定的数值x和音色库名称,将以“x-音色库名”的形式,出现在音轨窗的音色库栏(Bank)中,同时也会在从音轨窗弹出的音轨性质(Track Preperties)对话框的音色库选择栏中显示。例如,有“Patch[1]=MU80-90R Bank1(KSP)”,一经选用,则软件中的上述两处显示为“1-MU80-90R Bank1(KSP)”。【图15 x+音色库名称显示于音轨窗的Bank栏】【图16 x+音色库名称显示于从音轨窗弹出的Track Preperties框的Bank栏】
如果这种乐器是鼓组或效果组,它们的单个音色是按键位(音符)分配的,就还要写上指名在“音符名称”(Note Names)模块中定义键位音色段落的语句,格式是:
key[x, 程序号]=已定义的一个键位音色段落名称
其中x的值与上面的库号x值相同。例如:
Key[2, 32]=Roland SC-88 Jazz Set
【图15 x+音色库名称显示于音轨窗的Bank栏】【图16 x+音色库名称显示于从音轨窗弹出的Track Preperties框的Bank栏】
2. 关于Patch[x]中x的值: Patch[x]中x的值既然是音色库号的编码,按说大家不会感到陌生。但是说到这个“x”,人们却往往感到满头雾水,不得其解。打开一个现成的MIDI文件,普通音色的库号值x人们对它是一目了然的--不就是原本的音色库号么。但鼓组和音效等音色的值有如8192、16256等却不知从何而来。要正确编写Cakewalk的参数表,就必须弄清楚这个x的正解。【图17 音色库号等于16256……?】
在计算机语言中,记数的基本单位是一个二进制的“位”,每8位组成一个“字节”。PC机的字长为16位,即由两个字节组成,其中处在高位的字节称MSB,低位字节称LSB。在MIDI通讯中沿用此法。
我们知道,音色的选择是要由MSB、LSB和程序号(音色号)三个值共同来决定的。虽然,通常把LSB称作音色库号,但音色库的定位是由MSB和LSB两个座标共同作用的结果。由于MSB和LSB的有效数据位都各是7位,MSB和LSB共能形成14位二进制数值,换算成十进制数,MSB和LSB各能计满128,那么,理论上他们可以有128×128=16384个定位,也就是能够标出16384个音色库号。这么多的库号从0开始按线性列举,不就出了0 - 16383的编号么?
在这里,Patch[x]中x的值,就是MSB与LSB两值相交,并且换算成十进制数的结果。忽略不同进制数值的计算,可简单表述为:x=128MSB+LSB 。
当MSB=0时,x的值就是LSB的值。比如XG音源中一般音色的MSB=0,Patch的方括号中就可以直接写入库号LSB的值。
当MSB≠0时,x的值就会出现大于127的现象。例如,XG音源的鼓组的MSB=127,LSB=0,则x=128MSB+LSB= 128×127+0=16256;SFX库的MSB=64,LSB=0,则x=8192。
无论什么音源,只要你从它的数据手册中找到它的库号选择MSB和LSB,据此就能正确地写出它的音色库号编码x,并把它编入参数文件中。
3. 例说增设鼓组音色: 从以上对Cakewalk音色参数文件结构的分析中可知,要在一个音色参数文件中修改或增减相关的数据,必须同时在几个不同的大模块中进行。不仅要分别按照各部分的格式要求编写,而且还要将前后相互关联起来。
普通音色和鼓组音色的编辑,后者比前者多了一个键位定义步骤。下面,以在YAMAHA音色参数文件的MU100音源鼓组音色表中增加一个YAMAHA128音源的中国鼓组(China kit)为例,具体说明有关的操作方法。
① 用记事本,用读入“所有类型文件”方式,打开YAMAHA.ins 。【图18 记事本用读入“所有类型文件”方式打开ins文件】
② 在Patch Names 模块中定义音色组。先找到 [MU100 SFX Kits]段落。由于MU128音源中国鼓组的MSB与MU100的SFX鼓组相同,所以,只需在这个段落中增加一行“China kit”鼓组音色库的定义就可。
[MU100 SFX Kits]
0=1 SFX 1
1=2 SFX 2
……
34=35 China Kit 中国打击乐 ------ 新增加的定义行
新增鼓组将会出现在选项中。【图19 新增鼓组将会出现在选项中】
③ 在Note Names模块中,插入一个“China kit”音色组的键位音色定义段落。
在MU128音源中国鼓组中,仅有以下19个键分配了鼓音色采样,其他键都不发声,所以不用写入作基本音位音色缺省指定的“Based On=”语句:
…………
[MU100 Small Latin Kit]
…………
[MU100 China Kit] ---- 新插入段落
36=Bangu 板鼓
37=Dagu Mute 大鼓闷音
38=Dagu Heavy 大鼓
39=Paigu High 高音排鼓
40=Paigu Middle 中音排鼓
41=Paigu Low 低音排鼓
52=Zhong cha Mute 镲闷音
53=Zhong cha Open 镲
54=Zhong luo Mute 大锣闷音
55=Zhong luo Open 大锣
56=Xiao luo Open 小锣
57=Xiao luo Mute 小锣闷音
58=Xiao cha Open 铙钹
68=Bang zi 梆子
69=Muyu High 高音木鱼
70=Muyu Mid-High 中高音木鱼
71=Muyu Mid 中音木鱼
72=Muyu Mid-Low 中低音木鱼
73=Muyu Low 低音木鱼
[MU100 Standard Kit (Basic)]
…………
步骤②中和这里的等号右边的乐器名称,可以只写中文,它们在中文环境下,将会在相应窗口直接以中文显示出来。【图20 新增鼓组将会以中文显示】
④ 在Instrument Definitions模块的[Yamaha MU100R Drum Kits]音色表单指定模块中,增加鼓组音色库和键位音色的指定语句。
由于中国打击乐组所在的MU100 SFX Kits鼓组在表中原先已经有了指定句“Patch[16128]=MU100 SFX Kits”,因此只要加入键位音色指定语句就行了:
[Yamaha MU100R Drum Kits]
…………
Key[16128,34]=MU100 China Kit ----新增行
…………
⑤ 保存文件。最好存为一个新的ins文件,或将原文件备份。
⑥ 启动Cakewalk,重新引入这个新的音色参数文件,并选用Yamaha MU100R Drum Kits乐器。(参照“音色参数文件的编辑思路”有关部分操作。)
这时,我们就能够快速高效地利用原有的音色参数文件来为特有的MU128音源服务了。如果把以上几处“MU100……”改为“MU128……”,则软件中的显示就与你的音源完全一致了。
要添加普通乐器的音色,只需要在两个模块中操作:先在Patch Names 模块中添加定义新增音色库及其所包含的各个音色的段落,然后到Instrument Definitions模块中插入调用前面添加的音色库的语句就告完成。
这些插入的段落和语句,必须准确地参照乐器说明书中的相关参数,严格地按规格编写。如果是对原有音色参数文件作修改,应当在动手之前先对原文件作一个备份。
作者: 刘水霖