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構成ツールを試して、それらが変更を検出するのに十分スマートかどうかを確認することです。
複雑な方法は、デスクトップシステムでこれを行っていない場合、興味深いものになります。「hw:X、Y」の代わりにデバイスエイリアスを使用することで回避できる場合があります。これが「aplay -L」の出力に示されています。「something:CARD = FOO、DEV = Y」はエイリアスであり、おそらく「hw:X、Y」のXが異なるデバイスプラグイン間で変更されることはありません。(毎回同じUSBドングルを使用していると仮定します。)
$ 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で同じデバイス名を使用できます。
さらに低いレベルの実際のカーネルデバイスでより安定したものが必要な場合は、udevが必要です。システムにデバイスをホットプラグできるのはシステムです。プラグイン時にデバイスが同じデバイス名を取得できるようにするudevのルールを記述することができます(これがmanページです)。