PulseAudioの各種設定ファイルと設定例

Last modified: 2021-10-12

設定ファイル

PulseAudioの挙動を制御する幾つかの設定ファイルがある。

各設定ファイルの名前と説明

設定ファイル名 説明と設定内容 manページ名
default.pa pulseaudioコマンド用の命令を記述するスクリプト: オーディオドライバ選択,追加モジュール読み込みなど default.pa
daemon.conf デーモン詳細設定: リアルタイム優先度とnice値,オーディオの形式・周波数・チャンネル数など pulse-daemon.conf
client.conf PulseAudioを使用するクライアント用詳細設定: デーモン自動実行の指定など pulse-client.conf

default.paに関しては、pulseaudioコマンド実行時の-Fオプションにより別ファイルを読み込ませることも可能で、実際には、default.paを読み込ませないためのオプション-nと同時にpulseaudio -nF /path/to/script.paの形で指定する。

システム全体用設定ファイルとユーザ別設定ファイルの探索ディレクトリ

各設定ファイルは、ユーザ別設定ファイルがあればそれが読み込まれ、なければシステム全体用設定ファイルが用いられる。

どちらのファイルも書き方は同じで、ユーザ別設定ファイルはシステム全体用設定ファイルをコピーして一部を編集する形で作るのがよい。

システム全体用 ユーザ別
/etc/pulse/ ${XDG_CONFIG_HOME}/pulse/(環境変数XDG_CONFIG_HOME未定義時は[ホームディレクトリ]/.config/pulse/)

PulseAudioの初期のバージョンではユーザ別設定ファイルは[ホームディレクトリ]/.pulse/以下を参照していたが、その後変わっている。

設定例

default.pa

出力先の手動設定

基本的にはmodule-udev-detect1などによりサウンドデバイスが自動検出・設定されるのだが、運用上の理由により手動でサウンドデバイスを指定したいことがある。

ALSA準拠ドライバで動くサウンドデバイスであればmodule-alsa-sink(出力先)やmodule-alsa-source(入力元)で指定する。名前部分は/proc/asound/cardsの角括弧内にあるものを用いるか、デバイス番号で指定する。

このとき、自動検出用のモジュールの読み込み部分はコメントアウトする。

[一部]ファイル名:default.pa
### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
load-module module-alsa-sink device=hw:MySoundCardName
load-module module-alsa-source device=hw:MySoundCardName
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
### Use the static hardware detection module (for systems that lack udev support)
#load-module module-detect
#.endif

過去、module-alsa-sinkmodule-alsa-sourcedevice=引数なしで指定してALSAのdmixdsnoop経由で出力する使い方をしていた時期があるが、安定はせずに現状メリットもそれほどないため、おすすめはしない。

また、module-jack-sinkmodule-jack-sourceを読み込む記述をこのファイルに記述してJACK Audio Connection Kitのクライアントとして動かす設定を過去に使用していたこともあるが、その後のD-Bus対応により、本ファイルのカスタマイズは不要となっている。2

PulseAudioのJACKモジュールは別パッケージになっていることがあるため、使用するには必要なパッケージのインストールを忘れないようにする。Debian/Ubuntuではpulseaudio-module-jackを入れる。

ノイズが入るハードウェアでの不具合回避

既定の設定では、サウンドデバイスによってはノイズが入ることがあるのだが、tsched=0指定をモジュールに対して行うことで改善される場合がある。

daemon.conf

以下は設定例。ここのリアルタイム優先度やnice値は、/etc/secutity/limits.confなどの設定とユーザ・グループの設定が適切に行われている上で、適切な範囲の値を指定しないとPulseAudioがエラーを出すので注意。

[一部]ファイル名:daemon.conf
realtime-scheduling = yes
realtime-priority = 90

nice-level = -11

default-sample-format = s16le
default-sample-rate = 44100
alternate-sample-rate = 48000
default-sample-channels = 2

設定値realtime-priorityに関して、pulse-daemon.confのmanページによると、JACK Audio Connection Kitを同時に使用している場合、JACKデーモンのリアルタイム優先度3よりは幾らか低い値にするのがよいらしい。既定値は5(90は高すぎる?)。

nice-levelではデーモンのnice値を指定する。既定値は-11

default-sample-channelsの値はオーディオ出力のハードウェア環境によって変更する。既定値は2

resample-methodはサンプリングレート変換に使用される方式の名前で、speex-float-1などの方式は低負荷だが遅延が長くなりうるとされる。方式名の一覧は同manページにある。

default-sample-ratealternate-sample-rateを高くしすぎるとCPU負荷が大幅に増えることがある。特に96kHz以上にしたい場合は変更後にCPU使用率が増えすぎていないかチェックするとよい。

client.conf

PulseAudioが統合されているディストリにおいては、PulseAudioのデーモンが自動的に起動する上にpulseaudio -kを実行して終了させてもすぐに自動で起動してしまう。

この挙動で都合が悪い場合、autospawn = noを記述することで自動的に起動しないようにできる。

[一部]ファイル名:client.conf
autospawn = no

この記述をした場合はpulseaudio -Dを実行するなどして手動で起動してpulseaudio -kで終了させることになる。

  • 使用したバージョン
    • PulseAudio 0.9.10(0.9.10-r51), 14.2

  1. 記事公開時点ではmodule-hal-detectが使われていた ↩︎

  2. 最初のPulseAudioの起動をデバイス自動検出などで直接サウンドデバイスを用いるようにして行った後でJACKデーモンをD-Busを用いて起動することで、自動的にサウンドデバイスはJACKの終了までJACK側のものになり、PulseAudioについても前述のモジュール群を自動読み込みさせることでJACK動作中も音の入出力ができ、両デーモンが切り替えも含めてうまく共存可能になっている ↩︎

  3. 既定値は10(-Pオプションの指定値は0)・最大99(-Pオプションの指定値は89)まで ↩︎