1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UE4+ADX2でサウンドエフェクターを作ってみる(発展編)

Last updated at Posted at 2021-01-08

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、
BGMに自由に変化をかけられるサウンドエフェクターを作り、さらに多くのエフェクトを負荷できるように改良します。
次の記事の続きになります。
https://qiita.com/SigRem/items/fa0601b44f13ce86eff4

実装したサウンドエフェクターはこんな感じ↓

当記事ではUE4.23+「ADX2 LE v2.10.05」を使用します。基本的にブループリントのみでの実装を想定しています。
ADX2はインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx2-le/

前提

ADX2 for UE4の導入や基本的な使い方は以下の記事にあります。当記事だけでも実装はできるかと思いますが、必要に応じて参照してください。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

実装

追加のバスマップをBGMに適用する

AtomCraftでバス設定を作成する

AtomCraftで追加したいバス設定を作っていきます。
プロジェクトツリーの「DSPバス設定」を右クリックし、「新規オブジェクト」→「DSPバス設定の作成」を選びます。
A01.png
新規にバス設定が作成されます。必要に応じてリネームしましょう。
A01B.png
前回使わなかったエフェクトをミキサーに追加してみました。エコー、ディレイ、ビットクラッシャーの3つです。ひとつのバスに複数のエフェクトを入れることも可能です。
A02.png

キューシートのビルド

これだけで準備は完了です。キューシートをビルドします。
そのままUE4を起動し、ビルドしたキューシートをインポートし直します。
キューは変更していないため、acfファイルとキューシートだけが更新されることになります。
A03.png

UIにバス設定の切り替えボタンを追加する

前回使用したUIに、簡単ではありますがDSPバス設定を切り替えるためのボタンを追加してみました。
A04.png
上がデフォルトの「DspBusSetting_0」に、下が今回追加した「DspBusSetting_1」に切り替えるボタンです。
ボタンを選択した状態で、Detailsパネルの「On Released」の「+」ボタンを押して、このボタンがクリックされた場合のイベントを追加します。
A05.png
ふたつのボタンに対してイベントを追加しました。
A06.png

バス設定の切り替え処理

DSPバス設定を切り替えるためには、まず準備として「AtomAsrラック」を取得する必要があります。これはGet Default Asr Rackノードだけで取得可能です。
A07.png
Get Default Asr Rackノードの青いアウトプットピンから線を伸ばし、Attach Dsp Bus Settingノードでバス設定を指定し切り替えます。
A08.png
ボタンに対応したバス設定の名前を入力します。
A09.png

この状態でテスト再生すると、ボタンでバス設定を切り替えられるようになっています。バス設定とAISACは共存可能なため、ハイパス・ローパスフィルターやピッチシフト機能はそのまま使えます。
下のスライダーがそれぞれエコー、ディレイ、ビットクラッシャーを調整するスライダーに変化します。
A10.png
このままではエフェクト名が変わっていないので、バス設定の切替時にエフェクトの表示名を変更する処理を作ります。

エフェクト名を変更する

UIのデザイナーエディタで該当のテキストを選択し、DetailsパネルのText欄で「Bind」→「Create Binding」でバインドを作成します。
バインドを割り当てると、変数に変化が起きた際にテキストを変化させることができます。
A11.png
グラフエディタに移るので、「Return Value」のピンクのインプットピンを右クリックして「Promote to Variable」をクリックし変数を作成します。
A12.png
変数はリネームし、Default Valueにはデフォルトのバス設定のエフェクト名、つまり「Reverb」を入れておきます。
A15.png
3つのエフェクト名に対してバインドを作成したら、バス設定の切り替え処理に名前を代入する処理を追加します。
A13.png
バス設定をボタンで切り替えると、エフェクト名が変わるようになりました。
A14.png
多くのバス設定を切り替えたい場合、データテーブルなどで名前やパラメータを管理しておき代入する方がスマートになるかと思います。

稀にですがバス設定の切替時に再生が止まってしまう(ボリュームレベルが0になってしまう)ことがあります。その場合はバス設定切替時にSet Bus Send Levelノードを走らせ、ボリュームを調整してあげてください。

「スナップショット」でエフェクトをさらに変化させる

ADX2には「DSPバス設定スナップショット」という機能があり、作成したDSPバス設定のパラメータが変化したバリエーションを作ることができます。これを適用し、リバーブなどのエフェクトに変化をつけてみることにします。

スナップショットの作成、編集

プロジェクトツリーの「DSPバス設定」にある既存のDSPバスを右クリックし、「新規オブジェクト」→「スナップショットの作成」を選択します。
B01.png
新しく「スナップショット」が作られます。必要に応じてリネームしてください。
B02.png
スナップショットを選択した状態でバス内のエフェクトをクリックし、インスペクターでルームサイズなどのパラメータを細かく変更します。
B03.png
こういったスナップショットを用途に合わせて作っていきます。
B05.png
完了したらビルドします。

ブループリントでスナップショットを適用する

ブループリントからスナップショットを適用する実装はとてもシンプルで、Apply Dsp Bus Snapshotノードを使うだけです。
前提としてGet Default Asr Rackノードを使用します。
B04.png
上の実装例では、キーボードの「5」キーを押すとスナップショットの設定が適用され、リバーブの広がりが大きくなります。
また、「Miliseconds」のインプットに入力した時間をかけてスナップショット設定に繊維していきます。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?