ALSA/PulseAudio/JACKのメモ
しばらく触っていないとすっかり忘れてしまうのがオーディオ周りのALSA, PulseAudio, JACKの設定など。
まず最初に ~/.config/pulse/client.conf に autospawn = no を書き、PulseAudioの自動起動を無効にする。 (この設定はログインしなおす必要があったと思う。killでもいけたかも。)
追記: pulseaudio -k で kill できる。
次にALSAのデフォルトを無音のループバックにして、デバイスをALSAに占有されないようにする。
デバイス一覧は aplay -l で表示できる。 alsamixergui -c 1 のようにカード番号を指定してミキサーを表示する。
/usr/share/sounds あたりに .ogg ファイルがあるので、これでいろいろテストできる。 特にCD品質な desktop-login.ogg が扱いやすい。これを sox で.wav に変換する。
$ sox /usr/share/sounds/ubuntu/stereo/desktop-login.ogg /tmp/desktop-login.wav
なお、CD品質に変換するには -b 16 -c 2 と rate 44100 を指定すればよい。
$ sox bell.ogg -b 16 -c 2 /tmp/bell.wav rate 44100
まずは hw を直接指定して aplay で音を確認する。事前にでかい音が出ないように alsamixergui で調整しておく。
$ aplay -D hw:1,0 /tmp/desktop-login.wav
次にこのデバイスに ~/.asoundrc で名前を付ける。とりあえず内蔵カードなので pc という名前にしておく。
pcm.pc {
type hw
card 1
}
動作確認。ログインしなおしたりする必要はない。
$ aplay -D pc /tmp/desktop-login.wav
あとは !default をループバックデバイスにする。rateやipc_keyは状況に応じて変更する。 詳しくは覚えていないが、今は以下のようになっている。
pcm.!default { type plug slave { pcm "ploop" #rate 44100 #rate 8000 } } pcm.cloop { type dsnoop ipc_key 18485 slave.pcm "hw:Loopback,1,0" } pcm.ploop { type dmix ipc_key 18486 slave.pcm "hw:Loopback,0,0" }
JACKとの連携用の設定もしておく。これもあまり覚えていないが、以下のようになっていた。
pcm.jdefault { type plug slave { pcm "jack" #rate 44100 #rate 8000 } } pcm.alsajack { type jack playback_ports { #0 system:playback_1 #1 system:playback_2 0 "jack_mixer:alsa L" 1 "jack_mixer:alsa R" } #capture_ports { #0 system:capture_1 #1 system:capture_2 #} } pcm.jack { type plug slave { pcm "alsajack" } }
JACKからこのループバックデバイスが見えたら、JACKに対応していないアプリ、例えばChromeなどからの入力を扱うことが可能となる。
参考にしたサイト