XAudio2 の概要
XAudio2 は、低レベルのオーディオ API です。 これは、その前身である DirectSound と XAudio に似たゲームの信号処理とミキシング基盤を提供します。
XAudio2 は、DirectSound の待望の置き換えです。 これは、いくつかの未解決の問題と機能要求に対処します。
XAudio2 の機能
開発者がゲームのパフォーマンスを向上させることができる XAudio2 機能と新機能の一覧を次に示します。
DSP 効果と音声ごとのフィルター処理
デジタル信号処理 (DSP) 効果は、オーディオのピクセル シェーダーです。 彼らは、音の変換(豚の鳴き声を低く恐ろしいモンスターの音に変える)から、リバーブやオクルージョンまたは障害物フィルタリングを使用してゲーム環境にサウンドを配置することまで、すべてを処理します。 XAudio2 は、柔軟で強力な DSP フレームワークを提供します。 また、すべての音声に組み込みのフィルターを提供し、効率的なロー/ハイ/バンドパスフィルタリング効果を実現します。
DSP 効果と音声フィルター処理の詳細については、「 XAudio2 Audio Effects 」および 「IXAudio2Voice::SetFilterParameters 」を参照してください。
サブミックス
サブミックスでは、複数のサウンドを 1 つのオーディオ ストリームに結合します。たとえば、複合パーツで構成されたエンジン サウンドなど、すべてが同時に再生されます。 また、サブミックスを使用して、ゲームの同様の部分を処理して組み合わせることができます。 たとえば、すべてのゲームサウンドエフェクトを組み合わせて、ユーザーの音量設定を適用しながら、別の設定で音楽の音量を制御できます。 DSPと組み合わせることで、サブミックスは今日のゲームに必要なデータルーティングと処理の種類を提供します。 XAudio2は、複雑なサウンドやゲームミックスの作成を可能にする、サブミックスの任意のレベルを可能にします。
サブミックスの詳細については、「 XAudio2 Audio Graph と XAudio2 Voices 」を参照してください。
圧縮オーディオのサポート
DirectSound の主な機能要求の 1 つは、圧縮オーディオサポート用です。 XAudio2 では、実行時の圧縮解除でネイティブに圧縮形式 (ADPCM) がサポートされています。
マルチチャネルとサラウンドサウンドのサポートの強化
マルチチャンネル、3D、およびサラウンドサウンドのサポートが拡張されています。 3Dとサラウンドサウンドは、はるかに柔軟で透明になりました。 XAudio2 では、マルチチャネル サウンドの 6 チャネル制限が解除され、マルチチャネル対応のオーディオ カードでマルチチャネル オーディオがサポートされます。 カードは、ハードウェアアクセラレータである必要はありません。
マルチレート処理
CPU 使用率を最小限に抑えるために、XAudio2 には、複数の低レートオーディオ処理グラフを作成するテクノロジが用意されています。 これにより、レートが 48 kHz 未満の場合に、ゲームがソース マテリアルのレートでオーディオを処理できるようにすることで、CPU 使用率を大幅に削減できます。
非ブロッキング API モデル
いくつかの例外を除き、XAudio2 メソッドの呼び出しではオーディオ処理エンジンがブロックされません。 つまり、クライアントは、実行時間の長い呼び出しをブロックせずに、いつでも一連のメソッド呼び出しを安全に行い、遅延を引き起こすことができます。 例外は 、IXAudio2Voice::D estroyVoice メソッド (破棄される音声の処理が完了するまでエンジンをブロックする可能性があります) と、オーディオ スレッドを終了するメソッド (IXAudio2::StopEngine および IXAudio2::Release) です。 XAudio2 メソッドの呼び出しはオーディオ処理エンジンをブロックしませんが、XAudio2 メソッドには重要なセクションが含まれており、状況によってはそれ自体がブロックされる可能性があることに注意してください。
XAudio2 を使用するタイミング
XAudio2 は、主にゲーム用の高性能オーディオ エンジンの開発を目的としています。 効果音やバックグラウンド ミュージックを自分の最新のゲームに追加したいゲーム開発者にとって、XAudio2 はオーディオ グラフとミキシング エンジンを短い待機時間で提供し、ダイナミック バッファー、同期サンプルアキュレート再生、暗黙的なソース レート変換をサポートします。 WASAPI と比較して、XAudio2 では、複雑なオーディオ ソリューションでも最小限のコードしか必要としません。 Media Foundation エンジンと比較して、XAudio2 はゲームで使用するように設計された低レベルの低遅延 C++ API です。
通常の音楽再生を必要とするアプリケーションの場合、Media Foundation エンジンはアプリケーションの要件に適している可能性があります。
関連トピック