« 任天堂娱乐系统(NES)架构 (index)

任天堂娱乐系统(NES)架构

Chapter 6: 音频


目录

  1. 功能
    1. 脉冲
    2. 三角波
    3. 噪声
    4. 采样
  2. 秘密和限制
    1. 额外通道
    2. 颤音
  3. 更深入的观察
    1. 频谱图简介
    2. 绘制APU
      1. 脉冲
      2. 三角波
      3. 噪声
      4. 采样
      5. 锯齿波
    3. 结论

被称为音频处理单元(Audio Processing Unit)(APU)的专用组件提供这项服务。 理光将其嵌入 CPU 芯片中,大概是为了避免 CPU 和 APU 的未经许可的克隆。

功能

这个音频电路通常被称为可编程声音发生器(PSG),这大致意味着它只能生成一组预定义的波形,这在这个案例中大部分是正确的。 APU通过五个音频通道来排列音频数据——每个通道分别保留用于特定波形或信号。 每个通道包含不同的属性,这些属性会改变波形的音调、声音、音量和/或持续时间。 它们被连续混合并通过输出音频信号发送。

APU的功能通过内存地址暴露出来,CPU读取程序ROM中的与音乐相关的数据,并相应地编程APU。

此外,尤其是Famicom型号提供了卡带引脚,这些引脚将混合音频信号发送到卡带,使后者能与额外通道(需要额外芯片)混合。

现在让我们回顾一下APU提供的五个通道 :

脉冲

Video
(Video) 脉冲1通道的示波器视图。

Video
(Video) 脉冲2通道的示波器视图。

Video
(Video) 所有音频通道的示波器视图。

Mother (1989).

两个通道生成脉冲波 。 当听到时,它们表现出非常明显的声,主要用于旋律或音效。 各自的音序器可以生成三种类型的脉冲波,通过改变脉冲宽度(也称为 占空比)。 这些电路也连接到一个扫频单元(允许调整音高)和一个包络生成器以随时间降低音量(也称为 衰减)。

大多数游戏使用一个脉冲通道播放旋律,另一个播放伴奏。 当游戏需要播放音效时,播放伴奏的频道改为播放音效,然后切换回伴奏。 这样可以避免在游戏过程中打断旋律。

我认为可以公平地说,脉冲波是这一代游戏主机的象征之一。 我认为其采用的原因纯粹是为了节省成本: (有限的) CPU一次只能处理这么多数据,而脉冲波是理想的选择,因为它们不需要很多参数就能演奏简单的旋律(这反过来又释放了CPU周期用于其他操作)。

三角波

Video
(Video) 三角波通道的示波器视图。

Video
(Video) 所有音频通道的示波器视图。

Mother (1989).

与竞争对手相比,APU 的一个特色是能够产生三角波。 这种波形常用作旋律中的低音部分。 此外,通过显著修改其音高,也可以将其用于打击乐

APU 为这种类型的波形保留了一个通道。 在幕后,专用的序列器需要 32 个周期来生成一个三角波信号,这一限制使得生成的三角波形呈现阶梯状。

另一方面,相应的电路不提供音量控制。 无论如何,一些游戏通过调整混音器的音量控制找到了其他方法。

噪声

Video
(Video) 噪声通道的示波器视图。

Video
(Video) 所有音频通道的示波器视图。

Mother (1989).

"噪音"的概念是指一系列没有遵循任何模式或顺序的波形。 我们的耳朵将其解释为白噪声。 也就是说,APU 分配了一个通道可以播放不同种类的噪音。

在幕后,噪声发生器依赖于信封发生器(类似于脉冲通道),它通过OR门随机静音。 静音的条件取决于连接到反馈回路的 15 位移位寄存器的值。 总而言之,这使得电路输出具有伪不可预测模式的信号,从而产生噪音。

在控制方面,4 位更改包络发生器的周期,1 位更改移位寄存器的"模式"。 那就只剩下 32 种噪音预设可供选择。 其中一半(16)种预设用来产生干净的静电噪音,另外一半用来产生机器噪音

一般而言,游戏使用噪音通道来产生打击乐或环境效果。

