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

# 概要
###この記事でやること
- 「ADX2 for UE4」でゲーム中のサウンドを再生する
- UE4の「ブループリント」機能を使い、サウンド再生処理を作る
- ツール「AtomCraft」を使い、オリジナルの音源を導入する

あらかじめサウンドミドルウェアである「ADX2 for UE4」が導入されている必要がありますので、まだ準備ができていない方は導入編としてこちらの記事をご覧ください。
https://qiita.com/SigRem/items/4250925f6d66a4fd287a

当記事ではUE4.26.1を使用しています。

#「ADX2 for UE4」でサウンドを再生してみよう

##サンプルのダウンロード
サウンドを扱う以上、再生するための音となる素材が必要です。こちらにサンプル素材が用意されていますので、まずはダウンロードしましょう。
https://game.criware.jp/wp-content/uploads/2019/10/tutorial_sample_ue4_lesson01.zip
ダウンロードが完了したら展開します。
![10B_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/9607a608-203c-d574-581a-41e297bc8ea8.png)


##エディタへのデータインポート
用意できたサンプル素材を、UE4にインポートします。
今回はUE4のプロジェクト内に「ADX_Sample」というフォルダを作り、そこに格納することにします。
アセットを扱う場所である「コンテンツブラウザ」の空いた場所で右クリックし、「Crate New Folder」を選択し「ADX_Sample」と名前をつけます。フォルダ構造は、分かりやすい位置であればどこでも構いません。画像では「Audio」フォルダを作り、その下に配置しました。
![10B_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/55884255-7fb3-3b3b-246b-b09228423a43.png)
フォルダをダブルクリックして開き、エクスプローラーから素材をすべてコンテンツブラウザにドラッグアンドドロップしてください。
![10B_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/ec95cd77-01f5-df56-c063-158ba4d98b6a.png)
ダイアログが表示されますが、とりあえず下部のOKボタンを押します。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/02dd5554-e45c-1788-354f-e9d3c7dd3b6d.png)
続いて表示されるダイアログも「Copy」を選択します。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/ec93dc8f-4712-4685-1a5c-f48db7099a6c.png)
自動的に必要なファイルがセットアップされ、準備が整いました。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/5708aa88-4a5f-ea56-d0f3-0b55cd94c600.png)

##インポートしたサウンドの確認
インポートされたファイルを見てみましょう。いくつかの色で分けられたアセットとなっています。
### Atom Cue Sheet
![10B_04C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/de4ecf6c-e21e-ccff-8148-aeccfbdfdf60.png)
後述するAtom Cueを管理するリストのようなものです。Atom Cue Sheetに登録されたAtom Cueが使用可能なデータになります。
### Atom Cue
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/acc7e76b-6e60-4f93-7a4b-dfb0ac59cf0a.png)
サウンドを再生するメインのアセットとなります。UE4標準機能の「Sound Cue」に該当します。これを配置し、サウンドを再生させることになります。
### Atom Config
![10B_04B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/12eec15e-6578-2a2d-c1f8-e1888bd866af.png)
ADX2 for UE4でサウンドを扱うための設定ファイルです。

##レベルに配置して再生する
最初は最もシンプルな再生方法を試してみましょう。「simple_bgm」をビューポートにドラッグアンドドロップします。適当な場所にアイコンが出現するはずです。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/375d6383-678b-0bef-53cb-d3598b9a4853.png)
これで完了です。簡単！エディタのPlayボタンを押して確認しましょう。
![10B_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/69c5b3a0-c2fd-0955-f7a9-d53cba7592a8.png)
ゲームが開始され、BGMが聞こえてくるはずです。

しかしこのままでは任意のタイミングで音を鳴らしたり、パラメータを操作することができません。そこで、UE4のビジュアルスクリプトである「ブループリント」機能を使ってプログラムされた再生方法に挑戦してみます。
##ブループリントとは
まず「ブループリント」って何？という説明です。もし既に理解している方は、次の項までスキップ推奨です。
### ノードベースのビジュアルスクリプティング
UE4に標準で備えられている、視覚化されたプログラミング機能が「ブループリント」です。エンジニアだけでなくアーティスト、デザイナーも触れられるよう設計されています。
![10B_BP00A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/e8b2e9e9-4cc2-9dfd-2fe6-138c9430f778.png)
▲ブループリントで処理を組んでみた例
ブループリントで使用できる命令は基本的に「ノード」と呼ばれる単位で構成され、実行順を線で繋げることでこの集合体が関数などを形作っていきます。
![10B_BP00B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/d254326b-974c-636a-2ac5-1ad13cbc5cec.png)
▲様々な種類のノード例


