为什么在旧硬件中使用方波而不是正弦波?

Why were square waves used in old hardware instead of sine waves?

This 此处的回答假定要实际生成方波(或任何其他抽象波形),您必须将多个正弦波叠加在一起。然而,旧硬件(Commodore、NES 等)缺乏正弦波通道,而是严重依赖方脉冲波、三角波、噪声和锯齿波。我一直认为这样做是因为这些波比简单的正弦波更容易产生。那么,生成这些波形会不会在计算上 更多 昂贵?为什么要完成它?

我记得我们团队的一名成员发现我们可以通过快速打开和关闭某物来产生声音。那是 1980 年代初期,不幸的是我不记得具体细节了。但我认为一个关键点是我们正在拨动开关,而不是计算那些波的数据。产生的波浪是“脉冲”动作的结果。这可能解释了一些早期的声音,但我认为它也是推测性的。我不是直接参与的人,从理论上讲,这充其量只能解释方波和脉冲波,不能解释三角波或锯齿波。会对其他人的想法感兴趣。

This answer here postulates that to actually generate a square wave […] you have to layer multiple sine waves on top of each other.

不是真的,它只是描述了如何 分析 方波以证明关于其声音的某些事实 - 每个频段有多少能量等等。这有点类似于如何将每个整数分解为一个或多个更小的 prime 因子 (15=3×5),这在分析算法时很有用,但仍然不会改变我们的计算方式增加到原来的数字(可能是 15 只羊)。

将“复杂”波分离成正弦分量在数学上非常有用,但并没有告诉我们其最初产生背后的机制。

I always assumed this was done because those waves are easier to generate than a simple sine wave.

你这里的假设是正确的。从数字电路开始,方波是创建1最简单、成本最低的波形。只需使用单个晶体管打开和关闭电压。它在大众市场制造环境中也更便宜,因为由模拟电子设备制成的正弦波发生器(甚至锯齿波)需要大量额外的组件才能不随温度、年龄和湿度而漂移。

它在合成器环境中也可以说比单个正弦波更有用,因为它有很多谐波,您可以使用 SID 中的滤波器进行修改。

复杂性阶梯的下一步是任何斜坡形状,如三角形或锯齿形。虽然您可以使用模拟电子设备来制作这些,但即使在八十年代初期,它们通常也是通过由数字计数器驱动的简单 DAC 来实现的。计数器的速率决定了波形从 0 到 MAX 的速度,从而决定了音高。

一旦您的计算机中有了 DAC,您就可以使用它来生成正弦波,但它需要昂贵的实时计算或大量 table 的预先计算的正弦值,所以它是很少(从不?)完成。当计算机获得一些有用的 RAM 和带宽时,它们会迅速切换到普通的任意样本,并且从不回头。


1) 事实上,其他任何事情都复杂得多,以至于今天我们只是 一切 使用简单的数字脉冲,然后以各种方式过滤结果(PDM, PWM, Delta-sigma)