[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:42996] Re: サウンドが鳴る仕組みについて



武藤@Debianぷろじぇくとです。

At Sat, 12 Feb 2005 20:15:59 +0900,
m.nishio wrote:
> 「サウンドはどのような仕組みで鳴るのか」について理解したく思います。
> (環境)
> 1. Sarge
> 2. KDE3.3
> 私が、サウンド関連で聞いたことのある用語等は以下の通りです。
> 1.サウンドカード
> 2.サウンドサーバ
> 3.サウンドドライバ
> 4.OSS
> 5.alsa
> 6.aRTS
> 上記の用語の「相互関連」につきましてもご解説頂ければありがたいです。
> (追記)
> 「linuxでどのような仕組みでサウンドが鳴るのか」という根本的で重要な質問
> です。
> 従いまして、「ゼロ」の状態での質問の仕方をさせて頂きます。
> かなりまどろっこしい印象だと思いますが、
> 中途半端な態度で質問させて頂くのは正しくないと考えますので、
> どうかお許しください。

自分で調べたり考えたりしないと脳細胞が退化しますよ。:-)

おおざっぱに書くと

      ハードウェアレイヤ    カーネルレイヤ           アプリケーションレイヤ
サウンドカード/チップ <-> サウンドデバイスドライバ <-> サウンドマネージャ <-> サウンドを利用するアプリケーション
                                                   <-> サウンドを利用するアプリケーション

かなぁ。このあたりはLinux特有じゃなくてだいたいどのOSでも構造は似たよ
うなものでしょう。
とりあえず簡素化するためにDSP(デジタルサウンドプロセッシング)経由の
出力についてだけ考えるとして。

サウンドカード/チップ: PCIやISA、USBといったバスでマシンとつながってい
  るハードウェア自身。マシンから送られたデジタルデータを再生する。許容
  できるデータの形式の範囲は狭い。

サウンドデバイスドライバ: カーネル組み込みまたはモジュールとして実現さ
  れているデバイスドライバ。DSPは/dev/dspというデバイスファイル名とし
  て通常表される。OSS、ALSAは互いに排他的な別実装のサウンドデバイスド
  ライバ(ALSAにはOSSのエミュレーションが用意されている)。デバイスドラ
  イバでできることは実装によりけりだけど、サウンドカードを認識して、
  /dev/dspに送られたデータをサウンドカードに渡す、という役目は共通。
  音量を調整するミキサーデバイス(/dev/mixer)もたいていは提供する(USBオー
  ディオでは存在しないこともある)。

サウンドマネージャ: アプリケーション層で動くもので、aRts(KDE向け)や
  eSound(GNOME向け)などがこれに該当する。昔の低機能なサウンドカード+デ
  バイスドライバでは/dev/dspに一度に1つしかデータを流せない、つまり曲
  を流してる間に効果音を鳴らすといったことができなかったので、ソフトウェ
  ア的にこの重複処理をやってあげる。いろいろなサウンド形式をデバイスに
  扱いやすいような標準形式に変換したりすることもある。
  /dev/dspを使いたい各アプリケーションは、このサウンドマネージャを通し
  て送ってやれば、勝手に重複処理をしてくれる、と。
  逆に言えば、このサウンドマネージャが/dev/dspを握っちゃっているので、
  ヘボいサウンドカード+サウンドデバイスドライバの場合で、サウンドマネージャ
  を特に使うように考えられていないアプリケーションでは、artsdspや
  esddspのようなラッパーを併用して、/dev/dspへのアクセスを強制的にサウ
  ンドマネージャを使うようにする必要がある。

サウンドを利用するアプリケーション: ミキサーアプリケーションとかMP3プ
  レイヤーとかKDEスイートとかGNOMEスイートとか。たとえばMP3プレイヤー
  の場合、MP3を直接サウンドデバイスやサウンドマネージャに投げても再生で
  きないので、MP3プレイヤーがMP3ファイルを標準形式に変換して、サウンドデ
  バイスなりサウンドマネージャなりに投げるようになっている。

#適当に書いているので間違っているかもしれません :-)

ちょっと古いですが、
http://www.linux.or.jp/JF/JFdocs/Sound-HOWTO.html
http://www.linux.or.jp/JF/JFdocs/Sound-Playing-HOWTO.html
あたりも見てみるとよいでしょう。
-- 
武藤 健志@ kmuto @ kmuto.jp
           Debian/JPプロジェクト   (kmuto@debian.org, kmuto@debian.or.jp)
           株式会社トップスタジオ  (kmuto@xxxxxxxxxxxxxxx)
URI: http://kmuto.jp/ (Debianな話題など)