データ解説:基本再生

概要

格納場所 /cri/cocos2dx/samples/criatom/AtomCraftWork/
プロジェクトファイル AtomCraftWork_samples.atmcproj
キューシート名 Basic
主な出力ファイル ADX2_samples.acf
Basic.acb
Basic.awb
データ側だけで仕込むことが出来る「よく使う」設定を行ったサンプルデータです。
主に次の設定について解説します。
lepc_sample_data_basic_summary.png



音楽の簡易クロスフェード

サンプルデータのキュー music1 と music2 は、簡易クロスフェードの設定をしてあります。
この方式では、プログラム側はクロスフェード用の処理を一切書く必要がないのが特徴です。
再生プログラム側の制限は「音楽は同時に1本しか鳴らさない」です。
大枠としてはデータ側に次のような設定を行います。
手順(1) カテゴリMUSICを作成し、音楽のキューを登録する。
手順(2) カテゴリMUSICのキューリミットを有効にし、リミット数を1にする。
手順(3) 音楽の波形にエンベロープ(アタックとリリース)を設定する。
これでゲームスクリプト側が音楽の再生指示をすると自動的にクロスフェードして滑らかに切り替わるようになります。
以降ではそれぞれの設定手順について解説します。

カテゴリグループの作成

プロジェクトツリーペインの「全体設定」−「カテゴリ」で右クリックして「カテゴリグループの作成」を選択します。
できたカテゴリグループ CategoryGroup_# をわかりやすいようにリネームしてください。
新規作成したプロジェクトには最初からカテゴリグループ CategoryGroup_0 がありますので、これを使用してもかまいません。

lepc_sample_data_basic_react_categorygroup.png

カテゴリの作成

プロジェクトツリーペインの「全体設定」−「カテゴリ」−「カテゴリ追加したいカテゴリグループ名」で右クリックして「カテゴリの作成」を選択します。
できたカテゴリ Category_# をわかりやすいようにリネームしてください。
サンプルプロジェクトでは MUSIC と VOICE という二つのカテゴリを作成してあります。

lepc_sample_data_basic_react_category.png

キューをカテゴリに登録する

音楽のキューをカテゴリMUSICに登録する方法を説明します。
プロジェクトツリーペインでキューを選択して「全体設定」のなかの対象カテゴリにドラッグ&ドロップするだけで登録できます。
この方法の場合、複数のキューをまとめて登録できるので便利です。

lepc_sample_data_basic_react_drag_category.png

また、各キューのFX/AISACペインからも個別にカテゴリ登録が可能です。
FX/AISACペインのCueタブを選択すると「カテゴリ」という欄があります。欄右側のEditボタンを押すと、カテゴリ選択ウインドウが開くので登録したカテゴリにチェックを入れてください。

lepc_sample_data_basic_react_cue_to_category.png

カテゴリのキューリミット設定

プロジェクトツリーでカテゴリーMUSICを選択すると、ツール右側のペインがカテゴリ情報に変わります。
「キューリミット」のチェックを入れて、リミット数を1にします。
これで、MUSICカテゴリのキューは同時に1つしか再生されないようになります。

cri4u_samples_criatom_script_data_music_category.png

波形のエンベロープ設定

音楽用のキューを選択し、さらに波形ファイルを選択します。
波形を選択していると、ツール右下のFX/AISACペインの「FX2」タブでエンベロープが設定できるようになります。
本サンプルではアタックを300msec、リリースを500msecに設定しています。
これで、このキューは再生開始時に300msecかけて音量があがり、再生停止時は500msecは音が僅かに残ります。
カテゴリのキューリミットは1になっていますが、再生停止後のリリース設定は有効なので結果的にクロスフェードの演出となります。

cri4u_samples_criatom_script_data_music_envelope.png

クロスフェードの試聴

クロスフェードのかかり具合は、ツール上でキューを再生すれば直接確認できます。
一旦キューシートをビルドしておくと、プレビュー時に細かなビルドが入って音楽が中断されることが無いのでオススメです。
キューのプレビューはプロジェクトツリーでキューを選択して再生ボタン(またはF5キー)で可能です。
他にも、カテゴリーMUSICを選択したときの右側に表示されるキューリストからも再生できます。カテゴリーを選んだ状態のほうが音楽のキューだけ表示されるので便利かもしれません。

TIPS: 複数波形のエンベロープ一括設定

