【UE5】オーディオを使用する

かなりナメていた。プロジェクト設定等、随分あちこち弄ったが、マルチプレイ環境ではいまだに上手くいかない。このままじゃいつまで経ってもまともに音が出せそうもないので真面目に勉強する。


オーディオ解析とビジュアライゼーション

Audio Synesthesia

Synesthesiaとは「シナスタジア」と言えば良いらしい。

プラグインらしいけどベータ版で最初から有効になっていた。よく分からないが、音楽プレーヤーで音を視覚化するとかってのがよくあるけど、あれができるってことなのか?なんか俺には関係なさそう。

オーディオデバッグ

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-debugging-in-unreal-engine?application_version=5.3

オーディオコンソールコマンド

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-console-commands-in-unreal-engine?application_version=5.3

バージョン5のリンクがまた展開されるようになったかと思ったら、ダメなときもあるという。noteとepicのどっちが悪いのか分からんけど、早く何とかしてほしい。

オーディオコンソールコマンド多すぎ。これを使うくらいならブループリントを弄って試した方が早そう。でも大規模ゲーム開発とかだとサウンドを作る人はそれだけとかになっちゃってゲーム本体のブループリントを気安く弄れなくて、こういうのが必要になったりするのかもね。

オーディオゲームプレイボリューム

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-gameplay-volumes-in-unreal-engine?application_version=5.3

オーディオ ゲームプレイ ボリュームの概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-gameplay-volumes-overview?application_version=5.3

これはベータ版らしい。これに頼るべきではなさそう。
「オーディオゲームプレイボリューム」と「オーディオボリューム」は別物。プラグインはデフォルトで無効になっていた。従来の「オーディオボリューム」よりも優れているようだが、俺には無用みたいだから今は読み飛ばす。

Unreal Engine のオーディオ

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-in-unreal-engine?application_version=5.3

日本語訳にはいきなり次のように書いてあった。

Unreal Engine でのオーディオ ゲームプレイ ボリュームに関連するトピック集

英語版だと次のように書いてある。

A collection of topics related to audio in Unreal Engine.

先ほど述べたばかりだが、「ゲームプレイボリューム」は別物。それに英語版は「オーディオボリューム」とも書いていない。

Unreal Engine 5 のオーディオ

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-in-unreal-engine-5?application_version=5.3

サウンドキュー、サウンドクラス、サウンドミックスはレガシー機能なんだそうだ。新しいオーディオミキサーでサポートされているというが、新しいのを使えば必要ないのかな。
とりあえずレガシー機能に関しては非常にネガティブなことが書いてある。ただし、実際に俺もそう思った。敵と味方で音量を変える場合なんかにどうやって実現すればいいのか分からなかった。新しいオーディオミキサーとやらでそこら辺に対応できていると素晴らしいのだが。

UE 5 のサウンド レンダリング
MetaSound:サウンドキューの上位互換みたいなものかも。
Audio Modulation:サウンドクラスの上位互換みたいなものかも。サウンドクラスは静的な定義だったけど、これだと動的に変えられるらしい。まだ勉強してみないとはっきり言いきれないが、もしかしたらこれで敵と味方を分けてコントロールできるかもしれない。
Quartz:これを使うと正確なタイミングで音を発生させられるらしい。
Audio Analysis:これは最初に出てきてたやつ。

プラットフォームのオーディオ設定

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/platform-audio-settings-in-unreal-engine?application_version=5.3

「プロジェクト設定」でいろいろ決めてくれってことらしい。

Audio Engine の概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-engine-overview-in-unreal-engine?application_version=5.3

非空間化サウンド
空間化サウンド
距離減衰
空間化/減衰の直交性
距離フィルタリング
オクルージョン
リスナーベースの減衰
距離ベースのサウンドのリバーブ
などがざっと紹介されている。

更に、ゲームプレイ オーディオ APIについて書いてある。たぶん今の俺にはこれが重要。全て引用させてもらう。

ブループリントとゲームプレイ C++ コードからサウンドを再生するのに使用できるブループリント関数はいくつかあります。これは、次の 2 つの一般的なカテゴリに分けられます。
*PlaySound 関数: これには、PlaySoundAtLocation、PlaySound2D、PlayDialogue2D などがあります。
SpawnSound 関数: これには、SpawnSoundAtLocation、SpawnSound2D、および SpawnSoundAttached があります。
PlaySound API: 指示されたサウンドをファイア アンド フォーゲット モードで再生します。サウンドが再生されてしまうと、その再生をブループリントから変更したり、オブジェクトにアタッチしたりすることはできません。この種の再生は、動的に制御する必要のない、単純な 1 回だけ再生するタイプのサウンドに有用です。
SpawnSound 関数: 動的にサウンドのパラメータを制御したり、他のアクタにサウンドをアタッチしたり、ループ サウンドを制御したりするためのオーディオ コンポーネントを作成できます。オーディオ コンポーネントは、Unreal Engine に用意されているサウンド用の便利なオブジェクトです。複雑でインタラクティブなブループリント システムでオーディオの制御に使用できます。

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

