Windows、Xbox、Hololens 2 のアプリ開発者向けの空間サウンド

このドキュメントは、開発者対象ユーザーを対象とします。 デバイスで空間サウンドを有効にするエンドユーザーのサポートについては、「 Windows 10を参照してください。

Microsoft空間サウンドMicrosoft、Xbox、Windows、HoloLens 2 での空間サウンドサポートのためのプラットフォーム レベルのソリューションであり、サラウンドと昇格 (リスナーの上または下) の両方のオーディオ キューを有効にします。空間サウンドは、Windows デスクトップ (Win32) アプリと、サポートされているプラットフォーム上のユニバーサル Windows プラットフォーム (UWP) アプリで利用できます。 空間サウンド API を使用すると、開発者は 3D 空間内の位置からオーディオを出力するオーディオ オブジェクトを作成できます。 動的オーディオ オブジェクトを使用すると、空間内の任意の位置からオーディオを出力でき、時間の経過と同時に変化する可能性があります。 また、オーディオ オブジェクトが、実際のスピーカーまたは仮想化されたスピーカーを表すことができる 17 個の定義済みの静的チャネル (8.1.4.4) からサウンドを出力するように指定することもできます。 実際の出力形式はユーザーによって選択され、Microsoft空間サウンドの実装から抽象化できます。オーディオは、コードやコンテンツの変更を必要とせずに、既存のスピーカー、ヘッドフォン、ホーム シアター レシーバーに表示されます。 このプラットフォームは、HDMI とステレオ ヘッドフォン出力の両方に対するリアルタイム Dolby Atmos エンコード、DTS:X for Headphones、およびステレオ ヘッドホン用の Windows Sonic for Headphones エンコードを完全にサポートしています。 最後に、Microsoft空間サウンド アプリはシステム ミキシング ポリシーに従います。また、そのオーディオは、空間に対応していないアプリとも混在します。 Microsoft空間サウンドのサポートも Media Foundation に統合されています。メディア ファンデーションを使用するアプリは、追加の実装なしで Dolby Atmos コンテンツを正常に再生できます。

Microsoft空間サウンドを使用した空間サウンドは、テレビ、ホーム シアター、ドルビー アトモスをサポートするサウンド バーをサポートします。 空間サウンドは、コンシューマーが所有する可能性のある任意のヘッドフォンと共に使用することもできます。オーディオは、Windows Sonic for Headphones、Dolby Atmos for Headphones、または DTS Headphone:X を使用してプラットフォームによってレンダリングされます。

Microsoft 空間サウンドを有効にする

開発者でもコンシューマーでも、ユーザーは、空間化されたサウンドを聞くために、デバイスでMicrosoft空間サウンドを有効にする必要があります。

Windows

Windows PC では、これは特定のサウンド出力デバイスのプロパティ ページを介して行われます。 [サウンド] コントロール パネルで、出力デバイスを選択し、[デバイスのプロパティ] をクリックします。 ページの [空間サウンド ] セクションで、デバイスが空間サウンドをサポートしている場合は、[ 空間サウンド形式 ] ドロップダウンから使用可能な形式のいずれかを選択できます。

サウンドコントロールパネルで空間サウンドを有効にする

タスク バーの Volume アイコンを右クリックしてMicrosoft空間サウンドを有効にすることもできます。

タスク バーから空間サウンドを有効にする

Xbox

Xboxでは、Microsoft空間サウンド機能はコンシューマーが常に使用でき、General -> ボリュームとオーディオ出力のWindows設定を使用して有効になります。

HDMI オーディオ ボタンには、オーディオ ビデオ レシーバー (AVR) またはサウンド バー、または Xbox 本体に直接接続されているテレビでサポートされているすべての形式が設定されます。 "光オーディオ" オプションは、Xbox Series X|S以上ではなく、古いXbox本体でのみ使用できます。

HDMI オーディオドロップダウンを示す [全般ボリュームと出力の設定] ページのスクリーンショット。

HDMI オーディオで "Dolby Atmos for home theater (HDMI のみ)" または "DTS:X for home theater (HDMI のみ)" オプションを選択すると、まだインストールされていない場合は、Dolby Access または DTS Sound Unbound アプリをダウンロードしてインストールするように求めるメッセージが表示されることに注意してください。

