カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

DirectSoundについて

DirectXはWindows環境のマルチメディア機能を強化するために導入されたAPI群です。その中でDirectSoundはサウンドを担当するAPIセットです。

DirectSoundは、MME(Multi Media Extension)と同様、低レベルのAPIに属します。つまり基本的な操作を行うためのAPIセットです。コーディングしだいで非常に複雑な、あるいは特殊仕様のアプリケーションも開発可能です。その反面、簡単なアプリケーションを作成する場合でも、ある程度のコーディング量を必要とします。

一方、高レベルAPIにはメディアプレーヤやMCIコマンド、ユニークなAPIとしてDirectShowなどがあります。それぞれ守備範囲が異なり、開発目的に応じて使い分けます。DirectShowやメディアプレーヤについては、別のセクションを設けていますのでそちらを参照して下さい。

DirectSoundの位置付け

現在(執筆時点で2011年)、DirectSoundからWasapiなど次世代APIへの移行時期にあたります。WindowsXPではWasapiはサポートされないため、しばらくの間は古いAPIと新しいAPIが共存すると思われます。

古いOS

現在では、Windows98やWindowsMeなど古いOSを支援する必要性はほとんど無くなりました。これらのOSは、別途DirectXをインストールすることで問題なくDirectSoundを利用することができます。しかし利便性や安定性などOSとの相性を考慮して、DirectSoundよりはMME(Multi Media Extension)の利用をお勧めします。Windows95については、DirectX 8.1以降のバージョンは支援されないのでMMEを用いることになります。

Windows2000以降のOS

Windows2000以降のOSではDirectSoundの動作に何の問題もありません。最もDirectSoundと相性が良いOSグループです。

Windows Vista以降のOS

マイクロソフトは新規で開発するアプリケーションについて、新しいAPIを使うよう推奨しています。WindowsVista・Windows7では、DirectSoundの代わりにWasapiで、DirectShowの代わりにMedia Foundationを用いると良いでしょう。もちろん新しいOSでもDirectSoundは支援されるため、開発済みのアプリケーションをWindows7に移植する場合など、あえてWasapiに変更する必要はありません。

マネージvs.アンマネージ

OSの.NETへの移行に伴って、DirectSoundもマネージ環境で動作するバージョンがリリースされました。しかし、DirectXの開発が中止になったため、マネージ環境のDirectSoundは、ステレオ(2チャンネル)しか支援していません。

DirectSoundにはマネージ型とアンマネージ型、2つのバージョンが存在します。ユーザーは利用環境に合わせてどちらかを選ぶことができます。双方ともウェーブデータを扱う作業手順は同じです。しかしマネージ型はC#を用いてスマートに書けるため、コードの様子はかなり異なったものになっています。

筆者の印象では、マネージ型の方がより洗練されコーディング量も少なく美しいコードが書けます。

ステレオの範囲であれば、双方とも同じ仕様のアプリケーションを作成できます。しかし、マネージ型は、多チャンネルフォーマットを支援しないため、サラウンドステレオを扱うことができません。

低レベルAPI

DirectSoundはサウンドデータをサウンドデバイスに転送する再生機能、そしてサウンドデバイスからサウンドデータを取得する録音機能しか持っていません。これはWAVE関連のMMEと同じ守備範囲です。

DirectSoundには高レベルAPIが支援しているようなサウンドファイルを扱う機能が含まれません。そのためDirectSoundでシステムを組む場合、以下の機能を別途準備する必要があります。

開発環境

VisualStudioでは、参照の追加ダイアログで利用するDLLを指定することができます。VisualStudio2008では、.NETタブにDirectX関連のバイナリーが表示され、「Microsoft.DirectX」と「Microsoft.DirectX.DirectSound」を追加することができます。しかし2010では、これらの選択肢が表示されません。これは、DirectSoundの代わりにWasapiを使って欲しいというマイクロソフトからのメッセージでしょう。

もちろんVisualStudio2010でもDirectSoundの開発は可能です。直接、参照タブから「Microsoft.DirectX.DirectSound」などのファイルを指定することで、バイナリーを追加することができます。

不具合への対応

DirectSoundにはいくつか不具合が存在し、音飛びやノイズなどが発生することが知られています。本技術文書ではこれらについて解説し併せて回避方法を示しています。本書で対策している不具合は以下の2点です。

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