ミキサーで名前でカードを選択する方法

ミキサーで名前でカードを選択する方法

私はUSBサウンドカード(BlacShark V2)を搭載したRazerヘッドセットを持っています。
ある時点でシステムを起動すると(ヘッドフォンは通常システムに接続されていてプラグを抜かない)、ヘッドフォンのスピーカーゲインはランダムに低い数字に設定されます。私はそれらをから変更できることを発見しalsamixer、システムを起動するたびに実行できるようにスクリプトを使用して設定する方法を見つけようとしました。それから「amixer」が見つかり、最終的なコマンドは次のようになります。
amixer -c 1 cset numid=9,iface=MIXER,name='Speaker Playback Volume' 64
このコマンドは、ゲインを最大に設定し、それを作成してbashスクリプトに保存したとき、私のヘッドフォンはカード番号1にありました。
問題は、時々私のRazerヘッドフォンがカード2として認識され、次のコマンドを実行しても期待どおりに機能しないことです。

コントロールを設定したいカードを名前で識別する方法はありますか?それ以外の場合は、少なくともコマンドを確実に実行できるように、ヘッドセットカードに固定番号を指定できますか?まず、ありがとうございます。

答え1

問題にアクセスする方法はいくつかあります(タイトルに示すように質問に必ず答える必要はありません)。まず、amixerコマンドが効率的であることを望み、alsaドライバがモジュール(カーネルではなく)で構築され、カードを正しい順序でロードするように強制することが含まれているとします。

から:

acoswt@Tux ~ $ cat /proc/asound/cards
 0 [Loopback       ]: Loopback - Loopback
                      Loopback 1
 1 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1
 2 [M2496          ]: ICE1712 - M Audio Audiophile 24/96
                      M Audio Audiophile 24/96 at 0xec00, irq 17
 3 [Exchange       ]: USB-Audio - Hercules Dualpix Exchange
                      Guillemot Corporation Hercules Dualpix Exchange at usb-0000:00:1d.7-3, high spe

M Audio Audiophileサウンドカードはsnd-ice1712 alsaドライバによって駆動されるインデックス2にあり、USB Webカメラのオーディオサブシステムはsnd-usb-audioドライバによって駆動されるインデックス3にあることがわかります。

/etc/modprobe.d/sound(再起動後)永久にそれぞれインデックス0と1になるようにするには、or(.conf拡張子を持つ他のエントリ)に次のように追加します。

options snd-ice1712 index=0
options snd-usb-audio index=1

注:ディストリビューションによっては、一部の設定ファイル(alsa.conf、alsa-base.confなど)がすでに存在している可能性があり、上記の手順と同様のパラメータが競合するように強制することがあります。
この場合、既存のファイルを適切に再編集するのが最善です。最終的には新しい設定と優先順位を付けたり、上書きしたり、競合したりする可能性がある他の行に注意してください。

関連情報