采样

Video
(Video) 采样通道的示波器视图。

Video
(Video) 所有音频通道的示波器视图。

Mother (1989).

采样是可以回放的录制的音乐片段。 如你所见,采样不限制于单个波形,但是它们占用了很多空间。

APU 有一个专门的通道用来播放采样。 这里的采样被限制为 7-bit 解析度(编码值从 0127)和 约 15.74 KHz 采样率 。 要对该通道编程,游戏可以串流 7-bit 数据(这会占用大量的 CPU 周期和存储空间)或使用 delta 调制,只编码下一个采样和前一个采样之间的变化。

APU 中的 delta 调制实现只接受 1-bit 值,这意味着游戏只能在每次计数器增加时说明采样增加减少1。 所以,以保真度为代价,delta 调制可以让游戏不必将连续值串流到 APU。

由于对该通道编程需要消耗较大的空间和更多的 CPU 周期,游戏通常会储存可以重复播放的小片段(比如鼓声采样)。 不管怎样,在 NES 的整个生命周期中,众多开发者想出了巧妙的办法来利用这个通道。

秘密和限制

虽然 APU 的音质无法和黑胶唱片、磁带或 CD 相媲美,但程序员确实找到了扩展其功能的方法,主要得益于 NES 的模块化架构。

额外通道

Video
(Video) Castlevania III (USA/Europe, 1989) 的示波器视图。

Video
(Video) 恶魔城传说(Castlevania III 日本版,1989) 的示波器视图。

还记得 Famicom 提供了独占的卡带引脚用来扩展音频吗? 嗯,像悪魔城伝説这样的游戏就利用了这一点,它捆绑了一个被称为 Konami VRC6 的芯片,添加了两个额外的脉冲波形(Pulse wave)和一个锯齿波(Sawtooth wave)

看看这两个例子,展示了游戏的日版和美版之间的差异(后者运行在没有提供音频扩展功能的 NES 变体上)。

颤音

Video
Video - 最终幻想 III (1990) 的示波器视图。

比起增加卡带成本,有些游戏创造性的应用现有技术增加了更多通道。

例如,《最终幻想III》想出了使用颤音效果来制造额外通道感觉的办法。

更深入的观察

现在您已经了解了 APU 的能力,让我向您展示另一种观察其声音行为的方法。 这不仅会补充您已经了解的关于 APU 的知识,还会提供更客观的检查,尤其是不再依赖您的耳朵。

首先,让我们快速介绍一下声音理论。

感谢傅里叶分析的原理,我们可以将我们听到的每一个声音分解成不同频率和幅度的正弦波之和。 最低频率的正弦波被称为基本音频,其余的称为倍音。 话是这么说,对于具有可辨音高的声音,您会发现大多数(如果不是全部)泛音的频率是基频的倍数。 话虽如此,对于有可辨音高的声音,您会发现大多数(如果不是全部)倍音的频率都是基本频率的倍数。 因此,这些泛音被称为谐波

在本节中,谐波将成为一个经常出现的话题,因为脉冲波、三角波和锯齿波等波形遵循决定其谐波成分的公式。 否则,这些波形可能偏离其'完美'形状。

频谱图简介

由于正弦波现在是构成任何声音的关键成分,我们现在可以通过其正弦波分析我们听到的声音。 现在,对于任何类型的数据分析,没有什么比绘制图表来组织大量信息更方便的了。 那么,在声音分析的情况下,我们有了频谱图。 它们将音频样本的所有信息编码在一个图表上。 X轴表示时间(单位:秒),Y轴表示在此期间产生的正弦波频率(单位:赫兹),Z轴(每个点的颜色亮度)表示每个频率的功率/响度(单位:分贝)。

Video
Video - 可视化六秒钟脉冲通道的频谱图示例。

从这个例子中可以看到,每条水平线(也称为点序列)对应一个正弦波(最低的是基频,其余的是谐波),它们的亮度表示振幅。 有了这个前提,我们可以提取以下信息:

注意,大多数这些观察结果仅凭听音频样本是不容易推导出来的,这也是编写本节的原因。

