・Plamo-6.1でALSA
最近組んだHaswell世代のCore i3マシン、ふと気づくとニコニコ動画で音が出ない。
YouTubeだと問題ないし、smplayerとかamarokといったメディアプレイヤーも問題ないんで、なぜだろう、、としばし悩んだけれど、結論としてはsmplayerやFirefox、amarokといったアプリはpulseaudioに対応しているけれど、ニコニコ動画が依存しているFlashplayerのLinux版(libflash.so)はALSAのみの対応で、直截ALSAに出力するデータが再生ができてない模様。
あれこれ調べたところ、オンボードなサウンドチップを操作するsnd-hda-intelがデフォルトではHDMIの側を向いていて、pulse audioならば2番目のアナログオーディオの方も使えるものの、ALSA直截だと(デフォルト以外の)アナログオーディオは操作できないのが原因らしい。
snd-hda-intelモジュールはオプション指定でデフォルトに使う出力先を指定できるので、/etc/modprobe.d/plamo.default にこんな設定を追加してやればALSAからも直截出力できるようになった。
options snd-hda-intel id=PCH index=1
この指定を追加したら snd-hda-intel モジュールがALSAからの出力も音声化できるようになったものの、ALSAを使っている時はALSAのみでpulse audioの出力は受けつけず、pulse audio を使っている時はALSAの出力はブロックされる。
まぁ、厩戸皇子でもないから、音声出力はどれか一つのアプリだけ、でも構わないんだけれど、以前は複数の入力を同時に再生できてたので、何とかならないかなぁ、、と調べてみたら、~/.asoundrc にこういう設定を追加すればいいらしい。
pcm.dmixer { type dmix ipc_key 1024 ipc_key_add_uid 0 ipc_perm 0660 } pcm.dsp { type plug slave.pcm "dmix" }
設定の意味は理解できてないんだけれど、dmixというのはALSAが提供しているDirect Mixing用モジュールで、これを使えば複数のオーディオ入力をソフトウェア的にミキシングできるらしい。
とりあえず、これらの設定を追加することで、ニコニコ動画のようなALSAの出力と、smplayerのようなpulse audioの出力を同時に再生できるようになったので、参考のために晒しておく。