CRIWARE Unity Plugin Manual  Last Updated: 2024-12-05
データ:ピンボール

サンプル内容

概要

ゲーム風ピンボールの CRI Atom Craft のサンプルプロジェクトです。

cri4u_samples_criatom_script_data_pinball_main.png

データ情報


ミドルウェア CRI ADX (CRI Atom)
サンプル サンプルデータ:ピンボール
格納場所 /cri/unity/samples/AtomCraftProject/AtomCraftWork_Pinball
プロジェクトファイル Pinball.atmcproj
ワークユニット WorkUnit_Pinball


注意
本サンプルプロジェクトのキューシートはワークユニット "WorkUnit_Pinball" で管理されています。
キューの編集やプレビューを行うには、プロジェクトツリー上の "WorkUnit_Pinball" を右クリックして「ワークユニットを編集対象に含める」を選択してください。
cri4u_samples_criatom_script_data_pinball_workunit.png

データ作成の解説

ピンボールゲームのサウンドデータです。少ない音声素材からADXの様々な機能を使って多彩なサウンド演出を作成しています。
どのようなサウンド設定を行っているかを、キューごとに簡単に説明します。
サウンド作成の一例として参考にしてください。

全体設定:DSPバス設定

DSPバス1に「リバーブ」を、DSPバス2に「エコー」を設定してあります。
それぞれセンド設定でDSPバス0(=最終出力)に戻してあります。DSPバス0に接続しないと最終的に音が鳴らないので注意してください。
本サンプルデータではリバーブとエコーを各キューで多く利用しています。
リバーブ/エコーのかかり具合は、各キューのトラックを選択してFX/AISACペインのFX1タブでバスセンド設定をみるとわかります。

cri4u_samples_criatom_script_data_pinball_dsp.png

cri4u_samples_criatom_script_data_pinball_bussend.png

共通:音数制限

本サンプルデータではそれぞれのキューについて同時に発音する数に制限をかけるために「キューリミット」の設定をしています。
例えば、ボールの壁ヒット音はキューリミット数1で後着優先、ターゲットヒット音はキューリミット数3で先着優先、などです。
これによってプログラム側から短時間に多数の再生要求がきても大量に音が重ならないようにしたり、プログラム側の最大発音数(=ボイスプールの数)を特定の音が食いつぶしてしまうのを回避できます。

cri4u_samples_criatom_script_data_pinball_cuelimit.png

ボールの壁ヒット音

ボールの壁ヒット音はキュー名 Ball で作成してあります。
このキューの特徴は、ゲーム側から「ボールが壁に衝突した時の速度」をパラメータとして受け取ってサウンドを変化させている事です。

cri4u_samples_criatom_script_data_pinball_ball.png

サウンド変化には AISAC 機能を使用しています。
同じ入力値(AISACコントロール0:Any)を使って、3種類のパラメータを微妙に変化させています。
ピッチ(青のグラフ)、バイクアッドフィルタのCof(赤のグラフ)、バイクアッドフィルタのQ値(オレンジのグラフ)です。
特にピッチは階段状のグラフにすることで、キリのいい数値になるように調整しています。
ツール上でプレビューする場合は、AISACタブの横軸にあるスライダー位置がゲーム側からの入力として処理されますので、ツール上でAISACによる音の変化を確認することができます。
AISACを使用したプログラム側の説明は、scriptサンプル「 ゲーム風:ピンボール 」をご参照ください。
AISAC機能については、basicサンプル「 [CriAtom]AISAC 」もご参照ください。

ボールロスト音

ボールロスト音はキュー名 BallLost で作成してあります。
このキューの特徴は3つあります。
  • 複数トラックの同時再生
  • トラックオートメーションによるサウンド加工
  • キューリンク機能による別キュー(セリフ)の呼び出し

cri4u_samples_criatom_script_data_pinball_balllost.png

