Alsaに好みのサウンドデバイスを自動的に選択させるには?
USBサウンドカードを購入しました。LinuxのデスクトップをUSBデバイスが差し込まれている場合、USBデバイスを優先して、デバイスが(差し込まれていない)と同時に自動的に切り替わるように設定したいと思っています。それは可能でしょうか、また、どのようにしてでしょうか?
USBサウンドカードを購入しました。LinuxのデスクトップをUSBデバイスが差し込まれている場合、USBデバイスを優先して、デバイスが(差し込まれていない)と同時に自動的に切り替わるように設定したいと思っています。それは可能でしょうか、また、どのようにしてでしょうか?
$ cat /proc/asound/cards
でカードを検索するには、aplay
を使用します。
$ aplay -l
を使用し、以下のように/etc/asound.conf
を作成します。
pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}
「カード1」を上記で決定したカードの番号または名前に置き換えてください。
これは Alsa でデフォルトのサウンドカードを選択する方法です。Pulse Audio を使用している場合は、この方法を使うために Alsa をインストールする必要があるかもしれません。
cat /proc/asound/modules
は、サウンドモジュールの一覧を表示します。
nano /etc/modprobe.d/alsa-base.conf
このalsa-base.confを、優先カードのインデックスが=-2 / 0で、他のカードのインデックスが=-1 / 1になるように編集します(-2と-1のままで)
options snd_hda_intel index=-1
options snd_usb_intel index=-2
この場合は、USBデバイスが優先されます。
出力されるカードが同じ名前の異なる2枚のカードがある場合は、このようにします。
options snd_hda_intel
options snd_hda_intel
どっちがどっちなのか調べるには、このコマンドを実行します。
cat /proc/asound/cards
then edit modules in this way:
options snd_hda_intel enable=1 index=0
options snd_hda_intel enable=0 index=1
再起動が必要かも。
Matija Nalis の回答は、私には半分しか効きませんでした (alsamixer はデフォルトを変更しましたが、aplay や firefox のような他のものは頑なに間違ったデフォルトで止まっていました)。この例は debian wiki にあるもので (CentOS-6 ラップトップで) 動作しました:
defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0
記録のために。ALSA は文書化されておらず、特にどのカードを使用するかの選択のような非常に単純なものは、あまりにも難しいです。さらに悪いことに、システム間で変更されているようです。また、"Generic_1 “というタグは、aplay -lで "card 1 "と表示されていたので、他の人も使っているようだ。他の人が使っているようだったので、私も使ってみた。
また、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
.asoundrcやシステムのasound.confを編集することでデフォルトのalsaカードを変更することができますが、この方法にはいくつかの重要な問題があります。
これは壊れやすく、名誉を守るためにはアプリケーションの再起動が必要です。
オンザフライでカードを切り替えたい場合は、pulseaudioのようにサウンドカードからアプリケーションを正しく抽象化したサウンドサーバーを使う必要があります。
マチヤ・ナリスとテルの回答の変種です。これが私には有効でした。
~/.asoundrc
defaults.pcm.!card 1
defaults.ctl.!card 1
(Odroid C0, Debian Jessie, aplay -l によると HDMI オーディオをカード 0、USB サウンドカードをカード 1 としています)
注意: /proc/asound/modules が存在せず、ブラックリストに入れたり優先度を低くしたりする hdmi オーディオモジュールが存在しないため、他の方法ではうまくいきませんでした。完全に無効にするには、hdmi オーディオをサポートしていないカーネルを再コンパイルしなければならなかったようです。