ALSA と PulseAudio と JACK の同時出力

今や、PulseAudio (PA) は一般的なサウンドサーバとして用いられている。 多くのアプリケーション・ソフトウェアが対応しているし、 一部のプロプライエタリは PA が無いと音が出ない

PA は、複数の出力を混合(リミックス)もするし、 pavucontrol 等で音源に合わせて音量を定めることもしうる

実はALSAは、リミックスをするプラグインもあり、同時出力もしうる(意外と知られていない。設定に手間取る)。 とはいえ、PA と異なり、音量調節を個別にしえない

JACKは、PA と異なり、音源の接続(パッチング)をすることまでしうる。 これは、 ASIO とも似ている。 ASIO と同様に、リアルタイムに精確に出力する必要の在るときに JACK が用いられている。典型的には音楽制作だ

ところが、厄介なことに、 ALSA と PA と JACK を同時に利用して出力を混合するという設定が難しい

特に、ALSA と PA とのリミックスをしえないと、 音楽を聴きながらウェブブラウジングをして動画を閲覧する、といった場面で困る。 動画をミュートしていようが、ブラウザは音声出力を取ろうとする。 これに失敗したら、動画が再生されないことも多い

同様に、ウェブブラウジング中で Adobe(Macromedia) Flashが音声を出そうとしたときも、出ない。 Adobe Flash はプロプライエタリだ。(※エミュレータの Gnash では、うまく動かないことも多い。プロプライエタリなので、 Gnash では完全互換は不能だ)

全ての音源をPA出力にすれば回避可能だが、音が良いかどうか等の懸念は在るし、全ソフトウェアがPAに対応していねばならない

まずはそもそも、 ALSAの出力のリミックス設定が必須 だ。そうしなければ、ALSAのみ対応のソフトウェアがひとつでも動いていれば、ALSAをロックされて、ひとつしか出力し得ない。 ALSA でリミックスしていれば、ALSA対応ソフトウェアの複数同時出力が可能だ。

そして、PAも一般的にはALSAを介して出力するソフトウェアの一つだから、ALSAでのリミックス設定は ALSA・PAの同時出力への第一歩だ

こういう経緯で、同時出力をするための設定を検討した

まず、ALSAのリミックスには dmix 機能を用いる

次に、PA にも、さきに ALSA で作成した dmix に接続をさせる

ちなみに JACK も、ALSA の dmix に接続をさせる

以下が例

ちなみに、GitHub を止めたので(Gist が無いので)、Pastebin に貼ってみたが、 asound.conf だけが直ぐに閲覧数急増。これは検索エンジンに引っかかったかな。 PastebinはGoogleを検索機能に採用している

公開日時:

wjn's repos' info.

  Japenese , English