jackとpulseaudioを使い、マイク入力はrakarrackを使いつつ
line入力はarecordでラジオ録音に使うためのメモ
○前準備
apt-get install linux-lowlatency
apt-get install qjackctl jackd
apt-get install pulseaudio-module-jack
まず、物理的にスピーカ、マイク入力を司っているのはALSAである。
そしてpulseaudioがそのALSAを握っている。
ALSA(スピーカ) <== pulseaudio <== mplayerなど
line入力の方はarecordは直接ALSAを使うっぽい
ALSA(マイク) ==> arecordなど
○とりあえず、ALSAがpulseaudioに握られていてはjackが使えないのでunloadする。
pactl unload-module module-alsa-sink
pactl unload-module module-alsa-card
○qjackctlでjackdを開始する。
qjackctlの設定はドライバをalsaにして、以下のように設定。
・出力デバイスhw:0
・入力デバイスhw:0,2
入力デバイスの1つ目はline入力で、ラジオ録音に使うので、
jackとしては2つ目のマイク入力を使うようにする。
(arecord -Lで、hw:CARD=PCH,DEV=0と hw:CARD=PCH,DEV=2がある)
とりあえずjackが使われるようになるが、
このままだと、pulseaudioをぶった切ってjackをつなげただけなので、
jackが使える代わりに色んな音が鳴らなくなる。
ALSA(スピーカ) <== jack <== rakarrack
×<== pulseaudio
○pulseaudioでjackを使うようにする。
pulseaudioのjackモジュールをロード
pactl load-module module-jack-source channels=2
pactl load-module module-jack-sink
多分以下のような感じになる。
ALSA(スピーカ) <== jack <== rakarrack
↑<== pulseaudio(module-jack-sink) <== mplayerなど
ALSA(マイク入力) ==> jack ==> rakarrack
==> pulseaudio(module-jack-source) ==> 何につかわれるのやら?
とりあえずこれで、jack経由でpulseaudioを鳴らすことができる。
○rakarrack
jackも使えるようになったはずだが、
マイク入力に何かつないで、rakarrackを動かしてみても反応なし。
ここでしばらく悩んだけど、
ALSAのマイク入力がキャプチャモードになってないからということに気づいた。
alsamixerで、 CaptureとCapture 1があるが、Captureの方はラジオ録音に使うので、
Capture 1を録音に設定、 Input Source 1をマイク入力に設定する。
コマンドでやるなら amixer -- sset なんとかかんとか で行けるはず。
これで動いた。
○終わらせ方
1.qjackctlでjackdを終わらせる。
2.pulseaudioのjackモジュールをunload
pactl unload-module module-jack-sink
pactl unload-module module-jack-source
3.pulseaudioのダミーがロードされるのでunload
pactl unload-module module-null-sink
4.pulseaudioのalsaモジュールをload
pactl load-module module-alsa-card
pactl load-module module-alsa-sink
○結論
とりあえずは上記をやればいいっぽいので、
qjackctlに以下のように設定
・スタートアップ時にスクリプトを実行
pactl unload-module module-alsa-sink; pactl unload-module module-alsa-card
・スタートアップ後にスクリプトを実行
pactl load-module module-jack-source channels=2; pactl load-module module-jack-sink
・シャットダウン時にスクリプトを実行(追記: シャットダウン後じゃなくて前にやる。)
pactl unload-module module-jack-sink; pactl unload-module module-jack-source
・シャットダウン後にスクリプトを実行
pactl unload-module module-null-sink; pactl load-module module-alsa-card; pactl load-module module-alsa-sink
alsaのキャプチャは使わない場合はノイズがうるさいので、
使う時だけalsamixerでONにする。
・D-BUSインターフェース
jackを開始すると、jackdbusというのが走りっぱなしになるので、
jackを停止したら使わないようにしたい。
よって、qjackctlの設定:その他のD-Busインターフェースの有効化をやめる。
0 件のコメント:
コメントを投稿