PulseAudioは、かつてPolypAudioとして知られていた、ネットワーク機能を持つ
クロスプラットフォーム対応のサウンドサーバープロジェクトです。このプロジェクトは、
Enlightened Sound Daemon(ESD)の後継となることを目指しています。
特徴
PulseAudioは、Windowsや
POSIX互換システム(主に
Linux)で動作します。その主な特徴は以下の通りです。
アプリケーションごとのボリュームコントロール: 各アプリケーションの音量を個別に調整できます。
拡張プラグイン構造: モジュールをロードすることで機能を追加できる、柔軟なプラグイン構造を備えています。
複数のオーディオソースとシンク: 複数の入力ソースと出力先を同時に扱えます。
遅延量の測定サポート: オーディオ処理の遅延を正確に測定できます。
ゼロコピーメモリアーキテクチャ: プロセッサリソースを効率的に使用するための技術です。
出力デバイスの動的変更: アプリケーションが音声再生中でも、出力デバイスを切り替えられます。アプリケーションは、この変更を別途処理する必要はありません。
スクリプト処理: コマンドラインインターフェースによるスクリプト処理をサポートしています。
設定可能なサウンドデーモン: コマンドラインから設定を変更できるサウンドデーモンとして動作します。
サンプリングレート変換: サンプリングレート変換と再サンプリングを内蔵しています。
サウンドカードの統合: 複数のサウンドカードを一つにまとめることができます。
再生ストリームの同期: 複数の再生ストリームを同期できます。
Bluetoothオーディオデバイスの検出:
Bluetoothオーディオデバイスを動的に検出します。
アプリケーションとの関係
PulseAudioは、バックグラウンドで動作するサウンドサーバーであり、一つ以上の音声入力(プロセスや録音デバイスなど)からデータを受け取り、一つ以上の音声出力(サウンドカードやネットワーク上のPulseAudioサーバー、他のプロセスなど)に送ります。
PulseAudioの主な目標の一つは、従来のOSS(Open Sound System)を利用するアプリケーションのようにハードウェアに直接アクセスするのではなく、全ての音声ストリームをPulseAudio経由に集約することです。この目的を達成するために、aRtsやESDといった他のオーディオシステムを利用するアプリケーションに対して、アダプターを提供しています。
Linux環境では、通常、PulseAudioが提供する仮想デバイスをALSA(Advanced
Linux Sound Architecture)が使用するように設定されています。これにより、ALSAを利用するアプリケーションは、最終的にPulseAudioにデータを送信し、PulseAudioからALSAを通じてサウンドカードにデータが送られます。
また、PulseAudioに直接対応しようとするアプリケーションに対しては、ESDアプリケーション向けの旧来のインターフェースだけでなく、ESDを置き換えるネイティブなインターフェースも提供しています。
さらに、OSSアプリケーションに対しては、padspユーティリティを提供しています。これにより、/dev/dspなどのデバイスを置き換えた場合でも、アプリケーション側からは排他的にサウンドカードを制御しているように見えますが、実際の出力はPulseAudio経由で行われます。
PulseAudioは、ライブラリの一部がLGPL(GNU Lesser General Public License)で、サーバー自体はGPL(GNU General Public License)で
ライセンスされています。
関連項目
ALSA (Advanced Linux Sound Architecture): Linuxカーネルにおけるサウンドサブシステム
JACK (JACK Audio Connection Kit): プロフェッショナルなオーディオ処理向けのサウンドサーバー
OSS (Open Sound System): Linuxカーネルにおける古いサウンドサブシステム
PipeWire: オーディオ、ビデオ、ストリームを扱うための次世代マルチメディアサーバー