Linuxサウンドシステムの歴史

Linuxのサウンド関係が複雑なので、いままで調べたものプラス自分の想像で歴史的に記述。

サウンドがなかった時代

ビープ音しかならなかった。

サウンドハードデバイスができて来た

Sound Blaster 16来た。アプリはこれを直接叩いた。他のハードもできて来たが最初はSB16エミュレーション機能をハードがもっていた。

OSSできた

SB16的なインターフェースにまとまってきたので、これをOSSとしてまとめた。これで統一的なインターフェースができた。ソフト開発者はOSSを使えばいいようになった。/dev/dspに音データを流し込む。

ミキシングはハードでやっていた。でもソフトでやるほうがいいじゃんてことになってきた。

aRtsやESDできた

ハードがミキシングしなくなったので、ソフトでやることにした。aRtsとESDができた。どちらも新しいサウンドシステムを提供する。ここでミキシングしてOSSに送ることにした。アプリケーションはこれに合わせて書き換えられた。

これによって2つのアプリが同時に音を鳴らせるようになった。(いままでは1つのアプリが同時にならせるだけだった?)

でもaRtsとESDの両方同時に鳴らすことはできなかった。どうじにOSSに送ることはできない。ちなみにaRtsは主にKDEで使われ、ESDはGnomeで使われた。

この時点でいろいろなアプリが出てきてしまった。OSSに直で送るアプリ、aRtsやESDをつかうアプリ、OSSに直で送るやつがいるとaRtsやESDが鳴らせなくなる。

SDLやlibaoできた

そこで、OSS、aRts、ESDをラップするライブラリSDLやlibaoができた。

ALSAできた

ところがOSSのライセンスが変わってしまった。もうOSSは止めてALSAを作ることにした。ALSAならMIDIも流し込める。ソフトミキシングもできる。OSSのためにOSSエミュレーションもできるようにした。

ところがALSAは難しく、OSSエミュレーションがよく動くのでアプリはOSSで書かれた。ただ問題があってOSSエミュレーションはソフトミキシングができなかった。

PulseAudioできた

ごちゃごちゃしてきて訳がわからなくなったが結局2つのアプリで同時に鳴らせないのでPulseAudioでやることにした。ALSAのデータはPulseAudioに送ることにした。そこでミキシングして出せばいいようにした。

しかし現在のfedoraなどではOSS直のアプリはPulseAudioには行かないように設定されている。padspコマンドを使えば、OSS直アプリのOSS出力をPulseAudioに送れるようになっている。

aRtsやESDがどうなっているのかは調べてない。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)