|
最近无聊,翻译了一些东西消遣消遣。这是其中的一篇。大家对alsa都很感兴趣,所以特别翻译了alsa的。我的本本是intel的chipset 所以就翻译了intel的。
准备再翻.asoundrc相关的那个简单文档。希望大家支持。
原文链接:
http://www.alsa-project.org/alsa ... amp;module=intel8x0
目录
snd-intel8x0的模块选项
介绍
快速安装
设置modprobe和kmod支持
对/etc/modules.conf文件内容的简单解释
.asoundrc文件
链接
用户反馈
snd-intel8x0的模块选项
描述:"Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455"
作者:"Jaroslav Kysela "
许可证:"GPL"
parm: index int array (min = 1, max = 8), 描述 "Intel i8x0 声卡的索引值"
parm: id string array (min = 1, max = 8), 描述 "Intel i8x0 声卡的ID字串"
parm: enable int array (min = 1, max = 8), 描述 "启用Intel i8x0 声卡"
parm: ac97_clock int array (min = 1, max = 8), 描述 "AC'97 编码时钟(codec clock) (0 = 自动侦测)."
parm: joystick_port int array (min = 1, max = 8), 描述 "Intel i8x0 声卡的游戏杆端口地址 (0 = 禁用)"
parm: mpu_port int array (min = 1, max = 8), 描述 "Intel i8x0 驱动的 MPU401 端口号 #."
介绍
有两种方法可以使linux驱动工作,一种是将它们编译进内核,另一种是将它们构建成独立的模块。请阅读kernel-HOWTO以获得内核编译的详情。
你必须打开声音核心模块(soundcore module)的音效支持。这个模块位于内核中。查看音效驱动(sound drivers)目录,它应该是第一个选项。大多数人都启用了这个模块设定。这样的话你就可以手工加载和卸载这些模块,或者如果你有多声卡/设备,或者你需要debug或使用有时可能导致你的驱动挂起的切边软件(cutting edge software--译者按:恕我孤陋寡闻,不知道这个词是什么意思,请各位看官不要见笑)。这同时也表示,你获得了对系统更多的控制权。大多数现代的发行版都把声音核心编译成了模块。你可以通过多种方法验证。最简单的方法是在终端输入:
modinfo soundcore
如果这条命令返回的信息中指示你有该模块,你就不必重新编译你的内核了。
快速安装
NB.如果你使用cvs,你需要输入:
./cvscompile 或者 make build
而不是
./configure
在shell中输入下面的命令:
新建一个目录以存放alsa的源代码
cd /usr/src
mkdir alsa
cd alsa
cp /downloads/alsa-* .
解压缩并安装alsa-driver包
bunzip2 alsa-driver-xxx
tar -xf alsa-driver-xxx
cd alsa-driver-xxx
./configure --with-cards=intel8x0 --with-sequencer=yes;make;make install
NB.如果你使用的是0.9.4或者更早的版本的driver的话,你需要运行
./snddevices
如果你使用devfs,你就不需要运行snddevices脚本了
snddevices脚本设置了创建的设备的权限是root。所以你需要:
chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi
现在,解压并安装 alsa-lib 包
cd ..
bunzip2 alsa-lib-xxx
tar -xf alsa-lib-xxx
cd alsa-lib-xxx
./configure;make;make install
现在,解压并安装 alsa-utils 包
cd ..
bunzip2 alsa-utils-xxx
tar -xf alsa-utils-xxx
cd alsa-utils-xxx
./configure;make;make install
然后,将模块插入内核
modprobe snd-intel8x0;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss
NB.使用早于 0.9.0beta11 驱动的用户,使用如下命令:
modprobe snd-card-intel8x0
现在调整你的声卡的音量水平。所有混音器声道(mixer channels)默认都是静音。你必须使用一个本地的mixer程序取消合适的声道的静音,例如,你可以使用alsa-utils包中的alsamixer。注意,usb-audio设备没有内部的混音器控制。
alsamixer
你也可以看看utils/alsasound文件。这个脚本是为Redhat发行版所设计的,但是你可以将它应用在任何使用System V风格的rc初始化脚本的发行版上。这将可以使你在系统启动的时候加载模块。当然如果你想这样做,你可以把它编译进内核,这样就省去了你去理解rc初始化脚本时的困难了。
设置modprobe和kmod支持
在你发送邮件抱怨“我没有/etc/modules.conf,我可以再那里找到它……”之前,/etc/modules.conf的确已经为一些发行版所反对,但是它还是可能以/etc/conf.modules的形式存在。两者基本上是一样的。不要担心这些问题,作为一个可选的步骤,请升级你的modutils到最新的版本。这将解决你的问题。
这里有一个例子,你可以复制,粘贴这部分到你的/etc/modules.conf文件的最后。
debian用户注意啦:你必须把这些信息保存为一个文件,放到/etc/modutils/目录下(例如:/etc/modutils/alsa)然后运行update-modules
# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-intel8x0
# module options should go here
# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
NB. 使用早于0.9.0beta11驱动的用户必须使用:
snd-card-intel8x0
按照这些<A href="http://www.alsa-project.org/alsa-doc/doc-php/file-edit.php">指导</A>复制并粘贴上面的内容到你的/etc/modules.conf文件中。
对/etc/modules.conf文件内容的简单解释
本地设备
当主多路复用器(multiplexer)被加载后,它的编码需要顶层水平的声卡模块。字串snd-card-%i是本设备的需要的,%i是声卡的数量,从1-7。字串sound-slot-%i是本设备的需要的,%i代表ALSA拥有的插槽数量,这代表了声卡的数目。这个选项行允许你在模块加载前设置不同的配置选项。字串snd_id让你设置声卡的名字,可以通过/proc/asound/cards文件返回其值。其他还有一些声卡特异性的选项。这些选项可以在INSTALL文件中或者上面找到。
xyz@localhost#pico /etc/modules.conf
# ALSA portion
alias snd-card-0 snd-interwave
alias snd-card-1 snd-cmipci
options snd-cmipci id="first" enable_midi="1"
# OSS/Free portion
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1
NB.使用0.9.0rc5 或者更老的驱动的用户请使用:
options snd-cmipci snd_id="first" snd_enable_midi="1"
为了符合内核表准,"snd_"q前缀已经从"module options"中被删除了。
自动加载OSS/Free模拟
当我们完成配置ALSA本地设备之后,在某种意义上说我们已经完成了,但是你可能同时也需要自动加载ALSA的OSS/Free模拟模块扩展。此时,仅有一个模块并不依赖于其他任何模块,因此必须被单独加载,snd-pcm1-oss.o。字串sound-service-%i-%i是OSS/Free服务所需要的。第一个%i代表插槽数量,例如,卡的数量。而第二个%i代表服务的数量。
xyz@localhost#pico
/etc/modules.conf
# OSS/Free portion - card #1
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
# OSS/Free portion - card #2 (cmipci)
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-12 snd-pcm-oss
别名(alias)snd-seq-oss 对第二个设备并不是必须的,因为不惯你有多少设备,你只有一个/dev/sequencer。
.asoundrc文件
你可以在<A href="http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php?module=intel8x0">这里</A>找到关于该文件的更多信息。
这个文件允许你对你的声卡/设备有更多的高级控制。一些非常有用的应用程序没有了它将无法工作。.asoundrc文件由对你系统中可获得的许多声卡的定义组成。它同时也给了你使用alsa-lib中pcm插件的权限。它还允许你做一些有趣的事,如把你的多块声卡捆绑成一块使用,或者让你使用多声道声卡的多输入输出(multiple i/o)。
下面是一个基本的定义。
在你的用户目录或者root目录下新建一个名为.asoundrc的文件:
vi /home/xxx/.asoundrc
复制粘贴下面的部分到文件中,保存它。
pcm.intel8x0 {
type hw
card 0
}
ctl.intel8x0 {
type hw
card 0
}
链接(略)
用户反馈:(简单意译了,作者的名字一改省略。但是还是表示以下感谢。)
1. 在freshrpms.net上可以找到RPM包。http://freshrpms.net/docs/alsa/
如果针对你特定内核的RPM没有,你可以通过源RPM为你的特定内核重构一个:
"rpmbuild --rebuild"
2. ALSA intel8x0 的维基百科:http://opensrc.org/alsa/index.php?page=intel8x0
3. 我终于让midi在我的nforce2 apu上正确工作,通过添加下面的行:
options snd-intel8x0 mpu_port=0x330
希望这对勇敢的linux音乐家有用。
4. 当前对本芯片的SP/DIF的支持只在cvs版的ALSA才有。我不知道为什么要这样。但是在/dev/alsa下所需的设备并不会为“发行版”的ALSA所创建,另外混音器(mixer)中也不能找到SPDIF控制。找一个最新的CVS版吧。提示:使用gnome-alsamixer,会让你比使用alsamixer更容易的启用许多SPDIF选项。
5.nfroce2多声道混音alsa音频可以使用下面的配置文件:
### .asoundrc for nforce2 apu
pcm.nforce-hw {
type hw
card 0
}
pcm.!default {
type plug
slave.pcm "nforce"
}
pcm.nforce {
type dmix
ipc_key 1234
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
}
}
ctl.nforce-hw {
type hw
card 0
}
它定义了两个多通道设备分别称为"nforce"和"default"。为"raw"飞混音输出(如jackd,它并不怎么喜欢dmix插件)定义了称为 "nforce-hw" 的设备。
应用实例:
--xmms,你需要xmms-alsa插件,并且配置它使用称为"nforce"的设备。
--(g)mpayer你需要使用如下命令启动:"gmplayer -ao alsa9:nforce"
现在,所有的音频都使用alsa而不用esound或者arts了。希望这个有用。 作者:lars
6. 我成功的在华硕A7N8X Deluxe 板载声卡上实现了 5.1 声道。芯片组被侦测为:
"NVidia nForce2:Realtek ALC650 rev 3" (MB is hardware revision 2.0)
我用的是Gentoo发行版,我编译了alsa-{driver,libs}-0.9.8,并且加入了oss的支持。然后用了gamix(一个好用的gtk alsa mixer)。我取消了Surround, LFE, Master, PCM的静音,并把它们开刀最大。在MB面板后面有:
2ch,front L+R, 绿色 jack
2ch,rear L+R, 紫色 jack
1ch,bass L, 橙色 jack
这是默认设置。(这一段看不太懂,所以大概翻译了一下,希望传达出来的一点意思对你们的理解有所提示。)
我用3个立体声功放,带有2,2,1扬声器(没有钱买新的5.1声道的设备啊),所以,同时调整三个功放的声音时就比较郁闷。:-)
作为测试,我使用了一张支持5.1声道的DVD,以ROOT身份进行试验。
# mplayer dvd://1 -v -aid 128 -ao oss -channels 6 2>&1|grep AC3:
检查你是不是有一个类似于下面的输出:
AC3: 5.1 (3f+2r+lfe) 48000 Hz 448.0 kbit/s
如果没有,试一下129, 130... 以获取帮助。(靠!老外写得句子这么口语化,看不懂了!)
享受美妙的音质体验吧!
7. 我有一个华硕的带nforce2芯片组的a7n8x-vm板子,我成功的让所有的音效都通过mplayer的spdif输出。模拟信号和数字信号都可以,所以无论你是在欣赏AC3电影还是听MP3的时候,就不需要对参数进行变化了。有三个参数帮你搞定一切:
mplayer -ao alsa9:spdif -ac hwac3, -srate 48000 somemovie.avi
-ao alsa9:spdif通过spdif输出送出所有的音频
-ac hwac3,如果有ac3流,它就会以raw模式发送,因此你的接收器就可以处理它了,否则,“模拟”回放将被使用。
-srate 48000 把所有的都转换成48kHz,因为声卡不能同国spdif处理44.1kHz的信号,否则将导致其播放速度加快。
完了,尽情享受吧!
8. 我已经可以在我的系统上通过数字spdif实现AC3/DTS输出了。这就意味着我可以用XINE回放DVD而实现杜比数字5.1声道(Dolby Digital 5.1 sound)了。
我有一个运行着getoo linux的Shuttle SN41G2系统。主板是nforce2芯片组,和intel8xO的声音芯片。我还订购了额外的spdif扩展,以提供4个数字接口(1个光纤接入,一个光线输出,一个同轴电缆输入,一个同轴电缆输出)。我运行的是CVS版的alsa-driver和alsa-libs,另外和以下的.asoundrc(基于上面的Lars G写得那份)。只在slave设备的pcm值上有一个很小的改动。
pcm.nforce-hw {
type hw
card 0
}
pcm.!default {
type plug
slave.pcm "nforce"
}
#0,0 is analog out (i.e. headphone socket on the shuttle), and 0,1 is
#spdif out.
pcm.nforce {
type dmix
ipc_key 1234
slave {
pcm "hw:0,1"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
}
}
ctl.nforce-hw {
type hw
card 0
}
Everything else is as per the intel8xO sound card matrix.(看不懂,不翻了)
提示:
----
o) KDE
默认状态下,KDE是使用artsd来混音的,但是因为我们使用了dmix插件,那就不再需要它了。artsd通过阻止其他任何程序发声的方式,掌管着声音设备(除非那些程序有一个artsd的插件),这样就导致了像xmms,xine,甚至alsapalyer运行时挂起
。
通过上面的.asoundrc文件,你就可以进入KDE,加载控制中心,关掉artsd,而所有的声音都工作正常。
o) 用aplay和KDE时的噪音和爆音干扰
我发现自己的.asoundrc文件在用aplay播放声音提示时会产生恼人的爆音和噼啪声。(KDE使用aplay来产生声音提示,例如登录和注销的声音)。这个问题似乎是因为cvs版的alsa-utils的问题。所以我反安装了这些之后,又装回了旧版的(我用gentoo的emerge,我估计是装载了0.92版的)。(编者按-原文是9.2版的。但是alsa现在还没有到2.9呢,哪来的9.2版啊。是我错了还是作者错了呢?)
9. 因为某种原因,ALSA不能在KDE中被正确的侦测。请确认是不是使用了artsd输出。控制中心-〉系统和媒体-〉多媒体-〉声音I/O,修改声音方案为:Threaded Open Sound System。
10. CIMLinux给的解决方案在我的华硕A7N8X Deluxe上工作良好。
但是在我KDE下回放,最大化/最小化窗口的时候会有一个跳过声音(其他的PCI活动都会产生同样的结果 - 我机器上还在使用PCI的图形加速卡)。安如下方法加入"buffer_size"值进行挽救。
slave {
pcm "hw:0,1"
period_time 0
period_size 1024
buffer_size 32768
rate 48000
}
(这段位于dmix插件的同一部分。)
较小的buffer_size可能会使其工作正常。因为似乎ALSA在使用SP/DIF输出的时候会强行转换为48000Hz,但是我为了清晰,还是修改它了。
11. 我最终也使得alsa成功的运行在我的微星nforce 1 k7n420主板上。Had to drop the period in half.(长话短说了。——这么烦不知是不是合适。)
pcm.nforce-hw {
type hw
card 0
}
pcm.!default {
type plug
slave.pcm "nforce"
}
pcm.nforce {
type dmix
ipc_key 1234
slave {
pcm "hw:0,0"
period_time 0
period_size 512
buffer_size 4096
rate 44100
}
}
ctl.nforce-hw {
type hw
card 0
}
12. 用alsamixer(而不是用kMix)设置我的ALSA录音。
设置: NForce MB, Mandrake9.2, thac's mm kernel etc,
Alsa, Jack, Rosegarden Audio tracks
(什么东西,看不懂啦。我对音响没有研究。)
要音频录音你需要打开“抓取”("capture"),然而,用KMIX工作并不很好。作为替代方案,你需要使用alsamixer(在shell下)。当我使用kmix的时候,我立刻得到了一个声音反馈。
但是我在用alsamixer的时候,一切正常。
(对于我,抓取是在控制面板上的第八个。)
……
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch cswitch-joined
Capture channels: Front Left - Front Right
Limits: Capture 0 - 15
Front Left: Capture 0 [0%] [on]
Front Right: Capture 0 [0%] [on]
……
现在Jack-Rack可以工作了,我也可以在玫瑰园录制音轨了。
13. Dell Inspiron 1100 本本,i845芯片组:
启用ALSA多音频流,编辑/etc/asound.conf。
文件应该包含以下内容:
#/etc/asound.conf start:
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dsp0 {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
rate 44100
}
bindings {
0 0
1 1
}
}
ctl.dmixer {
type hw
card 0
}
#end.
然后,告诉你的声音程序以ALSA作为默认输出设备。这样你就可以实现多音频流,而不会发生声音设备被占用之类的问题了。
14. 我根据上面指导做了,但是还是不能使我的nforce2 (shuttle sn41g2)用spdif输出。最后,我cat了 /proc/asound/devices,发现狮子音频回放在我的系统里居然是0,2,而不想上面的例子中列出的那样。可能是因为0,x会随系统的变化而变化吧。无论如何,我希望这对其他人有所帮助。
15. EPOX 8RDA3+, CMedia 声音芯片组
Alsa 1.04 i8x0 驱动工作正常。但是在我搜寻了半天之后,我发现,除了要解除PCM的静音之外,还必须解除IEC958 Capture
Monitor的静音,否则还是不会有任何声音的。
希望对你们有所帮助。 |
|