通过 PC 扬声器播放任意 PCM 声音?

unf*_*nfa 6 audio

小时候,我玩过一款名为Electro Body 的DOS 游戏。

游戏做了一些惊人的事情 - 它通过 PC 扬声器播放 PCM 样本。不是蹩脚的方形哔哔声 - 它播放了真正的音效!

与 PC 扬声器发出的通常发出的哔哔声相比,它非常安静,但这是一种全新的音质。在那场比赛之前或之后,我从未听说过这样的事情。

我想知道 - 除了 beep 命令发出的“哔哔声”之外,GNU/Linux 是否有办法通过 PC 扬声器播放任意 PCM 声音流?我可以通过它播放 WAV 或 Ogg 文件吗?

除了制造一些复杂的噪音会很酷这一事实之外,人们可能会将其用作模拟电压控制输出 - 无论是疯狂的 DIY 项目。

小智 8

我没有一个系统来测试它,但似乎 ALSA 可以提供输出到 PC 扬声器的映射。仅供参考,有很多页面说这是一个坏主意,因为驱动程序旨在作为“玩具”而不是一般用途(它会消耗大量 CPU 周期),但是也就是说,这应该有效:

# Load the PC speaker driver
sudo modprobe snd-pcsp
# Reload ALSA to find the new driver
sudo alsa force-reload
# You should now see pcsp (pcspeaker) as an ALSA output option
sudo aplay -l
Run Code Online (Sandbox Code Playgroud)

选择声卡作为您的输出,玩得开心!

资料来源:

http://wiki.archlinux.org/index.php/PC_speaker#ALSA

http://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#Set_the_default_sound_card

http://www.linuxquestions.org/questions/slackware-14/how-do-you-use-snd-pcsp-in-slackware-14-1-a-4175534306/

  • 我今天终于用华硕 PRIME B350M-A 主板对其进行了测试。通过使用 `alsa_out -j PCSP -d hw:pcsp -r 37286 -c1` 创建输出端口,我能够通过 JACK 播放声音。它拒绝以任何其他采样率运行,并一直建议使用此采样率。我一开始做这个,我就听到了让我想起煎培根和电弧的噪音。微妙,但可怕。我犹豫要不要测试它是否会播放声音,但我试过了 - 它可以工作,但它非常安静,并且有这种持续的随机点击噪音(有点像尘土飞扬的黑胶唱片)。使用 `aplay -d hw:pcsp` 失败。 (2认同)