はじめに
アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させ、
現在の状態に応じてループ楽曲の曲調、テンションを変化させていく「インタラクティブミュージック」を実装する方法です。
UE4+ADX2で、ゲームの状況に応じてBGMが盛り上がったり旋律が変化するやつを作りました。
— Sig @3DAct開発中 (@sleepyslowsheep) August 4, 2020
動画では横に動くと旋律、縦に動くと曲のテンションが変わります。
実装法は記事に全部書きました。音源、サンプルプロジェクトも公開してるので気軽に試せるはず!https://t.co/45z8vsiPtA
#UE4 #UE4Study pic.twitter.com/3H0AY9GdRO
当記事ではUE4.23+「ADX2 LE v2.10.05」を使用します。
ADX2 for UE4の基本的な使い方はこちらの記事で。
ADX2 for UE4でインタラクティブミュージック(AtomCraft編)
https://qiita.com/SigRem/items/8af9b7d8445477906741
ADX2 for UE4でインタラクティブミュージック(ブループリント編)
https://qiita.com/SigRem/items/b53dc03d01c5f8fe1465
今回の内容について、楽曲素材とサンプルプロジェクトを用意しました。こちらを覗くとお手軽に試せます。
楽曲素材
https://drive.google.com/file/d/1jm_jS8yjQArGqjlaOzGF11_MeZZyAAoO/view?usp=sharing
サンプルプロジェクト
https://drive.google.com/file/d/1vqmUzY95Yfv64nxo0C2Xn8_iGiMWNywf/view?usp=sharing
プラグインを導入する必要があるので、下記の「導入編」を参照してADX2 for UE4を有効にしてください。
前提
「ADX2 for UE4 LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46
#やること
- マウスカーソルの位置を取得し、現在地に応じた楽曲処理をする
- X座標により曲のフレーズを変化させる
- 「ブロック再生」機能
- Y座標により曲の盛り上がりを変化させる
- 「Aisac Control」機能
- ブループリントで見た目を華やかに
実装
楽曲の構成設計
今回作るループ楽曲は以下のような構成を想定します。
4つのブロックで構成される
BGMは、4つのフレーズから構成されます。
ベース・ドラムは一定ですが、ピアノ・パッド・リードは異なる4つの旋律が存在します。
3つのテンションに変化する
楽曲の盛り上がりが、3段階に分けて変化するように作ります。
これらの段階を当記事では「ロー」「ミドル」「ハイ」と呼称し、
「ロー」ではピアノ・ハイハットのみが再生され、
「ミドル」ではパッド・ベース・キックドラムが追加、
「ハイ」ではリード・スネアが追加されるようにします。
▲青色=ローテンション 橙色=ミドルテンション 赤色=ハイテンション
これらの要素を持つよう、AtomCraftでBGMを設計していきます。
AtomCraftでBGMを構成する
素材の用意
今回のサンプルのための楽曲素材を用意しましたので、手元に使える素材がない場合試してみてください。冒頭のものと同じです。
https://drive.google.com/file/d/1jm_jS8yjQArGqjlaOzGF11_MeZZyAAoO/view?usp=sharing
素材のインポート
用意した素材を「マテリアルツリー」にドラッグ&ドロップしインポートします。
キュー、トラックの作成
「ワークユニットツリー」のキューシートを右クリックし、「新規オブジェクト」→「キュー『ポリフォニック』の作成」で新規にキューを作成します。
分かりやすいようにリネームします。
「マテリアルツリー」からピアノトラックの1フレーズ目となる、「ADX_BlockSample_Piano01」をタイムラインにドラッグ&ドロップして配置します。ピアノ用のトラックが作られます。再生(F5キー)するとピアノだけが流れます。
その他のトラックも置いていきます。
画像のように置きながら都度再生していくと、音が段々増えて楽しいはず。
すべて置いたら次に移ります。
ブロックの作成
UE4で再生中に異なるフレーズを行き来できるよう、ブロック再生を設定します。この機能についての詳細とセットアップは以下の記事にあります。この記事だけでそのまま進めても大丈夫です。
ADX2 for UE4でインタラクティブミュージック(ブロック再生編)
https://qiita.com/SigRem/items/696ab6f1b4e533eebdbf
トラックリストの空欄で右クリックし、「新規オブジェクト」→「ブロックの作成」をクリックします。
ブロックが作られ、タイムラインの最初から1フレーズ目の終了にかけて配置されます。
さらに同じように、「新規オブジェクト」→「ブロックの作成」。
ふたつめのブロックがその先に置かれます。
分かりやすいように、各ブロックに名前をつけます。
各トラックに対して、2フレーズ目のマテリアルを置いていきます。
「Bass」「DrumA」「DrumB」「DrumC」は各フレーズ共通となりますので、1フレーズ目と同じマテリアルを置いていきます。
同じ作業を繰り返し、3つめ、4つめのブロックとフレーズを配置したらタイムラインは完成となります。
ここで一度テスト再生して、おかしいところがないか確認すると安全です。
Aisacコントロールで動的なボリュームを設定する
次に、動的に楽曲のテンションを変えられるようにAisacコントロール機能の設定を行います。
この機能についてはこちらの記事に詳細がありますが、とりあえず試したい方はこの記事でそのまま進めてもOKです。
ADX2 for UE4でインタラクティブミュージック(AtomCraft編)
https://qiita.com/SigRem/items/8af9b7d8445477906741
今回の設計をおさらいしてみましょう。
「ミドル」テンションではパッド、ベース、ドラムBが追加され、
「ハイ」テンションではリード、ドラムCが追加されます。
上記を踏まえると、ミドルテンション用、ハイテンション用にふたつのAisacコントロールが必要になります。
Aisacコントロール_00をミドルテンションに、Aisacコントロール_01をハイテンションに割り当てることにします。
「パッド」を担当するトラックを右クリックし、「新規オブジェクト」→「AISACの作成」をクリックします。
ここではそのままOKを押します。トラックのボリュームを変動させてテンションを表現するので、「AISACグラフタイプ」は「ボリューム」です。
Aisacコントロールの編集画面が開くので、「ボリューム」を選択して画像のように右肩上がりのグラフを作ります。
これでAisacコントロールの数値が少ないほどパッドトラックの音量は小さく、「1」に近づくほど大きくなります。
再生して、上部のバーを左右に動かすとボリュームが変わるはずです。
ベース用トラックにもAisacコントロールを追加します。
パッド、ベース用トラックは「ミドル」テンションの際に同じタイミングでボリュームが変動するので、こちらもAisacコントロール_00を使います。
同じように右肩上がりのグラフを作ります。
これでベースもパッドと同期して音量が変動するようになります。この挙動も上部のバーで確認できます。
ドラムBのトラックにも同様にAisacコントロールとグラフを作成・設定します。
ここから設定するのはハイテンション用のAisacです。
「リード」トラックにはAisacコントロール_01を指定します。
「ドラムC」トラックも同様です。
最終的に5つの同じようなグラフが並ぶことになります。
上部のバーをドラッグし、ふたつのAisacコントロールが変化した際の音量の変化を試してみましょう。
キューシートのビルド
AtomCraftでの工程が完了したら、キューシートをビルドします。
ここからはUEでの作業に移っていきます。
次の工程はこちら!