Audio Engine の概要

Unreal Audio Engine の機能の概要

Windows
MacOS
Linux

Unreal Audio Engine は、Unreal Engine (UE4) がサポートしているすべてのプラットフォームで利用できる豊富な機能を備えた強力なオーディオ エンジンです。

ブループリント、新しいマルチプラットフォーム オーディオ ミキサー (オーディオ デジタル信号処理 (DSP)、プロシージャル合成、カスタマイズ可能なサブミックス グラフに対応)、および柔軟な C++ API と組み合わせることで、あらゆる規模のあらゆるプロジェクトで高品質なオーディオを届けることができます。

この概要では、高度なオーディオ問題を解決するために利用するさまざまなサブシステムや機能を紹介します。

ソース アセット管理

アセット管理は全体的に単純です。UE4 のアセット管理の基本方針は、可能な限り直接作業し、可能な限り自動で処理することです。

アセットをインポートする

UE4 では、ファイル インポート ダイアログを使用するか、オーディオ アセットを直接コンテンツ ブラウザにドラッグすることで、デスクトップからコンテンツ ブラウザに直接オーディオ アセットをインポートできます。

インポートできるアセットの種類とチャンネル形式は多岐にわたります (「オーディオのインポート方法 」と「オーディオ ファイル )」を参照してください)。

内部的には、UE4 はインポートされたオーディオ ファイルを 16 ビットの非圧縮 .wav 形式で保存します。

インポートされたデータを含む UAssetUSoundWave と呼ばれ、UE4 のすべてのオーディオ ゲームプレイ API から直接再生できます。インポートされたアセットは、コンテンツ ブラウザでアセット上に表示される再生ボタンをクリックするか、アセットを選択した状態でスペースキーを押すと、プレビューすることもできます。

ContentBrowser.png

オーディオ アセットをコンテンツ ブラウザにインポートすると、16 ビットの非圧縮 .wav 形式で保存される。

コンテンツ ブラウザ アセット管理ツール

オーディオ アセットの管理には、よく整理されたコンテンツ ブラウザのフォルダ構造、うまく設計されたブックマーク、便利なコンテンツ ブラウザ ツール全般以外に、 プロパティ マトリクス ツールが特に有用です。UE4 でオーディオ アセットを大量に編集するには、編集するアセットを選択して、プロパティ マトリクス ツールを開くと、何百ものアセットを同時にまとめて調整できます。

PropertyMatrix.png

プロパティ マトリクス ツールを使って多数のアセットに同時に変更を加えることができます。

サウンド キュー

Unreal Audio Engine において、複数のサウンド アセットを 1 つの抽象サウンド オブジェクトに概念的に集約したアセットが サウンド キュー です。これは、文字通りのサウンドというわけではなく、そのサウンドの抽象概念です。

サウンド キューはランタイム時に評価されます。つまり、実際のサウンドではなく、潜在的なサウンドのバンドルです。サウンド キューを再生すると、使用されるコンテキストに応じて、サウンドが毎回異なる可能性があります。

サウンド キューは、UE4 で最も古くから備わっているツールの 1 つです。サウンド キュー エディタには、独自のサウンドデザイン トポロジを作成するためのサウンド デザイナーがあります。これを使って、単純なサウンド再生イベントを複雑で繊細なサウンド設計がされたイベントに変換できます。

大まかに言うと、サウンド キューは、アセットのランダム化、ゲームプレイに応じたパラメータ マッピングや、距離による減衰、ボリューム減衰、ピッチ変化に関するカスタム ロジックと分岐のほか、多数の機能をサポートしています。

サウンド キュー エディタには、単純なサウンド再生イベントを複雑で繊細なサウンド設計がされたイベントに変換する機能がある。

サウンド キューは、Sound Cue Templates プラグインを使用して作成することもできます。このプラグインは単純な C++ インターフェースであり、サウンド デザイナーはこれを使って特定のサウンド キュー、グラフ トポロジ、ロジックなどがマトリクス プロパティ エディタやコンテンツ ブラウザで自動的に作成されたり、使用されたりするように指定できます。このようにして、一般的なサウンド キュー グラフを定義できます。サウンド デザイナーは、これを使ってワークフローを最適化できます。

詳細については、「サウンドキュー エディタ 」ドキュメントを参照してください。

空間化と減衰

ゲーム内の空間化と減衰は重要です。Unreal Audio Engine では、カスタムの空間化と減衰のビヘイビアを定義できます。

