MetaSound:次世代の音源

このドキュメントでは、Unreal Engine 5 の MetaSounds の概要について説明します。

MetaSound の概要

Unreal Engine 5 では MetaSound (メタサウンド) という高性能オーディオ システムが導入されています。MetaSound を使用すると、オーディオ デザイナーは音源のデジタル信号処理 (DSP) グラフの生成を完全にコントロールできます。

MetaSound では、ユーザーによるカスタマイズ、サードパーティの拡張性、グラフの再利用といった機能や、エディタ内のサウンド デザイン用の強力なツールを提供します。

完全にプロシージャルなオーディオ エンジン

サウンド キューとは異なり、MetaSound は基本的にデジタル信号処理 (DSP) レンダリング グラフです。MetaSound により、オーディオ デザイナーは、サンプル アキュレートなタイミングとオーディオバッファ レベルのコントロールが可能な強力なプロシージャル オーディオ システムを構築することができます。

MetaSound を使用することで、オーディオ デザイナーは、ランタイム時に合成的にオーディオを生成して、プロシージャルに生成されたサウンドを他のオーディオ ソースと自由に組み合わせて使用することができます。

また、MetaSound は、ゲーム データやプレイヤーのインタラクションに簡単に組み込むことができるため、ゲームプレイ イベントによってトリガーされる没入感溢れる体験を創出できます。

オーディオ デザイナーによるより高度なコントロールが可能

各 MetaSound は独自のオーディオ レンダリング エンジンであるため、これらは互いに並行してレンダリングされ、独立したレンダリング形式 (サンプル レート、バッファ サイズ、チャンネル数など) を使用します。

MetaSound は、プログラミング経験のないオーディオ デザイナーでも、ノードベースのインターフェースを使用してプロシージャルなサウンドを作成できる新しい MetaSound エディタ で作成されます。MetaSound エディタを使用すると、すべてのオーディオ入力パラメーターをライブでプレビューすることができます。また、オーディオ レンダリング パイプライン全体の詳細なコントロール オプションを提供する複数の事前作成済みのノードを含みます。

MetaSound エディタは、出力でのリアルタイム メーター、パラメータ (ノブやスライダー) を制御および視覚化するグラフ内ウィジェット、リアルタイムでイベントと操作するボタンを備えています。

オーディオのサンプル アキュレートなコントロール

MetaSound はオーディオ ソースのサンプル アキュレートなコントロールを提供します。サンプル精度とは、オーディオの 1 サンプルのオーダーのタイミングを取る能力を指します。つまり、サンプル レートが 48,000 サンプル/秒の場合、サンプル アキュレートなイベントのタイミングは 1/48,000 秒、つまり 0.02 ミリ秒の解像度となります。

MetaSound は、いくつかの方法でサンプルアキュレート コントロールをサポートしています。MetaSound トリガーは、グラフ内でサンプルアキュレートなイベントを実行します。トリガーは、ゲームプレイ イベント、MetaSound ノード、またはグラフ自体から発生させることができます。

MetaSound Wave Player ノードは、サンプルアキュレートなコンカチネーション (連結) を行います。つまり、再生中のサウンドウェーブの再生が終わると、次のキューイングされたサウンドウェーブをシームレスに再生し、オーディブルヒッチやオーディオの中断が発生することはありません。

MetaSound ノードの多くのパラメータは、オーディオ バッファによって変調させることができ、「オーディオレート」によるパラメトリック モジュレーションが実現します。これにより、強力な合成とサウンド デザインの手法が可能になります。

ワークフローの改善

MetaSound では、プリセットによってグラフを再利用したり、参照したりすることができます。プリセットは、既存の MetaSound グラフを参照し、グラフの入力をオーバーライドすることができます。

これにより、1 つのグラフに、ベースとなるグラフを参照する異なるプリセットが存在することになり、生産性が大幅に向上します。プリセットには、同じベース グラフに対する独自の差異が含まれます。プリセットがなければ、異なるバリエーションを考慮するために、類似している可能性のある多数のグラフを管理しなければなりません。

プリセットのもう 1 つの利点は、ベース グラフを更新すると、そのグラフを参照しているすべてのプリセットに、自動的に変更が反映されることです。これにより、開発プロセス全体の生産性を大幅に向上させることができます。

プリセットに加え、MetaSound はグラフ コンポジション (他の MetaSound グラフの中で直接 MetaSound を使用する機能) も備えています。また、カスタムの MetaSound ノードを作成し、他の MetaSound グラフ内で使用することができます。カスタム ノードは、入出力の定義や、ツールヒント、バージョン情報などを提供することができます。

このようにして、共通の機能を持つノードのライブラリをビルドし、複数のグラフで再利用することができます。プリセットと同様に、カスタムの MetaSound ノードは、それを参照するすべての MetaSound に自動的に変更が反映されるので、複雑で変化するプロジェクトの生産性をさらに向上させます。

パフォーマンスの向上

MetaSound は、音源の非同期デコーディングに使用されているものと同じアーキテクチャとタスクを使用して、メインのオーディオ ミキサーに非同期でレンダリングされます。

各 MetaSound DSP グラフは、最適化された静的な非仮想 C++ オブジェクトに自動的に変換され、ノード間のデータはコピーされずに参照によって渡されます。これにより、解釈されたバイトコード ランタイム、負荷の高い仮想関数オーバーヘッド、データ コピーなど、この種のシステムによくあるデメリットを回避することができます。

拡大するノード ライブラリ

MetaSound は、プロシージャルなサウンド デザインや音楽のための強力なさまざまなオプションを提供する MetaSound ノードの拡大するライブラリを備えています。

このライブラリは、シーク、ループ ポイント、サンプルアキュレートなコンカチネーション、ピッチスケール モジュレーション、オーディオ ファイル内のキューポイントからの読み取りをサポートする充実した Wave Player ノードを備えています。

その他、トリガー ユーティリティ、DSP 演算、DSP フィルタ、ダイナミクス処理、空間化、リアルタイム合成ジェネレータなど、多彩なノードを含んでいます。

高い移植性と拡張性

MetaSound は C++ ノードの API を使用してサードパーティのプラグインで拡張することができます。

MetaSound エディタの新しいノードを作成するには、C++ クラスを作成し、プログラマーがノードの入出力、および実行コールバックを定義する必要があります。このクラスには、実際のオーディオ レンダリング コードとロジックも含まれます。新しいノードは、1 つの '.cpp' ファイルに数百行のコードで記述することができます。

充実したゲームプレイ インタラクション

MetaSound は、マテリアルおよび Niagara VFX システムで使用される入力パラメータと同様に、カスタムのユーザー入力パラメータに対応しています。これらのパラメータは、Audio Component パラメータ インターフェースを通じて、ブループリントで直接、またはゲームプレイ C++ コードで、ゲームプレイ システムに接続することができます。

MetaSound は、Parameter Modulation プラグインとも統合されました。これは、あらゆるモジュレーション ソース (ブループリントからのものを含む) からモジュレーション バス アセットに書き込むシステムを提供するオプションのプラグインです。MetaSound は、パラメータ バスから読み取ることができるようになったため、あらゆる MetaSound システムのモジュレーションに使用できます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル