Audio Synesthesia プラグインは、自動抽出されたオーディオ メタデータを公開して、ブループリントのゲームプレイ スクリプト処理で使用可能にします。この機能により、デザイナーはアニメーション、エフェクト、サウンドと密接に結合している要素を扱いやすくなります。
入門
この機能を使用するには、Audio Synesthesia プラグインを有効にする必要があります。[Edit (編集)] > [Plugins (プラグイン)] > [Audio (オーディオ)] から [Audio Synesthesia] をクリックして有効にします。プロンプトが表示されたら Unreal Editor を再起動します。
新しい Audio Synesthesia アセットが追加されると、そのアセットに対して Unreal Engine が自動的に Audio Analyzer を作成します。追加できるアセットは 3 種類あります。
Audio Synesthesia NRT—
USoundWave
のノンリアルタイム (NRT) 解析をサポートする解析方法です。Audio Synesthesia NRT Settings—Audio Synesthesia NRT の設定です。デフォルト値の設定を変更します。
新しいアセットを作成すると、ドロップダウン メニューが表示されます。使用する解析の種類を選択します。
基本概念
AudioSynesthesiaNRT
Object は以下のことを実行します。
解析アルゴリズム設定を解析中のサウンド ウェーブにリンクします。
解析結果を
uasset
として維持します。結果へのブループリント関数を提供します。
AudioSynesthesiaNRT
Object を使ったオーディオの解析は、すべてエディタで実行されます。ゲームプレイの間、解析結果がファイルから読み込まれます。このためゲームで生成されたオーディオに対する AudioSynesthesiaNRT
Object の解析は制限されますが、実行中に負荷をかけるオーディオ解析の実行が回避されます。
設定が更新されたり、サウンド プロパティが解析で更新されるたびに解析が実行されます。
解析方法の使用例
LoudnessNRT 解析の作成と設定方法
AudioSynesthesiaNRT
アセットを追加します。AudioSynesthesiaNRT
アセットは [Sound] > [AudioSynesthesiaNRT] にあります。ドロップダウン メニューから [LoudnessNRT] を選択します。
オプションとして、 ドロップダウンで [LoudnessNRTSettings] を選択して [Sound] > [AudioSynesthesiaNRTSettings] から [AudioSynesthesiaNRTSettings] を追加します。
インポートしたサウンドを使って LoudnessNRT Sound プロパティを更新します。
以前に作成した LoudnessNRTSettings で更新された LoudnessNRT Settings プロパティ
ブループリントで LoudnessNRT を使用する
LoudnessNRT をブループリントで使用する方法は数多くあります。ここでは、2 つの球が再生中のオーディオの音量との関連で変更する例を紹介します。
新しい Actor ブループリントを作成してシーンに追加します。
ブループリントを開いて AudioComponent と 2 つの球を追加します。この例では、球の名前を「LeftSphere」と「RightSphere」にしました。
変数の LoudnessAnalyzer と Duration を追加します。Duration は float、LoudnessAnalyzer は LoudnessNRT です。
コンストラクション スクリプトで
オーディオ コンポーネントのサウンドを Loudness Analyzer で使用するサウンドに設定します。
サウンドの全体的な持続時間を格納します。
クリックしてフルサイズで表示。
イベントスクリプトでは、
オーディオ再生率が更新されるたびにイベントをトリガーするように AudioPlaybackPercent を設定します。
オーディオ再生を開始します。
音の持続時間に再生率を乗じて再生を秒単位にします。
現在の秒単位の再生時間でアナライザーから正規化されたラウドネス値を抽出します。
ラウドネス値に基づいて球のスケールを設定します。
クリックしてフルサイズで表示。
ノンリアルタイム (NRT) 解析
LoudnessNRT
LoudnessNRT 解析はオーディオの知覚的な音の大きさを測定します。オーディオの振幅と関連し、時間と共に変わる数値を提供するという点で、エンベロープフォロワー、または音量計と似ています。人間の音の知覚の仕方、また多かれ少なかれ特定の周波に対して敏感であることを考慮すると、振幅のみの測定とは異なります。たとえば、口笛の振幅はかなり低いですが、知覚的なラウドネスはかなり大きいです。一方、振幅は非常に高いベース音は、リスナーの多くがラウドネスを中程度としました。これらをすべて考慮して、LoudnessNRT は口笛のラウドネスは高く、ベース音のラウドネスは中程度と示します。
LoudnessNRTSettings を使って LoudnessNRT 解析を設定します。LoudnessNRTSettings において最も一般的な調節パラメータは以下の通りです。
AnalysisPeriod 測定の実行頻度を制御します。
MinimumFrequency と MaximumFrequency は対象とする周波数を制御します。高音または低音で記録された中で一部のコンテンツを完全に無視する場合、あるいは複数の周波数においてラウドネス アクティビティを対比する場合に有用です。
CurveType は、使用する知覚曲線を具体的に制御します。通常は詳細設定になります。
NoiseFloorDb はサイレンス (音がない) とみなす振幅を示します。
ConstantQNRT
ConstantQNRT 解析 はオーディオの個々のバンドの強さを測定します。一定時間での周波数帯のラウドネスを示す点においてスペクトログラムと似ていますが、知覚的に意味のある方法でバンドを調整する点が異なります。ConstantQNRT 解析を使用する場合、ピアノの符号またはマルチバンド エコライザーのバンドが間隔をあけているようにバンドは配置されます。
ConstantQNRTSettings を使って ConstantQNRT 解析を設定します。ConstantQNRTSettings において最も一般的な調節パラメータは以下の通りです。
AnalysisPeriod 測定の実行頻度を制御します。
StartingFrequency、NumBands、NumBandsPerOctave は、周波数バンドのスペーシング、幅、位置、数を制御します。
DownMixToMono は、オーディオ チャンネルが別々に処理される、または処理前に混ぜて単一のオーディオ チャンネルにすべきかどうかを示します。
OnsetNRT
OnsetNRT 解析 は、音の立ち上がり、打楽器、会話の破裂音、爆発音を含む、多数のソースからのオーディオ オンセット イベントを検出します。OnsetNRT 解析は、タイムスタンプと強さの両方で開始を提供します。
OnsetNRTSettings を使って OnsetNRT 解析の設定を行います。以下は、OnsetNRTSettings の中で最もよく使われる調節パラメータです。
GranulartiyInSeconds は開始の最低間隔を決定します。
Sensitivity は、音の立ち上がりの検出が開始される直前の大きさの閾値を設定します。
MinimumFrequency と MaximumFrequency は開始を探す周波数の範囲を制御します。高い、または低い値で登録された一部のコンテンツを完全に無視する場合、あるいは複数の周波数において開始のアクティビティを対比する場合に有用です。
DownMixToMono は、オーディオ チャンネルが別々に処理される、または処理前に混ぜて単一のオーディオ チャンネルにすべきかどうかを示します。