Spatialization.png

カスタムの空間化と減衰は、さまざまな方法で設定できます。

一般的に、サウンドと減衰の設定は、サウンド デザイナーが サウンド減衰設定 アセットを使用して定義し、サウンドに接続します。サウンド減衰を接続できる場所はいくつかあります。

  • サウンド アセットで直接

  • サウンド キュー内

  • ブループリントでオーバーライド

詳細については、「サウンドの減衰 」を参照してください。

非空間化サウンド

非空間化サウンドとは、オーディオ エンジンの文脈では一般的に、2D サウンド のことを指します。Unreal Audio では、サウンド減衰設定アセットで空間化を無効にするか、サウンド減衰アセットを用意しないことで、2D アセットの再生ができます。そのような 2D サウンドは、音楽、UI フィードバック サウンドや、リスナーの位置が固定されている場合などに便利です。

サウンド アセットは特別な空間化メソッドなしで再生する場合もありますが、アセットには、空間情報をベイクして含めることができます。

  • マルチチャンネル音源 (クワッド、5.1、および 7.1 の音源) は、2D 再生しかできません。これは通常、ミュージカル ベッドや環境音のベッド (バックグラウンド サウンド) に使用されます。

  • ステレオ音源 は 2D で再生できますが、空間化もできます。

空間化サウンド

減衰設定で空間化が有効な場合は、デフォルトで、パニングを使用してサウンドが空間化されます。

パニング は、物理出力スピーカ チャンネルのサウンドの振幅を、リスナーの方向を基準にしたそのサウンドの角度に応じて変化させるプロセスです。

Unreal Audio では、複数の出力設定(ステレオ、5.1、および 7.1) のパニングをモノラルとステレオの両方のサウンド アセットでサポートしています。

ステレオ アセットには、音源の左右の入力チャンネル間の仮想距離を定義するステレオ拡散パラメータがあります。このようにして、ステレオ音源の左右のチャンネルをリスナーを基準にパニングしてモノラル音源に類似させます。

サウンド デザイナーがプロジェクトで使用するために設定できる グルーバル パニング モード は 2 つあります。リニア パニングと一定パワー パニングです。

  • リニア パニング では、出力チャンネル間の単純なリニア クロスフェードを行います。

  • 一定パワー パニング では、出力チャンネル間のパワー (振幅の 2 乗) を維持します。

人間が認識するボリュームはサウンドのパワー (乗数) に基づくので、パニングのパワーを維持することで、より一貫したボリュームのパンとして認識されます。リニア パニングを行うと、物理スピーカーの場所に近づくほどサウンドがうるさくなり、スピーカーの間を取ると静かになります。

Unreal Audio では、サードパーティ製プラグインと強力で柔軟な C++ API を使用した空間化もサポートしています。サードパーティ製プラグインを使うと、バイノーラル/HRTF 空間化やアンビソニックス (音場) エンコーディングとデコーディングなど、サウンドを思いのままに空間化できます。プラグインは、減衰設定アセットに接続できる独自のアセット設定を提供できます。

距離減衰

距離に基づくサウンドの減衰 も、サウンド減衰設定アセットで定義できます。距離に基づくサウンドの減衰のために、サウンド デザイナーはいくつかの事前定義された関数や形状の指定に加えて、独自のカスタム距離減衰カーブをデザインできます。

AttenuationDistance.png

詳細については、「サウンドの減衰 」を参照してください。

空間化/減衰の直交性

Unreal Audio の空間化と減衰機能に関して分かりづらい一面は、それらの機能が直交プロパティとして扱われていることです。つまり、サウンド デザイナーはサウンドを空間化とは独立して、距離 (または音源からリスナーの方向) によって減衰させることができます。逆の場合も同様です。

空間化と減衰の設定は、サウンド減衰設定アセットで定義されます。

SpatializationAttenuation.png

この画像で、リスナーが (緑の球で示される) 非空間化半径内にいる場合は、スピーカー構成のすべてのチャンネルにサウンドが流れる。この半径の外側では、通常通りサウンドが空間化される。

詳細については、「サウンドの減衰 」を参照してください。

距離フィルタリング

サウンド減衰設定には、サウンドを距離の関数としてフィルタリングするオプションもあります。ローパス フィルターとハイパス フィルターのカーブを個別に調整することで、空気吸収の効果をエミュレートしたり (ローパス フィルター)、周波数依存の距離減衰をモデル化したり (ハイパス フィルター) できます。