波形へのエンベロープ設定は全ての音楽用波形に適用する必要があります。
ひとつひとつ設定していては大変ですので、TIPSとして一括設定の方法を紹介します。
(1) ツール左側のプロジェクトツリーでキューシート(本サンプルでは CueSheet_0)を選択します。ツール右側がキューシート情報/キューリストという表示に変わります。
(2) ツール右側のキューリストタブ上部にある「フィルタ」をクリックすると、その隣のアイコンが選択できるようになります。
(3) フィルタ欄でアイコンをクリックして波形(丸に♪アイコン)だけが表示されるように設定します。
(4) キューリストタブをずっと右のほうにスクロールすると、EGアタックやEGサステインの項目があります。
(5) キューリスト欄で複数の波形を選択して、最後に選択している波形の値を変更すると一括で変更できます。数値を直接入力するのでなく、マウスを上下にドラックすることでも変更できます。
最後の一括変更は、数値入力の場合は選択中の波形の設定値が全て同じでないと無効ですので注意してください。
マウスの上下ドラッグの場合は、各波形の設定値が違っても相対的に同じ値で増減します。

cri4u_samples_criatom_script_data_music_cuelist.png


ランダムトラック

サンプルデータのキュー voice_random は、ランダムトラックの設定をしてあります。
ランダムトラックとはひとつのキューに複数のトラックを作成し、再生開始時にどのトラックを鳴らすかがランダムに決まる設定です。
プログラム側は同じキューを再生開始するだけで、例えば、掛け声や打撃音などにバリエーションをつけることが出来ます。
大枠としてはデータ側に次のような設定を行います。
手順(1) キューに複数のトラックを作成する。
手順(2) キュータイプに「ランダムノーリピート」を設定する。

複数トラックの作成

キューに複数のトラックを作成する方法はいくつかあります。
キューを選択して右クリックメニューから「トラックの作成」するとカラのトラックが追加されます。
または、マテリアルペインの波形ファイルやプロジェクトツリーの他のキューを、タイムラインペインのトラックが無いスペースにドラッグ&ドロップすることでも追加できます。

キュータイプの指定

キューを選択して、FX/AISACペインのCueタブを選択すると、設定のなかに「タイプ」という項目があります。
サンプルデータは、キュータイプを「ランダムノーリーピート」に設定してあります。
「ランダムノーリーピート」は、同じトラックが連続で再生されないように制限したランダム再生です。

lepc_sample_data_basic_random_track_cue_type.png

ランダムトラックの試聴

ツール上でキューを再生すると、毎回違うトラックの音声が再生されることを直接確認できます。


ダッキング

サンプルデータのキュー voice にはダッキングの設定もしてあります。
ここで言う「ダッキング」とは「音声が再生されている間は音楽の音量を下げる」効果の事です。
音声を聞こえやすくしたり、強調したりする効果があります。
大枠としてはデータ側に次のような設定を行います。
手順(1) カテゴリグループを作成し、カテゴリにMUSICとVOICEを追加する
手順(2) 音楽のキューをカテゴリMUSICに登録する。
手順(3) 音声のキューをカテゴリVOICEに登録する。
手順(4) REACTを作成し、VOICEカテゴリ再生中はMUSICカテゴリの音量が下がるように設定する。

カテゴリの作成と登録

カテゴリグループとカテゴリ作成の手順は「 音楽の簡易クロスフェード 」を参照してください。
同様の手順で、音声のキューをカテゴリVOICEに登録してください。

ダッキング用のリアクト設定を作成する

プロジェクトツリーペインの「全体設定」−「REACT」で右クリックして「REACTの作成」を選択します。
できたREACT React_# をわかりやすいようにリネームしてください。サンプルプロジェクトでは Rucking にリネームしてあります。

lepc_sample_data_basic_react_create.png

作成したREACTを選択するとツール右側のペインにREACTの詳細が表示されます。
次のようにREACTのパラメータを変更してください。
変化カテゴリ MUSIC
トリガカテゴリ VOICE
変化時間 300msec
戻り時間 500msec
変化レベル値 0.10

lepc_sample_data_basic_react_parameter.png

この設定は「VOICEカテゴリのキューが再生されるとMUSICカテゴリの音量が300msecかけて1.0から0.1へ下がり、VOICEカテゴリ再生が終わると500msecかけて音量を元に戻す」という設定です。
設定内容の詳細はツールマニュアルを参照してください。

REACT設定の試聴

