这套主机的音频能力与80年代的其他设备基本保持一致。 在VDP芯片内部,我们发现了一个略微定制版的德州仪器SN76489,这是一种可编程声音生成器,简称"PSG"。 这种类型的PSG与NES/Famicom所使用的相同,尽管它们的功能有所不同。
功能
PSG只能合成有限几种波形,每个通道分配一种波形。 如果你想要了解更多关于这种声音合成的信息,我在关于NES和Game Boy的文章中已经介绍过一些PSG。
对于SMS来说,PSG是通过上述I/O端口改变其一组外部寄存器来进行编程的。
现在让我们来看看SN76489能够产生的各种波形:
脉冲
脉冲/音调波形产生了标志性的8位声音。 声波是由电压的突然上升并保持稳定然后迅速下降而产生的。 以恒定速率重复这个过程,就会产生一个音调。
波的周期定义了声音的频率(即音乐音符)。 它的占空比影响音色。
这一切都是由PSG处理的,它可以同时产生三个脉冲波。 特别是SN76489在每个通道上都暴露了一个10位计数器,用于内部以高频率进行锁定,从而产生一个可编程频率的脉冲波。
噪声
噪声是一种与干扰相关的信号类型。 当输出到扬声器时,它听起来像是静电噪音。
SN76489包含一个线性反馈移位寄存器(Linear Feedback Shift Register,简称"LFSR"),该寄存器接收输入并通过循环产生伪随机信号。 它有一些参数可以选择白噪声或周期噪声,后者会占用第三个脉冲通道,并通过LFSR产生类似低音的声音(脉冲音降低四个八度)。
所使用的振荡器也可以被调整来改变音高,有四种选项可供选择。
游戏通常使用噪声通道来产生打击乐器效果和/或音效。
混音器
目前为止,我们分别讨论了每个通道的作用,但是电视接收到的是一个将所有通道混合后的单声道信号。
最后,芯片还包含了可编程衰减器,用来降低每个通道的分贝值,实际上起到了音量控制的作用。
秘密和限制
就像VDP一样,PSG的设计也是直截了当的,但它隐藏了一些有趣的功能:
FM扩展
PSG:
Click to listen
FM:
Click to listen
"现代版本"中的互动播放器
音频采样
双截龙(1987)。
日版SMS内置了一个额外的音频芯片,名为 YM2413,由雅马哈制造。 它与之前的PSG有着根本的不同,因为它采用了频率调制技术来生成声音。 如果你感兴趣的话,我在MD的文章中简要解释了它是如何工作的。
这款芯片特别拥有九个音频通道。 每个通道都可以选择16种预设乐器之一,或者通过编程载波和调制器来定义一个自定义乐器。 不幸的是,一次只能允许一个自定义乐器。 另一方面,新的乐器提供了一些有趣的功能,例如ADSR包络控制和反馈。
YM2413还有一个称为节奏模式的第二种操作模式,它提供了六个通道,并补充了五个专门用于节奏乐器的额外通道。
最终的声音输出由YM2413生成,它将自身的通道与PSG的通道混合在一起。
Mark III版本并没有包括这个芯片,但FM声音可以通过一个称为FM Sound Unit的扩展单元获得。 其余版本(欧版和美版的SMS)则只能使用PSG,尽管后来出现了一些第三方安装方案。
模拟器精确性

使用模拟器比较脉冲波形。
NES的波形显示出一些衰减,而SMS的则是方形的。
在阅读SMS Power(一个收集大量系统技术信息的网站)的过程中,我遇到了一个有趣的章节,叫做"不完美的SN76489",它讨论了我在撰写文章时遇到的一些差异。
如果你再次查看脉冲波的例子视频,你会看到它几乎呈现为一个完美的方波。 脉冲发生器通过锁定电压来产生音调。 然而,在电子电路中,元件并不会瞬间从零变为一(或反之亦然),总会存在一个过渡期(主要归因于电路中存在的滤波器)。
现在,我使用模拟器来捕捉独立的通道并在录制过程中避免干扰,尽管模拟器并不总是考虑过渡因素,因此它们的结果可能更接近于"理想情况",而不是80年代电子产品中的实际情况。 请看示例图片。 这两个样本都来自模拟器,但似乎NES的那个可能表现得更接近模拟世界。
我现在没有必要的工具来确认SMS是否也会表现出类似的特性。 但如果确实如此,并不意味着你听到的声音是错误的,只是音量略有不同(几乎察觉不到)。
采样播放

Video - 亚历克斯小子:失落的星星(译注:似乎更多被称为天空魔城?Alex Kidd - The Lost Stars )(1986)。
1位PCM样本。
虽然SN76489没有PCM通道来重放样本,但有一些技巧可以用来模拟这一功能。
这些技巧依赖于脉冲通道,人们发现如果将音调级别固定在1,那么音量级别(改变幅度)将会影响波形的形状。
smspower.org描述了不同的设计方案,可以用来播放1位、4位和8位的PCM样本。 尽管随着样本分辨率和采样率的增加,存储需求会急剧上升,因此这些技巧的最佳应用是在自制游戏中。
值得一提的是,流式播放样本会消耗大量的CPU周期,而这套系统中只有一个处理器,因此游戏可能需要短暂停止。


