0
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でつくる、BGMとシンクロした演出

Last updated at Posted at 2021-02-25

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、BGMの任意のタイミングで演出をしてみます。

アップデートされたADX2LEの新機能である「シーケンスコールバックマーカー」を使用してBGMにタイミング情報を埋め込み、UE4のブループリントからイベントを起動する手法です。

当記事ではUE4.26.1を使用します。基本的にブループリントのみでの実装を想定しています。
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

実装

AtomCraftでBGMにタイミング情報を設定する

まずはAtomCraftで、BGMにイベントの発火タイミングを設定していきます。

キューの作成

キューを新規に作成します。
A01.png
任意のBGMをインポートし、キュー内にドラッグアンドドロップします。
A02.png

ビート同期情報の作成

トラックリストの空欄で右クリックし、「ビート同期情報の作成」を選択します。
A03.png
トラック上に「BeatSync」という表示が出現します。
クリックして、インスペクターにてBPMを入力します。
A04.png
もし曲のBPMが不明な場合、マテリアルツリーのwavファイルを右クリックし、「BPM解析」で取得することが可能です。
A05.png
解析した情報はログに出力されます。
A06.png

コールバックマーカーの埋め込み

トラックリストで右クリックし、「マーカーの作成」を選択します。
A07.png
マーカーの設定ウィンドウが出るので、タイプを「コールバック」に変更します。名前やタグを適当に入力しておき、「追加」ボタンを押します。
今回は曲を「Verse」、「Bridge」、「Chorus」(広義のAメロ、Bメロ、サビに当たります)という要素に分けてイベントを埋め込んでみます。
まずは「Callback_Verse」を作ります。
A08.png
「Cb」というマーカーが出現するので、Aメロの開始場所まで移動させます。
A09.png
同じようにして、「Bridge」「Chorus」のコールバックマーカーを作り、任意のタイミングにマーカーを埋め込みます。
A10.png
A11.png
A12.png
コールバック設定の「ID」は被らないものを用意しておくと後々便利です。

キューシートのビルド

ここまで完了したらキューシートをビルドします。
A13.png
A14.png

ブループリントからイベントを起動する

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

ビルドしたキューシートをインポートします。acbファイル、acfファイルをドラッグアンドドロップコンテンツブラウザにドラッグアンドドロップします。
B01.png
ツールバーの「Edit」→「Project Settings」を開き、
B02.png
「CriWare」のタブで、「Atom Config」に出力したacfファイルを指定しておきます。
B03.png

キューをレベルに配置する

BGMとなるキューをレベル上に配置しました。ゲームを再生すると、BGMも流れ出すはずです。
B04.png

ブループリントでイベントを呼び出す

配置したキューをレベル上で選択しておき……
B05.png
「Blueprints」→「Open Level Blueprint」からレベルブループリントを開きます。
B06.png
空欄にて「Create a Reference to (キュー名)」を選択すると、キューのリファレンスノードが配置されます。
B07.png
B08.png

リファレンスノードから線を引き出し、Get Atom Componentを配置します。
B09.png
さらに線を伸ばし、Bind Event to On Atom Sequence Callbackを作成します。
似た名前のノードが複数あるのでご注意を。
B10A.png
B10.png
「Event」ピンから線を伸ばし、Add Custom Eventでカスタムイベントを作成します。
B11.png
コールバックタイミングで呼び出されるイベントなので、今回は「OnCallBack」と名前をつけました。
B12.png
B13.png
これで、何らかのシーケンスコールバックが埋め込まれたタイミングでイベントが発火します。

任意の演出を作る

コールバックの名前やタグによって処理を分岐させ、AメロやBメロ、サビのタイミングで違う演出が呼び出せるようにしていきます。
「Sequence Info」から引き出したBreakノードで、シーケンスコールバックの情報を取得することが可能です。
B14A.png
B14.png
「Tag Name」や「CallBack ID」から線を引き出し、各Switchノードで処理を簡単に分岐させられます。
B15.png
B16.png

Switchノードでコールバック名ごとに処理を書いていけば、コールバックマーカーが増えても異なる演出を実装することができます。

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