alsaおよびUSBオーディオミキサーを使用したパラレル/マルチオーディオ出力

alsaおよびUSBオーディオミキサーを使用したパラレル/マルチオーディオ出力

私のラップトップ用の新しいドッキングステーションがあり、オーディオ/alsaを設定するのに問題があります。

cat /proc/asound/cards確認後

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xec248000 irq 158
 1 [Audio          ]: USB-Audio - ThinkPad Dock USB Audio
                      Generic ThinkPad Dock USB Audio at usb-0000:3c:00.0-1.4.4, high speed

私はこのように/etc/asound.confを作成しました。

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

これはほとんどのアプリケーション(Chromium、VLC、mpdなど)で動作しているようですが、Firefoxではオーディオ出力が表示されず、同時に複数のアプリケーション(並列?)でもオーディオ出力がありません(たとえば、Chromiumを実行している場合)、VLCへのオーディオありません。)

VLC では、次のエラーメッセージが表示されます。

Audio output failed:
The audio device "default" could not be used:
Device or resource busy.
  • 同時に複数のアプリケーションで動作させるにはどうすればよいですか?
  • Firefoxで特にやるべきことはありますか?
  • カード1(ドッキングステーション)が接続されていない場合、どのようにカード0(ノートブック)に戻りますか?

小さな花袋

リソース:

インストール済みパッケージ:

alsa-utils, alsa-firmware, sof-firmware

名前-a:

Linux T480s 6.7.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 05 Feb 2024 22:07:49 +0000 x86_64 GNU/Linux

編集:マルチオーディオ出力とFirefoxオーディオはカード0(内部)でうまく機能します。

編集2:

次のようなhttps://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Configuring_the_index_order_via_kernel_module_options/etc/modprobe.d/alsa-base.confでカードのインデックス順序を変更しました。

options snd_usb_audio index=0
options snd_hda_intel index=1

/etc/asound.confを削除して再起動しました。

snd_usb_audioがプライマリカード(card0)にロードされると機能します。 Firefoxオーディオはうまく機能し、同時に複数のアプリケーションからオーディオを出力できます。

つまり、挿入するときにsnd_usb_audioをカード0にロードし、挿入しない場合はsnd_hda_intelに置き換えることができます。 alsa-base.confまたは/etc/asound.confでこれを行うことはできますか?

答え1

<kidding>「え?私もあなたの言葉に同意し、友達!</kidding>


混乱した方法で問題にアクセスするには:

Firefoxにオーディオ出力がありません

なぜなら…ちょっと…覚えていません。いくつかの悲劇的な理由で、Firefoxは単一のオーディオバックエンドであるpulseaudioをサポートすることにしました。
alsa(または他のサウンドサーバー)に直接出力したい場合は、従う必要がある唯一の方法は...これを達成するためのいくつかの設定オプションをまだ提供しているので、ソースからビルドすることです。

デバイスまたはリソースが使用中です。

最初のアプリの定義を考慮するとpcm.!default
、そのアプリを使用する最初のアプリは、自分自身で排他的な使用のためにデバイスをすぐにブロックして、他のアプリが同時にそうするのを防ぎます。
これを防ぐために、私のシステムに実装したソリューションは、pcm.defaultをdmixerプラグインにすることで構成されています。

pcm.!default{
        type plug
        slave.pcm "dmixer"
        hint{
                show on
                description "Tux Alsa Default"}}

記録のために私のdmixerの詳細は次のとおりです。

pcm.dmixer{
        type dmix
        ipc_key 219345
        slave{
                pcm MAUDIO
                format S32_LE
                period_size 1024
                buffer_size 4096 }}

そして私のMAUDIO pcmは定義に注意を喚起するためのものですnonblock true

pcm.MAUDIO{
        type hw
        card M2496
        device 0
        subdevice 0
        nonblock true}

関連情報