CRI Atom Craftで音声データを作成する

このエントリは、「ADX2 LE」のサウンドオーサリングツール「CRI Atom Craft」を使って、初期設定からシンプルな音声データを作成するまでを解説したものです。

UnityやCocos2d-xなどへのランタイム側の組み込みについては、別途の資料をご確認ください。

 * [cocos2d-x + ADX2でインタラクティブミュージックに挑戦する（前編)](http://qiita.com/giginet/items/872837aa7129b7f93315)
 * ADX2 LEの使い方 for Unity(さくっと導入する手順) ：作成中

「ADX2 LE」に関する最新情報は下記ブログも合わせてごらん下さい。
  [えるいー便り](http://blog.cri-mw.co.jp/adx2le/)

## 「ADX2 LE」について
「ADX2 LE」は、ＣＲＩ・ミドルウェアが配布しているゲーム・アプリ開発向け無償サウンドミドルウェアです。
個人のUnityやCocos2d-xを使ったスマートフォンアプリ開発者と、PCゲーム開発者向けに配布されています。

独自のサウンド圧縮コーデックや、サウンドオーサリングツールを介した効率的な音声演出開発が可能になります。

詳細は「ADX2 LE」公式サイトをご覧ください。
[http://www.adx2le.com/](http://www.adx2le.com/)

##「ADX2 LE」の入手
公式サイトの「ダウンロード」からSDKをダウンロードしてください。
(UnityのAssetStoreでは配布していません。)

[http://www.adx2le.com/](http://www.adx2le.com/)

解凍して出てきたフォルダを、任意の位置に置きます。パスに日本語が含まれていると正常に動作しないので注意が必要です。

「CRI Atom Craft」に必要なランタイムは以下の２つです。

 * .NET Framework 3.5 Service Pack 1　以上
 * DirectX 9.0c Jun 2010　以上

まずはこの２つをインストールしましょう。
 
## CRI Atom Craftの起動とプロジェクトの作成

cri\tools\criatomex\CriAtomCraft.exe が「CRI Atom Craft」です。
exe右クリック→プロパティから、“管理者として実行”にチェックを入れて適用すると、毎回管理者権限を聞かれなくなるので楽です。


データの作成手順はCocos2d-xでの利用やVisual Studioを使ったPCゲーム開発の場合も共通しております。

ツールを起動してみましょう。起動するとTIPSが表示されます。

![AtomCraft起動画面.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/afcd5321-24e4-11bd-f28e-006eca2b0922.jpeg)

次に、プロジェクトファイルを新規作成します。

![プロジェクトの新規作成.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/96980b34-a6ec-80e5-5877-7fabc6a463ac.jpeg)

プロジェクトファイルは、開発するアプリごとに１つ作り、すべてのサウンドデータを管理します。
名前はゲームタイトルと同じにするとわかりやすいです。今回はとりあえず"Demo"と設定して進めます。



作成すると「ワークユニットの追加」というウィザードが出ます。
![ワークユニットの初期設定.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/edd25f67-b92a-52e0-d7e2-a4f8acc228b8.jpeg)

「ワークユニット」はプロジェクトの下の階層です。ざっくり言うと、ツールで読み込む作業の単位です。
サウンドデータが大量にあったり、複数人でツールを使う場合には、ワークユニットで作業単位を分けます。
今回はこのまま「追加」をクリックします。

空のプロジェクトファイルが作成されます。

![空のプロジェクトファイル.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/dd8d5d95-695c-fc4f-999f-8c5d467d15c5.jpeg)

続いて、初期設定をします。左メニューのピンク色のフォルダ「全体設定」→「ターゲットコンフィグ」→「Public」を選択します。

![ターゲットコンフィグ.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/26d8bd43-c61a-3cfa-74f6-b90699bb419e.jpeg)

プロパティのうち「エンコーディングタイプ（メモリ）」をADXからHCAに変更します。
（コーデックによる違いについては別の機会で説明します）

![エンコーディングタイプの設定.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/8640792a-622e-ed22-ec3a-5722089cfc85.jpeg)

こうすると、このプロジェクトの音声は基本的にHCAコーデックでエンコードされるようになります。
その下の「エンコード品質」で圧縮設定ができます。

![エンコード品質の設定.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/29b93e8d-7bba-a35f-afbb-f1403ce7af36.jpeg)


せっかくなので高圧縮モードにしておきましょう。元素材の1/10程度になります。


##音声素材の登録

音声素材はツール左下の「マテリアル」に登録します。
「マテリアルルートフォルダ」を選択して右クリックし、「エクスプローラーで開く」を選択してください。

![マテリアルの登録.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/db416b83-4c0e-d4fb-f9eb-c4be511437b5.jpeg)

開いたMaterialsフォルダの中に素材のWaveファイル(aiffでも可)を入れます。
手ごろな素材が無い場合はCRIが配布している無償素材


![Materialsフォルダに素材を入れる.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/84361b7f-e6a1-b470-81a2-eb096ce8cadf.jpeg)

ツールに戻り、同じく「マテリアルルートフォルダ」の右クリックから「未登録ファイルの登録」を選択すると、プロジェクトに素材が読み込まれます。

![素材が登録された状態.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/fd42d582-6cc0-c912-4b29-452580403704.jpeg)

素材に対して、この音がメモリ再生か、ストリーム再生かを設定でききます。

* メモリ再生：メモリにサウンドデータを全部載せる。すぐ再生できる。
* ストリーム再生：メモリに必要な部分だけのサウンドデータを載せながら再生する。

一般的にSE（効果音）はメモリ再生、ボイスやBGMなど長い音はストリーム再生にします。
ここではBGMデータをストリーム再生に設定します。
素材データを選択して、プロパティ内の「ストリーミングタイプ」を変更します。

![ストリーミング再生の設定.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/8d52d637-1d83-5c66-106a-5ceb7f01f6c1.jpeg)

フォルダ分けした素材に対して一括して設定することも可能ですが、今回は割愛します。

## ゲーム中で鳴らす音(キュー)の作成
ADX2 LEでは、プログラムから再生リクエストされる音の１単位を
**「キュー」**と呼んでいます。

今回はシンプルに１音を鳴らすだけの「キュー」を用意しましょう。

まずは、左カラムの"CueSheet_0"を選択します。

![キューシートの選択.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/ea84c57b-025e-87c0-ba52-0201dbab3095.jpeg)

これは、「キューシート」と呼ばれる階層です。
キューシートは、複数のキューを格納しています。

ツールから出力されるパックファイルは、キューシート単位で作成されます。
ステージで鳴る音やキャラクターの音など、ロードする単位で分けて使用します。
（別のシステムで"サウンドバンク"と呼んでいるものに近いです。）

右クリックから、"Stage1"とか"PlayerVoice"とか任意の名称を設定できます。
今回はデフォルトの"CueSheet_0"のまま進めます。

先ほどマテリアルに登録した素材データを、"CueSheet_0"にドラッグ＆ドロップします。


![キューの作成.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/7d612067-273a-3e1a-9140-ab30a93c1426.jpeg)

「キュー」が生成されました。

プログラムからは、この「キュー」単位でサウンドを鳴らす仕組みになります。
作成したキューを選択して、**Ｆ５キー**でプレビュー再生します。

初回はこういう画面が出るので「許可」してください。

![ブロックを解除する.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/c64646b5-01a1-b96f-b905-ddaff7b70496.jpeg)

（ツール内部で通信をしているため、この画面が初回出ます。）

プレビューで再生される音声は、**HCAコーデックでエンコードされた結果**となります。
すなわち、スマートフォン実機上から再生されるデータと同じ音質となります。

本来であればここからキューに対して様々なサウンド演出設定を行うのですが、今回は何も設定せず、シンプルに鳴らすだけのデータのまま進みます。

## 作成したデータの出力

"CueSheet_0"を選択して、右クリックから「Atomキューシートバイナリのビルド」を選択します。

![キューシートバイナリのビルド.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/7b7f4ab5-9b26-1645-b6d9-0fde0a96c209.jpeg)

Unity開発で使う場合は、「Unity情報出力」にチェックを入れてください。
（Unityのカスタムエディタ内で読むための情報と、Assetsフォルダを生成します。）

ビル完了後、再び"CueSheet_0"を選択して右クリックから
「Atomキューシートバイナリ出力先フォルダをエクスプローラーで開く」を選びます。
出力したデータを確認します。

![出力フォルダ.jpg](https://qiita-image-store.s3.amazonaws.com/0/19010/de7a3fcc-b82d-13ec-1888-44c727729ba0.jpeg)

色々出力されています。
「Demo.acf」ファイルはプロジェクト全体の設定ファイルです。

WorkUnit_0フォルダ、またはAssetsフォルダ内にできているファイルのうち、
「CueSheet_0.acb」がキュー情報とメモリ再生データのパックファイルです。
「CueSheet_0.awb」がストリーミング再生データのパックファイルです。（ストリーム再生を設定した場合のみ出力されます）

まずは最低限、再生できるデータが準備できました。

##各種開発環境での利用について

Cocos2d-x組み込み

 * [cocos2d-x + ADX2でインタラクティブミュージックに挑戦する（前編)](http://qiita.com/giginet/items/872837aa7129b7f93315)

Unity組み込み

 * ADX2 LEの使い方 for Unity(さくっと導入する手順) ：作成中
 
　　いまのところは前バージョンのSlideshareの資料をご参照ください。
　　[「ADX2 LE」Unity プラグイン クイック導入ガイド](http://www.slideshare.net/takaakiichijo/adx2-leunity-2360748)

「ADX2 LE」WEB版マニュアル

 * [CRI ADX2 LE Windows版マニュアル](http://www.criware.jp/adx2le/docs/windows/index_man.html)
 * [CRI ADX2 LE Unity Pro版マニュアル](http://www.criware.jp/adx2le/docs/unity/index.html)
 * [CRI ADX2 LE Cocos2d-x版マニュアル](http://www.criware.jp/adx2le/docs/cocos2dx/index.html)
 * [ツールマニュアル](http://www.criware.jp/adx2le/docs/tools/index.html)