ADX + UE5でインタラクティブミュージック（AtomCraft編/新バージョン対応)

# はじめに
ADXアンバサダーとして執筆しておりますSigと申します。
この記事ではアンリアルエンジン5と、サウンドミドルウェア「ADX for UE」を連携させ、ゲームの状況によって変化するBGMをセットアップします。
ゲームの臨場感づくりに一役買うでしょう。
UE5.2+「ADX LE UE SDK(2.00.00.00)」を使用します。

## 前提
「ADX for UE LE」を使用します。導入や簡単な使い方は以下の記事にあります。
**ADX for UEの導入で、一歩上のサウンド表現を（導入編/UE5/ADX新バージョン改訂版）**

https://qiita.com/SigRem/items/4250925f6d66a4fd287a

**ADX for UEの導入で、一歩上のサウンド表現を（実践編）**

https://qiita.com/SigRem/items/c089b71c42e898980a46

## やること
- AtomCraftで動的に操作可能なBGMを作成
- UE5にインポート
- ブループリントでパラメータを操作
- BGMのトラックごとにフェードイン・フェードアウトができるようにする
- テストプレイ


# AtomCraftでのセットアップ

まず、ひとつのBGMを3つに分割したwavファイルを用意しました。こちらをダウンロードしてください。
https://drive.google.com/open?id=1TJqtemlYZxxnt0n5Kj-cNYHFJtVLd35W
展開すると以下のようなファイルが入っています。
![A01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/44867460-00b5-9468-5720-2a8160665c16.png)

これはひとつの楽曲を3つのパートに分割したもので、最初は静かなAパートのみ、ゲーム中でBパート、Cパートが加わると段々と賑やかな構成になるよう設計します。

## AtomCraftでプロジェクトを作成
AtomCraftを起動し、新規プロジェクトを作成します。
![A02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/bef42564-9112-454e-7d9a-561f2234c7f9.png)


ワークユニットを作成します。
![A03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/01616c83-39e6-4199-d1ae-9ff2b260b0e1.png)


## ファイルを読み込む
先程ダウンロードした3つのwavファイルをAtomCraftにインポートします。
マテリアルツリーの「マテリアルルートフォルダ」にドラッグアンドドロップ。
![A04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/ac58240f-43d8-0cba-16e4-21c9b2e375a9.png)
![A05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/fd6fe0d1-cb24-4b7d-3b05-8d81ef571d1c.png)


## AtomCueの作成
これらを同時に再生するAtom Cueを作りたいので、新規にキューを作成します。
「ワークユニットツリー」の「CueSheet_0」を右クリックし、キュー「ポリフォニック」を作成します。
![A06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/42190c1b-0d5c-26aa-bd6c-c6ddfe7105a3.png)


キュー内に、3つの音声をドラッグアンドドロップします。
![A07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/75f376dd-25ae-01a4-70e1-3315aa7906db.png)
3つのトラックが作成されました。
すべての音声データを0秒の位置に揃えます。
![A08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/e1cf0c0a-b3d0-e1f1-15fa-c526f42e4311.png)


この状態で再生すると、3つのトラックが同時に流れ、完成形のBGMが流れます。
トラックのミュートボタンを押して、各トラック単体でも聞いてみましょう。
![A09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/86b411b2-52fa-bc6b-d230-24e52283323e.png)


##ループの設定
これらのサウンドはBGMとして扱いたいので、ゲーム中ではループ再生するよう設定してあげる必要があります。
マテリアルツリーで波形データをクリックして選択します。
![A23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/902e1676-d833-6437-5ccc-0c79b7326765.png)
エディタ右側にある「インスペクター」で、**「ループ情報の上書き」を「True」**にします。
![A24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/0d360c5a-5151-7c77-963c-f0e6f2acb511.png)
のこり2つの波形データにも、同じようにループ設定をします。

##Aisacのセットアップ
UE5からAtomCue内のサウンドを動的に操作するのにあたって必要なのが**「Aisacコントロール」**です。
サウンドのボリュームなどをパラメータ化し、UE5側でfloat値を渡すことで任意に設定したカーブにしたがって変化させられます。
![A27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/7d103ac3-03c4-823d-5555-4c65abe85e1b.png)



まずは**パートAのトラック**を右クリックして「AISACの作成」を選びます。
![A10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/ed5773d1-e153-1895-58b2-2bb943bdbeaf.png)
AISAC名はわかりやすいものを、AISACコントロールには**「Aisacコントロール_00」**を指定します。AISACグラフタイプは、今回はボリュームを変化させたいので「ボリューム」にします。
![A11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/e241b809-5739-6756-0d8f-cc5f13f48a92.png)

新たなAisacコントロールが作成され、編集可能になりました。
![A12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/66b5ac45-1fb5-9d92-62eb-63b3816ccffe.png)
AISACの編集から今までのタイムライン編集に戻るには、下のタブをクリックして切り替えます。
![A13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/d943c75e-fb0a-f00a-778c-e181f4dc6954.png)
AISACリストの「ボリューム」を選択します。
![A14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/0480605b-ad3c-db2e-5b49-2e90b4eae801.png)
ボリュームを表す黄色いグラフが操作できるようになるので、線をドラッグして任意の形にしてみましょう。音量が左端で0、右端で1になるようにしてください。ポイント上で右クリックするとカーブの形状が変えられます。
![A15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/e7913f0b-7d61-6087-6633-055025cfb840.png)
再生中に上部の数値をドラッグして動かすと、ゲーム内で数値が動いたときの変化を確認できます。0に近づくほどAパートの音量が小さくなるはずです。
![A16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/4a32034d-9aff-fd2c-7034-3c409ed782c5.png)
音が鳴らない場合、トラックがミュートされていないか確認してみてください。

**パートBのトラック**と**パートCのトラック**も同様にしてAisacコントロールを作成します。
各トラックを個別のコントロールで操作したいのでパートBには**「AisacControl_01」**を、パートCには**「AisacControl_02**」を割り当てます。
![A17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/992a9289-b5d8-0f1c-1f2f-bedbc71ef984.png)
![A18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/2ae440f9-d140-c80d-a8d1-c4655571e0f4.png)

トラックAと同様にカーブを編集します。
![A19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/258007fa-f29f-eb09-d930-9103ca9eefdc.png)

すべて完了したら、上部のバーでAisacコントロール00,01,02の値を動かして、各パートのボリュームが変動するか試してみましょう。
![A20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/1c93087c-3a18-874d-88a7-45f8e28c1c2d.png)


## キューシートのビルド
UE5にインポートできるよう、キューシートをビルドします。

UE5で判別できるようキューの名前を変えます。
![A25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/177fbf4c-5d35-5511-d07a-01163faf9559.png)

あとはツールバーからビルドするだけです。
![A21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/68518225-bd14-e5a8-d300-73cef8644ef5.png)
![A22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/36bc5bcf-9779-555d-0465-9fdd782ae31f.png)


**UE5側での実装は後編、「ADX for UEでインタラクティブミュージック（ブループリント編)」に続きます。**

https://qiita.com/SigRem/items/b53dc03d01c5f8fe1465