「他のアクタにサウンドをアタッチしたり」たぶんこれだ。SpawnSoundを使っていなかったせいで、他のアクタから音が出なかったんだと思う。もしもこれのせいじゃなかったら、また大変なことになりそう。

更に、「ゲーム ボリューム ミキシング」が出てくる。概要だから一通り全部なわけだ。

直接的なボリューム調整
Sound Class
サウンド ミックス
サウンド パラメータ モジュレーション

更に、
並列処理管理

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

この中に足音の話も出てくるけど、下手したら足音だらけになりかねないわけだ。

グローバル ポリフォニー管理と優先順位
言葉だけ聞くと難しそうだけど、サウンドが重なりまくった時に何を優先するか決められるってことらしい。攻撃の効果音が鳴りまくって、キャラクターボイスが再生されまくってるのに、足音を優先するのは違うとか設定できるらしい。それも動的にも設定できるらしい。

DSP エフェクトと合成
たぶん普通に最先端というか最近のデジタル信号処理で必要なことは全部できるってことなんだろう。

アセットのクック処理
アセット圧縮オーバーライド:自動品質引き下げ
PC用のプロジェクトをモバイル用にしたい時とか設定変えるだけでできちゃうみたい。

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

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

オーディオコンソールコマンドが多すぎる、と言ったが、まずは上の3つだけ覚えておけばいいかな。いや、これらも使わないか。

オーディオ ミキサーの概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-mixer-overview-in-unreal-engine?application_version=5.3

ここで言うオーディオミキサーとはオーディオレンダリングのことらしい。各種プラットフォーム用に作ったAPIを直接操作するよりも、オーディオミキサーに対して操作しておいた方が、マルチプラットフォーム開発しやすいとかの話が長かった。そしてオーディオミキサーのアーキテクチャが説明されていて、最後にサブミックスグラフの話。

ソースを生成した後、オーディオ ミキサーは サブミックス グラフ を処理します。サブミックス グラフの出力が、オーディオ ハードウェアで聞こえるオーディオです。

たぶん俺はあまり知らなくてもいい部分なんだと思う。

オーディオ用語集

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-glossary-in-unreal-engine?application_version=5.3

これで終わりならいいんだけど、まだ半分も終わっていない。

オーディオ メモリ管理

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-memory-management-in-unreal-engine?application_version=5.3

この辺りはとりあえず置いておく。困ったら読み込む。

オーディオ ストリーム キャッシングの概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/an-overview-of-audio-stream-caching-in-unreal-engine?application_version=5.3

サウンド並列処理のリファレンス ガイド

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/sound-concurrency-reference-guide?application_version=5.3

オーディオ ミキシング

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-mixing-in-unreal-engine?application_version=5.3

こっちが普通のオーディオミキサーの話みたいだ。

オーディオ モジュレーション

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-modulation-in-unreal-engine?application_version=5.3

先に述べたサウンドクラスの上位互換だと思う。

Audio Modulation の概要
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-modulation-overview-in-unreal-engine?application_version=5.3

Audio Modulation クイック スタート ガイド
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-modulation-quick-start-guide?application_version=5.3

Audio Modulation Reference Guide
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-modulation-reference-guide-in-unreal-engine?application_version=5.3

先ほど、これで敵と味方を分けてコントロールできればいいなぁとか言ったけど、そういうものじゃないっぽい。もっと高度な話なんだ。たぶんだけど。実行中、楽に声色を変えられるとか、そういうものなんじゃないのかな?と思った。↓こういうのだ。

サウンドクラスも細かく設定しようと思えば面倒になるのかもしれないけど、デフォルトのまま使えそうだったし、とりあえずサウンドクラスで作っておく。難しいことはやる気がない、というよりもできない。

オーディオ バスの概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-bus-overview?application_version=5.3

ステレオとか何とかの話らしい。これも難しすぎて分からない。デフォルトで作っておいて問題が出たら勉強する。

サウンドクラス

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/sound-classes-in-unreal-engine?application_version=5.3

これでやる。サウンドキュー、サウンドクラス、サウンドミックス。

オーディオ リンク

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audiolink?application_version=5.3

AudioLink は、Unreal Audio Engine を他のオーディオ エンジンなど、外部のソフトウェアに接続する API です。

俺には関係ないな。

外部オーディオ コントロール

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/external-audio-control-in-unreal-engine?application_version=5.3

これも俺には関係ない。

音楽システム

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/music-systems-in-unreal-engine?application_version=5.3

Quartz

これもさっきでてきた新しいなんとかなんだ。たぶんゲームで使うようなものじゃないんだろう。もっと高度な何かで必要になるんだと思う。

サウンド ソース

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/sound-sources-in-unreal-engine?application_version=5.3

waveファイルとサウンドキュー以外は難しすぎて無理。サウンドキューだって難しい項目が沢山あった。
いつかどこかで勉強すべきなのかもしれないけど今じゃない。

