Windows、Xbox、Hololens 2 のアプリ開発者向けの空間サウンド
Note
このドキュメントは、開発者ユーザーを対象としています。 デバイスで空間サウンドを有効にするエンドユーザーのサポートについては、「Windows 10 で空間サウンドを有効にする方法」を参照してください。
Microsoft Spatial Sound は、Xbox、Windows、HoloLens 2 で空間サウンドをサポートするための Microsoft のプラットフォーム レベルのソリューションであり、サラウンドと昇格 (リスナーの上または下) の両方のオーディオ キューを有効にします。空間サウンドは、Windows デスクトップ (Win32) アプリと、サポートされているプラットフォーム上のユニバーサル Windows プラットフォーム (UWP) アプリで利用することができます。 空間サウンド API を使用すると、開発者は 3D 空間内の位置からオーディオを出力するオーディオ オブジェクトを作成できます。 動的オーディオ オブジェクトを使用すると、時間の経過と共に変化する可能性がある空間内の任意の位置からオーディオを出力できます。 また、オーディオ オブジェクトが、実際のスピーカーまたは仮想化されたスピーカーを表すことができる 17 個の定義済みの静的チャネル (8.1.4.4) の 1 つから、サウンドを出力するように指定することもできます。 実際の出力形式はユーザーが選択し、Microsoft Spatial Sound の実装から抽象化できます。オーディオは、コードやコンテンツの変更を必要とすることなく、既存のスピーカー、ヘッドフォン、ホーム シアター レシーバーに表示されます。 このプラットフォームでは、HDMI とステレオ ヘッドフォン出力の両方に対してリアルタイムの Dolby Atmos エンコード、ステレオ ヘッドフォン用に DTS:X for Headphones、および Windows Sonic for Headphones エンコードが完全にサポートされています。 最後に、Microsoft Spatial Sound アプリはシステム ミキシング ポリシーに従い、そのオーディオも、空間で認識されないアプリとミックスします。 Microsoft Spatial Sound のサポートもメディア ファンデーションに統合されています。メディア ファンデーションを使用するアプリは、追加の実装なしで Dolby Atmos コンテンツを正常に再生できます。
Microsoft Spatial Sound を使用した空間サウンドは、Dolby Atmos をサポートするテレビ、ホーム シアター、サウンド バーをサポートしています。 空間サウンドは、コンシューマーが所有する可能性のある任意のヘッドフォンと使用することもできます。オーディオは、Windows Sonic for Headphones、Dolby Atmos for Headphones、または DTS Headphone:X を使用してプラットフォームによってレンダリングされます。
Microsoft Spatial Sound の有効化
ユーザーは、開発者でもコンシューマーでも、立体音響を聞くためには、デバイスで Microsoft Spatial Sound を有効にする必要があります。
Windows
Windows PC では、これは特定のサウンド出力デバイスのプロパティ ページを介して行われます。 [サウンド] コントロール パネルで、出力デバイスを選択し、[デバイスのプロパティ] をクリックします。 ページの [空間サウンド] セクションで、デバイスが空間サウンドをサポートしている場合は、[空間サウンド形式] ドロップダウンから使用可能な形式のいずれかを選択できます。
タスク バーのボリューム アイコンを右クリックして、Microsoft Spatial Sound を有効にすることもできます。
Xbox
Xbox では、Microsoft Spatial Sound 機能はコンシューマーがいつでも使用することができ、[全般 ] -> [ボリューム] および [オーディオ出力] の下の [アプリの設定] で有効になります。
[HDMI オーディオ] ボタンには、オーディオ ビデオ レシーバー (AVR) やサウンド バー、あるいは Xbox 本体に直接接続されているテレビでサポートされているすべての形式が設定されます。 [光学オーディオ] オプションは、以前の Xbox 本体でのみ使用でき、Xbox Series X|S 以降では使用できません。
HDMI オーディオで [Dolby Atmos for home theater (HDMI のみ)] または [DTS:X for home theater (HDMI のみ)] オプションを選択すると、まだインストールされていない場合は、Dolby Access または DTS Sound Unbound アプリをダウンロードしてインストールするように求めるメッセージが表示されることに注意してください。
[ヘッドセット オーディオ] の下の [ヘッドセット形式] ドロップダウンから、Dolby Atmos for Headphones、DTS Headphone:X または Windows Sonic for Headphones を選択します。
Microsoft Spatial Sound が使用できない場合 (たとえば、埋め込みラップトップ ステレオ スピーカーで再生するとき、またはユーザーが上記で Microsoft Spatial Sound を明示的に有効にしていない場合)、ISpatialAudioClient::GetMaxDynamicObjectCount によってアプリケーションに返される使用可能な動的オブジェクトの数は 0 になります。
HoloLens 2
HoloLens 2 では、Microsoft Spatial Sound は既定で有効になっており、Windows Sonic for Headphones 専用に設計されたハードウェア DSP オフロードが使用されます。
Microsoft Spatial Sound とオーディオ ミドルウェア
多くのアプリやゲーム開発者は、高度なオーサリング ツールや音声ツールを含むサードパーティ製のオーディオ レンダリング エンジン ソリューションを使用しています。 Microsoft は、これらのソリューション プロバイダーのいくつかと提携して、既存のオーサリング環境に Microsoft Spatial Sound を実装しています。 これは、多くの場合、ここで説明する API がアプリのビューから抽象化されることを意味します。これらは、アプリがインスタンス化できるデジタル信号処理 (DSP) プラグインとしてラップされ、アプリのオーディオ実装者は、必要に応じて、Microsoft Spatial Sound チャネル ベッドへミックスしたり、サブミックスしたり、個々の音声を動的オブジェクト インスタンス プラグインに送信したりするために使用できます。 Microsoft Spatial Sound のサポート レベルについては、オーディオ ミドルウェア ソリューション プロバイダーにお問い合わせください。
オーディオ レンダラー用の Microsoft Spatial Sound
多くのオーディオ レンダラーは、Windows Audio Session API (WASAPI) IAudioClient エンドポイントを対象としています。このエンドポイントでは、アプリケーションはミックスおよびフォーマット準拠のオーディオ データのバッファーを WASAPI オーディオ シンクにフィードします。配信されたバッファーは、他のクライアントとのミキシング、最終的なシステム レベルの処理、レンダリングのために使用されます。
Microsoft Spatial Sound の空間エンドポイントは ISpatialAudioClient として実装され、IAudioClient と多くの類似点があります。 チャネル ベッドを形成する静的なサウンド オブジェクトをサポートし、最大 8.1.4.4 チャネル (リスナーの周囲に 8 チャネル (左、右、中央、左側、右側、背面左、背面右、背面中央)、1 つの低周波数効果チャネル、リスナーの上の 4 チャネル、リスナーの下の 4 チャネル) をサポートします。 また、3D 空間に任意に配置できる動的サウンド オブジェクトをサポートしています。
ISpatialAudioClient の一般的な実装コーディング パターンは次のとおりです。
- 静的または動的なオーディオ オブジェクトを作成します。
- システムがレンダリングできるように、各オブジェクトのオーディオ バッファーを各フレームにフィードします。
- 動的オブジェクトの 3D 位置を必要に応じて (アプリが必要とする頻度で) 更新します。
現在の出力形式 (スピーカーまたはヘッドフォン、Windows Sonic for Headphones、Dolby Atmos、または DTS Headphone:X) は、上記の実装から抽象化されています。アプリ開発者は、形式に基づいてピボットすることなく空間サウンドに集中できます。 出力形式に基づいて動作を分岐させるアプリは、使用中の形式に対してクエリを実行できますが、抽象化の場合、これらの形式を処理するためのアプリは必要ありません。
Microsoft Spatial Sound とオーディオ レンダラーの統合
ISpatialAudioClient はデータを使用するオーディオ シンクであるため、オーディオ レンダラーには、オーディオ データを操作して配信する方法に関していくつかのオプションがあります。 一般的に使用される 3 つの統合手法があります (オーディオ ミドルウェアを使用するタイトルでは、これらのオプションに基づいて同等のプラグインが使用可能になる場合があります)。
- 7.1.4 パンナーとマスタリング音声: 既に 7.1 エンドポイントをサポートしているレンダラーは、ISpatialAudioClient 静的チャネル ベッドがサポートする 4 つの追加の高さチャネルのサポートを追加することを選択できます。 以前に行ったチャネル パン (既に x、y、z 座標を利用している可能性があります) は、これらの高さチャネルを含むように更新できます。 多くの場合、これにより、レンダラーとアプリのオーディオ ワークフロー、信号、フロー、ミックス制御の中断が最小限になります。 ヘッドフォンを介して、完全なアプリ ミックスが空間化されることに注意してください。ステレオ音楽でも、リスナーから「外在的」なものとして認識される可能性があります。
- 既存のエンドポイントを維持し、7.1.4 バス (およびパンナー) を追加する: 一部のタイトルでは、既存のステレオ WASAPI エンドポイント (「耳に直接」コンテンツを空間化しない場合) と、7.1.4 (または最大 8.1.4.4) をサポートする ISpatialAudioClient 静的チャネル ベッドの 2 つのエンドポイントをメインすることを選択できます。 当然ながら、2 つのミックス間の相互作用を管理することはコンテンツ作成者にとって追加の課題となりますが、特定の時点でアクティブな WASAPI インスタンスと ISAC インスタンスの両方が、同じバッファサイズとクロックを使用して処理を行うため、同期は維持されます。
- 特定の音声またはサブミックスに動的サウンド オブジェクトを使用する: おそらく最も詳細で正確な位置を提供しますが、ミックスの不透明さが生じる可能性があります。この手法では、ISpatialAudioClient 動的サウンド オブジェクトが使用されます。 メタデータとオーディオ バッファーはレンダラーに配信されるため、これらのサウンドはアプリ ミックスの残りの部分で不透明になります。 さらに、使用可能な動的サウンド オブジェクトの数は限られているため、レンダラーは優先順位付け手法 (カリング、サウンドの併置、静的チャネル ベッドへのブレンドなど) の実装を検討する必要があります。 ゲームでは、リスナーの上を移動するヘリコプターなど、個々の「ヒーロー」サウンドに対してこの手法が頻繁に使用されています。
レンダラーは、これらのアプローチを混在させ、調和させることもできます。
Microsoft Spatial Sound Runtime のリソースへの影響
Windows と Xbox では、使用可能な音声の数は、使用中の形式によって異なります。 Dolby Atmos 形式では、合計 32 個のアクティブ オブジェクトがサポートされます (7.1.4 チャネル ベッドが使用されている場合は、20 個の追加の動的サウンド オブジェクトをアクティブにすることができます)。 Windows Sonic for Headphones では、128 個のアクティブ オブジェクトがサポートされており、重低音効果 (LFE) チャネルは実際にはオブジェクトとしてカウントされないため、8.1.4.4 チャネル ベッドが使用されている場合は、112 個の動的サウンド オブジェクトをアクティブにすることができます。
Xbox One ゲーム 本体で実行されているユニバーサル Windows プラットフォーム アプリの場合、リアルタイム エンコード (Dolby Atmos for Home Theater、Dolby Atmos for Headphones、DTS:X for Home Theater、DTS Headphone:X、Windows Sonic for Headphones) は、ハードウェアで CPU コストなしで実行されます。
2303 Xbox OS 更新プログラムとゲーム開発キット (GDK) 以降、Xbox のリソース制限は次の値に更新されます。
形式 | 静的オブジェクト (チャネル ベッド) の最大数 | 動的オブジェクトの最大数 Xbox Series X|S、UWP アプリ & >=2303 GDK |
動的オブジェクトの最大数 Xbox Series X|S、XDK & <2303 GDK |
動的オブジェクトの最大数 Xbox One |
---|---|---|---|---|
Dolby Atmos for Home Theater (HDMI) | 12 (7.1.4) | 20 | 20 | 20 |
DTS:X for Home Theater (HDMI) | 17 (8.1.4.4) | 20 | 20 | 16 |
Dolby Atmos (Headphones) | 17 (8.1.4.4) | 128 | 20 | 16 |
DTS Headphone:X (Headphones) | 17 (8.1.4.4) | 200 | 20 | 16 |
Windows Sonic (Headphones) | 17 (8.1.4.4) | 220 | 20 | 15 |
Windows ビルド 22621 の 5 月のサービス リリース以降、Windows のリソース制限は次の値に更新されます。
形式 | 静的オブジェクト (チャネル ベッド) の最大数 | 動的オブジェクトの最大数 Windows |
動的オブジェクトの最大数 HoloLens 2 |
---|---|---|---|
Dolby Atmos Home Theater (HDMI) | 12 (7.1.4) | 20 | 該当なし |
DTS:X for Home Theater (HDMI) | 17 (8.1.4.4) | 32 | 該当なし |
Dolby Atmos (Headphones) | 17 (8.1.4.4) | 128 | 該当なし |
Dolby Atmos (内蔵スピーカー) | 17 (8.1.4.4) | 128 | 該当なし |
DTS Headphone:X (Headphones) | 17 (8.1.4.4) | 128 | 該当なし |
DTS:X Ultra (内蔵スピーカー) | 17 (8.1.4.4) | 128 | 該当なし |
Windows Sonic (Headphones) | 17 (8.1.4.4) | 128 | 31 |
以前の Windows、Xbox、HoloLens リリースでは、次のリソース制限が適用されます。
形式 | 静的オブジェクト (チャネル ベッド) の最大数 | 動的オブジェクトの最大数 Xbox One |
動的オブジェクトの最大数 Windows |
動的オブジェクトの最大数 HoloLens 2 |
---|---|---|---|---|
Dolby Atmos for Home Theater (HDMI) | 12 (7.1.4) | 20 | 20 | 該当なし |
DTS:X for Home Theater (HDMI) | 17 (8.1.4.4) | 16 | 32 | 該当なし |
Dolby Atmos (Headphones) | 17 (8.1.4.4) | 16 | 16 | 該当なし |
Dolby Atmos (内蔵スピーカー) | 17 (8.1.4.4) | 該当なし | 16 | 該当なし |
DTS Headphone:X (Headphones) | 17 (8.1.4.4) | 16 | 32 | 該当なし |
DTS Ultra (内蔵スピーカー) | 17 (8.1.4.4) | 該当なし | 32 | 該当なし |
ヘッドホン用の Windows Sonic | 17 (8.1.4.4) | 15 | 112 | 31 |
アプリでは、次のリソースへの影響も考慮する必要があります。
- ストレージ/ディスク帯域幅: 7.1.4 に事前に作成された線形コンテンツは、通常、7.1 線形コンテンツより大きくなります (ただし、知覚コーデックでは、これがオーディオ データの実際のチャンネルの 50% をはるかに下回るようにするために、既にチャネルの相関関係を利用していることがよくあります)。
- その他のデジタル信号処理コスト: 一部の以前のグローバル効果は現在、動的サウンドオブジェクトごとにインスタンス化される可能性があります。 さらに、一部のコンテンツ作成者は、追加のチャネルをサポートしたり、それらを一意に使用したりするために、いくつかの DSP 効果を更新したい場合があります。
Microsoft Spatial Sound と立体音響のキュー
Microsoft Spatial Sound は、リスナーの周囲の理想的な球体でのサウンド配置シミュレーションに焦点を当てています。 Windows Sonic for Headphones、DTS Headphone:X、Dolby Atmos は、ヘッドフォンへのスピーカー マッピングと仮想化を実装しますが、サウンド空間シミュレーションの他の多くの側面 (通常はコンテンツ作成者による有効な方法で既に実装されています) は、既存のエンジンに委ねられています。 コンテンツ作成者は、Doppler、距離ベースの減衰とフィルタリング、閉塞と障害物、環境リバーブなどの空間キューに対して、以前使用していた既存のゲーム ツールとプロセスを引き続き使用します。
その他のリソース
- Microsoft Spatial Sound サンプル github リポジトリ
- Dolby は、Dolby Atmos と Dolby Access アプリ に関連する多くのサポート リソースを https://developer.dolby.com で提供しています。
Spatial Sound のインターフェイス
Interface | 説明 |
---|---|
ISpatialAudioClient | クライアントが 3D 空間内の位置からオーディオを出力するオーディオ ストリームを作成できるようにします。 |
ISpatialAudioObject | ユーザーに対する 3D 空間内の位置からレンダリングされるオーディオ データを提供するオブジェクトを表します。 |
ISpatialAudioObjectRenderStream | ストリームの開始、停止、リセットなど、空間オーディオ オブジェクト レンダリング ストリームを制御するためのメソッドを提供します。 |
ISpatialAudioObjectRenderStreamNotify | 空間オーディオ クライアントが ISpatialAudioObjectRenderStream の状態の変化に応答するための通知を提供します。 |
Note
Xbox One Development Kit (XDK) タイトルで ISpatialAudioClient インターフェイスを使用する場合は、IMMDeviceEnumerator::EnumAudioEndpoints または IMMDeviceEnumerator::GetDefaultAudioEndpoint を呼び出す前に、まず EnableSpatialAudio を呼び出す必要があります。 これを行わないと、アクティブ化の呼び出しから E_NOINTERFACE エラーが返されます。 EnableSpatialAudio は XDK タイトルでのみ使用でき、Xbox One で実行されているユニバーサル Windows プラットフォーム アプリや Xbox One 以外のデバイスに対して呼び出す必要はありません。
空間サウンド構造体
構造体 | 説明 |
---|---|
SpatialAudioObjectRenderStreamActivationParams | 空間オーディオ レンダリング ストリームのアクティブ化パラメーターを表します。 |
SpatialAudioClientActivationParams | 空間オーディオ レンダリング ストリームの省略可能なアクティブ化パラメーターを表します。 |
空間サウンド列挙型
列挙 | 説明 |
---|---|
AudioObjectType | ISpatialAudioObject の型を指定します。 |