DTS Digital Surround の選択を示す [全般ボリュームと出力] 設定ページのスクリーンショット。

Headset audio の下にある Headset format ドロップダウンから Dolby Atmos for Headphones、DTS Headphone:X、または Windows Sonic for Headphones を選択します。

ヘッドフォンの空間音を有効にする画面を示す [一般音量と出力] 設定ページのスクリーンショット。

Microsoft空間サウンドが使用できない場合 (たとえば、埋め込みラップトップ ステレオ スピーカーで再生するとき、またはユーザーが上記の空間サウンドMicrosoft明示的に有効にしていない場合など)、アプリケーションに対して ISpatialAudioClient::GetMaxDynamicObjectCount によって返される使用可能な動的オブジェクトの数は 0 になります。

HoloLens 2

HoloLens 2 では、Microsoft空間サウンドは既定で有効になっており、Windows Sonic for Headphones 専用に設計されたハードウェア DSP オフロードが使用されます。

Microsoft空間サウンドとオーディオ ミドルウェア

多くのアプリやゲーム開発者は、高度なオーサリングツールや試聴ツールを含むサードパーティ製のオーディオレンダリングエンジンソリューションを使用しています。 Microsoftは、これらのソリューション プロバイダーのいくつかと提携し、彼らの既存のオーサリング環境にMicrosoft Spatial Soundを実装しました。 これは、多くの場合、ここで説明する API がアプリのビューから抽象化されることを意味します。これらは、アプリがインスタンス化できるデジタル信号処理 (DSP) プラグインとしてラップされ、アプリのオーディオ実装者は、必要に応じて、Microsoft空間サウンド チャネル ベッド、サブミックス、または個々の音声を動的オブジェクト インスタンス プラグインに送信するために使用できます。 Microsoft Spatial Sound のサポートレベルについては、オーディオ ミドルウェア ソリューション プロバイダーにお問い合わせください。

オーディオ レンダラーの空間サウンドをMicrosoftする

多くのオーディオ レンダラーは、Windows Audio Session API (WASAPI) IAudioClient エンドポイントを対象としています。このエンドポイントでは、アプリケーションは混合およびフォーマット準拠のオーディオ データのバッファーを WASAPI オーディオ シンクにフィードします。配信されたバッファーは、他のクライアントとの混合、最終的なシステム レベルの処理、レンダリングのために使用されます。

Microsoft空間サウンド空間エンドポイントは、ISpatialAudioClient として実装され、IAudioClient と多くの類似点があります。 チャネル ベッドを形成する 静的 なサウンド オブジェクトをサポートし、最大 8.1.4.4 チャネル (リスナーの周囲に 8 チャネル (左、右、中央、左右、左右、左右、背面、バック センター)、1 つの低周波数効果チャネル、リスナーの上の 4 チャネル、リスナーの下の 4 チャネル) をサポートします。 また、3D空間に任意に配置できる ダイナミック サウンドオブジェクトをサポートしています。

ISpatialAudioClient の一般的な実装コーディング パターンは次のとおりです。

  • 静的または動的なオーディオ オブジェクトを作成します。
  • システムがレンダリングできるように、各オブジェクトのオーディオ バッファーを各フレームにフィードします。
  • 動的オブジェクトの3D位置を、アプリが望む頻度で(頻繁でも稀でも)要求に応じて更新します。

現在の出力形式(スピーカーまたはヘッドフォン;Windows Sonic for Headphones、Dolby Atmos、または DTS Headphone:X) は、上記の実装から抽象化されています。アプリ開発者は、形式に基づいてピボットすることなく、空間サウンドに集中できます。 出力形式に基づいて動作を分岐させるアプリは、使用中の形式に対してクエリを実行できますが、抽象化は、これらの形式を処理するためにアプリが必要ないことを意味します。

Microsoftオーディオ レンダラーとの空間サウンドの統合

