PulseAudio導入
Linuxのサウンドデバイスは同時に複数のアプリケーションを扱うことが出来ず、xmmsで音楽を聞きながらpidgin等のアラートを鳴らしたりすることが出来ない。
そこでesoundやartsなどの、デバイスの仲介役を立ててそれらに各アプリケーションが音を渡すようにしていた。
その仲介役のなかで最近流行なのがPulseAudio
かなり多くのアプリケーションやディストリビューションが対応、移行していっている。flashplayer10betaも対応したようだ。
PulseAudioに注目すべき理由(とPulseAudioの始め方)
しかしまだBLFSに記述が無いので自分でやってみる。
準備
依存
liboil
liboilは最適化オプションつけたらpulseaudio起動時にこけるので注意
libsndfile
1.0.17だとFLAC関連のエラーがでる。1.0.19をパッチ無しでコンパイルすると通る。
libsamplerate
libatomic_ops-1.2
speex
gdbm
make
pulseaudio-0.9.14.tar.gzを展開しcd
$ ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc && make -j4
(略)
pulseaudio-dumpmodules.o: In function `pa_dump_modules':
dumpmodules.c:(.text+0x2eb): undefined reference to `lt__PROGRAM__LTX_preloaded_symbols'
dumpmodules.c:(.text+0x2f0): undefined reference to `lt__PROGRAM__LTX_preloaded_symbols'
pulseaudio-dumpmodules.o: In function `callback':
dumpmodules.c:(.text+0x464): undefined reference to `lt__PROGRAM__LTX_preloaded_symbols'
dumpmodules.c:(.text+0x46e): undefined reference to `lt__PROGRAM__LTX_preloaded_symbols'
pulseaudio-main.o: In function `main':
main.c:(.text+0x611): undefined reference to `lt__PROGRAM__LTX_preloaded_symbols'
collect2: ld returned 1 exit status
make[3]: *** [pulseaudio] エラー 1
libtoolが新しすぎるらしい(2.2.6)。clfs svnで組んだせい。これを入れてやり直した。
Libtool-1.5.26
http://ftp.gnu.org/gnu/libtool/libtool-1.5.26.tar.gz
設定
まず、alsa-pluginsを再コンパイルする必要がある。
ALSA Plugins
追加group/user
追加でユーザとグループが必要なようなんだがオフィシャルで全然解説されていない。仕方ないので http://packages.debian.org/lenny/pulseaudio からdebianのインストーラの動きをパクる。
[pulseaudio_0.9.10-3.diff.gz]を落として展開。 pulseaudio.postinstを読むと、
if ! getent passwd pulse >/dev/null; then adduser --disabled-password --quiet --system \ --home /var/run/pulse --no-create-home\ --gecos "PulseAudio daemon" --group pulse adduser --quiet pulse audio fi if ! getent group pulse-access >/dev/null; then addgroup --quiet --system pulse-access fi if ! getent group pulse-rt >/dev/null; then addgroup --quiet --system pulse-rt fi
というのがある。debianのadduser,addgroupのオプションの意味は http://www.annodex.net/cgi-bin/man/man2html?8+adduser を見ながら解読。
lfs流にuseradd,groupaddで同じことをやってみる。
# groupadd -g 71 pulse
# groupadd -g 72 pulse-access
# groupadd -g 73 pulse-rt
# useradd -d /var/run/pulse -c "PulseAudio Daemon" -g pulse -G audio -s /bin/false -u 71 pulse
そしたらpulse-rtに自分のユーザ名を追加しておく。
もしかしたらこの辺の設定は全然しなくても動くのかもしれないけど公式に解説が無いので知らない。
PerfectSetup
以下のページの通りにやってみる。
PerfectSetup
#インストール方法も書かないでなにがperfectなんだか…
#ちなみに、tar内にINSTALLが存在しない上にREADMEはウェブサイトへのリンクしかない不親切さだった
とりあえず今回はシステム全体に適用せず、ユーザ権限で動かしてみるので .asoundrcに以下を記述
pcm.pulse { type pulse } ctl.pulse { type pulse }
$ pulseaudio -D
.xsession等に書いておけば良いかもしれない。
$ aplay -Dpulse ~/hogehoge.wav
鳴った。
.asoundrcに以下を追加
pcm.!default { type pulse } ctl.!default { type pulse }
/etc/pulse/default.paに以下を追加
load-module module-alsa-sink device=hw:0 load-module module-alsa-source device=hw:0
esound対策はとりあえずしない。今後はesoundの代替になるんじゃない?
xmms
出力先をpulseaudioにするにはxmms-pulseが必要。
インストールしたらGUIの設定画面からPulseAudioを選択すればok
その他
flashplayer10は特に設定不要らしい。他のは順次PerfectSetupのページを見ながらやっていく。GUIの音量調整ツールはpavucontrolが良い。WindowsVistaのようにアプリケーションごとの音量設定を表示,調整できる。なんとfirefox中のflashコンテンツの調整も出来た。もっとも、ページを閉じると音量表示も消えてしまうが。