プロジェクトツリーでMUSICカテゴリのキューを再生したあと、VOICEカテゴリのキューを再生すると音量の変化が確認できます。
一旦キューシートをビルドしておくと、プレビュー時に細かなビルドが入って音楽が中断されることが無いのでオススメです。
また、全体設定の対象となるREACTを選択すると、ツール右側の下部に変化カテゴリとトリガカテゴリの一覧が表示されます。
この一覧からも再生が可能です。

lepc_sample_data_basic_react_preview.png


パラメータのランダマイズ

ツール上のスライダーで設定するいくつかのパラメータについては、ランダマイズ指定が可能です。
サンプルデータのキュー kalimba にはピッチのランダマイズ設定がしてあります。
再生するたびにピッチが指定範囲内でランダムに変化するため、同じ音が何度もなる単調さを回避することが出来ます。
手順(1) キューのパラメータにランダマイズ範囲を指定する。

なお「 ランダムトラック 」と違うのは、ランダムトラックが再生する波形自体をランダムに選択することに対して、ランダムピッチはパラメータだけを変化させる部分です。

キュータイプの指定

キューを選択して、FX/AISACペインのFX1タブを選択すると、ピッチを指定するスライダーがあります。
スライダーのボタンを上下ににドラッグすると緑色の範囲が広がります。この緑色の範囲がランダマイズの範囲です。

lepc_sample_data_basic_random_pitch.png

スライダーを上下にドラッグする際に操作が左右にぶれてスライダー位置が動いてしまった場合は、スライダーボタンを右クリックすると設定値を数値で直接入力できるので便利です。

lepc_sample_data_basic_random_pitch_direct.png

ランダムトラックの試聴

ツール上でキューを再生すると、毎回ピッチの違う音が再生されることを直接確認できます。

TIPS: ランダマイズ可能かどうかの見分け方

ランダマイズできるパラメータかどうかは、スライダーのボタンを見ると区別が付きます。
スライダーボタンの中央に凹みがある場合はランダマイズ可能です。

lepc_sample_data_basic_random_pitch_slider.png


シーケンス

シーケンスとは、タイムラインに配置した一連の波形の事です。
サンプルデータのキュー gunshot はタイムライン上に複数の波形を配置して一連の音がなるタイミングを決めています。
キュー gunshot を再生すると、銃撃の波形が再生されたあと少ししてから薬莢の落ちる音が鳴ります。
再生する順番やタイミングが決まっている一連の音は、ひとつのキューとして作るとプログラム側の実装がシンプルになります。

lepc_sample_data_basic_sequence.png

サンプルデータではトラックを分けて配置していますが、ひとつのトラックに複数の波形を配置することも可能です。
ツール上で見やすいように作るといいでしょう。

シーケンスの試聴

ツール上でキューを再生すると、一連の波形が指定したタイミングで再生されることを直接確認できます。

TIPS: 再生タイミングのランダマイズ

タイムライン上に配置した波形について、FX/AISACペインのFX2タブで「プリディレイ」を設定することが出来ます。
プリディレイを「 パラメータのランダマイズ 」することで、再生タイミング自体を変化させることが可能です。


発音数制御

ツール側の発音数制御とは、同時に再生する数をデータ側で抑制することです。
例えば銃撃というキューがあったとして、プログラムが銃撃キューを10回連続で再生指示した場合でも3音までしか再生しないという設定です。
発音数制御はいくつかの方法で設定が可能ですが、ここでは最もシンプルな「キューリミット」について説明します。
「キューリミット」は「そのキューが最大いくつまで同時に鳴るか」を規定します。
大枠としてはデータ側に次のような設定を行います。
手順(1) キューを選択して、キューリミットを有効にする。
手順(2) リミット数とタイプを指定する。

キューリミットの設定

キューを選択して、FX/AISACペインのCueタブを選択すると、キューリミットという項目があります。
デフォルトは「キューリミット」は無効なので、チェックを入れて有効にしてください。
「リミット数」は最大いくつまでこのキューを同時再生するかを意味します。
「タイプ」は先着優先か後着優先かを指定します。
先着優先の場合、リミット数を超える音は再生されません。後着優先の場合、リミット数を超えると先に鳴っていた音を止めて新しい再生を開始します。

lepc_sample_data_basic_cue_limit_setting.png

発音数制御の試聴

サンプルプロジェクトでは、bomb_limit がキューリミットを3に制限したキューです。
キューを選択して再生ボタン(またはF5キー)を連打してみてください。
CRI Atom Craft のツール画面上部に「Voices」という欄がありますが、ここがその瞬間に再生されている音の数を意味します。

lepc_sample_data_basic_cue_limit_num_voice.png

bomb_limit を再生連打しても Voices はあまり増えませんが、例えば voice_random を再生連打すると Voicec が跳ね上がるのが確認できます。
bomb_limit を再生連打した時に Voices が3を超えることがありますが、これは再生停止や開始の瞬間にボイス数がだぶることがあるためです。
サンプルプロジェクトでは他にもキューリミットをかけているキューがいくつかありますので連打再生を試してみてください。

TIPS: その他の発音数制御方法

キューリミット以外にもツール側で設定できる発音数制御の方法はいくつかあります。
波形ごとに制限する「ボイスリミットグループ」や、カテゴリごとに制限する「カテゴリキューリミット」などです。
音楽の簡易クロスフェード 」では、カテゴリキューリミットを使って音楽が1つしか鳴らないように設定しています。



サウンド優先度設定

サウンドの優先度設定について説明します。
データ側の設定とは関係なく、アプリケーション側ではCPU負荷やメモリサイズを抑えるために「最大いくつまで音を鳴らすか」を制限します。
例えばアプリケーション側で最大16音までと指定すれば、データ側で発音数制御をしていなくても16音までしか再生できなくなります。
データ側/アプリケーション側の発音数制御によって、再生数を超えてしまった場合に「どの音を再生するか」を指定するのがサウンドの優先度設定です。
例えば「効果音が大量に鳴ったとしても、音楽は絶対に止まらない」とか「ボイスもなるべく止めない」などを、サウンド優先度で設定します。
大枠としてはデータ側に次のような設定を行います。
手順(1) 波形を選択し、ボイスプライオリティを設定します。

ボイスプライオリティの設定

波形を選択して、FX/AISACペインのFX2タブを選択すると「ボイスプライオリティ」という設定項目があります。
ボイスプライオリティの「値」が優先度で、数値が大きいほど優先度が高くなります。
デフォルト設定は、優先度0で後着ボイス優先なので、何も設定しないままデータをビルドすると、効果音が大量に鳴った時に音楽が消えるといった症状が発生します。
サンプルプロジェクトでは音楽のキューは優先度255に、音声のキューは優先度100に設定してあります。この設定にしておくと、優先度0の効果音が大量に再生リクエストされても音楽や音声が止まることはありません。

lepc_sample_data_basic_voice_priority.png

ボイスプライオリティ設定の確認

プロジェクトツリーのキューシートを選択し、ツール右側のキューリストで波形一覧を表示すると、ボイスプライオリティ設定が一覧確認できます。
キューリスト表示の手順は「 音楽の簡易クロスフェード 」のTIPSを参照してください。

lepc_sample_data_basic_voice_priority_list.png

なお、ツール上でプレビューする場合はアプリケーション側の発音数制限にひっかかって音が消えることはまずありません。
ボイスプライオリティを設定し忘れてもツール側では気付くのが難しいので注意してください。


DPSバスエフェクト

リバーブやエコーのような処理の重いエフェクトは、波形単位ではなく、バス単位でエフェクト処理を行います。
サンプルデータのキュー voice_effect にはリバーブの設定がしてあります。
大枠としてはデータ側に次のような設定を行います。
手順(1) DSPバス設定でリバーブのエフェクトをDSPバス1に設定する。
手順(2) キューの設定でDSPバス1への出力ボリュームを大きくする。
手順(3) 再生プログラム側でDPSバス設定を読み込んで登録する。

DSPバス設定

プロジェクトツリーの「全体設定」−「DPSバス設定」でバスごとのエフェクトやルーティングを設定できます。
サンプルプロジェクトでは、DSPバス1に「リバーブ」を、DSPバス2に「エコー」を設定してあります。
それぞれセンド設定でDSPバス0(=最終出力)に戻してあります。DSPバス0に接続しないと最終的に音が鳴らないので注意してください。

cri4u_samples_criatom_script_data_pinball_dsp.png

キューのバスセンド設定

キューを選択して、FX/AISACペインのFX1タブに「バスセンド」のボリューム設定があります。
サンプルププロジェクトではキュー voice_effect がDSPバス1へのボリュームをあげてあります。
キューごとのエフェクトのかかり具合を調整する場合は、このバスセンドのボリュームで調整してください。

cri4u_samples_criatom_script_data_pinball_bussend.png


DSPバスエフェクトの試聴

ツール上でキュー voice_effect を再生すると、リバーブがかかって再生されることを確認できます。

