web-dev-qa-db-ja.com

どのようにAlsaに自動的に好みのサウンドデバイスを選ばせるのですか?

USBサウンドカードを買いました。 USBデバイスが接続されている場合はUSBデバイスを優先し、デバイスの接続が解除されると自動的に切り替わるようにLinuxデスクトップをセットアップしたいのですが。それは可能ですか、そしてどうやって?

33
Petr Pudlák

であなたのカードを探す

$ cat /proc/asound/cards

有効なALSAカード名を取得するには、aplayを使用します。

$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq

そして、次のようにして/etc/asound.confを作成します。

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

"card 1"を上記で決めたあなたのカードの番号または名前に置き換えてください。

あるいは、 カードの順序を変更して 、USBカードをカード0にし、asound.confを編集しなくても動作するようにすることもできます。

29
Matija Nalis

これはAlsaのデフォルトのサウンドカードを選択する方法です。 Pulse Audioを使用している場合は、この方法でAlsaをインストールすることをお勧めします。

cat/proc/asound/modules

あなたのサウンドモジュールを一覧表示します。コマンドの出力は以下のようになります(例):

0 snd_hda_intel

1 snd_usb_intel

上からあなたのUSBサウンドカードがどれであるか、あなたはかなり簡単に理解することができます。

nano /etc/modprobe.d/alsa-base.conf

あなたの好みのカードがindex = -2/0を持ち、他のカードがindex = -1/1を持つように、このalsa-base.confを編集します(-2と-1を使います)。

オプションsnd_hda_intelインデックス= -1

オプションsnd_usb_intel index = -2

この場合、USBデバイスが優先デバイスです。

次のように、出力から同じ名前のカードが2枚ある場合は、

オプションsnd_hda_intel

オプションsnd_hda_intel

どれがどれであるか調べるためにこのコマンドを発行して下さい:

cat/proc/asound /カード

その後、このようにしてモジュールを編集します。

オプションsnd_hda_intel enable = 1 index = 0

オプションsnd_hda_intel enable = 0 index = 1

再起動が必要な場合があります。サウンドカードを手動で切り替える必要があるかもしれません。

15
Ashildr

私はまた私のUSB装置からの出力を得られなかった。私のcat /proc/asound/modulesの出力は次のとおりです。

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

私はここで説明した両方の答えを試してみましたが、(多くのインデックスの組み合わせとたくさんの再起動で)助けにはなりませんでした。私の問題は私のUSBデバイスが起動後に初期化されたことだと思います。とにかく、だから私の実用的な解決策は/etc/modprobe.d/blacklist.confを次のように更新することで他の2サウンドデバイスをブラックリストに載せることです:

blacklist snd_hda_intel
3
user533723

Matija Nalisからの答えは私のために半分だけ働いた(alsamixerはデフォルトを変えたが、aplayやfirefoxのような他のものは頑固に間違ったデフォルトで立ち往生していた)。 Debianウィキからのこの例は私のために働きました(CentOS-6ラップトップで):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

記録のために:ALSAはあまり文書化されておらず、特に使用するカードを選択するような非常に単純なことは非常に難しい。さらに悪いことに、それはシステム間で変化するようです。また、私はそれがリストの中の「カード1」として現れるaplay -lからその「Generic_1」タグを得ました。他の人がそれを使っているようだったので、私は同じことをしました…それが私が言うことができないことを意味するもの。

2
Tel

.asoundrcまたはシステムasound.confを編集してデフォルトのalsaカードを変更することができますが、このアプローチにはいくつか重要な問題があります。

脆弱であり、アプリケーションを再起動する必要があります。

カードをその場で切り替えたい場合は、pulseaudioのようにサウンドカードからアプリケーションを正しく抽象化するサウンドサーバーを使用する必要があります。

1
Grant Diffey