詳細については、「サウンドの減衰 」を参照してください。

オクルージョン

Unreal Audio には、サウンドのオクルージョン チェックを非常に低負荷で行う非同期トレースがデフォルトで用意されています。サウンド減衰設定には、オクルージョンを有効にしたり、サウンドの オクルード 状況に応じてサウンドをフィルタリングする各種パラメータを設定したりできるオプションがあります。Unreal Audio のオクルージョン C++ API を利用しているサードパーティ製プラグインには、さらに高度なオクルージョン ソリューションが実装されています。

リスナー ベースの減衰

サウンド減衰設定には、ボリューム減衰と優先度スケーリングや、リスナーを基準としたサウンドの方向に基づくその他のエフェクトを記述することのできるオプションもあります。このようにして、サウンドがリスナーの視界に入ったときに、サウンドがより「はっきり」または「ぼんやり」聞こえるようにできます。

詳細については、「Attenuation and Listener Fpcus 」を参照してください。

距離ベースのサウンドのリバーブ

Unreal Audio では、距離の関数としてマスター リバーブ サブミックスに送信するオーディオの量を変更することもできます。このマッピングは、他の距離ベースのパラメータ カーブと同様に定義されます。

詳細については、「Attenuation Reverb Send 」を参照してください。

ゲームプレイ オーディオ API

Unreal Audio には、ブループリントと C++ コードを使ってオーディオ エンジンのビヘイビアをカスタマイズできるシンプルで柔軟なゲームプレイ API があります。

詳細については「

[Sound](API/Runtime/Engine/Sound)
」を参照してください。

PlaySound および SpawnSound ブループリント API

ブループリントとゲームプレイ C++ コードからサウンドを再生するのに使用できるブループリント関数はいくつかあります。これは、次の 2 つの一般的なカテゴリに分けられます。

  • PlaySound 関数: これには、PlaySoundAtLocation、PlaySound2D、PlayDialogue2D などがあります。

  • SpawnSound 関数: これには、SpawnSoundAtLocation、SpawnSound2D、および SpawnSoundAttached があります。

  • PlaySound API: 指示されたサウンドをファイア アンド フォーゲット モードで再生します。サウンドが再生されてしまうと、その再生をブループリントから変更したり、オブジェクトにアタッチしたりすることはできません。この種の再生は、動的に制御する必要のない、単純な 1 回だけ再生するタイプのサウンドに有用です。

  • SpawnSound 関数: 動的にサウンドのパラメータを制御したり、他のアクタにサウンドをアタッチしたり、ループ サウンドを制御したりするためのオーディオ コンポーネントを作成できます。オーディオ コンポーネントは、UE4 に用意されているサウンド用の便利なオブジェクトです。複雑でインタラクティブなブループリント システムでオーディオの制御に使用できます。

ほとんどの UE4 オーディオ システムには、ブループリントからカスタマイズや制御ができる、関連するブループリント API があります。例えば、すべての音源とサブミックス DSP エフェクトは、サウンド ミックスやサウンド クラスと同様に、ブループリントから変更と制御ができます。

ゲーム ボリューム ミキシング

ゲーム ミキシングは、ゲーム オーディオにおいて難しい側面の 1 つです。Unreal Audio には、ゲーム ミックスの定義と制御に使用できる、サウンド デザイナー向けの多数の機能が用意されています。全体的なボリューム ミックスに寄与するさまざまな要素があります。

直接的なボリューム調整

サウンド キューやサウンド ウェーブなどの個別のアセットには、ボリューム コントロールを提供するパラメータがあります。オーディオ コンポーネントのサウンド ボリュームは、ブループリントから変更することもできます。PlaySound および SpawnSound オーディオ ゲームプレイ API によって、再生時にボリュームを選択可能にできます。サウンド キューでは、動的なゲームプレイ パラメータに合わせるか、他のサウンド キュー グラフ ロジックを使うことでサウンド ボリュームを変更できます。アセットのボリュームは、リスナーの方向による減衰など、さまざまな距離減衰オプションを通じて設定することもできます。

サウンド クラス

サウンド クラスは、同じ意味論的意味を持つアセットに一連の共通設定を適用するアセットです。サウンドを共通の分類にグループ化する主な理由の 1 つは、サウンドのボリュームをグループとして制御するためです。サウンド クラスは、個別のサウンド クラス グラフ エディタで作成、変更します。

[サウンド クラス](API/Runtime/Engine/Sound)
を使うと、ボリューム以外にも、クラス グループに含まれるサウンドの他のパラメータを制御できます。

