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を検索機能に採用している

Gentoo の portage が git に対応

最近は Gentoo の大幅な刷新が続けられているように思う。 今後の生き残りと、状況変化への順応だろう。 CPUフラグの件も、ffmpegとlibavのUSEフラグの意義変更もそうだ。

そして、 Portage が ver 2.2.16 で、 native に git pull にも対応した 。 2.2.16 が出る前までは、ver 9999 (VCS/Git版)をインストールしてもいい。

概要はeselect news に配信され始めている。 https://wiki.gentoo.org/wiki/Project:Portage/Sync を読んでもいい。

また、 unofficial ながら、 gentoo リポジトリ(通称 Portage tree )のミラーが GitHub に 造られた。 http://blogs.gentoo.org/news/2015/02/03/gentoo-monthly-newsletter-january-2015/#Unofficial_Gentoo_Portage_Git_Mirror

順って総合すると、 emerge --sync で rsync しなくても(git pull で)よくなる

それと、 portage でもマルチリポジトリ化 に本格対応した。 paludis や pkgcore では当たり前なマルチリポジトリだが、今迄 portage では overlay で、layman を用いることが多かった。 それが今は、 /etc/portage/repo.conf/ 以下で設定することで、マルチリポジトリ化しうる。

gentoo リポジトリのディレクトリも、 /usr/portage/ 決め付けではなく、 /var/db/repos/gentoo のような例が挙げられている。 こうなると、/usr/portage/ 以下は distfiles やバイナリパッケージを保管するためだけの場所になりそうだ。

make.conf の ${SYNC} は無くなり repo.conf で書くようになり、 ${PORTDIR} も無くなり、

DISTDIR="/usr/portage/distfiles"
PKGDIR="/usr/portage/packages"

は残ると思われる。

GentooでのCPU機能対応が USE から CPU_FLAGS_X86 に替わった

eselect news で既報の通り、CPU 機能の指定が、USE フラグから CPU_FLAGS_X86 に移行をし始めている。 具体的には x86 (x86_32) か amd64 (x86_64) アーキテクチャのときに対応が必要だ

例えば USE="mmx mmxext sse sse2 sse3" は CPU_FLAGS_X86="mmx mmxext sse sse2 sse3" になる。 通常は /etc/make.conf に書く

但し重要なこととして、今は過渡期であるため、USE フラグでの指定も当面は残すことを要する(一年位か、必要なパッケージが全て移行済になるまで)。

利用可能なCPU機能は cat /proc/cpuinfo で調べられることは既に良く知られているが、 利用可能なCPU_FLAGS_X86を直截的に表示するヘルパスクリプトが既に出されているので、emerge すれば良い ( app-portage/cpuinfo2cpuflags )。これは簡単なPythonスクリプトだ

なおこの事に関連して先日から、移行ラッシュが始まっており、フラグ変更に伴う再ビルドが多数要求されている

wjn's repos' info.

  Japenese , English