电脑音乐格式之争——MIDI与Tracker(下)

作者:蓬岸 Dr.Quest
知乎文章编号:27591142
创建于:2017-06-29 3:52:37
修改于:2022-08-04 8:39:56


上集请看:电脑音乐格式之争--MIDI与Tracker(上) - 知乎专栏

然后我们来说说Tracker!

那么Tracker和MIDI的区别究竟是什么呢?其实他们之间有着一些根本的区别,主要有:

  1. Tracker将乐器的数据与音符的数据存储在一起。一般来讲乐器的音色被嵌入在Tracker软件所使用的“模块”(module)文件当中。不过有一些早期的Tracker是将乐器音色存储在单独的文件中,并在主文件中引用他们,这样的话可以更容易的让一张磁盘上的多首歌曲同时使用一组音色。
  2. 音符被以“图案”(pattern)的形式输入并组成一张存储音符的二维矩阵。一个“图案”通常是一小段音乐片段,这些图案被以一定的顺序输入,从而构成了乐曲的顺序,在音乐中,一个图案可以被使用许多次。
  3. 图案中的每一列则是一个“通道”(channel),每个通道被直接映射到音频硬件的一个复音,而每个通道都是单声道的,这符合音频硬件的一般特性。
  4. 而图案中水平的行则代表着时间线。时序通常与帧率同步(在不同的硬件系统上,这个频率可以是50、60或70赫兹),而乐曲的节奏也以每一行有多少帧来决定。

这听起来是不是受到了诸多的限制呢?没错,就是这样,这确实有些不合常理。相比MIDI这种“高级”的音乐数据解决方案来说,Tracker可以提供非常高的灵活度和精确性。如果你把MIDI看作是C语言,那么Tracker就像是汇编语言,再或者说,你可以把MIDI想象成HTML,它描述了每个部件在页面上的位置,并大致的描述了布局,但由于不同的浏览器、屏幕尺寸、安装的字体等因素,都会让一个页面在不同的场合下略有不同。而Tracker就像是PostScript或者PDF一样“精确地”描述了页面的外观。接下来让我们详细的了解下Tracker的这四大特征。

文件内的乐器数据

最初Tracker仅仅是用于特定硬件的音乐编辑器,大多数情况下被是C64和Amiga电脑所采用。而Tracker软件也通常针对特定的硬件功能所开发,这样造成的一个结果是,Tracker模块通常只能在特定的硬件(或他们的模拟器)上播放。不过由于Tracker文件内同时包含了完整的音符和乐器数据,实际上Tracker文件完整的定义音乐的演奏效果,而不是像MIDI文件和通用MIDI标准那样仅仅描述了乐曲中使用某个乐器是“钢琴”或“吉他”这样笼统的信息。

最流行的Tracker音乐制作方法,是使用Amiga电脑及SoundTracker、NoiseTracker和ProTracker等软件。在本文的上半部分,我曾经提到了Amiga电脑上革命性的Paula声音芯片。由于这款芯片可以支持四个数字声音流串流,因此在Amiga电脑上。播放模块音乐要在方式要比其他的电脑平台如PC或者Atari ST更加容易。

以“图案”输入音符

在前面我或多或少的已经提到了这一点,Tracker使用图案序列来制作音乐,我想对于解释图案这个概念来说,一张好图胜千言:

如果你熟悉鼓机软件的话,其实你已经在使用类似的方式进行创作了。一个“图案”就是音乐中一个段短暂的切片,通常只包含几个小节,而一首完整的歌曲正是由一系列图案所组成的“序列”构成的,在一首歌曲中重复使用相同的图案,可以节省制作的时间和存储音乐数据所需的空间。

图案通常是以垂直方式排列的,多数软件会有64行来摆放音符。这些行代表着乐曲的“节拍”,这取决于你设置了多快的播放速度(速度越快,单位时间内播放的行数也就越多)以及乐曲的“密度”。举例来说,你可以在一个图案中摆放四个小节,而如果以原来的两倍距离摆放音符,并将速度播放速度设置为原来的两倍,那么它们听起来就会是一样的。虽然此时同样的64行只能放下两个小节,但也因此获得了更高的“分辨率”,即在同样的播放时间里,可以容纳之前两倍数量的行数。

