1

我有编写 Commodore VIC-20 仿真器的荒谬想法,这是我的第一台计算机。

一切都很顺利,直到声音仿真时间到来!VIC-20 有 3 个声音(方波)和一个噪声扬声器。在网上搜索我发现它是一个 PN 发生器(在某处被称为“白”噪声)。

我知道白噪声不是频率驱动的,但是您将特定的频率值放入噪声寄存器(POKE 36877,X命令)中。公式为:

频率 = cpu_speed/(127 - x)

(VIC-20 Programmer's Guida的更多细节,尤其是MOS6560/6561 VIC-I芯片)

其中 x 是噪声寄存器的 7 位值(第 8 位是噪声开/关开关)

我有一个 1024 个预先生成的数字缓冲区(伪随机序列),问题是:如何关联频率(freq)以创建一个样本缓冲区以传递给声卡(在这种情况下sf::SoundBuffer接受sf::Int16(又名unsigned short)价值观?

我想你们中的大多数人家里都有 Commodore VIC-20 或 C64 并使用旧POKE指令......你们中的任何人都可以帮助我理解这一步吗?

编辑:

在互联网上搜索,我找到了 C64 Programmer's Guida,它显示了其噪声发生器的波形图。谁能认出这种波/扰动等……?波形似乎是周期性的(以频率为周期),但是如何生成这样的波形呢?

C64 噪声波形

4

0 回答 0