紧凑、便捷的监听解决方案:Adam Audio D3V

Pro Tools 专家国际认证等你来拿,年底线上直播课安排公布

FLEA 251 全球赛博黑五狂欢:年度最低价,让经典触手可及

Eastwest 音源大厂空降,限时抄底优惠,编曲音源大全一站式购齐

轻便 + 专业 Carver Saturn II 千元声卡上市首测:打破千元声卡不能兼顾的怪圈

活用古老的游戏音频技术:微软 Xbox 的 8 秒开机音效是怎样炼成的

Leones 添加于 2021-11-29 ·

分享到微信

暂无评论


下个月就是微软 Xbox 初代产品发布的20周年,也是微软旗下最卖座的游戏系列《光环》发售的第20个年头,而微软的Xbox 部门也是在同年成立的。有趣的是 Xbox 当年的研发代号是“中途岛”(Midway)。众所周知,二战期间美国太平洋舰队在中途岛海战中重创了日本海军,从而一举扭转了太平洋战争的局势。不知这是否只是一种巧合,暗示着当年微软与强大的日本游戏主机产业对抗的决心。

其实,Xbox 独特的开机音乐背后也有一个有趣的故事。即使初代Xbox 为作曲家和声音设计师提供了创作空间,但在只有25K内存和8秒时间的前提条件下完成任务则非轻而易举。为了从芯片挤出的这点空间中听起来更像高质量的音频,微软的设计团队不得不放弃 24 位 48K 的音频质量,转而去选用了明显降低音质的早期游戏音乐制作技术。该团队的Brian Schmidt 最近讲述了这一复杂的创建过程。由于现在有不少人对芯片音乐具有浓厚的兴趣,并且又开始重新审视芯片声音制作技术,因此他写的这篇文章很值得一读,该文展示了数字采样和实时编码以及其他一些技巧,或许对你具有一些启发性的参考价值。

回顾微软Xbox的开机特效:

Brian Schmidt 表示自己作为 Xbox 初代的设计团队成员之一,对他来说最有趣的事情便是创建开机音效所面临的巨大挑战,以下便是他的精彩讲述过程:

我们在设计初代 Xbox 时所做的最后一件事情就是创建开机动画,其目的不仅仅是为了娱乐和品牌展示,实际上也是在隐藏启动时间。 当时 Xbox 的设计和公关准则之一就是要强调 Xbox 不是 PC。因为当时一提到 PC 就总能联想起漫长的启动时间和蓝屏死机现象。而我们想要的是从你按下开机按钮那一刻就很有趣,感觉就像一个可以立即打开的消费品。然而无法避免的是系统仍须“引导”自己,因为磁盘驱动器必须转起来,系统必须初始化。 Xbox 的硬/软件团队都在竭尽全力缩短启动时间,直至最终缩短至只需大约 8 秒钟。按照他们设计的软件启动方式,我们可以在这 8 秒内显示一个很酷的视觉动画,并且还能同时“隐藏”启动时间。不过当真正涉及到声音设计时,我们却遇到了一个巨大的挑战。

为视觉效果创建音效通常都很简单,只需把视频导入到 DAW中制作与视觉同步的酷炫声音即可。但 Xbox却不能这么做,因为在启动过程中系统可以访问的唯一内存是主板上的一个小型“boot ROM”。它存储了 Xbox OS 的内核和开机视觉特效,而这个只有区区256 KB的 ROM 在去除了上述这些后就只剩下大约 25 KB 了。如果你认真算一下,25 KB 只能让你获得 8 位单声道音频的半秒钟时间,所以在 DAW 中创建开机音效的方法是不可取的。

在此之后的问题自然变成了怎样只使用 25 KB 的内存来创建 8 秒的开机音效。幸好我在加入微软之前的大部分职业生涯都是在游戏音频领域。我曾为街机、世嘉 16 位主机游戏和超级任天堂在极其有限的内存空间内创建音效和音乐。例如,《沙漠风暴 (1992) 》的预留空间只有 128KB,所以当时我们没有使用波形文件,而是使用动态方法生成游戏音乐和音效,这通常都来自于驱动内建的合成器芯片的字符列表。


虽然我们都很熟悉世嘉和任天堂系统上的声音芯片,但微软的音效芯片却来自于显卡大厂 NVIDIA。他们当年研发的这块多媒体通讯处理器MCP(Multi-Chippackage)是一款专用的 256 复音芯片,具有额外的解码功能(通过杜比)以及可编程滤波器和 DAHDSR包络,因此被微软选择用来控制X-BOX的3D音频、数据传输、I/O设备和网络通讯,所以后来又被称作MCPX(Media Communications Proces-sor for XBOX)。这块芯片在当时可以称得上是芯片届的 ProTools + 复杂的波表合成器。我修改了一个老式手柄/街机的声音驱动程序与 MCPX 一起使用。这个驱动程序能将音符、持续时间和参数列表作为输入,然后再将命令发送至该芯片生成实际的声音,而时序本身则被创建为一个简单的 .txt 文件。


Xbox 的视觉效果是率先完成的,我用手持摄像机拍摄了开场序列的视频,然后逐帧浏览以获取最为重要的视觉元素的时间。表格中的“E”列是每个事件发生的“系统时序”数。我的时序则用来控制计时和持续时间。随着时序的创建与视觉时序的匹配完成,我已经准备好了创建开机音效。

Xbox 从设计之初就想强调它的强大!从那时起我脑海中浮现的设计短语之一就是“力争闯入你家客厅的巨大力量”。我不确定这是否是微软官方的设计语言,但在创建开机音效时我就是这么想的,这也与开机的视觉效果相匹配。