Soundscape

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/soundscape-in-unreal-engine?application_version=5.3

英語版もだけど何も書かれていない。

空間化と音量減衰

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/spatialization-and-sound-attenuation-in-unreal-engine?application_version=5.3

俺に絶対必要なのはこれ。

空間化の概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/spatialization-overview-in-unreal-engine?application_version=5.3

主な空間化の方法は3つ。パニング、音場空間化、バイノーラル オーディオ空間化。

パニング
ステレオの場合は左のスピーカーの音を大きくするとかで、何かが左側にあるかのように錯覚させたりするもの。
パニングの方法がたくさん書いてあるけど、全部UE任せにできるならそうしたい。自分の環境がステレオしかないから5.1chとか考えたくない。

音場空間化
音場ではなくてアンビソニックという言葉でもよく知られているんだそうだ。俺はどっちも知らなかったが。
パニング+音場にした方が良いとか、3D音源は音場をどうたらしてどうとかで~など俺からすると意味不明なことが書いてあるが、設定したらそれをやってくれさえすれば、こっちとしては何の問題もない。

バイノーラル オーディオ空間化
ヘッドフォン向け。聞いたことがある。耳を舐める音とかがリアルなんだ。バイノーラル オーディオ空間化にも主に3つのやりかたがあるんだとか。なんか細かく書いてあるが、ここでは割愛させてもらう。

必要な知識ではあるが、具体的なやり方(プログラミングやBP)は書かれていなかった。

サウンドの減衰

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/sound-attenuation-in-unreal-engine?application_version=5.3

Sound Attenuation、カタカナでは「アテニュエイション」で良いらしい。

いろいろあるが、俺は全部リニアのスフィアで構わない。ただ、なるほどと思ったのが、コーン型。拡声器を表現できるわけだw

Attenuation (Spatialization) (減衰 (空間化))
これらのプロパティが「オーディオ」の「サウンド減衰」で作ったファイルで定義できるのは分かるんだが、じゃあ、それをどこで使えば、どこに設定してやればいいのかまだ分からない。(よく見たらPlay Sound at Locationのパラメータにもあった)
設定できる項目が多すぎて、とてもじゃないが全て把握できない。

サブミックス

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/submixes-in-unreal-engine?application_version=5.3

ネイティブ音場アンビソニックスのレンダリング

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/native-soundfield-ambisonics-rendering-in-unreal-engine?application_version=5.3

音場アンビソニックスなんて書いちゃったら、音速のソニックみたいになっちゃうんじゃないのか?と思ったけど、そうでもないのか?

アンビソニックス という特殊な音場表現は、Spherical Harmonics (球面調和関数) を使用して位置情報を持つオーディオを球体に投影します。

音場表現の中でも特別なものなのか。
ネイティブってのはインポートした音がアンビソニックスの場合の物なんだと思う。インポートした音がアンビソニックスじゃなくても、アンビソニックスみたいにできるらしいが、そういうのは余裕ができてからだな。まずはマルチプレイで音が出るようにしないと。

サブミックスの概要

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/overview-of-submixes-in-unreal-engine?application_version=5.3

サブミックス とは、オーディオが送信されない場合でも常に実行されている DSP (デジタル シグナル プロセス) グラフ です。

という話だが、この辺りもよく分からないな。後で必要になったらまた勉強する。

オーディオ ボリューム アクタ

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-volume-actors-in-unreal-engine?application_version=5.3

Ambient Zones

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/ambient-zones-in-unreal-engine?application_version=5.3

アンビエント(ambient)は、英語で「周囲の」、「環境の」という意味。」だそうだ。

Audio Volumes

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/audio-volumes-in-unreal-engine?application_version=5.3

レベルに配置して音の設定ができるようになるらしい。さっきのアンビエントゾーンは、この音の設定をゾーンごとに変えるパラメータなのかな。
拡声器の話のように音のカタチもいろいろあって設定できるようになっている。リバーブなども。ホラーゲームなんかだと、この辺りが重要になるんだと思う。

Ambient Sound アクタのユーザーガイド

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/ambient-sound-actor-user-guide-in-unreal-engine?application_version=5.3

書いてある通りにアンビエントアクタを配置してPIE開始時に音を鳴らすことはできたけど。あと何故か閉じる時にも音が鳴る。理由は分からない。

リバーブ

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/reverb-in-unreal-engine?application_version=5.3

コンボリューション リバーブ

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/convolution-reverb-in-unreal-engine?application_version=5.3

今のところはリバーブを使う予定はない。

将来的に建物の中とか水中とかやるかもしれないけど、その時になったら新しいMetaSoundとか考える。どう考えても今こだわるべきはサウンドじゃない。もちろん軽視しちゃ不味いんだろうけど。

一度読んだくらいじゃ到底理解できない難しい話ばかりだったけど、多少言葉は覚えた。

この記事が気に入ったらサポートをしてみませんか?