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などからの入力を扱うことが可能となる。

参考にしたサイト

ALSA の設定ファイル .asoundrc の解説(和訳) - Linux 初心者による Wiki*