JohnT's answer は、優れた基本を提供します。システム上のデバイスを見つける方法について説明します。 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
の出力です 示します。 何か:CARD=FOO,DEV=Y stuff はエイリアスであり、おそらく異なるデバイス プラグイン間で変更されることはありません。ここで、X は hw:X,Y で そうかもしれない。 (毎回同じ 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 ページはこちら)。
hw:0,0
デフォルトのサウンド カード上のデフォルト デバイスを指定します。 2 番目のサウンドカードの最初のデバイスにアクセスするには、hw:1,0
を指定します。 .これらは .asoundrc
で指定されています .詳細については、こちらをご覧ください。