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/
以下を参照していたが、その後変わっている。
基本的にはmodule-udev-detect
1などによりサウンドデバイスが自動検出・設定されるのだが、運用上の理由により手動でサウンドデバイスを指定したいことがある。
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-sink
やmodule-alsa-source
をdevice=
引数なしで指定してALSAのdmix
とdsnoop
経由で出力する使い方をしていた時期があるが、安定はせずに現状メリットもそれほどないため、おすすめはしない。
また、module-jack-sink
やmodule-jack-source
を読み込む記述をこのファイルに記述してJACK Audio Connection Kitのクライアントとして動かす設定を過去に使用していたこともあるが、その後のD-Bus対応により、本ファイルのカスタマイズは不要となっている。2
PulseAudioのJACKモジュールは別パッケージになっていることがあるため、使用するには必要なパッケージのインストールを忘れないようにする。Debian/Ubuntuではpulseaudio-module-jack
を入れる。
既定の設定では、サウンドデバイスによってはノイズが入ることがあるのだが、tsched=0
指定をモジュールに対して行うことで改善される場合がある。
以下は設定例。ここのリアルタイム優先度や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-rate
やalternate-sample-rate
を高くしすぎるとCPU負荷が大幅に増えることがある。特に96kHz以上にしたい場合は変更後にCPU使用率が増えすぎていないかチェックするとよい。
PulseAudioが統合されているディストリにおいては、PulseAudioのデーモンが自動的に起動する上にpulseaudio -k
を実行して終了させてもすぐに自動で起動してしまう。
この挙動で都合が悪い場合、autospawn = no
を記述することで自動的に起動しないようにできる。
client.conf
autospawn = no
この記述をした場合はpulseaudio -D
を実行するなどして手動で起動してpulseaudio -k
で終了させることになる。