Unityで音関連を制御するとなると、必ず名前が挙がるのがCRIWAREさんのADX2 LEです。これまでなかなか開拓する機会がなかったのですが、学校で音ゲーを作っているTさんが使い始めたということで便乗して使ってみることにしました。音を鳴らすまでにやったことのメモです。
基本はチュートリアルでできるのですが、ちょくちょく話が前後したり、別の場所に書いてある情報などがあったのをまとめた記事です。
目次
- 目次
- 情報源
- ADX2LEを利用する前提
- 音を鳴らすまでの流れ
- 必要なものをダウンロードする
- 扱えるデータ
- キューシートを作成する
- Unityで音を鳴らす
- 音を鳴らす
- ライセンス表示
- まとめ
- 参考URL
情報源
こちらの公式のチュートリアルにて。
ADX2LEを利用する前提
無償版だとWebGLで使えません!!unityroomなど向けの場合はお気をつけください。以下、通常版の手順が紹介されていました。
無償で利用できる範囲を『CRI ADX2 LE』に関するユーザー使用許諾契約書 – CRIWARE for Gamesの第3条 (別途使用許諾契約が必要な場合)で確認しておきます。以下、2020/1/16時点での抜粋です。更新される可能性があるので、利用時にはちゃんと本家で確認してください。
- 前年の年商が1,000万円を超える企業、団体が対象コンテンツの配信をする場合。
- 前項に該当する企業、団体の、関連会社及び子会社が対象コンテンツの配信をする場合。
- パブリッシャーまたはエージェントを介して対象コンテンツの配信をする場合。
- 対象コンテンツの配信による累計売上額(広告、アプリ内課金、サブスクリプションモデルの売上を含む)が1,000万円を超えた場合。
また、第4条 (対象コンテンツの配信を行う場合)で、ADX2LEを組み込んだアプリを配信する際には、以下が条件になります。
無償で利用する場合、これらの条件に合致していることと、ライセンス表記と各種注意事項の表記が必要です。ロゴ表示は、自動的にやってくれるものがアセットに組み込まれています。詳しくは、公式サイトに記載されています。
音を鳴らすまでの流れ
Unityで音を鳴らすまでの流れは以下に記載されています。
ここでのポイントは以下の通り。
- 鳴らしたい音源データ(wavのみらしい)を、AtomCraftというツールを使って、ADX2用のデータ(キューシート)に変換します
- Unityにインポートできるように指定をしてエクスポートします
- Unityに、ADX2LEを指示に従ってインポートして、初期設定します
- 作成したキューシートをUnityのプロジェクトに読み込みます
- 必要に応じて、再生するためのスクリプトを書きます
必要なものをダウンロードする
このページのダウンロードをクリックして、規約に目を通したらダウンロードをクリックして開発ツールを入手します。ダウンロードしたzipファイルは、ドキュメント内のToolsフォルダーなどの中に展開します。展開すると、criという名前のフォルダーが作成されて、その中にAtomCraftやUnityのプラグインをはじめ、必要なものがすべて入っています。
扱えるデータ
mp3やoggからを直接インポートはできないっぽいです。使いたい音源がmp3やoggなどの場合、オンラインのフォーマット変換ツールを利用するか、Audacityなどであらかじめwavに変換しておきます。
Audacityは無音部を切り取ったりできる便利ツールで重宝してます。
キューシートを作成する
Unityで作業を始める前に、AtomCraftを使って音源データを作成する必要があります。AtomCraftを起動します
- criフォルダーから、tools > criatomex > win と辿っていくと、CriAtomCraftがあるので、起動します
- スタートページが開いたら、新規作成をクリックして、新しくプロジェクトを作成します。名前は
FirstADX
など- 場所は、特に必要がなければそのままでよいでしょう。ユーザーのドキュメント内にCRIWAREというフォルダーが作成されて、その中にプロジェクト用のデータが設置されます
- ワークユニットの追加ウィンドウが表示されます。とりあえずそのまま追加してOKです
- 注意。プロジェクトは名前などを内部で紐づけているようで、AtomCraft以外の環境で名前を変更したり、削除したり、移動すると予想外のことが発生するようです。AtomCraft上で操作するようにしてください
あとは、以下のチュートリアルに沿えばおおよそ大丈夫でした。
2点だけちょっと注意。
- 3のボリュームの一括確認方法がわからなかった
- 最後のエクスポート時、Unityで利用する場合は、Unity Assets出力へのチェックが必要
以上でビルドして、出力パスを開くをしておけばデータの生成は完了です。
Unityで音を鳴らす
Unityも公式チュートリアルを見ていきます。入門編の01と02はバージョンアップで少し楽になっていたので、以下でいけます。
- 先にダウンロードして展開したcriフォルダーから、unity > pluginフォルダーを開くと、
criware_unity_plugin
があるので、これをUnityのProjectウィンドウにD&Dするなどしてインポートします - Windowメニューから、CRIWARE > Open CRI Atom Windowを選択します
- ウィンドウが起動したら、Use Copy Assets Folderにチェックを入れます
- Select Assets Rootボタンをクリックして、AtomCraftでビルドした時に開いた出力パスから、プロジェクトフォルダー > Public > Assets フォルダーのパスをコピーして、Unityの方に設定します
- Update Assets of "CRI Atom Craft"ボタンをクリックします
以上で、必要なキューシートデータが、UnityのプロジェクトのStreamingAssetsフォルダーにコピーされます。
ここからは入門編03に沿って作業します。
- 音を鳴らしたいシーンや、システムシーンがあればそこに、指示に従ってGameObjectメニューからCriWareLibraryInitializerとCriWareErrorHandlerを読み込みます
- CriWareErrorHandlerは開発用なので、必須ではありません
- 指示に従って、空のゲームオブジェクトを作成して、Cri Atomスクリプトをアタッチします
- 出力したAtomCraftのキューシートデータのファイル名を設定していきます。例えば、効果音用の
SeCue
とBGM用のBgmCue
を作成していたら、以下のような感じです
効果音はすべてメモリにしたのでawbファイルはありません。よって空欄です。BGMは、いくつかのものをストリーミングにしたので、awbファイルも指定しています。
これらのファイル名は自力入力です。
音を鳴らす
入門編04に従って、音を鳴らしてみます。
- 先ほど開いたCRI Atom Windowを閉じていたらもう一度Windowメニューから開きます
- UnityのPlayを開始します(Playしないとうまく動きません!!)
- Reload Infoボタンを押して情報を取得します
以上で情報が取得できたらOKです。Playを停止します。
シーンにBGMを設定する
鳴らしたいBGMをウィンドウから選択したら、Create GameObject ボタンをクリックすると、BGM再生用のゲームオブジェクトがシーンに生成されます。
ここで作成されたオブジェクトを見ると、音の鳴らし方が分かります。
ここまでできたら、あとはやりたいことをチュートリアルやマニュアルから探せばOKでしょう。
音が鳴らない時(2020/1/31追記)
以下のようなエラーが発生する場合があります。これは、ストリーミングで出力したキューシートをCIR Atomウィンドウで自動生成した時に発生します。
[CRIWARE] Warning:W2010053100:An AWB file [CueSheet_0.awb] is not attached to an ACB handle.
原因は、自動的に生成したCRIWAREオブジェクトのAWBファイルの設定が空欄のままというものでした。手動でAWBファイルを入力することで、音が鳴るようになりました。
ライセンス表示
無償版サウンドミドルウェアCRI ADX2 LE – CRIWARE for GamesのADX2 LEを使ったアプリ・ゲームを配布する方へのあたりに、ライセンス表示の仕方や、UnityでADX2 LEのロゴを表示するためのサンプルがあります。便利!
まとめ
音データを作成して、鳴らすことができました。Unityのオーディオシステムが不要な場合は、以下をしておくとよさそうです。
- ProjectSettingsのAudioで、Disable Unity Audioにチェックを入れると、Unityのオーディオを無効にできる
AtomCraftというツールを使ってwavからキューシートを生成することと、Unityにちょこちょこと初期化設定が必要ですが、1時間もあれば音を鳴らすまではいけると思います。ちょっと時間がある時にやっておくと良さそうです。
導入するだけで音周りの速度アップが期待できるのは大きいです。機能は大量にありますが、差し当たり以下のあたりを活用しようと思ってます。
- 同じ音の最大音数の制限(効果音でこれはとてもありがたい)
- いくつかの音のランダム再生(足音などで便利)
- イントロを飛ばしたループの設定
Sofdec2を使えば動画もよしなに行けそう。もしかしたらVoxelorerBirdで難航していた部分もこれで解決できるかも?
WebGLが無償で使えないというのはありますが、スマホ版のアプリには早速導入してみようと思います!