由 Manolo De Santis 所贡献
这一章是简短的介绍在 NetBSD 上音效装置的使用(谁想要一台 不会说话的计算机?)
The NetBSD kernel can recognize many chipsets and a quick look at dmesg is enough most of the times. 为了使你的系统能发出声音,你必须知道安装了什么样的声卡。 很遗憾地,我们常常无法得知卡的品牌和型号,因为许多卡使用了 其它公司制造的芯片。因此,了解在卡上所使用的芯片是很有用的。
键入以下指令:
# dmesg | more
检查声卡和芯片。如果你够幸运,你不需要做任何事,因为 NetBSD 自动地侦测和设定许多种的声卡。
某些声卡并不能工作,因为卡并没有被支持或是你必须执行 一些工作使得卡被 NetBSD 侦测得到。现在很多声卡都很便 宜,所以可以考虑另外购买一张,但在这么做之前,你可以试 试一些简单的步骤,看是否能使它们在 NetBSD 底下工作。
这一段对 i386 PCs 的使用者是很有用的;在其它的架构(如 Amiga)则没有这些特征。为了让 NetBSD 使用声卡,最重要 的事是决定卡所使用的总线类型。
常见的接口是 ISA 和 PCI。
ISA 卡大部分需要更仔细地设定因为和计算机的 BIOS 有关。
在较新的机器上(1997 以后生产的)有一个 BIOS 选项会导致在 设定 ISA 声卡上令人头痛的问题(不只是声卡):这个选项 通常名为 "PNP OS Installed" 和大部份被发现在 "PNP/PCI Configuration"(名称可能与你的 BIOS 不同)。在 NetBSD 底下,原则上最好关掉这个选项(例如,将 它设为 "NO")。
Note: 在许多系统底下,在这个选项被开启时,仍能正常运作。这与 系统有很大的关联性。
在 NetBSD 安装完成后,许多装置被建立在 dev 目录。我们有兴趣的是:
/dev/audio /dev/sound /dev/mixer
如果不存在,则建立:
# cd /dev # ./MAKEDEV all
这个指令建立所有的装置,包括音效装置。
现在可以使用声卡了。
你可以做简单的测试,送一份声音文件给音效装置(声音文件 通常有 .au 的扩展名),但如果你没有 声音文件,你可以随意送一份文件档或可执行档(当然,你不会 任何听到有用的声音...)。 使用 /dev/audio 或 /dev/sound:
# cat filename > /dev/audio
或
# cat filename > /dev/sound
如果你能听到声音,那就表示卡以已经被 NetBSD 所支持并且被 承认,在开机时已经被设定好了,否则,你必须为安装在系统上的 音效装置设定核心(假定卡/芯片已经被支持)。
NetBSD 支持各式各样的声卡并且在 GENERIC 核心中已经做了 适当的设定。
许多 PC 并没有声卡但却有一颗整合性的音效芯片:这表示 芯片被安装在主机板上了。你必须在 GENERIC 核心设定档中 做适当的设定并且重新编译一个个人化的核心来使用它们。 在 GENERIC 核心设定档中,检查以下(或相似的)数行:
# Plug-and-Play BIOS and attached devices #pnpbios* at mainbus? # mainboard audio chips #ess* at pnpbios? index ? # ESS AudioDrive #sb* at pnpbios? index ? # NeoMagic 256AV in sb mode #wss* at pnpbios? index ? # NeoMagic 256AV in wss mode #ym* at pnpbios? index ? # OPL3-SA3
解除 "pnpbios" 这行的批注,和在你主机板上 所安装音效装置的那一行。
Note: 当你建立个人化核心时,最好是复制一份 GENERIC 核心 设定档,如 Chapter 7 所述。
有时候手动地设定 IRQ 和 DMA 是必要的。
如果你仍然有问题,你可以试着建立所有的装置,因为某些声卡 只能模拟其它厂牌的卡。
许多芯片都被当作 SoundBlaster 和 OPL 兼容来使用,但它们 大多数都要利用 WSS 模拟。
OPL 是 Yamaha 制造的 MIDI 合成器;有许多种 OPL 的变体( 例如,OPL2, OPL3SA, OPL3SA2,等)。许多声卡依赖这个组件 或是兼容的。例如,Crystal 所制造的芯片(常见的是 CS423x) 都有这个芯片组,这就是为什么它们在 NetBSD 底下工作的原因。
WSS 不是一颗微芯片;它是 Windows Sound System 三个字的开头 缩写。Wss 是 NetBSD 核心驱动程序的名称,用来支持微软窗口的 音效系统。许多声卡被 Windows 支持,因为它们遵从这个标准 (WSS) 而且 NetBSD 也能做相同的处理。
我在 NetBSD 底下测试过许多声卡,有一定数目的卡必须 在核心中设定 opl* 和 wss* 才能正常工作。
在 NetBSD 下使用 Creative SoundBlaster 应该没有问题:它们 几乎全被支持,包括 Sound Blaster Live 1024!
一旦能正常工作,你可以在核心设定档中取消不必要的装置。
NetBSD 有许多处理音效装置的指令。它们是:
audioctl
mixerctl
audioplay
audiorecord
Audioctl 出现在 NetBSD 1.3,被用来手动地处理一些关于 音效 I/O 的变量,像是播放或是纪录的频率。有效的参数 可由以下的指令得知:
# audioctl -a | more
例如,要聆听 CD 品质的音乐,你可以使用以下的指令。
# audioctl -w play=44100,2,16,slinear_le
这个指令设定频率为 44100Hz,2 声道,16 位, slinear_le 编码。
你可以查看支持的编码:
# audioctl encodings
这个指令展示了被声卡所支持的所有编码。
这个指令被用来设定音效的混音功能,并且有和 audioctl 相似 的接口。
使用这个指令,你可以播放声音文件。如果需要更完善的功能, 可以从 package 系统安装许多程序,让你播放许多不同格式的 声音文件(例如,MP3,等)。
这是用来录制音效的指令。