##ブループリントから再生する
「Tキーを入力するとサウンドが再生される」ことを目標に作っていきます。

###効果音を配置する
「ADX」フォルダから、今度は「simple_se」をドラッグアンドドロップしてレベル上に配置します。
![10B_BP01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/3bb20fe0-aa27-ed2b-d19d-6727d75df863.png)
これは効果音サンプルである「爆発音」のAtom Cueです。
この状態で「Play」ボタンからテストプレイを開始すると、配置された爆発音が一度だけ再生されます。
これを任意のタイミングで鳴らせるようにしてみましょう。

###レベルブループリントエディタを開く
ブループリントには、レベル自体が処理を持つ「レベルブループリント」とキャラクターやアイテム、武器などが処理を持つ「ブループリントクラス」がありますが、今回は「レベルブループリント」に処理を記述します。これにより、「このステージ全体で有効なサウンド再生」命令が実現します。
エディタ上部から、「Blueprints」→「Open Level Blueprint」を押します。
![10B_OpenBP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/33a95ae6-b4b8-d5c8-30af-369ae05019a9.png)
空のブループリントエディタが起動します。
![10B_OpenBP2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/bfee7ab3-66ce-27fe-e89b-1b43247b8b01.png)

###イベントを作成する
まずはサウンドの再生処理が行われるための条件、「イベント」を作成します。
ブループリントエディタ内の空欄で右クリックすると、ノード作成メニューが開きます。
カテゴリごとに分けられたノード一覧が見られる他、上部の検索欄で、ノードを検索することができます。
![10B_BP03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/ea6bf74c-f7a9-5f80-3771-bdd71ee7cae3.png)
今回は「input key T」と入力し、出てきた「T」をクリックします。
![10B_BP04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/5a5e193c-56a2-8cbc-cd76-9a511216559c.png)
イベントノードが配置されました。このノードからは、プレイヤーがTキーを押した際「Pressed」から続く処理が、離した際は「Released」から続く処理が行われます。

###効果音の再生ノードを取得する
ビューポートに戻り、先程配置した効果音「simple_se」をクリックして選択します。その際エディタ右上の「World Outliner」上で、「simple_se」が正しくハイライトされていることを確認してください。
![10B_BP05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/1890d6e4-1861-132c-9332-13e861199635.png)

その状態で再度レベルブループリントを開きます。
空欄で右クリックすると「Create a Reference to simple_se」という項目があるので選択して配置します。
![10B_BP06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/137358ea-fe61-9f6d-6521-3e1bf4c37f2b.png)
レベル上の「simple_se」を参照して操作するためのノード「simple_se」が現れます。
![10B_BP07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/eb3f1586-25b8-ae8d-f275-17db666271d1.png)
ノードの青いピンからドラッグアンドドロップして線を伸ばし、検索欄に「play」と入力して**「Play(Atom Component)」**を選択します。
![10B_BP08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/b1574b42-480c-9e78-5c39-906ff76f61d4.png)
サウンドを再生する命令のノード「Play」が配置されます。
この処理のためにはAtom Cueの内部データを取得する「Get Atom Component」というノードも必要になりますが、それも自動的に作成してくれます。
ブループリントはこういった前提ノードも勝手に置いてくれたりするので、お任せしてしまいましょう。
![10B_BP09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/6976615e-0df2-4f05-08ca-fea8b0c79afc.png)
配置を分かりやすく整え、「T」ノードの「Pressed」から「Play」ノードのピンにドラッグアンドドロップして実行順を示す線を繋げます。
![10B_BP10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/1bbc1d16-71cc-4c80-c3f0-0e9a945e1280.png)
これでサウンド再生処理が完成です！ビューポートに戻り、「Play」ボタンからテストプレイしてみましょう。
自動再生されるBGMに加え、キーボードの「T」キーを押すたびに爆発音が鳴り響きます。

