4
2

More than 3 years have passed since last update.

ADX2 for UE4で、BGMに動的なエフェクトをかける

Last updated at Posted at 2020-02-29

はじめに

UE4.23+「ADX2 LE v2.10.05」を使用します。
アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、
ゲーム内のBGMに対してエフェクトを動的にかける処理を実装します。

サウンドに動的なエフェクトを使う場面の例

  • 雨天の屋外から屋内へ入る場合際に、段々と雨の音をくぐもらせる
  • スローモーション演出時にローパスフィルタをかける
  • 浮遊感や疾走感の表現として、ハイパスフィルタをかける
  • ダンスフロア等のロケーション表現
  • リバーブエフェクトをかけ、空間を表現

前提

「ADX2 for UE4 LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

やること

  • AtomCraftでキューを作成
  • DSPバスを設定し、エフェクトを用意
  • UE4にインポート
  • ブループリントでリアルタイムにエフェクトのかかり方を変更する

実装

AtomCraft側

キューの作成

キューシート、およびキューを作成します。
A_01.png
画像では「ポリフォニック」で作っていますが、セレクタによるトラック遷移など、他の処理を混ぜたい場合キューのタイプを任意のものにしましょう。
マテリアルからサウンドをトラックに入れます。
A_02.png

DSPバスの作成

エフェクトを構成する「DSPバス」の設定をします。
プロジェクトツリーの「DSPバス設定」を右クリックし、「新規オブジェクト」→「DSPバス設定の作成」を選びます。
A_03.png
新規に「DspBusSetting_1」が作られますので、分かりやすいようF2キーなどでリネームします。
A_04.png

DSPバスの中身を編集……するまえに、まずは必要なパネルを表示します。
ツールバーの「表示」→「メインビュー」→「ミキサー(DSPバス設定)」をクリックして、ミキサーのパネルを表示させます。
A_05.png
下の画像の場所にタブが出たと思います。もしない場合、もう一度ツールバーから表示を行ってみてください。
A_06.png
タブをクリックするとDSPバスの編集画面に移ります。
A_07.png

DSPバスについて

ミキサーについて少し紹介します。
下の画像は少しだけミキサー内でDSPバスを編集してみたものです。
A_08.png
一番左にあるのが「MasterOut」で、それ以外はエフェクトをかけるための「バス」という単位です。
「Reverb」「Flanger」「MixA」のバスはそれぞれエフェクトをかけた音を「MasterOut」に送り、最終的にそれらが合わさったものが「MasterOut」から鳴って音声を形作ります。
A_10.png

エフェクトをかけた音を、さらに別のバスに送って合成することも可能です。
A_10.png
それでは、実際にDSPバスでエフェクトをかけてみましょう。

DSPバスの編集

ミキサーの空いている場所で右クリックし、「DSPバスの追加」をします。
A_11.png
バスが追加されました。
A_12.png
「エフェクト」の横にある+ボタンを押してエフェクトを追加します。今回は試しに「リバーブ(反響)」を追加しました。
A_13.png
「センド」の横の+ボタンを押し、「MasterOut」を選んで「MasterOut」へと音を送ります。
A_14.png
下の画像のようになっていれば大丈夫です。
「MasterOut」へ音の通り道を作ってあげなければ、エフェクトのかかった音は鳴らないようになっています。
A_15.png
バスを選択していれば、インスペクターで名前を変更できます。
A_16.png
エフェクトを選択すると、インスペクターでエフェクトのかかり具合やパラメータが編集可能です。
A_17.png
A_18.png
現時点ではまだエフェクトがどうかかっているかをプレビューすることができません。次の項で、とりあえずエフェクトのプレビューを可能にしてしまいましょう。

バスマップの作成

キューに対してDSPバスを適用するためには、「バスマップ」が必要になります。
プロジェクトツリーの「バスマップ」内の「キュー設定用バスマップ」を右クリックし、「新規オブジェクト」→「バスマップの作成」をクリックします。
A_19.png
新規にバスマップが作られますので、リネームしておきます。
A_20.png
作成したバスマップを選択した状態で、インスペクターの「バスセンド」の項目内の「バス名1」に先ほど作ったバスを指定します。
A_21.png
A_22.png

キューへのDSPバス設定の適用

ワークユニットツリーで、任意のキューを選択します。
A_23.png
インスペクターで「バスマップ」に、作成したバスマップを指定します。
A_24.png
「バスセンド1」にチェックを入れます。
A_25.png
これでプレビューが可能になりました!再生ボタンを押して聞いてみましょう。
A_26.png
インスペクターの下の「バスセンド」ボタンを押すと、エフェクトのかかり具合を設定できます。
A_27.png
「MasterOut」のボリュームを低くすることで、エフェクトのかかった音のみをプレビューすることもできます。
A_28.png

エフェクトを追加する場合

プレビューして気に入らなかったらミキサーに戻ってエフェクトを編集したり、新しく追加するのもいいでしょう。

エフェクトを追加した場合、以下の項目を確認してください。
センドをMasterOutに繋がるように設定する
A_29.png
バスマップのインスペクターで、追加したバスを登録する
A_30.png
キューのインスペクターで、追加したバスセンドにチェックを入れる
A_31.png

キューシートのビルド

納得いくものができたら、ビルドします。
A_32.png

UE4での実装

キューシートのインポート

acfファイル、afbファイルをドラッグアンドドロップしてインポートします。
B_01.png
Atom Configファイルも今回使用するものに差し替えておきます。
B_02.png

キュー、リファレンスの配置

レベルにキューを配置します。
B_03.png
レベルブループリントを開きます。
B_04.png
イベントグラフの空いている場所で右クリックし、「Create a Reference to (アクター名)」を選択します。
B_05.png
リファレンスノードが配置されます。
B_06.png

ブループリントノードによるDSPバス操作

UE4内でエフェクトのかかり具合を変動させるには、「Set Bus Send Level」や「Set Bus Send Level Offset」ノードを使用します。
B_07.png
B_08.png
「Set Bus Send Level」は元のバスの音量に乗算するかたちで、「Set Bus Send Level Offset」では元のバスの音量に加算して操作します。

もしエフェクトがかかっているように聞こえない場合、後述する「DSPバス設定の上書き」を試してエフェクトを有効にしてください。

DSPバス設定を上書きする

DSPバス設定をまるごと適用するには、「Attach Dsp Bus Setting」ノードに任意のバス設定名を入力します。
B_09.png
プロジェクトツリー内の「DSPバス設定」名がそのまま使えます。
B_10.png
これを使用することで、DSPバスを設定していないキューに対してもエフェクトをかけることができます。

実装例

以下のグラフ例では、「0」キーを押すごとにバスID0(つまり元の音量)をON/OFFし、
「1」キーを押すごとにバス「Reverb」の音量をON/OFFします。
B_11.png
「Set Bus Send Level by Name」「Set Bus Send Level Offset by Name」ノードでは、AtomCraftのミキサーでつけたバス名を入力します。
B_12.png
特別な処理がない限り、バス名を指定して音量を変動させるのが楽で確実だと思います。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2