“图案列”既“复音”

这可能是MIDI和Tracker之间最大的不同了:Tracker中的任何的复音都是明确定义的,每个通道(Channel)都是单声道,并直接映射到硬件上的一个复音(voice),这种设计非常适合于复音数量非常有限(C64只有三复音,而Amiga只有四复音)的声音芯片。而MIDI仅仅是简单的发送音符起止事件,再通过解释器将MIDI事件转换为硬件内部的信号,因此硬件需要决定如何分配复音,而当遇到音符开启时没有更多复音可用的情况时,硬件就会自行结束正在演奏的某些音符。

对于Tracker来说,由于你已经明确地定义了每个音符所使用的通道和复音音色,也因此可以确定的知道哪些音符应该被启用而哪些应该被禁用,这样音乐的作者就可以更加高效地利用有限的通道数量,另外音乐作者也可以将旋律和低音部分交错(weave)在一个通道中,比如说Rob
Hubbard的这个例子,从4分03秒开始:

International Karate_腾讯视频

在段落的开始,仅有的一个通道将鼓声和弦律交织在一起,接下来第二个通道加入了低音和更多的打击乐。然后,第三个声道带入了主旋律和更多的修饰。音乐家使用一颗仅有三个通道的芯片,演奏出超过三个声部的音乐效果。而这正是通过针对硬件特性进行的人工优化,对每个音符进行巧妙的摆放而完成的。

这里有另外的一个例子,来自芬兰著名Demo团队Future Crew的Purple Motion,仅仅使用了两个通道就完成了这首歌曲。

Zak-zaka-zak-zak_腾讯视频

下面的一段视频中他同样只使用了两个声音通道,通过合理的优化展现出非常精彩的听觉效果。

Minimum Velocity_腾讯视频

上面的几个例子,恰到好处的展现了Tracker在开发者手中是何等强大的创作工具。

图案中的水平“行”构成的时间轴

这一部分并不直接关系到音乐,却与创作的效率和优化息息相关。你可能记得我在更早些时候曾经写过关于图形编程和“与光赛跑”般的极限优化相关的文章。自然而然的,人们也会希望在游戏和Demo中加入音乐,并且希望音乐程序的加入不会打断在屏幕上绘制像素的速度。因此开发者们希望能够发展出一种声画同步的方法,这正是Tracker的时序通常于显示器刷新率相关的原因。

举例来说,Amiga电脑上的Tracker通常以50Hz(PAL制式)的频率运行,也就是说,游戏和演示引擎可以简单的在绘制每一帧时呼叫一次声音程序,而速度指令则可以控制播放每一行所使用的帧数,如果你设置速度为6,那么音乐程序就会倒数6帧之后才会处理下一行。

你可以选择在某一帧的中间呼叫音乐程序,你可以在光栅扫描事件中保留一个时槽,通常是垂直扫描间隔中的某个时间点来播放音乐。也因此我们知道这代表了音乐程序在一帧中的其他时间不会做任何事情,因此你可以按照自己的喜好精确的定义代码的周期。音乐以行为单位被明确的组合在一起和进行同步,让播放过程对CPU的使用非常的高效而且可控。播放音乐所需要的时间可能仅仅与绘制几条扫描线的时间相当。

而对于普通的MIDI来说它们就没有这样的本领。MIDI有着非常精确的时序,几乎每一首MIDI歌曲都不可避免的在一帧中处理多个MIDI事件。图形程序员乎没有可能知道下一条MIDI事件发生的实际。这也是为什么游戏开发中经常对MIDI进行向下量化(quantize)的原因。不过将所有的MIDI都量化为50或60赫兹的效果并不理想,因此通常会使用更高的频率,通常是200~700赫兹之间。如果你不追求“与光赛跑”的话,这是一种可以接受的妥协。

让我们再回来讨论下UltraSound声卡

上面这些Tracker音乐独有的特性和优点解释了为什么Tracker在Demoscene社区如此流行的原因。也由此可以推断出为什么Demoscene也同样热爱UltraSound声卡:这块声卡看起来就像是为播放基于采样的Tracker模块“量身定做”的一样。ProTracker软件仅仅依靠四通道和8-bit采样就已经可以制作出相当精彩的音乐,虽然在PC上使用软件方式混音需要消耗不少CPU资源。