首先,我需要确定该用什么声音来组成开机音效,好能让我去尽量表现这种“闯入你家客厅”的力量。但我也很清楚这些音频组件必须非常小,我无法在 25 KB 内存空间中存储 5.1 声道的“雷声”录音,我想要可以即时生成的富含谐波的声音,所以我编写了一些简单的代码来创建一些非常有用的波形:白噪声、正弦波和锯齿波。由于 MCPX 的输出格式为 48kHz,因此这些波形具有 24 位的保真度。因为它们都是由代码生成的,所以最大的好处就是几乎不会占据珍贵的ROM内存。我知道如果我完全依赖于简单的波形(比如锯齿波和三角波),声音就会带有某种“芯片”的特征,这绝对不是我们想要的。

为了增强合成波形,我录制了一些 8 位声音来保证最小的内存占用。通过将声音向下采样至低得可怕的 6kHz 采样率,我能把 3 个非常短促的声音压缩到 25k 中(雷声、炮击和钟琴)。为了增加低保真采样的高音质,我编写了一些代码再将它们重新采样回 48Khz,并且还通过限幅故意使其失真。我还用代码在内存中反转雷声来创建“倒过来的霹雳声”。 正如大约 6 秒后你听到反向雷声,就是动画中引入巨大的绿色闪光的那一段。


将合成波形与数字化组合起来让我可以获得合成波形的高音质(48kHz 采样率,24 位),与此同时还能增强采用数字化却又是低音质声音的冲击力。开机动画开场时发出的低音“wwwwaaaaaaaa”是一个 256 采样的循环锯齿波。该波型通过一个缓慢打开的低通滤波器发送,选择 PatchSaw1 音色并设置好音量和低通滤波器的参数。 “note”命令用于启动声音,随着音符的播放,“finc”命令用于将低通滤波器的截止频率从大约 300Hz 处逐渐增至 3kHz 处。然后另一个循环再次缓慢关闭滤波器,从而产生你所听到的 “wwwaaaaaaummmm ”声音。由于开机动画表现的是努力摆脱空间束缚的巨大能量,因此增加低通滤波器的截止频率实际上会将更多能量注入到声音本身,所以这能与画面很搭。

视觉效果中也有一些爆炸性的闪光元素,为了这些我使用了数字化的雷声和炮声,分层滤波白噪声再把释放时间设置的很长,这能让雷声能更具有真实感,但使用白噪声却让我产生了雷声比实际更长的错觉。白噪声设为 48kHz,因此掩盖了失真雷声采样本身的高音质。

快速且哗哗作响的类似踩镲的声音实际上是非常短促的经由滤波的白噪声,它具有快速的起音和衰减​​。再通过狭窄滤波并以不同的音高回放,从而使其呈现出接近金属的特性。开场部分的起泡音是一个低声调的三角波,但同时伴有极端音高的低频振荡器,这能产生具有活力、颤动和膨胀感的声音。最后的叮当声是用钟琴起音采样的组合完成的,但同时以与钟琴相同的音高演奏正弦波,缓慢衰减正弦波以延长持续时间,因为起音采样本身非常短促。最终,这个开机音效使用了 9 条音轨:以不同的音高和时间播放的数字化与合成波形文件在播放声音时控制 dsp 处理,最后在把它们混在一起就有了这个初代的开机引导动效。

通常来讲,开机音效这种关键要素需要多个层级审核:从营销部门到高管等等。但由于时间紧迫(这是 Xbox 最终确定发布之前完成的最后项目之一),我们真的没有经历这些。我们很高兴它发出了声音!我记得后来又做了两次修改,主要是一些微小的调整,包括在最后添加了叮当声。


不过我也有一些囧事,在早期的出厂测试中,有报告称Xbox 经常(可能是千分之一的概率)在首次启动时无法完成启动,要必须​​重启一次才能正常。结果发现是我的音频代码中有一个错误,如果正好赶在点上了,会导致整个系统崩溃。幸运的是团队中有一位很厉害的程序员能够找到并修复我的这个Bug。其实当时还有很多问题,例如为什么我们没把启动音效创建为 5.1声道。尽管今天已经司空见惯,但 Xbox 在当时是第一个在游戏中启用实时交互式数字环绕声的游戏机,并且还在 Xbox 的宣传材料中把杜比音效放在了重点!那么为什么开机声音只有立体声呢?

那个时代的数字音频接收器是通过数字光纤输入支持数字环绕声的。碰巧的是,接收器启东时假设它所获得的任何数字信号都是常规的立体声信号。如果检测到杜比数字信号,它会自动切换到杜比数字模式。 而问题在于这一检测过程需要 2-4 秒,并且接收器在转换期间会将自身静音。 要是等到那个时候,开机声音就已经响了一半了。 如果我们为启动声音打开了 5.1声道,那它的前几秒钟将会被完全静音,所以我们才不得不接受只有立体声的开机音效。是的,尽管我们已经拥有了各种各样的技术,但有时又不得不依靠特别古老的技术来创造性地解决游戏音频设计中的挑战。

关于作者Brian Schmidt:

Brian Schmidt 在游戏音频行业拥有 34 年的经验。 他在微软工作了 10 年,担任 Xbox 和 Xbox 360 音频系统的项目经理,并创造了 Xbox 启动声音。 目前,他是一名独立作曲家、声音设计师、教育家,并且是 GameSoundCon 的创始人和执行董事。

请看关于 Xbox 开机动画主题的介绍视频:


本文出自《midifan月刊》2021年11月第188期

 

可下载 Midifan for iOS 应用在手机或平板上阅读(直接在App Store里搜索Midifan即可找到,或扫描下面的二维码直接下载),在 iPad 或 iPhone 上下载并阅读。

 

暂无评论