サウンド ミックス

サウンド ミックスは、動的なサウンド クラス ボリュームとピッチ調整をサウンド クラスに適用するアセット タイプです。サウンド ミックスは、ダッキングを含むクラス ベースのボリューム制御をゲームで行うための従来の手法です。

ボリューム ダッキング は、Passive Mix Modifier (特定のサウンド クラスのサウンドが再生されるときに間接的にミックスを適用するメカニズム) を使用して行います。このようにして、ゲームでは、プレイヤーが喋ったり、銃が発射されたりしたときにバックグラウンド アンビエンスにダッキングを引き起こすことができます。

サウンド パラメータ モジュレーション

ゲーム ミックスを制御する新しいミックス手法は、オーディオの Parameter Modulation プラグインを使った手法です。このプラグインは、ミックスを通じてオーディオ パラメータを変更する概念を一般化しています。サウンドは、パラメータ バスの モジュレーション デスティネーション として、パラメータを関連付けるようになりました。パラメータ バス は、任意のパラメータ モジュレーション ソースをバスに書き込むことを可能にするオブジェクトです。例えば、モジュレーション ソースは、ブループリントでも、パラメータ ミックスからの派生でも、何らかのインタラクティブなシステムでも、LFO などのパラメータ モジュレーション オシレーターでもかまいません。

パラメータ モジュレーション プラグインは、サウンドのボリューム パラメータだけを制御するのではなく、パラメータ モジュレーションの概念を一般化し、同じパラダイムで複数の出力パラメータ (フィルタ頻度カットオフやピッチ モジュレーションなど) の制御をすることもできます。

詳細は オーディオ モジュレーションの概要 を参照してください。

並列処理管理

ゲームのミキシングで見落とされがちな点が、サウンドの並列処理 (基本的には、特定のタイプのサウンドをいくつ同時に再生できるか) の管理の問題です。慎重に管理しないと、ゲームはあっという間に 1 種類のサウンド (例えば、銃と他の敵の武器) だらけになってしまいます。

Unreal Audio Engine には、サウンドの並列処理アセットを通じて並列処理グループを制御する、サウンド デザイナー向けのツールが用意されています。このアセットでは、グループ内で許可するサウンド数の制限と、制限に達したときの処理を定義します。

Concurrency.png

サウンドの並列処理は、同時に再生できる特定のタイプのサウンド数を管理する方法。

例えば、新しいサウンドが発生するときには以前のサウンドを停止することも、新しいサウンドを拒否して既に再生中のサウンドを継続することもできます。

サウンドの並列処理では、グループを連鎖的に再生することも可能です。それには、 並列処理の解決 の優先度を、再生するサウンドに渡す必要があります。

例えば、足音が並列処理されていて、足音の合計数が制限されているとします。しかし、それはフォーリー サウンドの並列処理グループに入れることも、SFX サウンドの並列処理グループに入れることも、他のグループに入れることもできます

詳細については、「

[Make SoundConcurrencySettings](BlueprintAPI/Utilities/Struct/MakeSoundConcurrencySettings)
」を参照してください。

グローバル ポリフォニー管理と優先順位

ゲーム内で同時に再生できるサウンド数の管理は、ポリフォニー管理音声管理 と呼ばれます。オーディオ エンジンの主なコストは、音源のデコードとレンダリングです。そのため、CPU コストを削減するための主な手段の 1 つは、同時に再生できるサウンド数を制限することです。

UE4 では、その数をプロジェクト設定で設定し、ターゲット プラットフォームに応じて変更できます。その数をゲームの実行中に動的に変更することもできます。そのため、パフォーマンスがボトルネックになったり、パフォーマンスに余裕がなかったりする状況では、レンダリングする音源の数をオーディオ エンジンで動的に減らすことができます。

オーディオ エンジンがレンダリング可能なサウンドの最大数に達したら、どのサウンドを再生し、どのサウンドの再生を拒否する (停止する) のかを判断する必要があります。判断は、サウンドのボリューム合計 (すべてのステージを考慮した後のサウンドの最終的なボリューム) とサウンドの優先順位の組み合わせで行います。詳細については、「

[Priority](API/Runtime/Engine/Sound/USoundBase/Priority)
」を参照してください。

DSP エフェクト処理と合成

Unreal Audio Engine には、強力な デジタル信号処理 (DSP) エフェクト処理パイプラインも備わっています。