ISpatialAudioClient はデータを使用するオーディオ シンクであるため、オーディオ レンダラーには、オーディオ データを操作して配信する方法に関するいくつかのオプションがあります。 一般的に使用される 3 つの統合手法があります (オーディオ ミドルウェアを使用するタイトルでは、これらのオプションに基づいて同等のプラグインが使用可能になる場合があります)。

  • 7.1.4 パンナーとマスタリング音声: 既に 7.1 エンドポイントをサポートしているレンダラーは、 ISpatialAudioClient 静的チャネル ベッドがサポートする 4 つの追加の高さチャネルのサポートを追加することを選択できます。 以前に行った可能性のあるチャネルのパンニング (既に x、y、z 座標を利用していることが考えられます) は、これらの高さチャネルを含められるように更新可能です。 多くの場合、これにより、レンダラーとアプリのオーディオ ワークフロー、信号、フロー、ミックス制御の中断が最小限になります。 ヘッドフォンを介して、完全なアプリミックスが空間化されることに注意してください- ステレオ音楽でさえ、リスナーから「外部化」として認識される可能性があります。
  • 既存のエンドポイントを維持し、7.1.4 バス (およびパンナー) を追加する: 一部のタイトルでは、7.1.4 (または最大 8.1.4.4) をサポートする ISpatialAudioClient 静的チャネル ベッドと共に、既存のステレオ WASAPI エンドポイント (空間化を意図しない "耳に直接" コンテンツの場合) の 2 つのエンドポイントを維持することを選択できます。 もちろん、特定の時点でアクティブな WASAPI インスタンスと ISAC インスタンスの両方が処理に同じバッファー サイズとクロックを使用するため、2 つのミックス間の相互作用を管理することは、コンテンツ作成者にとって追加の課題となりますが、同期は維持されます。
  • 特定の音声またはサブミックスに動的サウンド オブジェクトを使用します。おそらく最も詳細で正確な位置を提供しますが、ミックスの不透明度を作成する可能性があります。この手法では、 ISpatialAudioClient 動的サウンド オブジェクトの使用が含まれます。 メタデータとオーディオ バッファーはレンダラーに配信されるため、これらのサウンドはアプリ ミックスの残りの部分に不透明になります。 さらに、使用可能な動的サウンド オブジェクトの数は限られているため、レンダラーは優先順位付け手法 (カリング、サウンドの併置、静的チャネル ベッドへのブレンドなど) の実装を検討する必要があります。 ゲームでは、リスナーの上を移動するヘリコプターなど、個々の "ヒーロー" サウンドに対してこの手法が頻繁に使用されています。

レンダラーは、これらのアプローチを混在させ、一致させることもできます。

Microsoft 空間サウンド ランタイムのリソースへの影響

WindowsとXboxでは、使用可能な音声の数は使用中の形式によって異なります。 Dolby Atmos フォーマットでは、合計 32 個のアクティブ オブジェクトがサポートされます (7.1.4 チャンネル ベッドが使用されている場合は、20 個の追加の動的サウンド オブジェクトをアクティブにすることができます)。 Windows Sonic for Headphones では、128 個のアクティブ オブジェクトがサポートされ、Low Frequency Effects (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 更新プログラムと Game Development Kit (GDK) 以降、Xboxのリソース制限は次の値に更新されます。

Format 最大静的オブジェクト (チャネル ベッド) 動的オブジェクトの最大数
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(ヘッドフォン) 17 (8.1.4.4) 128 20 16
DTS Headphone:X(ヘッドホン) 17 (8.1.4.4) 200 20 16
Windows Sonic (ヘッドフォン) 17 (8.1.4.4) 220 20 15

ビルド 22621 Windows 5 月のサービス リリース以降、Windowsのリソース制限は次の値に更新されます。

Format 最大静的オブジェクト (チャネル ベッド) 動的オブジェクトの最大数
Windows
動的オブジェクトの最大数
HoloLens 2
Dolby Atmos ホーム シアター (HDMI) 12 (7.1.4) 20 N/A
DTS:X for home theater (HDMI) 17 (8.1.4.4) 32 N/A
Dolby Atmos(ヘッドフォン) 17 (8.1.4.4) 128 N/A
Dolby Atmos (内蔵スピーカー) 17 (8.1.4.4) 128 N/A
DTS Headphone:X(ヘッドホン) 17 (8.1.4.4) 128 N/A
DTS:X Ultra (内蔵スピーカー) 17 (8.1.4.4) 128 N/A
Windows Sonic (ヘッドフォン) 17 (8.1.4.4) 128 31

以前のWindows、Xbox、およびHoloLensリリースでは、次のリソース制限が適用されます。

Format 最大静的オブジェクト (チャネル ベッド) 動的オブジェクトの最大数
Xbox One
動的オブジェクトの最大数
Windows
動的オブジェクトの最大数
HoloLens 2
ホーム シアター用ドルビー アトモス (HDMI) 12 (7.1.4) 20 20 N/A
DTS:X for home theater (HDMI) 17 (8.1.4.4) 16 32 N/A
Dolby Atmos(ヘッドフォン) 17 (8.1.4.4) 16 16 N/A
Dolby Atmos (内蔵スピーカー) 17 (8.1.4.4) N/A 16 N/A
DTS Headphone:X(ヘッドホン) 17 (8.1.4.4) 16 32 N/A
DTS Ultra (内蔵スピーカー) 17 (8.1.4.4) N/A 32 N/A
Windows Sonic for Headphones (ウィンドウズ ソニック フォー ヘッドフォン) 17 (8.1.4.4) 15 112 31

アプリでは、次のリソースへの影響も考慮する必要があります。

  • ストレージ/ディスク帯域幅: 7.1.4に事前に作成された線形コンテンツは、通常、7.1線形コンテンツよりもサイズが大きくなります(ただし、知覚コーデックはすでにチャネル相関を利用して、実際のオーディオチャネル数が50%増えることによる影響を大幅に軽減しています)。
  • その他のデジタル信号処理コスト:一部の以前のグローバル効果は、動的サウンドオブジェクトごとにインスタンス化される可能性があります。 さらに、一部のコンテンツ作成者は、追加のチャネルをサポートしたり、それらを一意に使用したりするために、いくつかの DSP 効果を更新したい場合があります。

Microsoft空間サウンドとサウンド空間化のヒント

Microsoft空間サウンドは、リスナーの周りの理想化された球のサウンド配置シミュレーションに焦点を当てています。 Windows Sonic for Headphones、DTS Headphone:X、Dolby Atmos は、ヘッドフォンへのスピーカー マッピングと仮想化を実装しますが、サウンド空間シミュレーションの他の多くの側面 (通常はコンテンツ作成者が有効な方法で既に実装されている) は、既存のエンジンに任されています。 コンテンツ作成者は、Doppler、距離ベースの減衰とフィルタリング、オクルージョンと障害物、環境リバーブなどの空間キューに対して、以前に持っていた既存のゲーム ツールとプロセスを引き続き使用します。

その他のリソース

空間サウンド インターフェイス

インターフェイス Description
ISpatialAudioClient クライアントが 3D 空間内の位置からオーディオを出力するオーディオ ストリームを作成できるようにします。
ISpatialAudioObject ユーザーに対する 3D 空間内の位置からレンダリングされるオーディオ データを提供するオブジェクトを表します。
ISpatialAudioObjectRenderStream ストリームの開始、停止、リセットなど、空間オーディオ オブジェクト レンダリング ストリームを制御するためのメソッドを提供します。
ISpatialAudioObjectRenderStreamNotify 空間オーディオ クライアントが ISpatialAudioObjectRenderStream の状態の変化に応答するための通知を提供します。

 

Xbox One Development Kit (XDK) タイトルで ISpatialAudioClient インターフェイスを使用する際は、EnableSpatialAudio を呼び出す前に、IMMDeviceEnumerator::EnumAudioEndpoints または IMMDeviceEnumerator::GetDefaultAudioEndpoint を呼び出す必要があります。 これを行わないと、Activate の呼び出しからE_NOINTERFACE エラーが返されます。 EnableSpatialAudio は XDK タイトルでのみ使用でき、Xbox Oneで実行されているユニバーサル Windows プラットフォーム アプリや、Xbox One以外のデバイスに対して呼び出す必要はありません。

 

空間サウンド構造

構造 Description
SpatialAudioObjectRenderStreamActivationParams 空間オーディオ レンダリング ストリームのアクティブ化パラメーターを表します。
SpatialAudioClientActivationParams 空間オーディオ レンダリング ストリームのオプションのアクティブ化パラメーターを表します。

 

空間サウンド列挙

Enumeration Description
AudioObjectType ISpatialAudioObject の型を指定します。