JohnT的回答给出了一个很好的基本。我接着说说如何找到你系统上的设备。使用 “aplay -l "来获取你系统上的设备列表。hw:X,Y来自于你的硬件的这个映射–在这里,X是卡号,而Y是设备号。
$ aplay -l # note lower-case "L" option
****List of PLAYBACK Hardware Devices****
card 0: T71Space [Terratec Aureon 7.1-Space], device 0: ICE1724 [ICE1724]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 1: IEC1724 IEC958 [IEC1724 IEC958]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 2: ICE1724 Surrounds [ICE1724 Surround PCM]
Subdevices: 3/3
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
由于这些都是USB设备,每次插入时可能不会总是得到相同的设备号,所以hw:X,Y设备可能会改变。最简单的答案是,对于桌面系统来说,尝试使用GNOME/KDE/Xfce配置工具,看看它们是否足够聪明,能够接收到这些变化。
复杂的方法,如果你不是在桌面系统上做这个,就会变得……有趣。你也许可以用 使用 device aliases 来代替 "hw:X,Y” – 这就是 “aplay -L” 的输出。something:CARD=FOO,DEV=Y “是别名,可能不会在不同的设备插件之间改变,而 "hw:X,Y "中的X可能会改变。
$ aplay -L
default:CARD=CK804
NVidia CK804, NVidia CK804
Default Audio Device
front:CARD=CK804,DEV=0 # hw:0,0
NVidia CK804, NVidia CK804
Front speakers
surround40:CARD=CK804,DEV=0 # hw:0,1
NVidia CK804, NVidia CK804
4.0 Surround output to Front and Rear speakers
所以你的aplay命令会变成 "aplay -D front:CARD=CK804,DEV=0 somefile.wav",你可以在你的.asoundrc中使用相同的devicename。
如果你需要更低级别的更稳定的东西,实际的内核设备,udev就是你想要的–它是允许热插拔设备到系统中的系统。你可以 为udev写规则 (这里是 man page ),这将允许设备在插入时获得相同的devicename。