このキューは3つのトラックから構成されていて、全て同時再生する設定になっています。
複数トラックの再生方法設定は、キュー情報タブの「タイプ」で選択します。「ポリフォニック」が同時再生です。
複数トラックの利用は他のキュー(HitTarget、BGM)でも使用しています。
3つのトラックのうち上の2つは、トラックオートメーション機能でピッチを変化させています。
波形表示に重なっている、青いグラフがトラックオートメーションの変化設定です。
これにより原音(glass.wav)とは全く違う印象の音を作っています。
また、わずかにリバーブとエコーをかけて音を豪華にしています。
このようなトラックオートメーションによるサウンド加工は、キュー(Bumper)でも使用しています。
3つめのトラックには「キューリンク」機能を使って、セリフ用に作成した別のキュー aaa を配置してあります。
これにより、キュー aaa の設定変更が BallLost に同時に反映されるようなります。
キューリンクを作成する操作方法は、ツール上でキューを選択して配置したいトラックにドラッグ&ドロップするだけです。

ボールロスト時のセリフ

ボールロスト時のセリフはキュー名 aaa で作成してあります。
このキューは、ボールロスト音(BallLost)からキューリンクで呼び出されます。
このキューの特徴は2つあります。
  • 複数トラックのランダム再生
  • セリフ再生時の音楽/効果音のダッキング設定

cri4u_samples_criatom_script_data_pinball_aaa.png

このキューは4つのトラックから構成されていて、そのうちのどれか1つをランダムで再生する設定になっています。
複数トラックの再生方法設定は、キュー情報タブの「タイプ」で選択します。「ランダムノーリピート」はランダムでかつ同じ音は連続再生しないという設定です。
これによりボールロスト時のセリフバリエーションをデータ側だけで増やしています。エコーを強くかけているのもセリフの印象を強くしています。
セリフ再生時の音楽/効果音のダッキング設定には、ADX機能のカテゴリとREACTを使用しています。
まず、全体設定で3つのカテゴリ「Other」「Voice」「Music」を作成してあります。
キュー aaa はカテゴリ Voice に割り当ててあり、他のキューは「Music」や「Other」にそれぞれカテゴリ分けしてあります。
次に「カテゴリ Voice が再生中は カテゴリ Music の音量が自動的に小さく」なるよう REACT の設定をしています。

cri4u_samples_criatom_script_data_pinball_react.png

REACT「Music_Voice」では、カテゴリ Voice の再生中はカテゴリ Music の音量を 0.20 に変化させる設定になっています。
REACT設定画面の下部には関係するカテゴリのキューが表示されていますので、ここでキューを選択して再生することで実際にREACTの影響がどのように聴こえるか確認することができます。
本サンプルではREACT「Other_Voice」も同様の設定でセリフ再生中は効果音の音量が小さくなるように設定しています。
REACTの設定は、セリフ再生中に再生開始された効果音にも適用されます。
これらダッキング設定はデータ側だけで完結していますので、プログラム側はダッキング用に何か関数を呼ぶ必要はありません。
カテゴリやREACT機能については、basicサンプル「 [CriAtom]カテゴリ 」もご参照ください。

ターゲットヒット音

ターゲットヒット音はキュー名 HitTarget で作成してあります。
一見すると、同じ音を少し時間をずらして配置したシンプルなキューですが、聞いてみるとサウンド変化がついています。
このキューは、サウンド変化にちょっと変わったAISACの使用をしています。
  • ランダムなAISACコントロール値によるピッチの変化
  • AISACオートモジュレーションによる再生中のピッチ変化
このキューで利用しているAISACは2つとも「プログラムからの指定に合わせた変化」ではない使い方です。
まず、キュー全体にはAISAC(AISACコントロール0:Any)によるピッチ変化が設定してあります。

cri4u_samples_criatom_script_data_pinball_hittarget_random.png