個々の音源で、個々の音源インスタンスに適用する DSP エフェクト チェーンを指定できます。それらのエフェクトの設定は、ブループリントでランタイム時に変更できます。また、Play in Editor (PIE) セッションを実行しながら、変更のライブ プレビューも可能です。

Unreal Audio には、DSP エフェクトを適用して音源のミックスに分析を実行できるサブミックス グラフ エディタもあります。サブミックス エフェクト チェーンでサブミックス エフェクトを構築できます。音源は、任意のサブミックスで再生し、そのオーディオを send エフェクト として他の任意のサブミックス グラフに送るように指定できます。音源はすべて、ブループリントから任意のサブミックスにオーディオを動的にルーティングできます。さらに、サウンド減衰設定では、距離の関数としてサブミックス エフェクトへのオーディオの送信をサポートしています。可能な作業は非常にたくさんあります。

Unreal Audio Engine は、マスター EQ、マスター圧縮、マスター リバーブなどの、基本的なマスター エフェクト設定が可能なほど柔軟です。また、より多くのカスタム DSP グラフとルーティング スキームの実験と調査もサポートしています。

さまざまな音源とサブミックス エフェクトが Synthesis and DSP Effects プラグインに実装されており、新しいエフェクトが常に追加されています。成長を続ける Signal Processing モジュールの DSP C++ ライブラリを使用すると、Unreal Audio Engine の DSP と Synthesis C++ API を通じて簡単に新しいエフェクトを追加できます。

自動プロパティ反映やホットローディング DLL など、UE4 の他の強力なツールやテクノロジーを使用すると、Unreal Audio Engine は、DSP エフェクトの作成を学習したり、ゲーム オーディオ テクノロジーに関する最新の実験や調査を行うプラットフォームの役割を果たしたりするのに最適な場所です。

アセットのクック処理

ターゲット プラットフォームのクック処理を行う場合、アセットは、ターゲットとしているプラットフォームとサウンドが使用している機能の両方に固有のコーデックを使用して圧縮されます。例えば、UE4 は、ハードウェア アクセラレーション コーデックがサポートされているプラットフォームでは、それに自動的にエンコードします。

インポートされたアセットをラップする USoundWave には、そのアセットのターゲット品質に関連して、クック時の圧縮スキームに役立つ品質スライダがあります。この品質値は、ターゲット プラットフォームに使用される具体的なコーデックに応じて、さまざまに解釈されます。

アセット圧縮オーバーライド:自動品質引き下げ

UE4 には、サウンド デザイナーやエンジニアが任意のターゲット プラットフォームでクック時の自動ダウンサンプリングや品質スケール引き下げの制御に使用できるさまざまなツールが用意されています。これにより、プラットフォーム固有コンテンツの再設計を最小限に抑え、プロジェクトを可能な限り多様なプラットフォーム向けに出荷できます。

例えば、PC 向けに出荷するプロジェクトは、モバイル プラットフォームをターゲットにすると、自動的にアセット メモリ フットプリントが削減されます。

デバッグとプロファイリング

Unreal Audio Engine は UE4 全体と完全に統合されているため、CPU の使用状況やメモリの分析に使用されている既存の他の UE4 のプロファイリング ツールすべてのメリットを享受できます。LLM (低レベルメモリ) トラッキング へのフックと CSV CPU プロファイリング が Unreal Audio Engine 全体に追加されています。さらに、 Unreal Insights ツール がすべてのオーディオ CPU 使用状況にアクセスできます。

Unreal Engine デベロッパー全員に、包括的な CPU とメモリのプロファイリングに加え、ゲーム内でオーディオ イベントが発生したときにその表示と分析に使用できるさまざまなデバッグ ツールが用意されています。例:

  • すべての再生サウンド ウェーブ インスタンス (アクティブにサウンドを生成しているオブジェクト) を表示するには、デベロッパー コンソール ウィンドウに「stat soundwave」と入力します。

  • 再生サウンド キューを表示するには、コンソール ウィンドウに「stat soundcues」と入力します。

  • ゲーム内の再生 3D サウンドを視覚化するには、コンソール ウィンドウに「Audio3DVisualize」と入力します。

他にも、オーディオ エンジンのさまざまなコンポーネントのオン/オフや、サウンドのミュートやソロ再生などのオン/オフを切り替えることができるコンソール変数が豊富にあります。デバッグの詳細については、「

[FAudioDevice](API/Runtime/Engine/FAudioDevice)
」を参照してください。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback