Unityのサウンド機能をADXで強化する～とにかく早く音を鳴らす編～

こちらは[「Unity 5のサウンド機能をADX2 LEで強化する」](https://qiita.com/Takaaki_Ichijo/items/aa58faa062c67afb1a84)のADX LE 3.46.02（2021年8月4日版)の対応版です。
ADX2は2021年8月に「ADX」という名前に変更になりました。ツールのセットアップ方法については変わりありません。
※ブラウザ（WebGL）での動作がADXに加え、ADX LEでも動くようになったので追記しました

# イントロダクション
ADXは、ゲーム向けサウンドミドルウェアです。ゲームに組み込むランタイムと、再生用のデータを作るオーサリングツールの2つで構成されています。
Unityにおいては、ランタイム部分は.unitypackage形式でプラグインとして収録しています。
端的な利用メリットは次の通りです。

- Android端末におけるサウンドの再生遅延を低減
- ゲーム向けに専用開発した音声圧縮形式(HCA、HCA-MX)でCPU負荷を低減
- BGMのイントロ付きループ再生(サンプル単位のスムーズな連続再生)
- フェード処理や音数の制御などのサウンド再生処理がビルドイン済み
- ボイスなど大量音声の管理やパックデータ管理(AssetBundleの代替、解凍コストなし)
- 実機動作中のゲームに無線接続してリアルタイムに音量バランス調整

ADXには利用者の形態に応じていくつかの[エディション](#エディションごとの違い)があるのですが、まずは個人ゲーム開発者向けの「ADX LE」で利用方法を紹介します。

https://game.criware.jp/products/adx-le/

2019年以降はオーサリングツールがmacOSにも対応しています。

# Unity組み込みクイックスタート
上にあげた機能を利用するためにはいくつかの設定が必要になりますが、本記事ではプロジェクト内で音を鳴らすまでの最短手順を紹介します。

## 仮データの作成

### SDK,ツールの入手
[https://game.criware.jp/products/adx-le/#ledl](https://game.criware.jp/products/adx-le/#ledl) からファイルをダウンロードします。
Unityに組み込むSDKと、音の設定を行うオーサリングツールが分かれているので、それぞれダウンロードします。
zipを解凍し、パスに日本語名が入っていない場所にフォルダごと移動させます。
Unityとは独立したツールなので、Assets以下に回答する必要はありません。c://criなどで大丈夫です。

### ツールライセンスの取得
ツールの利用にはライセンス認証が必要です。（LEにはライセンス認証の費用はありません）
cri_adx2le_tools_ver_***/cri/tools/Authorization/CriAuthorizationTool.exeを起動し、「ツールユーザーライセンス発行」からメールアドレスを送信します。メアドに送られてくる認証コードを入力、PCを登録すればライセンスの取得は完了です。
オーサライゼーションツールは閉じてしまっても問題ありません。

### 新規プロジェクト作成

cri_adx2le_tools_ver_***/cri/tools/ADX2LE/ver.3/CriAtomCraft.exe を起動します。（macOS向けのツールは.dmgファイルをマウントし、インストーラー経由でインストールしてください。）
空の状態でツールが立ち上がり、「スタートページ」が表示されるのでプロジェクトの「新規作成」からウィザードを呼び出します。

![スタートページ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/531cd0e4-fb06-95d7-a844-ec00b3c17ed4.png)

![プロジェクトの新規作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/7af0e3aa-315d-e0d0-7d56-5e4458aa82b1.png)

プロジェクト名・保存場所を適当に決めて、「新規プロジェクトの新規作成」をクリックします。

![ワークユニットの追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/5331e7cf-5fc1-ba51-b184-faa9f99b46b7.png)

次に「ワークユニットの追加」というウィザードに遷移します。
こちらはツール内のルートディレクトリのようなもので、複数人同時作業するときにこの単位でファイルを分割できます。
今回はデフォルト設定のままで「追加」をクリックします。

![新規プロジェクト初期画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/7e490d4b-2c49-6753-78b4-df56bb076f0e.png)

新規プロジェクトが作成できました。

### 音素材の登録と再生用データの作成

手持ちのサウンドデータ　（WAVEファイル）をADXプロジェクトファイルの音素材フォルダに登録します。
ADXツールでは音素材フォルダを「マテリアルフォルダ」と呼んでいます。
素材がない場合は[Freesound.org](https://freesound.org/)などから適当に入手して下さい。
用意したWAVEファイルをツール左下のマテリアルルートフォルダにドラッグアンドドロップします。するとプロジェクトファイルの下にWAVEファイルがコピーされ、ツール側にも「マテリアル」として登録されます。

![マテリアルツリー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/79139957-8ac3-d266-c38e-4cbbda8d3f42.png)

この状態ではまだ再生できません。素材ファイルをプロジェクト内の１音の単位、「キュー」として登録する必要があります。
といっても操作は簡単で、マテリアルフォルダから素材をワークユニットツリーの「CueSheet_0」上にドラッグアンドドロップするだけです。

![マテリアルをキューとして登録](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/33939481-cfd7-591f-f76d-b6e4a7f5967f.png)

すると、同名の「キュー」が生成されます。
これがUnity側から呼び出す音の単位です。

### 作成したサウンドデータの出力

キューを選択した状態でF5キーを押すと、プレビュー再生ができます。

![プレビューの様子](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/f7404336-b9d7-a62a-5e7b-38777f3ff18b.png)

このとき、ツールがバックグラウンドで動作しているランタイムと接続しようとするため、セキュリティ警告が出ることがあります。「アクセスを許可する」をクリックします。

![初回再生時の警告.png](https://qiita-image-store.s3.amazonaws.com/0/19010/7748f81d-4d16-0b51-5fa8-02e3904af330.png)

ツール上ではボリュームやピッチ変更など様々なパラメータが見えますが、まずはこのデータのまま、Unityで読み込む形式に出力します。
ADXでは複数のサウンドデータを固めて圧縮し、TexturePackerのようにパック出力します。固める単位はツール上のプロジェクトツリー上の「CueSheet」毎になります。
現在はデフォルトのままなので、左側のツリービューから「CueSheet_0」を右クリックして、「Atomキューシートバイナリのビルド」を選択します。

![Atomキューシートバイナリのビルド](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/e8ecbe23-d809-1d9a-83fa-044c4754c3f7.png)

ウィザードが表示されますので、「Unity向けAssetsフォルダを出力」にチェックを入れて、「ビルド」をクリックします。

![ビルド確認画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/4142b63d-7d4e-b794-877e-a77f4335239e.png)

「ビルドを完了しました」というメッセージとともにログファイルが表示されます。データが出力されたパスを覚えておきましょう。

## Unity側のセットアップ

### unitypackageのインポート

Unityで新規のプロジェクトを作成して、ADXインストールフォルダのcri/unity/plugin/criware_unity_plugin.unitypackageをインポートします。
インポートに成功すると、GameObjectメニューに「CRIWARE」の項目が追加されるので、「Create CRIWARE Library Initializder」「Create CRIWARE Error Handler」をそれぞれクリックして2つのゲームオブジェクトを生成します。

![基本オブジェクトの生成方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/f7cb7a77-7eac-9059-fa48-5728add43d13.png)

![基本オブジェクトの内容](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/4be9433e-9049-0aab-574b-ddc4e1727f41.png)

### 出力したデータの読み込み

※2021年の大型アップデートにより、Atom Windowの機能はAtom Browserに引き継がれました。見た目やボタンの配置は少し違いますが、役割は同じです。
Unity EditorのWindowメニュー下にCRIWARE/Atom Browserの項目が追加されているので、クリックして開きます。

![Atom Browserの表示方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/8fae0289-d557-5eb8-7351-449d7bb82073.png)

![Atom Browserの表示内容](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/126a1d8f-e72f-5e4a-b662-d01cb9dca3a5.png)

ADXのデータはStreaming Assetsに配置して内包する必要があるのですが、ツール側から出力したデータのディレクトリからコピーしてくるようにすると便利です。
設定方法は、まず「Import Assets from Atom Craft Project」をクリックして設定画面を開きます。

![インポート画面の開き方](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/a65e7382-de6b-719b-f5d7-709089924d27.png)

「作成したサウンドデータの出力」の項で出力した「Assets」フォルダを指定し、「Import Assets」をクリックするとデータがStreaming Assets下にコピーされます。

![インポートの仕方](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/38fe3ee9-ffdc-f001-5c74-dac8be6e72ca.png)


### インポートしたデータの再生

「Create Game Object」をクリックするとシーン上にキューと同じ名前のゲームオブジェクトが生成されます。（同時に、シーン上に「CRIWARE」ゲームオブジェクトが自動生成されます）
このゲームオブジェクトはスクリプト「CRI Atom Source」がアタッチされており、Unity標準のAudioSourceに近い動きをするコンポーネントです。
今回はキュー名、キューシート名が自動で入っているので、サウンドテストのために「Preview」の「Play」をクリックします。

![プレビューの仕方](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/7628c5d3-98db-a42b-d6f8-ae74a7b865f2.png)

はじめにツールに登録した音が再生されましたでしょうか？再生されなかった場合は、出力データのパス確認やツール上でビルドをもう一度試してみてください。
「とにかく早く音を鳴らす」チュートリアルは以上です。
ADX LEのうま味であるイントロ付きループ再生の設定や、Android再生遅延対策の設定、圧縮設定等はまた次回。

# ポータルサイトについて
「ADX」に関するポータルサイトが開設されています。最新情報やTIPSについてはこちらから確認できます。

[https://criware.info/](https://criware.info/)

# エディションごとの違い
現在ADXシリーズには3種類のエディションがあり、どう違うのかわかりにくいためまとめました。

### CRI ADX
CRI ADXは法人向けエディションで、全機能が使えます。
ゲーム対応プラットフォームはWindows/Mac、iOS/Android、ブラウザ、家庭用ゲーム機です。
最新版ではサウンドツールが全面改訂され、Windows / Mac OS両方で利用できるようになりました。
https://criware.info/v3/
有料ですが、開発時は費用が発生せず、ゲーム発売が決まってからの支払いです。
モバイルゲーム向け料金は売上連動の月額払いです。ゲームが長期メンテだったりして売り上げが薄かった月は料金が安くなります。
SteamやSwitch向けに買い切りでダウンロード販売するゲームの料金は、売り上げの0.95%です。
1,500円のゲームを販売する場合、上りは1,050円なのでADX利用料はおよそ10円x販売本数です。
その他、タイトルの開発規模に応じて相談ができるそうです。

### ADX LE
ADX LEは小規模事業者・個人向けの無償エディションです。販売後も売り上げ1,000万円まで料金が発生しません。
対応プラットフォームはWindows/Mac、iOS/Android、 **ブラウザ**です。(2025年のバージョンから対応）
機能に若干の制限があり（データ暗号化機能なし）、バージョン更新が法人版より遅いです。
https://game.criware.jp/products/adx-le/
Unityのほか、Unreal Engine 4でもADX LEが利用できます。
利用規定は[前回記事](https://qiita.com/Takaaki_Ichijo/items/aa58faa062c67afb1a84)で紹介した当時と同じです。
CRI ADXとADX LEはデータ互換性がありませんが、プロジェクトファイルをある程度移植することができます。
個人開発ゲームとしてPC版でADX LEを利用し、PS4版リリース時にCRI ADXへ移行した事例もあります。
ADX2 LEユーザーインタビュー Vol.1『魔砲少女のメイガスフィア』編
[https://criware.info/adx2le-interview-mahou/](https://criware.info/adx2le-interview-mahou/)

### ADX2 Unity Asset Store版
ADX2 Unity Asset Store版はその名の通りAssetStoreで販売されているUnity向けバージョンです。
安価($99)である代わりに、ゲームをビルドできる対象はWindows/Macのみに限定されています。
https://assetstore.unity.com/packages/tools/audio/cri-adx2-unity-plugin-assetstore-100086
AssetStore上ではランタイムのみの配布となり、オーサリングツールは専用サイトからダウンロードします。

#### どれを使えばええねん

年商1,000万円以上または法人：CRI ADX
上記以外：ADX LE
「CRI ADX」は機能テストする分にはお金はかからないので、法人の開発案件であればとりあえず試用に申し込むのが吉です。
[https://www.cri-mw.co.jp/contact/index.html](https://www.cri-mw.co.jp/contact/index.html)