サウンドサーバは、オーディオデバイス(通常はサウンドカード)の使用とアクセスを管理するソフトウェアです。これは、バックグラウンドで動作し、複数のアプリケーションからの音声ストリームを統合し、オーディオ出力を制御する役割を担います。また、オーディオ
ストリーミングや音声再生を行う機器を指すこともあります。
OSにおけるサウンドサーバ
Unix系のオペレーティングシステムでは、サウンドサーバは異なるデータストリームをミキシングし、単一の統一された音声をオーディオ出力デバイスに送信します。このミキシング処理は、通常はソフトウェアによって行われますが、一部のサウンドカードではハードウェアによるミキシングもサポートされています。
サウンドスタックのレイヤー構造
サウンド処理は、以下のレイヤー構造で実行されます。
1.
アプリケーション (例: mp3プレイヤー、Webビデオなど)
2.
サウンドサーバ (例: aRts、ESD、JACK、
PulseAudioなど)
3.
サウンドサブシステム (例: OSS、ALSAなど)
4.
OSカーネル (例:
Linux、
Unixなど)
サウンドサーバ開発の経緯
サウンドサーバは、初期のサウンドシステムであるオープンサウンドシステム(OSS)の限界が認識された後に、
Unix系のOSで登場しました。OSSは基本的なサウンドインターフェースを提供していましたが、複数のストリームを同時に再生すること、複数のサウンドカードを管理すること、ネットワーク経由での音声
ストリーミングを行うことができませんでした。
サウンドサーバは、これらのOSSの制約を克服するために開発されました。サウンドサーバはデーモンとして実行され、異なるプログラムからのオーディオストリームをミキシングし、オーディオデバイスへ送信する機能を提供します。これにより、ユーザは共通のサウンド設定だけでなく、アプリケーションごとのサウンド設定をカスタマイズできるようになりました。
多様性と問題点
2012年時点では、複数のサウンドサーバが存在し、それぞれ異なる特性を持っていました。一部のサウンドサーバは短い待ち時間を重視し、別のものはデスクトップ環境での使いやすさを優先するなど、多様化が進みました。この多様化は、ユーザが特定のアプリケーションにとって重要な機能を選択できるという利点がある一方で、開発者には複数のサウンドサーバに対応する必要が生じるという課題ももたらしました。このような状況から、標準APIの開発が求められるようになりました。
主なサウンドサーバ一覧
aRts
Bergen Sound Server
Enlightened Sound Daemon
JACK
Network Audio System
PulseAudio
PipeWire
sndio
Icecast
SHOUTcast
参考文献
Introduction to Linux Audio
RFC: GNOME 2.0 Multimedia strategy