以下はkernel-2.6.30、alsa-1.0.20系、64bit環境、ICH8 HD Audio Controller(ThinkPad) 前提の話。
MIDI機器接続のためにJACKを入れたものの、そのままでは不具合があることがわかり、その他の音周りもそのままではどうにもならなくなったので整備しなおし。
/etc/pulse/default.paに、
load-module module-jack-sink
load-module module-jack-source
の記述を入れておいてpulseaudioを起動すると、jackdが自動的に起動しサウンドサーバとして動き出すわけであるが、これでいくと10分ほど経ったところで100%の確率でpulseaudioがjackdを殺し、そして自分も死ぬ。
まったくもって使えない。
pulseaudioがstableでもgitのcurrentバージョンでも同じ。
jack1でもjack2(jackdmp)でも同じ。
jackdだけだと落ちないのでpulseaudioの問題か、もしくはjackdがどこか頑固なのかもしれない。
jack1にするかjack2にするかについては色々やってみた末、jack1を使うに至る。
ところで、jackdを先に手動で起動しておいて上記のdefault.paの記述は消し、pactlを使って
$ /usr/bin/jackd -T -u -dalsa -r48000 -p512 -n3 -Xraw -s &
$ pactl load-module module-jack-sink
$ pactl load-module module-jack-source
などと後からpulseaudioのjackモジュールを手動で読み込ませるとなぜか問題なしに動く。
というわけでしばらくはこの体制で使うことに。
今のところMIDI以外のアプリの音声入出力は、
aplay で音を出すとき→ | pulse (alsa経由のjackだと音のケツがブツ切れてしまう) |
VirtualBox→ | pulse (alsaではなぜか音が出ないのでほぼ決め打ち) |
ブラウザのFlashプラグイン→ | pulse(ほぼ決め打ち) |
aMSNの通話→ | たぶんalsa経由のjack。
未検証 |
Skype→ | マイク/出力共にalsa経由のjack |
Mplayer→ | jack |
Wine(主にディアブロ)→
| jack
|
という風。
てんでバラバラであるが、これで一応全部が多重再生/入力される。
ちなみにSkypeは32bitアプリ故、jackを認識させるためにはjack周りのライブラリの32bit版を用意する必要がある。
64bit版を出してくれりゃいいのだがその気配はなし。
そういえばWineも32bitなので同様。

こうして見ると、JACKはよくできとる。