【UE5】MetaSoundで同時に鳴らす音を制限する
効果音を鳴らす際、複数の効果音を同時に鳴らすと音が重なり、数によっては音割れや爆音が発生することがあります。
例えば敵Actor を撃破した時に「Play Sound 2D」を使って撃破時の効果音を鳴らしたとします。
1体の敵であればただ効果音が鳴るだけですが、30体の敵が存在し、必殺技などで同時に撃破した場合、「Play Sound 2D」が(多分)30回呼ばれ結果的に効果音が沢山重なって凄い音が鳴ります。
今回は MetaSound を使い、最大で発生する音の数を制限する方法を記事にしてみました。
MetaSound を利用する前に
MetaSound を利用するためにはプラグインを有効にする必要があります。
メニューバー「編集」>「プラグイン」を開き、MetaSound を有効にします(プロジェクトの再起動が促されるので再起動も行います)
※ 本記事を執筆時点では MetaSound は Beta 版となってますのでご注意下さい ※
MetaSoundソースを作成
次にコンテンツブラウザで右クリックし「サウンド」>「MetaSoundソース」を選択します。
「MetaSounds」>「メタサウンド」
「サウンド」の中に別途「MetaSounds」というカテゴリがあります。そこから「メタサウンド」というものが作成できますが「MetaSoundソース」とは役割が違います。
「メタサウンド」の方はオーディオソースとしての入出力(In/Out)は存在しません。
代わりにグラフとしての入出力が提供されており、MetaSound 版の関数のような役割になっています。
例えば音にある効果を掛ける処理を「メタサウンド」で作っておき、実際に「MetaSoundソース」で利用する時にグラフ上へドラッグすると追加することができるため、処理を使いまわすような使い方が可能になってます。(マテリアル関数と同じような扱いかなと思いました)
音を鳴らす最大数を直に設定する
先程作成した「MetaSoundソース」を開き、画面上部の「ソース」をクリックします。
「ボイス管理」>「Concurrency」まで展開し "Override Concurrency" のチェックを入れます。
そうすると "Concurrency Overrides" が編集できるようになります。
ここにある最大数を設定すると音を同時に鳴らす数を制限できるようです。
この方法はその「MetaSoundソース」のみ適用されるので、他の「MetaSoundソース」と設定を共有したい場合は、サウンドの並列処理というアセットを作成することで対応可能です。
サウンドの並列処理
サウンドの並列処理(Sound Concurrency)に関しての公式ドキュメントはこちらです。
コンテンツブラウザで右クリック>「サウンド」>「サウンド並列処理」をクリックし、適当な名前を付けてこれを開きます。
このアセット開くと先程の "Concurrency Overrides" の項目がアセット化されていることが確認できます。
プロジェクト全体でこの「サウンド並列処理」をデフォルトにしておく設定も可能です。(上記公式ページの「サウンド並列処理アセットを設定する」をご確認下さい)
サウンドの並列処理をMetaSoundソースにセットする
「MetaSoundソース」に戻り、「ボイス管理」>「Concurrency」まで展開し "Override Concurrency" のチェックを外した状態にすると "Concurrency Set" の [+] ボタンがクリックできます。
ここに先程作成した「サウンド並列処理」をセットすればOKです。
(ファイル名は Sound Concurrency の頭文字で SC_ をプリフィックスでつけてます)
この設定だけアセット化されているので他の「MetaSoundソース」でも同じアセットを使いまわすことも可能になりました。
その他の細かいプロパティの説明も公式サイトに記載されております。
おまけ:サウンドキュー
サウンドキューにも同じ設定があるので同じように設定可能です。