PCI声卡的产生使SoundFont获得了巨大的生命力,它使得用户不必为了获得满意的MIDI合成效果而去购买载有大量ROM和RAM的价格昂贵的ISA声卡,如:SB AWE64 Gold。而用户所需做的就是选择合适的音色库加载到内存当中去,从而以很低的成本获得足够大的音色库。当然要获得很好的MIDI合成效果,光有足够大的音色库还不行,PCI声卡的波表合成性能是更加重要的因素。
前些时候,我很幸运地成为“电脑之家”(http://www.pchome.net/)第12000000名访问者,从而获奖一块创新最新推出的SB Live Digital数码版声卡。以前从各种评测中都听说SB Live系列声卡的MIDI合成效果在各类PCI声卡中都是最出色的,可以与SB AWE64 GOLD媲美。装好声卡发现有2MB、4MB和8MB这3个音色库可供选择加载,我先迫不及待地加载了最大的8MB音色库,然后开始欣赏几首配器及混响效果非常复杂的MIDI乐曲。效果果然不同凡响,比我以前使用的只带1MB ROM 硬波表的SB AWE64 Value强了不少。再加载2MB音色库试试吧!我满怀希望地又加了2MB音色库,可这么一加,我却傻“耳”了,音质不仅没有提高,反而略有下降,主要是鼓声没原来清楚。这时我注意到了在选择音色库的窗口的“配置音色库”一页中“音色库堆栈:”中的2MB音色库前被打了一个箭头,而8MB音色库前没有箭头;在“选择音色库:”的下拉列表中也显示为2MB音色库,打开列表也找不到8MB音色库(略)。难道说此时8MB音色库已经不起作用了?我清除了8MB音色库后再听,音质没有改变,说明刚才8MB音色库的确不起作用了,也就是说只有最新加载的音色库才起作用。
这怎么行?我还打算用各种音色库添满SB Live最大支持的32MB音色库空间呢。心有不甘,于是我先清除2MB音色库,再加载了8MB音色库,然后又加载了一个民族乐器棗板笛的音色库,这个音色库很小,只够用来表现板笛的音色,不足以表现稍微复杂一些MIDI乐曲。加载后,选择音色库的窗口中板笛的音色库被打上箭头。然后开始播放一首复杂的交响乐MIDI乐曲,我又听到了动听完美的乐曲,而且其中包含板笛的声音。这又说明两个音色库都起到了作用?这又怎么解释呢?接着我先清除了8MB音色库再重新加载,使8MB音色库被打上箭头,这时再听那首复杂的交响乐MIDI乐曲,虽然乐曲仍得以完整表现,可是听不到板笛的声音了。真奇怪了!然后我又使板笛的音色库重新被打上箭头,再听一首只由板笛一种乐器演奏的MIDI乐曲,听到了动听的板笛声;可是若让8MB音色库被打上箭头,再听这首MIDI乐曲,听到的却是钢琴的演奏。我打算再做一些试验,于是先清除了8MB音色库,再加载了一个编钟的音色库。此时编钟的音色库被打上箭头,其下是板笛的音色库,再听那首板笛的MIDI乐曲,听到的却是编钟的声音。我又加载了一个二胡的音色库,再听同首MIDI乐曲,听到的又是二胡的声音。
这些现象真让我迷惑了,直到我打开选择音色库的窗口的“配置乐器”一页才恍然大悟(略)。我们知道根据MIDI规则,各种乐器的声音样本都被分配了一定的乐器号,一共有000~127个乐器号。通常钢琴占据前几个乐器号,枪声占据最后一个乐器号。演奏某首MIDI乐曲时,系统根据MIDI文件所包含的发音命令到音色库中相应的乐器号上取样合成乐曲。原来只有当被打上箭头的音色库不包含演奏该首MIDI乐曲所需的全部乐器号时,系统才会从其后的音色库中寻找所需的乐器号再取样合成。由于创新提供的2MB、4MB和8MB这3个音色库都是完整音色库,也就是说他们都包含了000~127号的全部乐器号(3个音色库的差别主要是乐器音色样本及混响效果的数量不同),因此任何一个音色库被最后加载,即被打上箭头,那么其它音色库就没用了。而那几个板笛、编钟、二胡的音色库都只占据000乐器号,在播放复杂的MIDI乐曲时,还需从其它的音色库中的001~127乐器号(当然不是全部的乐器号)上取得声音样本进行合成。图2表明000乐器号已被板笛占据,而原来占据该乐器号的8MB音色库中的Piano1已不起作用。此时听那首复杂的交响乐MIDI乐曲时所听到的板笛的声音实际上本应是钢琴发出的。而那首只由板笛一种乐器演奏的MIDI乐曲只要求从000号乐器取样合成,因此,当8MB音色库被打上箭头,则听到的是钢琴声;若编钟(二胡)的音色库被打上箭头,则听到的是编钟(二胡)声,只有当板笛的音色库被打上箭头,才能正确演奏板笛的声音。
由此,前面的试验现象都可以容易地得到解释了。但是由此又产生了一个问题,即SB Live系列声卡最大支持的32MB音色库到底意味着什么?如果创新提供的3个完整音色库中的任一个处于优先状态(被打上箭头),那么其它音色库就完全不起作用了。如果要增加乐器样本,就必须加载非完整音色库,并是其处于优先状态,其缺少的乐器号再由创新提供的完整音色库或其它音色库来填补。这样做的好处是可以正确合成非常见乐器的MIDI乐曲,如中国民族器乐。可这又带来了另一个问题棗很多非完整音色库其实就是一种乐器或一类乐器的音色库,通常都占据000乐器号,最多占据前几个本属于钢琴的乐器号。所以鱼与熊掌不可兼得,用户必须根据MIDI乐曲的特点来决定到底用哪一种乐器的音色库来取代钢琴的音色库。可有时连用户自己都不知道所要听的MIDI乐曲到底应由什么乐器的音色来表现,而且即便加载了创新的8MB音色库和某一类乐器的音色库,所占用的内存也不会超过8MB(创新的8MB音色库实际占用7.05MB内存)。如果要获得更多的有效音色库,只能期望单一一种(一类)乐器的音色库被分配于不同的乐器号上,比如我们“短歌行-浮点联盟”网站(http://www.fashao.com/)上有一个吉它音色库被加载后就被分配于024乐器号上,这正是原来完整音色库中吉它音色所处的位置。这样一来就可以把前几个乐器号留给别的乐器的音色库使用了。不过我们网站上的的另一个吉它音色库被加载后却被分配于000、001、002这三个乐器号上,这样一来演奏MIDI乐曲时把钢琴的声音都变成了吉它声。
通过比较,我终于发现,包含在完整音色库中的128种常见乐器的单一音色库被加载后,要么被分配在原有的对应乐器号上从而取代完整音色库中的同种乐器,要么分配于前几个乐器号上(视大小而定,通常只占据000乐器号);而128种常见乐器以外的特殊乐器的音色库被加载后都被分配于前几个乐器号上(也视大小而定,通常只占据000乐器号)。也就是说即便你拥有100种民族乐器的单一音色库,但你也只能同时听到处于优先状态的那一种乐器声,或者说你不可能完美地听到哪怕只由2种民族乐器演奏的MIDI乐曲,除非某个民族乐器的音色库特别复杂,将001、002等前几个乐器号也占用了。由此我们可以断定,除非创新能编制出32MB的音色库,否则SB Live系列声卡最大支持的32MB音色库容量没什么意义。其实我现在也并不期待创新推出32MB的完整音色库,一是因为凭我的“肉耳”已无法分辨出4MB音色库与8MB音色库之间的区别了,32M音色库又有什么意义呢?不过创新若能推出一套全由非常见乐器组成的完整音色库,从而能把同一个MIDI文件演奏成两种迥然不同的乐曲,那可就太好了。另一个原因是我前面提到的棗要获得很好的MIDI合成效果,光有足够的音色库还不行,声卡的波表合成性能是更加重要的因素。要证明这一点很容易棗不给SB Live加载任何音色库而让其与YMAHA 的S-YXG50这个软波表配合使用,然后与SB16声卡加S-YXG50相对比,那简直是天壤之别。因此我并不期待32MB的常见乐器的完整音色库,而更期待Live Ware 4.0、5.0……,希望我的声卡还有很大潜力可挖。最后一个原因当然是大音色库也要让人付出代价棗系统资源被大量占用。
最后需要说明的是SoundFont的意义是允许用户根据需要选择音色库,其实如果不是为了听特殊的音色,最好还是装一个YMAHA 的软波表,如:S-YXG50、S-YXG100,并在“控制面板\多媒体”中选用软波表来播放MIDI。虽然是软波表,可是合成效果与声卡的性能关系极其密切,配合EMU-10K1的强大性能,MIDI合成效果真是太棒了!此时不论给声卡加载什么音色库都不会影响音质,而合成效果远远好于采用8MB音色库进行合成的效果。