正しく動いたら、ツールバーの「File」→「Save All」を押して進捗を保存しておきましょう。


# AtomCraftを使って、オリジナルの音源を導入する
さて、ここまでサンプルデータを使ってサウンド再生処理を作ってきました。
ここからは簡単に、お持ちのサウンドデータをADX2を通してUE4に導入してみましょう。

###AtomCraftを開く
導入編でADX2のファイルを展開したフォルダを開きます。\cri\tools\ADX2LE\ver.3\CriAtomCraft.exeをダブルクリックして、サウンドオーサリングツール「AtomCraft」を起動します。
初回のみ、メールアドレスを使ったユーザー登録が必要になります。
![B01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/c0d25bb0-8c71-7c00-5427-90586bf73ba2.png)


###プロジェクトを作成する
左上のボタンから「プロジェクトの新規作成」をします。
![B02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/1e1f3617-aa87-6836-e888-7c802b89de6b.png)
任意の情報を入力し、プロジェクトの新規作成ボタンを押します。
![B03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/09704d5d-1133-21bb-82a5-7db627bb30a3.png)
適当なワークユニット名を指定します。
![B04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/46a01ea2-0d4f-164e-fa11-458bdb90aca9.png)

###データをインポートする
AtomCraftには多くの機能がありますが、今回はサウンドを登録してUE4に持っていくこと**だけ**にフォーカスします。
まずはお持ちのサウンドデータをエクスプローラからAtomCraftのマテリアルツリー内、「マテリアルルートフォルダ」にドラッグアンドドロップします。
![B05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/9451fc4e-e682-5eea-1277-3360e9f233fd.png)
マテリアルツリーにデータが入りました。

###サウンドをキューシートに登録
このデータをキューシートに登録します。
その前に分かりやすいよう、キューシートの名前を変更しておきましょう。
「ワークユニットツリー」内、「CueSheet_0」をクリックしてF2キーを押し名前を入力します。今回は「CS_ADXSample」としました。
![B06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/78d6b37e-0448-532d-c603-7e7ef92f742e.png)
マテリアルツリーから、サウンドをキューシート「ADXSample」に**重なるように**ドラッグアンドドロップします。
![B07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/88b1820d-be77-2fa7-dce1-4a27983b1a2a.png)
もしカーソルがずれて新しいキューシートが作成されてしまった場合は、Ctrl+Zでやり直します。

キューが作成されました。
![B08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/bb2cd7a0-e9f9-1787-da3b-738b285da11b.png)


###キューシートをビルド
ツールバーの「ビルド」から、「Atomキューシートバイナリのビルド」を選びます。
![B09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/afe67e32-a64e-cf3b-283d-c558f127df41.png)
出力パスを適当な場所に設定し、「ビルド」を押します。
![B10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/aaa80cd8-c546-a93d-0ffe-6b70aa7b417a.png)
「出力パスを開く」からファイルの場所が開けます。
![B11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/602f05de-e4cd-f7a7-1ed8-4a15c1e866d8.png)
プロジェクトを保存し、AtomCraftを閉じます。

###UE4へキューシートをインポート
Unreal LauncherからUE4エディタを開き、サンプルデータをインポートしたときと同じように、コンテンツブラウザへacbファイル、acfファイルをドラッグアンドドロップします。
Atom Craftでビルドしたサウンドが追加されるはずです。
![B12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/a3226621-d090-7188-7ee4-a7d70655e54d.png)
新しいAtom Cueは、やはりサンプルと同じように配置したり、ブループリントから指定して再生できます。


#最後に
駆け足気味でしたが、ひとまずサウンド再生処理とAtom Craftを使ったオリジナルのサウンドのインポートまでを見てきました。
これでADX2 for UE4を使ったサウンド再生の第一歩は踏み出せたと思います。
ブループリントを使ったさらに便利な再生処理や、Atom Craftでサウンドをよりユニークに加工する方法はまた次の記事で紹介していきます。