但UltraSound有着多达32个声音通道,支持16-bit采样精度,以及更加强大的:高质量的硬件混音,这让它可以与Amiga电脑一样在播放音乐时基本不需要消耗CPU资源。UltraSound就像是一块“Tracker加速卡”。如果你听过上面那些使用C64或Amiga电脑上原始的声音芯片所发出的2通道或3通道音乐,你就可以想见UltraSound声卡所具备的巨大潜力。

UltraSound的主要问题在于缺少足够的游戏开发者为其进行适配,这确实有些奇怪,在Amiga电脑上,多数的游戏音乐都使用了某种流行的Tracker进行创作,大部分是ProTracker。曾经我们以为UltraSound也会是类似的情况。但由于种种原因,许多开发人员仅仅将UltraSound作为MIDI设备使用,因此UltraSound在游戏中的表现并不像在Demoscene中那样令人印象深刻。

因此,我们来听一下当时我最喜欢的两段Demo音乐,他们代表了UltraSound在Demoscene社区中所展现出的最高水平。首先是传奇般的《第二现实(Second Reality)》中优秀的配乐(可以说是这段Demo的亮点),它“仅仅”使用了8个通道:

Second Reality by Future Crew_腾讯视频

然后则是Triton的《水晶之梦II(Crystal Dream II)》中精彩的Tracker音乐,我猜测它可能同样“仅仅”使用了8个通道,至少我可以确定它一定没有使用UltraSound提供的全部32个通道(你可以注意到设置菜单中显示的声卡型号正是UltraSound)

Crystal Dream 2 by Triton_腾讯视频

有趣的是,这两个Demo团队都开发了自己的Tracker软件。 Future Crew开发了Scream Tracker,而Triton则开发了FastTracker。这两款软件在后来成为了PC平台和UltraSound声卡上最流行的Tracker软件。

那么是谁笑到了最后呢?事实上是没有,UltraSound出现的有点太迟了。 至少有三个重要的技术进展,或多或少的导致了UltraSound的淡出:

  1. CPU性能迅速增长,并强大到足以在后台实现32通道混音,16-bit采样精度和线性插值等功能。这让任何具备16-bit DAC的声卡如 Sound Blaster 16或Pro Audio Spectrum 16)都可以以和UltraSound几乎相同的音质播放Tracker音乐。
  2. CD-ROM进入主流市场,许多游戏开始仅仅使用CD音轨作为音乐,任何声卡都无法在这一领域展开竞争。
  3. 游戏从DOS平台迁移到Windows平台。在DOS下游戏可以直接访问音频硬件,而Windows中音频硬件则被抽象出来,并必须通过API进行访问。但这种API并不特别适合像UltraSound这类基于RAM的波表合成器,这让开发者们被拘束在通用MIDI的世界中。

而上面所讲到的第二点也至少在游戏领域宣告了MIDI使命的终结。游戏配乐被事先“预制”在CD音轨或CD上的数字音频文件中,再串流到16-bit立体声DAC解码。在这一流程中MIDI同样没有它的一席之地。

最早支持CD音轨的游戏主机TurboGrafx-CD

可以说,在那之后通用MIDI同样也过时了,它可能仍然是被市场所认可的标准之一,但我不认为人们会出于在电脑上听音乐的需求而使用它,因为它从来没有表现得非常出色。

MIDI标准本身仍然被用作连接合成器和其他设备的基础,同时大多数的数字音频工作站(DAW)软件都支持导入及导出标准MIDI文件。当然,这类软件通常具有自己专用的内部格式,这些格式可能包括了对MIDI的扩展,或是数字音轨信息。今天你在收音机里听到的许多歌曲中,都可能使用了某些MIDI技术进行创作。

而Tracker技术也同样被人们所使用,不仅仅是Demoscenes社区,也包括了“芯片音乐”社区,从某种程度上讲,“芯片音乐”社区是从Demoscene社区中所分离出的一部分。许多音乐家仍然会定期的发布Tracker歌曲,而许多爱好者也仍然喜欢收听Tracker音乐。

Professional Tracker_腾讯视频