UE5 + ADX Atom Insightsでミドルウェアの音声をプロファイリングしよう

# はじめに
ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではアンリアルエンジン5とサウンドミドルウェア「ADX for UE」を連携させた際、新機能である「ADX Atom Insights」を使い、ゲーム内サウンドのモニタリング・分析を行ってみます。

ADX Atom Insightsは「ADX for UE」を使用して再生するサウンドを、ランタイムでモニタリングできる機能です。
音声の再生状態などを視覚的にチェックできるため、サウンドデザインやデバッグに使用できます。

![B02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/b4eb4307-5838-b674-a258-ce17dea678ac.png)


# 前提

UE5.5+「ADX LE UE SDK(2.04.00)」を使用します（他バージョンにおいても、基本的に実装方法は同じです）。
基本的にブループリントのみでの実装を想定しています。
ADXはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/

なお、ADX2からADXへ名称が変更になりましたが、ツール構成は変更ありません（2がないから古いほう、というわけではありません）。

ADX for UEの導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
**ADX for UEの導入で、一歩上のサウンド表現を（導入編）**

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

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

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


# ADX Atom Insightsを使用する

## プラグインを有効にし、ADX Atom Insightsを使用する

ADX Atom Insightsは別プラグインとして提供されているので、プラグイン管理から有効にする必要があります。
「Edit」→「Plugins」からプラグインの管理を開きます。
![A01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/93881725-0e6b-095c-d63d-4380bd5d8b36.png)
「CriWare」タブの「CriWare ADX AtomInsights」にチェックを入れます。

![A02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/4e3f02a1-2d7d-ffa1-431e-87b541be11ab.png)
現バージョンでは、ここで実験段階の機能である旨のダイアログが出ます。Yesを選択します。
![A02b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/3d296b49-895c-7a2b-eb49-54972f5f2de0.png)
エディタの再起動を促すボタンが出るので、押して再起動します。
![A03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/1b03e1bf-0138-bad9-402f-79c3ebe71ca8.png)

再起動後、「Tools」→「ADX Atom Insights」の項目が追加されています。
![A04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/40018e5d-61ec-6084-d601-e56e50336621.png)
選択するとADX Atom Insightsが起動します。
デバッグ時は、別ディスプレイなどに置いておくと良いでしょう。
![A05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/a405a73c-eadc-ae14-1639-357be7b95bd2.png)
この状態でゲームを再生すると、Atom Cueなどで再生されたサウンドが記録され、一覧や再生状態が閲覧可能になります。
![A06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/eb7b13bb-e969-ee5c-8f34-80731b3b788f.png)



## サンプルプロジェクトでADX Atom Insightsを試すには

手っ取り早くこの機能を試す場合、ダウンロードしたSDKに含まれているサンプルプロジェクトを使用するのが良いでしょう。
ADX Atom InsightsはUE5.5以上でしか使用できないため、サンプルプロジェクトの設定を変更する必要があります。
サンプルプロジェクトはSDKの「\cri\UnrealEngine\Sample\CriWareShowRoom」にあります。
「CriWareShowRoom.uproject」を右クリックし、「Switch Unreal Engine version」を選択します。
![D01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/6db64edc-75ff-bf85-3147-322026e4feb6.png)
バージョンが5.5未満の場合、5.5以上に変更してOKを押します。
もしここが5.5以上だった場合、変更の必要はありません。
![D02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/1919f79e-a287-0580-1d81-5e469afab4e2.png)
処理が走り、プロジェクトのバージョンが変更されます。通常通りプロジェクトを開き、上記の手順でプラグインを有効にします。

サンプルプロジェクトで、ADX Atom Insightsが使用できるようになりました。
![D03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/fb60ec29-58a3-bae7-7f1b-c254fe1d9ac8.png)


## ADX Atom Insightsでのモニター

ADX Atom Insightsではサウンド方面で起きたこと、音量やキューの状態などを監視できます。
ログや波形、出力先を分けたモニタリングなども可能です。
![B01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/a72a2c73-a2ce-35eb-a657-b1d00172ef62.png)
![B02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/2a186df4-4c22-5e05-4395-dc8c32063841.png)
![B03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/35ad2a23-3cbf-2a1e-7ab3-61843e44d4b7.png)

再生しているはずなのに聞こえないキューや、明らかに大きすぎるサウンドの距離減衰状態を確かめたい、という際などに活躍しそうです。





## 捕捉: バックグラウンドでfpsが落ちるのを防ぐ
ADX Atom Insightsを使ったデバッグ中、別ウィンドウで操作や記録などの作業を行いたい場合も多々あるかと思います。
しかしウィンドウのアクティブ状態が解除された際（バックグラウンド）、UE5のデフォルトでは描画を省いてFPSを減らし、負荷を軽減する設定になっています。この状態ではAmp(Peak)の検出が正常にされず、グラフにも異常が出てしまいます。
![C00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/4ddc086f-3a1e-503d-a4d6-bf218b1bdc15.png)

ウィンドウのアクティブ状態を解除してもスムーズな描画を続けるよう、エディタの設定を変更することで解決します。「Edit」→「Editor Preferences」からエディタ設定を開きます。
![C01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/c2dae2be-5796-0d55-0057-14df238e73cf.png)
「Performance」タブを開き、「Use less CPU when in Background」のチェックを外します。
![C02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/c5d322dc-6361-44ae-a181-45b6cc4f10c6.png)
これだけで完了です。バックグラウンドでも変わらず動作を続けるため、グラフの動きも正常になります。

## 捕捉: バックグラウンドのミュートを解除する
デフォルトではウィンドウが非アクティブの場合（バックグラウンド）、サウンドがミュートされてしまいます。継続してデバッグをしている場合、ここはサウンドを鳴らし続けて欲しいものです。これはエンジン設定を変更することで解決できます。
「\(プロジェクトフォルダ)\Config」にある「DefaultEngine.ini」を編集します。
該当のファイルをテキストエディタなどで開き、次の設定を追記します。

```
[Audio]
UnfocusedVolumeMultiplier=1.0
```

![C03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154452/69d9ac0d-7520-0445-bbb2-afa1c47879bb.png)

プロジェクトを開き直します。
これでバックグラウンドでのミュートが解除されます。もとに戻す場合は該当の部分を消すか、

```
[Audio]
UnfocusedVolumeMultiplier=0.0
```

と記述すればOKです。