通过 PC 扬声器发声

作者:Paul Dunne

Linux 支持大多数流行的声卡。如果您没有声卡,您仍然可以从 PC 自带的普通扬声器获得一定程度的声音支持。在本文中,我将讨论一种无需声卡即可获得声音输出的方法。

什么是 PC 扬声器

PC 扬声器是一个驱动程序,用于大多数(可能所有?)IBM PC 兼容机标配的适中声音输出设备。 它作为内核的一部分安装,或作为可加载模块安装; 无论哪种方式,都需要更改内核。 PC 扬声器附带一小组程序,可以配合使用——我在我的系统上毫无困难地编译了这些程序。

修改内核

该驱动程序以补丁文件的形式提供,必须将其应用到 Linux 源代码目录(/usr/src/linux)。 应用补丁后运行 make<\!s>config 时,它会询问您是否需要 PC 扬声器支持——回答“yes”。 给出命令

make depend; make clean; make zImage

您的新内核将准备就绪。 对源代码的补丁包括 /usr/include/sys 的一些头文件,这些头文件对于制作驱动程序随附的实用程序是必要的。

设备

该驱动程序支持以下设备:

  1. /dev/pcsp:原始数据设备

  2. /dev/pcaudio:SUN 音频设备

  3. /dev/pcmixer:混音器设备

我的机器上只定义了 /dev/pcsp

crw--w--w-      1 root  root    13,     3 Aug 27 20:25  /dev/pcsp
pcsel

程序 pcsel 设置 PC 扬声器的选项,用于在系统启动时配置 /dev/pcsp 设备并测试新设备。您还可以使用 pcsel 程序将输出设备分配给 /dev/pcsp。支持的输出设备有

  • 立体声-单声道(由 Mark J. Cox 设计),在内核启动期间自动检测到,并且默认选择。

  • PC 扬声器,如果未找到立体声-单声道,则选择该扬声器。

  • 单声道 DAC,用于一个 lp 端口。

  • 立体声 DAC,用于两个 lp 端口。

列表 1. pcsel 的帮助输出

在 pcsel 命令行上指定 help 选项

$ pcsel -help

会为您提供所有 pcsel 选项及其含义的列表。未指定任何选项时,pcsel 会以这种方式报告实际的输出设备及其参数:

$ pcsel
PCSP driver version 1.0
Actual PCSP output device: PC-Speaker
Volume : 100 %, real samplerate : 18356 Hz
Maximum Samplerate is 51877 Hz
16bit Stereo Emulation enabled
vplay 和 vrec

这两个程序,vplayvrec,可用于录制和播放以下类型的文件:

  1. Creative Labs 语音文件

  2. Microsoft 波形文件

  3. 原始音频数据文件

这两个程序都接受相同的选项,可以通过指定 help 选项来列出这些选项

vplay --help

此命令的输出显示在 列表 2 中。

应用

好的,坦白时间到了——我向内核添加此驱动程序的主要原因是为了在 Doom 中获得声音效果。 这是另一个关于您可以使用 PC 扬声器做什么的简单示例。 我有一个 .wav 和 .au 文件的目录。 每次我登录时,从我的 .profile 文件调用的这个 shell 脚本会随机播放其中一个音频文件。

#!/bin/sh
# random-sound.sh: play a random file from the
# sounds directory
export count="`ls sounds/*|wc -l|sed s/ //`"
export count=`expr $count + 0'
(1>/dev/null 2>&1 vplay `echo sounds/*| \
awk BEGIN{srand()}{x=1+int(rand()*number)
print $x} number=$count') &
在哪里获取

最新版本的 PC 扬声器可以在 ftp://ftp.informatik.hu-berlin.de/ 的 /pub/os/linux/hu-sound/pcsnd* 目录中找到(其中 * 表示最新的版本号)。

结论

PC 扬声器是一个简洁的软件,可以很好地利用基本扬声器。 警告——如果您的计算机 数字噪声 很大,您会受到很多干扰。 它不太可能成为标准内核的一部分。 作者 Michael Beck (beck@dgroup.de) 告诉我,原因之一是该驱动程序会干扰 Linux 时钟。 我自己没有注意到这一点,但是我的时钟每天会与我的 ISP 的时钟重新同步四次。 该发行版附带一个文件,描述了如何构建您自己的声音输出设备。 例如,使用这些说明,您可以将 PC 连接到放大器。

Paul Dunne 是一位自由撰稿人和顾问,专门从事 Linux。 他的第一本书《Webmasters 的 Linux》将于今年晚些时候由 Digital Press 出版。

加载 Disqus 评论