目录
14 声卡
14.1 概要
14.2 寻找正确的设备
14.3 重新编译内核
14.4 创建和测试设备装载的节点
14.5 常见的问题
14.6 MP3 音乐
=============================================================
第14 章声卡
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
14.1 概要
FreeBSD 支持很多种声卡,允许你输出各种格式的音乐。包括MP3,WAV,Ogg Vorbis 等
等格式的音乐。FreeBSD Ports 中也包含了很多应用程序可以允许你编辑音乐文件。
读完这章,你将了解到这些:
. 如何定位你的声卡。
. 如何配置你的系统以便你的声卡能达到最佳状态。
. 通过使用专门的程序测试你的声卡的工作状态的方法。
. 如何解决声卡安装的一些问题。
读这章之前,你应当了解这些:
. 如何配置和安装一个新内核(第9 章)
14.2 寻找正确的设备
在开始以前,应该要知道你拥有的声卡的型号,它所用的芯片,还有它是PCI 还是ISA
卡。FreeBSD 广泛地支持多种PCI 及ISA 卡。如果在下面列表中没有发现与你一样的卡,请
参考pcm 联机手册。这不是完整的列表;不过已经列出了大部分通用的声卡。
. Crystal 4237, 4236, 4232, 4231
. Yamaha OPL-SAx
. OPTi931
. Ensoniq AudioPCI 1370/1371
. ESS Solo-1/1E
. NeoMagic 256AV/ZX
. Sound Blaster Pro, 16, 32, AWE64, AWE128, Live
第1 页FreeBSD 使用手册
. Creative ViBRA16
. Advanced Asound 100, 110, and Logic ALS120
. ES 1868, 1869, 1879, 1888
. Gravis UltraSound
. Aureal Vortex 1 or 2
内核中使用的驱动程序视所拥有的声卡而定。下面的段落提供了更多的信息以及那些需
要加入内核设置的资料。
14.2.1 Creative, Advance 和ESS Sound Cards
如果有上面这些卡之一,请在内核中加入
device pcm
如果有PnP ISA 卡,也请在内核中加入
device sbc
对于非PnP ISA 卡,请在内核中加入
device pcm 和device sbc0 at isa? port0x220 irq 5 drq 1 flags 0x15
那些是默认的设置。可能需要改变IRQ 或其它。其它信息请参考sbc 联机手册。
注意: 未经修补的FreeBSD 4.0 不支持Sound Blaster Live;这不包含在这份文件中。
建议在尝试使用这张卡以前更新到最新版的-STABLE。
14.2.2 Gravis UltraSound Cards
对于PnP ISA 卡,请在内核中加入
device pcm
和
device gusc
如果有非PnP ISA 卡,请在内核中加入
device pcm
和
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13
可能需要更改IRQ 或其它。其它信息请参考gusc 联机手册。
第2 页FreeBSD 使用手册
14.2.3 Crystal 声卡
对于Crystal 卡,请在内核中加入
device pcm
和
device csa
14.2.4 一般支持
对于PnP ISA 或PCI 卡,请在内核设置中加入
device pcm
如果有不含bridge 驱动程序的非PnP ISA 声卡,请在内核中加入
device pcm0 at isa? irq 10 drq 1 flags 0x0
可能需要改变IRQ 或其它,以符合硬件设置。
14.3 重新编译内核
在加入所需的驱动程序至内核设置后,请重新编译内核。其它信息请参考手册的第9.3
节。
14.4 建立和测试设备装载的节点
重新启动后,登陆并执行cat /dev/sndstat。会出现类似下面的输出信息:
FreeBSD Audio Driver (newpcm) Sep 21 2000 18:29:53
Installed devices:
pcm0: <Aureal Vortex 8830> at memory 0xfeb40000 irq 5 (4p/1r +channels duplex)
如果看到错误信息,表示前面某个步骤错了。如果发生了,请重新检查一次内核设置以
确定选择了正确的设备。
如果没有错误信息而且显示pcm0,请执行su 变成root 并如下执行:
# cd /dev
# sh MAKEDEV snd0
如果没有错误信息而且显示pcm1,使用su 变成root 并如下执行:
# cd /dev
# sh MAKEDEV snd1
请注意上面任一个命令将不会产生/dev/snd 设备!而是产生一组设备节点包括:
第3 页FreeBSD 使用手册
说明设备
与SPARC 兼容的声音设备/dev/audio
数字声音设备/dev/dsp
象/dev/dsp,但每次取样为16 bits /dev/dspW
/dev/midi midi 访问设备
控制端口混音设备/dev/mixer
/dev/music Level 2 音序接口
/dev/sequencer 音序设备
可编程设备接口/dev/pss
如果顺利,现在应该有个可正常工作的声卡了。如果没有,请参考下一节。
14.5 常见的问题
14.5.1. 我遇到一个unsupported subdevice XX error!
一个或多个设备节点没有被正确的产生。请重复上面的步骤。
14.5.2. 我遇到一个sb_dspwr(XX) timed out 的错误!
I/O port 没有设置正确。
14.5.3. 我遇到a bad irq XX 的错误!
IRQ 设置有误。请确定设置的IRQ 和声卡IRQ 一致。
14.5.4.我遇到“xxx: gus pcm not attached, out of memory” 的错误。这是什么造成
的?
如果发生了,表示没有足够的内存来使用这个设备。
14.6 MP3 音乐
14.6.1 MP3 播放器
最流行的XFree86 MP3 播放器是XMMS。Winamp 的skins 也能被用在XMMS 上。XMMS 也
支持插件。
XMMS 能从audio/xmms port 或package 中安装。XMMS 接口是很直观的,它有一个播放
目录,一个图形的均衡器等。这些都很象winamp。也可以在audio/mpg123 port 中选择一
个命令行的MP3 播放器。可以这样做:
第4 页FreeBSD 使用手册
# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from BT - Foobar-GreastHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
在你的系统中,/dev/dsp1.0 应该被dsp 设备接口所替换。
14.6.2 转换CD 音轨
在把CD 或CD 音轨转换成MP3 时,在CD 上的声音数据必须被转到硬盘上。这可以把CDDA
数据转成WAV 文件来完成。cdda2wav 工具,是sysutils/cdrtools 套件的一部分。下面的
命令可以把整个CD 转成一个个(每个音轨)WAV 文件:
# cdda2wav -D 0,1,0 -B
-D 0,1,0指出了SCSI 设备是0,1,0,它是与cdrecord -scanbus 输出相符合的。转换
每个音轨,可以加上-t 选项:
# cdda2wav -D 0,1,0 -t 7
这个例子可以从CD 上抓取7 个音轨。可以指定一个范围,如1 到7:
# cdda2wav -D 0,1,0 -t 1+7
cdda2wav 只支持SCSI CDROM 驱动器。对于IDE 驱动器可以选择其它的工具。
14.6.3 MP3 编码
现在,可以选择lame 这个mp3 编码器。可以在audio/lame 中找到。
第5 页FreeBSD 使用手册
使用转换的WAV 文件,可以使用下面的命令把audio01.wav 转成audio01.mp3:
# lame -h -b 128 \
--tt " Foo Song Title" \
--ta " FooBar Artist" \
--tl " FooBar Album" \
--ty " 2001" \
--tc " Ripped and encoded by Foo" \
--tg " Genre" \
audio01.wav audio01.mp3
128K 是标准的MP3 比特率。多数使用160, 或192。更高的比特率,可能需要更多的磁
盘空间。-h 选项可以打开“higher quality but a little slower”模式。
14.6.4 MP3 解码
为了把mp3 转成CD,它们必须被转成不被压缩的WAV 格式。XMMS 和mpg123 都支持这些。
在XMMS 中写入磁盘:
1. 运行XMMS.
2. 在窗口上单击右键打开XMMS 菜单。
3. 在Options 中选择Preference。
4. 改变Output Plugin 为Disk Writer Plugin。
5. 键入Configure.
6. 键入一个要写的非压缩文件的目录。
7. 打开一个MP3 文件,把volume 设成100%,EQ 设为关闭。
8. 键入Play -- XMMS 将显示正在播放的MP3 文件,但听不见声音。说明它正在
转换MP3.
第6 页FreeBSD 使用手册
9. 如果要听MP3,记得将Output Plugin 设回默认值。
在mpg123 中写成stdout:
1. Run mpg123 -s audio01.mp3 > audio01.pcm
XMMS 用WAV 格式写一个文件,而mpg123 把MP3 写成PCM 音乐格式。这些格式能用
cdrecord 或burncd 程序来写成CDR 光盘。可以看看第12.6 节的在FreeBSD 中使用CD
burner。