DirectSound

DirectSoundはマイクロソフトが提供するDirectXのソフトウェアの一部品であり、Windowsで標準的に使われる音声入出力用の機能である。DirectSoundは、アプリケーションとサウンドカードとの間に直接的なインタフェースを提供し、アプリケーションが音や音楽を鳴らせるようにするものである。DirectSoundはオーディオデータをサウンドカードに渡す機能に加えて、録音や音をミキシングするのに必要な機能も数多く提供している。例えば、サウンドにエフェクト（リバーブやエコー、フランジングなど）を付加する機能や、再生速度を変化させるためのハードウェアで制御できるバッファや、3次元空間内で音の鳴っている位置を変化させる機能（3次元立体音響）、マイクロフォンやその他の入力機器から録音する機能や、録音中にエフェクトを付加するのを制御する機能などがある。

また、DirectSoundでは複数のアプリケーションがサウンドカードに同時にアクセスする便利な方法も提供している。この3次元空間的に音を鳴らすことができる機能によって、ゲームに新次元の楽しみをもたらす。またゲーム内でのイベントに即座に反応して、音を鳴らすスクリプトを変更する機能も提供している。すなわち、ゲーム内のアクションがヒートアップしてきたらそれにあわせて音楽のリズムも速くすることができる。

数年間の開発の後、のDirectSoundは非常に成熟したAPIを持ち、複数チャンネルを用いた再生や高精細な音を再生できる機能など、多くの役に立つ機能を提供している。DirectSoundはゲームに使われるように設計され、プロが使うオーディオアプリケーションでは今やこれらの様々な機能を利用している。

ASIOやWASAPI等と異なり、低遅延やビットパーフェクト（データが1bitたりとも変化しない入出力）は保証しないため、商業レベルでの音楽制作といった特殊な用途には不向きである。

 DirectSound3D 
DirectSound3D (DS3D) はWindowsでの標準3DオーディオとしてDirectXに追加されたもので、1996年、DirectX 3に導入された。

DirectSound3Dは、ソフトウェア開発者がそれぞれのオーディオカードメーカーに合わせたコードを書く代わりに、単一の標準化されたオーディオAPIを書くことで対応できるようにしている。

DirectX 5では、DirectSound3DはDirectSound3Dをアクセラレーションするサードパーティー製の3Dオーディオアルゴリズムを使う複数のサウンドカードを、マイクロソフトが用意した方法を用いて、扱うことができる能力を持つ。この機能を使えば3Dオーディオライブラリを分離する必要はなくなる。

DirectX 8ではさらに開発が進み、DirectSoundとDirectSound3D (DS3D) はと統合されてDirectX Audioと呼ばれるようになったDirectX 8.0 の紹介。

、DirectSound 3Dの3D音源は、エコー、リバーブ等の環境音を模倣するエフェクトと、リスナーの位置と音源 (モノラル) の位置関係を簡易に計算するライブラリが主体である。やっていることは、旧来、ステレオPCM音源のパンとボリュームを自前で調整することで、擬似的に音源の位置 (音像) を表現していたが、これをライブラリとして吸収しただけである。したがって、実際の空気中を伝播する音の物理そのものをシミュレートして計算しているわけではなく、遮蔽や反射などは考慮されていない。

 Windows OS でのサポート 
 Windows 95 

 Windows 2000/XP 

 Windows Vista/Windows 7 
Windows VistaはUniversal Audio Architecture (UAA) に基づいた完全に書き直されたオーディオスタックを特徴とする。オーディオスタックを再設計してアーキテクチャを変えた結果、DirectSoundからオーディオドライバへの直接のパスが存在しない形になった。DirectSoundとMMEのような他の従来APIはWASAPIインターフェイスを用いてエミュレーションされている。すなわち、DirectSoundはマイクロソフトのソフトウェアミキサ上でエミュレーションモードで動いている。エミュレータはハードウェア抽象化がされていないので、DirectSoundをアクセラレーションできるハードウェアはない。これはDirectSoundのアクセラレーションに依存しているハードウェアないしソフトウェアのパフォーマンスが以前より下がってしまうことを意味する。しかし、よりパワーのあるハードウェアを使えば、パフォーマンス上の問題はないと考えられる。ただし、DirectSound3Dを使ってハードウェア的に3Dオーディオエフェクトをかけることはできなくなっている［特集］Vista買うのはまだ早い！（3）ゲームサウンド編。

ASIOやOpenALのようなAPIは、Windows Vistaのアーキテクチャ変更による影響を受けないので、サウンドカードのドライバがこれらのAPIに対応すれば、サウンドデバイスのアクセラレーション機能を利用することができる。アプリケーションがこれらのアクセラレーション機能を使うには、DirectXやMMEを使わずにASIOやOpenALのAPIを使うようにプログラムを変更する必要がある。

WindowsにはもうひとつKernel StreamingというAPIがあり、ミキサを通らずにサウンドデバイスにアクセスできる。この方法でASIO4ALLというプロジェクトがASIO非対応のデバイスでASIOを使えるようにしている。