绘制APU

为了研究 NES 的 APU,我编译了五个频谱图,每个频谱图对应 APU 的一个通道,并使用前面的例子。 在它们旁边,你会发现我试图解开数据展示的内容。

在开始之前,我必须承认,为了能够准确收集数据(例如减少噪音),做了一些妥协。 这些记录是使用名为 'towave' 的 Windows 程序获得的,该程序使用带限合成来解决 PSG 假声芯片仿真中的基本问题。 基本上,脉冲波、三角波和锯齿波由无限谐波组成。 然而,这与现代声卡的44.1kHz采样不太吻合。 因此,使用一种名为"带限合成"的技术来选择在声卡限制内的适当谐波。 总而言之,这种技术在性能、准确性和抗混叠之间提供了一个可行的平衡。 然而,数据可能与其模拟版本不完全相同(相比之下,模拟版本也会引入其他问题,例如录音设备的噪音),但我认为它的精确度在可接受的范围内,并且最重要的是,它可以完成本文的任务。

说了这么多,让我们继续分析吧。

脉冲

Image
脉冲1通道的频谱图。

理论上说,脉冲音调只包含奇次谐波。 换句话说,基频与其第三谐波、第五谐波等组合在一起。 此外,每个谐波的振幅随着离基频的距离增加而减小。 振幅公式是 amplitude = 1 ÷ harmonic number

因此,注意频谱图上每个谐波的亮度在 Y 轴上越高越暗。 然而,APU 的脉冲波还似乎表现出前述的颤音效应,该效应在每个谐波数上增加。 此外,频谱图中本应没有任何声音的区域包含了微弱的泛音(可能是噪声和其他不完美的结果)。

三角波

Image
三角通道的频谱图。

三角波也由奇次谐波组成,但它们的振幅衰减更快(公式:振幅 = 1 ÷ 谐波数² )。

然而,这并不是这里展示的情况,APU 产生的阶梯形三角波导致额外的谐波和振幅增加。

噪声

Image
噪声通道的频谱图。

自然,噪声不遵循谐波规则,可能随机填满整个频率空间,因此缺乏易于识别的音高。

但是,通过查看时间线可以区分 APU 提供的不同噪声预设,每个预设都表现出一个独特的泛音集。

采样

Image
样本通道的频谱图。

与前几个通道不同,样本通道只播放开发者提供给 APU 的任何低分辨率录音。 考虑到这个例子播放的是鼓组,我在频谱图上看不到任何可识别的特征(除了类似于白噪声的部分)。

锯齿波

Image
VRC6的锯齿波通道的频谱图。

作为补充,我们也来看看VRC6扩展中的锯齿波通道。 首先,一个完美的锯齿波由所有谐波组成,每个谐波都显示出衰减的幅度(其中 幅度 = 1 ÷ 谐波数 )。

这是对数字设备的相当高要求,自然对于游戏卡带来说是负担不起的(可能根本不需要这样的完美!)。 因此,与 APU 的三角波类似,VRC6 在 7 个周期内顺序生成锯齿波(因此产生类似的阶梯效应)。

结果,相应的频谱图非常混乱,VRC6的近似技术在很多地方填充了额外的谐波。

结论

嗯,看来 NES 的合成波形远没有理论规定的形状那么接近。 这是否意味着APU存在缺陷? 不! APU的设计方式最终赋予该主机独特且可识别的声音——这些属性,无论是有意还是无意,使得频谱图显示了不寻常的结果。

作为旁注,完美的几何形状可能在视觉上令人愉悦,但有趣的是,我们的耳朵并不特别喜欢边缘完美的波形! (你可能会开始听到爆裂声)。

展望未来,使用频谱图进行声音分析在其他文章中将会派上用场,无论是用于简单分析还是与其他系统进行比较。 请注意,这些图表并不一定是主要工具,尤其是在声音样本被混合了太多信道/乐器时(极大地增加了其分解的难度)。 但我认为它们将为任何类型的客观研究提供一个坚实的起点。


Previous: 5. 图形

Next: 7. 游戏


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站