blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

PulseAudioとJackを同時に利用する

いきさつ

UbuntuでDTMをやろうと思ってるんですが、 MIDIの音が出てくるまでのタイムラグ(=latency)がなかなかあり、 それを改善するために定番のJackサーバを導入して解決しました。

しかし、すべてのアプリがJackサーバをバックエンドとして使えるわけではないので、さぁ大変。 音楽プレーヤー(=Rhythmbox)から音が出ない! これは死活問題。

PulseAudio(標準)とJackというバックエンドは同時に同じカードへアクセスできないので、 PulseAudioのバックエンドとしてJackを使う、つまり直列に繋ぐということで解決できるみたいです。

準備

主にこのページを参考にしました。 - http://trac.jackaudio.org/wiki/WalkThrough/User/PulseOnJack

pulseaudio-module-jackをインストール

$ sudo apt-get install pulseaudio-module-jack

ALSAの出力をPulseAudioへリダイレクト

/etc/asound.conf または $HOME/.asoundrc へ以下を記述。

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

PulseAudioをJackへリダイレクト

普段からjackdを使用するなら、 ~/.pulse/default.pa に以下を記述。

load-module module-native-protocol-unix
load-module module-jack-sink channels=2
load-module module-jack-source channels=2
load-module module-null-sink
load-module module-stream-restore
load-module module-rescue-streams
load-module module-always-sink
load-module module-suspend-on-idle
set-default-sink jack_out
set-default-source jack_in

qjackctrlをjackdの起動のために使っているならば、以下のコマンドを打つ。

$ pactl load-module module-jack-sink channels=2;
$ pactl load-module module-jack-source channels=2;
$ pacmd set-default-sink jack_out

Ubuntuならば以下のコマンドのみで良い。

$ pacmd set-default-sink jack_out

次の設定は必須ではないが ~/.pulse/daemon.conf に記述。

default-sample-format = float32le
default-sample-rate = 48000
realtime-scheduling = yes
exit-idle-time = -1

参考URL