単なる「ピッチのランダマイズ」であればAISACを使わなくても、FX/AISACペインのFX1タブでピッチのスライダーを上下にドラッグすることで簡単に設定できます。ですがこの方法ではピッチのランダム範囲内の全ての値が指定される可能性があります。
このキューで使用している hajiku.wav のようなシンプルな音では中途半端なピッチ変化は逆に気持ち悪い音になってしまう可能性があります。それを回避するために、AISACによる特定ピッチの階段グラフ+入力値のランダマイズという組み合わせを利用しています。
「ボールの壁ヒット音」と同様にAISACグラフを作成した後、コントロールタイプを「ランダム」、ランダム幅を2.00に指定します。
ランダム範囲はAISACグラフ上部のスライダーの領域に緑色の帯として表示されます。
(AISACコントロール値のランダムは、プログラムから指定された値を中心にランダム幅の範囲から値が選択されます。ランダム幅を2.00にすることでプログラムからAISACコントロール値にどんな値を指定された場合でも、ランダムの対象に0.0~1.0の全ての値が入ります。)
次に、ひとつめのトラックにはAISAC(AISACコントロール1:Distance)によるピッチ変化が設定してあります。

cri4u_samples_criatom_script_data_pinball_hittarget_auto.png

AISACのコントロールタイプが「オートモジュレーション」になっていることに注目してください。
さらに、オートモジュレーションのタイプは「ループ」で、時間は2000msecに設定してあります。
ピッチ変化のグラフは横軸0.5を頂点とした山状にしてあります。
AISACの「オートモジュレーション」とは時間にあわせて自動的にAISACコントロール値を変化させる仕組みです。プログラム側からのパラメータ指定は無視されます。
このキューでは「AISACコントロール値1を、0.0から1.0まで2秒かけて変化させ、さらにその変化をループ」させる設定です。
こにより「ぴよ~~ん」という感じ音の加工を実現しています。
AISACのオートモジュレーションは時間に対して周期的な変化(今回なら2秒ループ)をさせるために利用できます。
似た機能としてトラックオートメーションがありますが、こちらは周期的ではない音の変化に向いています。

パドル音

パドル音はキュー名 Paddle で作成してあります。
パラメータのランダマイズと、リバーブ/エコーをかける事でシンプルな作りながら変化のある音を作っています。

cri4u_samples_criatom_script_data_pinball_paddle.png

キューのボリュームとピッチにランダマイズ設定をして、音を微妙に変化させています。
スライダーの左右にある緑色の領域がランダマイズの範囲です。
スライダーを上下にドラッグする事でランダマイズの範囲を変更可能です。

音楽

音楽はキュー名 BGM で作成してあります。
本データのBGMは長尺の波形ファイルではなく、小さな波形を多数配置して全体として音楽になるように構成してあります。
ADXのブロック再生機能を使ってボールロスト数に合わせて音楽を変化させるための作りです。
細かな説明は省略して、ポイントだけいくつか説明します。

cri4u_samples_criatom_script_data_pinball_bgm.png

このキューは7つのトラックを4つのブロックに分割して作成してあります。
プログラム側からはボールロスト数にあわせて再生するブロックのインデックス(左側から0,1,2,...)を増やすようにしています。
(プログラム側詳細はサンプル「 ゲーム風:ピンボール 」をご参照ください。)
各ブロックのプロパティは「ブロックループ回数」を-1(=無限ループ)、「ブロック分割数」を2、「ブロック遷移タイプ」を「指定分割で」としています。
ブロックを分割して切り替えポイントを増やしているのは、プログラムからのブロック変更指示へのレスポンスをよくするためです。
トラックの5~7番目はブロック遷移時のサウンド演出に使用しています。
トラックの5番目と6番目は「次の再生でブロックが切り替わる時にのみ再生」されるトラックです。
「ブロック遷移発音タイプ」を「遷移時発音」に設定すると、トラックの背景が右上がりの斜線模様になります。
トラックの7番目は「そのブロックに遷移してきた直後の1回だけ再生」されるトラックです。
「ブロック遷移発音タイプ」を「遷移後初回時発音」に設定すると、トラックの背景が右下がりの斜線模様になります。
ブロック遷移発音タイプの変更は、トラックを選択して右クリックから可能です。

cri4u_samples_criatom_script_data_pinball_blocktype.png

なお、トラックの5~7番目に黄緑と朱の色がついているのは見た目で区別しやすいように「色の設定」をしてあるためです。 ブロック遷移発音タイプを変えても自動で色が変わるわけではありません。