もうひとつの方法として、アプリケーションが使うオーディオスタックを差し替えて、OpenALを使わせてしまうという方法がある。この方法でCreative Labs社のCreative ALchemy Projectという技術がDirectSoundのアクセラレーションをサポートしている【4Gamer.net】［レビュー］Creative ALchemy。

 Windows 8 

 Windows CE 

DirectSoundはWindows CEのバージョン4.2までサポートされているが、5.0になってから削除された。Windows CE 6.0はDirectSoundをサポートしていない。代わりにWaveform Audio APIを使ってアプリケーションを書き直すことが薦められている。

 XAudio 
Xbox 360とWindowsを統合するために、マイクロソフトは、新しいアプリケーションをXAudioとXACTのようなXboxと同等なオーディオAPIに移行してもらうよう積極的に活動をしている。。XAudio2は、クロスプラットフォーム (WindowsとXbox) で共通に使える低レベルオーディオAPIであり、デジタル信号処理を最適に行うために設計されたXbox専用のAPIであるXAudio APIをさらに進化させたものである。XAudio2はWindows XPやWindows Vista、そしてXbox 360上で利用できる。Windows XPではDirectSoundを、Windows VistaではWASAPI (新しいオーディオスタック) を、そしてXboxではコンソールハードウェアレイヤーを使って実装されているコア オーディオの概要。XAudio2はXACTを通してハイレベルなオーサリング/再生ができ、X3DAudioライブラリを通して3D機能を提供している。XACTエンジンは高レベルオーディオライブラリであり、X3DAudioはWindowsとXboxの両方のプラットフォーム上で利用可能な、空間音響用ヘルパーライブラリである。

XAudio2はXACTのような高レベルオーディオAPIのために、信号処理を使って特別なエフェクトを行う。いくつかの機能を以下に列挙する。

 「声」から音データを分離する
 サブミキシング
 Multi-rate processing
 1音声毎のフィルタリング
 Programmable voices
 エフェクト処理、サンプルレート変換 (SRC)
 ソフトウェアDSP
 エンハンストサラウンドサウンド (マルチチャンネル) と明示的なマルチチャンネルpanning/mapping
 ネイティブな圧縮データをサポート
 Xbox 360上でのXMA
 Windows上でのADPCM
 その他拡張形式 (xWMAWindows と Xbox 360 の違いXAudio2 Versions - Win32 apps | Microsoft Learn)
 分離かつ置換可能なライブラリによる3Dオーディオの処理。XAudio2はマルチチャンネルスピーカーを扱い、X3DAudioライブラリはスピーカーボリュームと他の様々なパラメータを入力することで、出力とリスナーの座標を変形することができる。

なお、Windows 8用のソフトウェア開発キットであるWindows SDK 8.0以降ではWindows SDKとDirectX SDKが統合されたが、その際にXACTが廃止された。またWindows 8において、デスクトップアプリでは依然としてDirectSoundが利用可能であるものの、Windowsストアアプリ（WinRTアプリ）ではDirectSoundは利用できず、XAudio2のみが利用可能となっているDesktop Games on Windows 8.x | Games for Windows and the DirectX SDK blog。

Windows 7およびそれ以前のOSでXAudio2を利用するためには、DirectXエンドユーザーランタイムもしくはDirectX SDKのインストールが必要であり、またXAudio2 v2.7までしか使用できないが、Windows 8以降にはXAudio2 v2.8XAudio2 and Windows 8 | Games for Windows and the DirectX SDK blogが、そしてWindows 10にはXAudio2 v2.9が標準搭載されている。

 サンプリングレートの上限 
DirectSoundが処理可能なサンプリングレートは最大200kHzまででありWhat's New in DirectSound、192kHzより上のサンプリングレート、例としてUSB-DACなどのサウンドデバイスが対応している384kHzにWindows側で設定している状態だと、Directsoundを扱うアプリケーション(2010年代以前に作られた古いゲームなど)が起動しなくなったり、起動出来ても音が一切出力されなくなる場合がある。
これに対処するにはサンプリングレートを192kHz以下に設定し直すと正常に動作する。

DirectSoundではなく、XAudio2やWASAPI、ASIOで動作するアプリケーションは384kHzに設定している状態でも動作可能である。

 関連項目 
 DirectX Audio

 XACT
 Windows Multimedia Extensions, MME
 , MCI
 Core Audio (Windows)
 WASAPI
 レイテンシ
 VST
 ASIO
 Core Audio (アップル)


 脚注 

 外部リンク 
 Microsoft Learn (旧MSDN)
 DirectX オーディオ | DirectX SDK (August 2009) (日本語)
 DirectX オーディオ | DirectX SDK (August 2008) C++ (日本語)
 DirectSound のリファレンス | DirectX SDK (August 2008) C++ (日本語)
 XAudio2 の概要 | DirectX SDK (August 2008) C++ (日本語)
 X3DAudio の概要 | DirectX SDK (August 2008) C++ (日本語)
 DirectSound | Previous Versions (英語)
 XAudio2 APIs - Win32 apps (英語)
 X3DAudio - Win32 apps (英語)
 What's the deal with 3D sound under DirectX
 Audio in Windows Vista
 Creative ALchemy Project

Sound