14

14.1概要

FreeBSD支持很多种声卡,允许你从计算机输出各种高保真的音乐。这包括MP3WAVOgg Vorbis等等格式的音乐。FreeBSD Ports Collection中也包含了很多允许你编辑音乐文件的应用程序。

读完这章,你将了解到这些:

             如何找到你的声卡。

             如何配置你的系统以便你的声卡能达到最佳状态。

             通过使用专门的程序测试你的声卡的工作状态的方法。

             如何解决声卡安装的一些问题。

             如何重放和编码MP3

             如何抓取CD音轨到数据文件。

读这章之前,你应当了解这些:

             如何配置和安装一个新内核(第9章)。

14.2寻找正确的设备

在开始以前,应该要知道你拥有的声卡的型号,它所用的芯片,还有它是PCI还是ISA卡。FreeBSD广泛地支持很多的PCIISA卡。如果在下面列表中没有发现与你一样的卡,请参考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 CreativeAdvanceESS声卡

如果有上面这些卡中的某一个,请在内核中加入

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 ISAPCI卡,请在内核设置中加入

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 attachedout of memory”的错误。这是什么造成的?

如果发生了,表示没有足够的内存来使用这个设备。

14.6 MP3音乐

MP3能提供近乎CD的音质,没有理由让你的FreeBSD工作站不使用这样的功能。

14.6.1 MP3播放器

最流行的XFree86 MP3播放器是XMMSX Multimedia System)。Winamp的皮肤(skins)也能被用在XMMS上。XMMS也支持插件。

XMMS能从audio/xmms portpackage安装。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音轨

在把CDCD音轨转换成MP3时,CD上的声音数据必须被转到硬盘上。这可以通过把CDDA(CD Digital Audio)数据转成WAV文件来完成。cdda2wav工具,是sysutils/cdrtools套件的一部分。下面的命令可以把整个CD转成一个个(每个音轨)WAV文件:

    # cdda2wav -D 010 -B

-D 010指出了SCSI设备是010,它是与cdrecord -scanbus输出相符合的。转换每个音轨,可以加上-t选项:

    # cdda2wav -D 010 -t 7

这个例子可以从CDROM上抓取7个音轨。可以指定一个范围,如17

    # cdda2wav -D 010 -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/sMP3使用的标准比特率。多数使用160 192。更高的比特率,可能需要更多的磁盘空间。-h选项可以打开“higher quality but a little slower”模式。

14.6.4 MP3解码

为了把mp3转成CD,它们必须被转成不被压缩的WAV格式。XMMSmpg123都支持这些格式。

XMMS中写入磁盘:

1.    运行XMMS.

2.    在窗口上单击右键打开XMMS菜单。

3.    Options中选择Preference

4.    改变Output PluginDisk 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

XMMSWAV格式写一个文件,而mpg123MP3写成PCM音乐格式。这些格式能用cdrecord burncd程序来写成CDR光盘。可以看看第12.6节的在FreeBSD中使用CD burner