第14章 声 卡
14.1概要
FreeBSD支持很多种声卡,允许你从计算机输出各种高保真的音乐。这包括MP3,WAV,Ogg Vorbis等等格式的音乐。FreeBSD Ports Collection中也包含了很多允许你编辑音乐文件的应用程序。
读完这章,你将了解到这些:
如何找到你的声卡。
如何配置你的系统以便你的声卡能达到最佳状态。
通过使用专门的程序测试你的声卡的工作状态的方法。
如何解决声卡安装的一些问题。
如何重放和编码MP3。
如何抓取CD音轨到数据文件。
读这章之前,你应当了解这些:
如何配置和安装一个新内核(第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
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声卡
如果有上面这些卡中的某一个,请在内核中加入
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卡
对于PnP
ISA卡,请在内核中加入
device pcm
和
device gusc
如果有非PnP
ISA卡,请在内核中加入
device pcm
和
device gus0 at isa? port 0x220 irq 5 drq 1
flags 0x13
可能需要更改IRQ或其他设置以匹配你的声卡。请参考gusc联机手册了解更多信息。
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.2.5板载声卡
如果要支持一些内建在主板上的声卡,需要在内核配置中加入下面这行:
options PNPBIOS
14.3重新编译内核
在加入所需的驱动程序至内核设置后,请重新编译内核。其他信息请参考使用手册的第9.3节。
14.4建立和测试设备装载的节点
重新启动后,登陆并执行dmesg | grep pcm。会出现类似下面的输出信息:
# dmesg | grep pcm
pcm0: <SB16 DSP 4.11> on sbc0
你系统的输出信息可能与这儿的不太一样。如果没有pcm设备出现,可能是前面某个步骤错了。如果发生了,请重新检查一下内核设置以确定选择了正确的设备。
如果没有错误信息而且显示pcm0,你必须使用root执行下面的命令:
# cd /dev
# sh MAKEDEV snd0
如果命令返回pcm1,执行上面描述的同样的步骤,使用snd1替换snd0。
注意:上面的命令不能创建一个/dev/snd设备!
MAKEDEV将创建一组设备节点包括:
设备 |
说明 |
/dev/audio |
与SPARC兼容的声音设备。 |
/dev/dsp |
数字声音设备。 |
/dev/dspW |
像/dev/dsp,但每次取样为16 bits。 |
/dev/midi
|
midi访问设备。 |
/dev/mixer |
控制端口混音设备。 |
/dev/music |
Level 2
音序接口。 |
/dev/sequencer |
音序设备。 |
/dev/pss |
可编程设备接口。 |
如果顺利,现在应该有个可正常工作的声卡了。如果没有,请参考下一节。
14.5常见的问题
1. 我遇到一个unsupported subdevice XX错误!
一个或多个设备节点没有被正确创建。请重复上面的步骤。
2. 我遇到一个sb_dspwr(XX) 超时错误!
I/O 端口没有设置正确。
3. 我遇到a bad irq XX的错误!
IRQ设置有误。请确定设置的IRQ和声卡IRQ一致。
4.我遇到 “xxx: gus pcm not attached,out of memory”的错误。这是什么造成的?
如果发生了,表示没有足够的内存来使用这个设备。
14.6 MP3音乐
MP3能提供近乎CD的音质,没有理由让你的FreeBSD工作站不使用这样的功能。
14.6.1 MP3播放器
最流行的XFree86 MP3播放器是XMMS(X
Multimedia System)。Winamp的皮肤(skins)也能被用在XMMS上。XMMS也支持插件。
XMMS能从audio/xmms port或package安装。XMMS接口是很直观的,它有一个播放目录,一个图形的均衡器等。这些都很象winamp。也可以在audio/mpg123 port中选择一个命令行的MP3播放器。
可以在命令行通过指定声音设备和MP3文件来运行mpg123,可以这样做:
# 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(CD
Digital Audio)数据转成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
这个例子可以从CDROM上抓取7个音轨。可以指定一个范围,如1到7:
# cdda2wav -D 0,1,0
-t 1+7
cdda2wav只支持SCSI CDROM驱动器。对于IDE驱动器,可以选择/audio/cdd或其他一些工具。
14.6.3 MP3编码
现在,可以选择lame这个mp3编码器。可以在port目录的audio/lame中找到。
使用转换的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
128Kbit/s是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.
9. 如果要听MP3,记得将Output
Plugin设回默认值。
在mpg123中写成stdout:
1. 运行mpg123 -s audio01.mp3 > audio01.pcm
XMMS用WAV格式写一个文件,而mpg123把MP3写成PCM音乐格式。这些格式能用cdrecord 或burncd程序来写成CDR光盘。可以看看第12.6节的在FreeBSD中使用CD burner。