プログラムで再生する時の注意

DSPバスエフェクトをかけたサウンドをプログラムで再生してエフェクトがかからない場合は、 criAtomEx_AttachDspBusSetting() で正しくDSPバス設定名を指定しているかどうかを確認してください。


メモリ再生とストリーム再生

ADX2のサウンド再生には、メモリ再生とストリーム再生の2種類があります。
メモリ再生のデータはACBファイルに入っており、ACBを読み込んだ時点で圧縮データがメモリ上に存在します。
ストリーム再生のデータはAWBファイルに含まれ、再生開始の関数が呼ばれてからデータの読み込みを開始します。
音楽や音声など尺の長いものはストリーム再生に設定することを推奨します。
長尺の波形をメモリ再生にしてしまうと、アプリケーションのメモリ使用量が増えてしまいますし、ACBファイルのサイズが大きくなるために読み込みに時間がかかるようになる可能性があります。

メモリ/ストリームの指定

メモリ再生にするかストリーム再生にするかは波形ごとに指定します。デフォルトはメモリ再生です。
波形ひとつひとつに設定すると手間もかかりますし、あとからは波形が増えた場合などに設定忘れが発生しやすいため、マテリアルのフォルダ単位にストリーム再生を設定することをオススメします。

lepc_sample_data_basic_material.png

マテリアルのサブフォルダを選択すると、ツール右側に「ウェーブフォームフォルダ情報」が表示されます。
フォルダ情報の「ストリーミングタイプ」を「ストリーム」に設定すると、そのフォルダ内の全ての波形データがストリーム設定になります。

lepc_sample_data_basic_stream.png

サンプルプロジェクトでは、bgmフォルダとvoiceフォルダをストリーム設定にしてあります。

個別に圧縮コーデックを指定する

サンプルデータではターゲットコンフィグでデフォルトのコーデックをHCAに設定してありますが、波形ごとに個別にコーデック指定をしたくなる場合があります。
マテリアルフォルダで波形をクリックするか、キューのタイムライン表示などで波形をクリックすると、波形ファイル(ウェーブフォームマテリアル)のプロパティが表示されます。
ウェーブフォームマテリアルのプロパティでもコーデックやメモリ再生/ストリーム再生を指定することが出来ます。
サンプルデータの場合、キュー bomb_limit が使う bomb2.wav だけを HCA-MX コーデックに指定しています。
lecocos_data_codec_set.png
波形ごとにコーデックを指定する場合

アクション機能によるパラメータ変更

アクション機能 」を使うことで、再生中の他のキューのパラメータを変更するようなキューを作ることが出来ます。
キューに「再生開始」以外に、「パラメータ変更」や「再生停止」といった役割を持たせることが出来るのです。
アクション機能で設定できるパラメータ群の詳細はツールマニュアルを参照してください。
サンプルデータでは、音楽(キュー music2)のピッチを変化させるキュー pitch_up_m2 / pitch_def_m2 がアクション機能を使っています。
キューにアクション機能を割り当てる手順を説明します。

(1) キューを作ります。中身はカラでもかまいません。


lecocos_data_action_step1.png


(2) キューで右クリックして、アクショントラックを作成します。


lecocos_data_action_step2.png


(3) アクショントラックの「No TargetObject」という部分に、キュー music2 をドラッグ&ドロップします。


lecocos_data_action_step3.png


lecocos_data_action_step4.png


(4) アクショントラックで右クリックして「再生パラメータアクションの作成」を選択します。


lecocos_data_action_step5.png


(5) アクションを意味する緑色の四角がタイムラインに追加されました。アクション実行タイミングは任意ですが、今回は時刻0に配置しなおします。


lecocos_data_action_step6.png


lecocos_data_action_step7.png


(6) キューのプロパティボタンを押してプロパティペインを表示し、アクション(緑色の四角)を選択します。


lecocos_data_action_step8.png


(7) プロパティペインでアクションの内容を「ピッチを200に変える。変化スピードは1秒あたり1000」として設定します。

「変化スピード」は1秒間の変化量を表しているので、ピッチ0からなら0.2秒で変化する設定となります。

lecocos_data_action_step9.png

(8) これで完成です。

CRI Atom Craft でキュー music2 を再生したあと、pitch_up_m2 を再生するとピッチが変わることが確認できます。

CRI Atom Craft でプレビューする場合は、アクション機能の影響範囲という概念はありません。全ての再生中のキューが影響対象となります。

CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Cocos2d-x) SDKVer.2.10版