【UE5】新しいオーディオシステム『MetaSound』

UE5 で追加された新しいオーディオシステム『MetaSound』の概要と実装フローについて書きたいと思います。

※ Early Access 版での検証記事のため、正式リリース時とは内容が異なる部分があるかもしれません。


概要

『MetaSound』は従来のオーディオシステム『Sound Cue』よりもよりプロシージャルなサウンドを作成でき、パフォーマンスも向上してるとのこと。
ブループリントやNiagaraなど他のエディタにより近い設計のノードベースエディタとなっており、C++から自作ノードを作るなど『Sound Cue』よりも拡張性が高くなっています。

また、マテリアルインスタンスなどと同様のフローで MetaSound のアセットをインスタンス化できるようになるアップデートも予定されているとか。




実装フロー

プラグイン有効化

Early Access 版ではデフォルトでプラグインが無効になっているので有効化します。

f:id:shuntaendo:20210527081146p:plain



アセット作成

コンテンツブラウザ右クリック → Sounds から MetaSound のアセットを作成します。
(ちなみに Sound Cue は "Legacy" カテゴリに入っています)

f:id:shuntaendo:20210527085135p:plain:w300



MetaSoundエディターで編集

アセットを開くとInputノードが1つとOutputノードが2つ配置されています。
白いピンがトリガーピン、ピンクのピンがオーディオピンと呼ばれるものです。

f:id:shuntaendo:20210527095404p:plain:w700


トリガーピンはブループリントでいう実行ピンの役割をしており、MetaSoundを再生すると "On Play" ノードから順番に実行されます。
"On Play"ノードは複数置くことも可能です。また、"On Finished"ノードは任意的なもので繋がなくてもサウンドの再生自体はされます。

オーディオピンは最終的な音の出力をするためのものです。


こんな感じ。
Wave アセットをそのまま再生する処理です。

f:id:shuntaendo:20210527100211p:plain


エディタ上部の "Play", "Stop" から再生可能で、エディタ右側には音量が可視化されています。

f:id:shuntaendo:20210527102206p:plain


ノードの種類や細かい内容は公式ドキュメントで詳しく解説されています。
Waveアセット(音源)が無くても、Sine(波)などから音を作ることも可能です。

docs.unrealengine.com




全体設定

エディタ上部の "General", "MetaSound" タブからサウンド全体の設定をできます。

f:id:shuntaendo:20210527102622p:plain:w700


・音量、ピッチ

f:id:shuntaendo:20210527102729p:plain:w300


・音減衰アセットの設定

f:id:shuntaendo:20210527102918p:plain:w300


・モノラル / ステレオ切り替え

f:id:shuntaendo:20210527103057p:plain:w300

切り替えると Output ノードのオーディオピンも自動で切り替わります。

f:id:shuntaendo:20210527111329p:plain




ゲーム内でサウンドの再生

再生手順は Sound Cue と同じです。

MetaSound アセットを直接レベルに配置することでアクターとして生成され、プレイするだけで自動で再生してくれます。

f:id:shuntaendo:20210527110819p:plain:w500


また、Audio コンポーネントに MetaSound アセットを指定して再生することもできます。

f:id:shuntaendo:20210527111137p:plain:w700




値の外部操作

マテリアルや Niagara と同じように値をパラメーター化し、ブループリントなど外部から操作可能です。

まずはピンを引っ張り、メニューから "Promote To Graph Input" を選択します。

f:id:shuntaendo:20210527111735p:plain:w400


インプットノードへと変換され、これだけで外部からアクセス可能になりました。

f:id:shuntaendo:20210527113321p:plain:w500


BP にて "GetParameterInterface"ノードから "Set"ノードで上で作ったインプットノードの値を代入できます。

f:id:shuntaendo:20210527114059p:plain:w500


インプットノードのタイプが "Trigger" の場合は "Trigger" ノードから実行できます。

f:id:shuntaendo:20210527124630p:plain:w500




まとめ

個人的には Sound Cue よりも直感的でリアルタイムにも強く使い勝手よいので今後のアップデートが楽しみです。

ノードを応用した記事も上げているのでこちらも参考にしてみてください。

shuntaendo.hatenablog.com

shuntaendo.hatenablog.com







UE Version : 5.0.0-16433597