CRI ADX2(Unity)
回想シーンだけリバーブを深くする
キャラクターの心の声や過去の記憶など、ゲーム中の印象的なイベントシーンで
加工されていないドライな音声をそのまま再生してしまうと、なんだか味気ないですね。
とくにゲーム中で再生しているセリフと同じ音声を回想シーンでも再生するとなると
「加工されていない音声」と「回想シーン用の加工されている音声」の両方を用意したくなります。
でもDAWまで戻ってwavファイルを書きだすのも手間ですよね?
今回の記事では「スナップショット」を使って
音声素材はそのまま、回想シーンのセリフにリバーブをかける方法を紹介します。
今回使用するADXの機能
ADXでは、再生した音をミキシングするオブジェクトを「ミキサー」と呼びます。
ミキサー内のバスにはエフェクトが追加でき、
元の音声データはそのままに再生中の音のバリエーションを増やせます。
また、ミキサーのバスにはスナップショットが設定できます。
スナップショットにはエフェクト自体のパラメーター設定はもちろんのこと、
バスからバスへのバスセンド設定も登録できます。
スナップショットをゲームの状況に応じて切り替えることで、ゲームシーンにぴったりな表現が可能です!
今回は、エフェクト無しのバスとリバーブをかけるバスのバスセンド値を
スナップショット機能で操作することで、回想シーンにあわせてリバーブをオンオフします。
では実際に試してみましょう!
CRI Atom Craftでデータを準備する
ミキサーにバスの追加とエフェクトの設定
まずはエフェクトを切り替えるためのバスを作ってみましょう。
プロジェクトツリーからデフォルトのMixer
ミキサーを選択し、dialogue
とreverb
という名前のバスを作成します。
次に、作成したreverb
バスのエフェクトに「リバーブ」を追加します。
最後にdialogue
バスにreverb
バスへのセンド先を追加します。
ゲーム起動時のデフォルト状態ではリバーブをかけたくないので、reverb
バスへのセンド値を0
にしておきましょう。
これでバスの作成とミキサー設定が完了しました!
スナップショットの作成と設定
参考:スナップショットの作成
次はスナップショットを作成しましょう。
まずは「回想シーンではないとき」のスナップショットを作成します。normal
という名前でスナップショットを作成しましょう。
次に、同じ手順でもう一つのスナップショットを作成しましょう。
今回は回想シーン、つまりリバーブをかけたいときに使うスナップショットです。
こちらはflashback
としておきます。
normal
とflashback
ができました。
次は作成したスナップショットの設定を変更しましょう。
プロジェクトツリーからミキサー(Mixer)を選択すると、
「ミキサー」の画面上部に編集する「スナップショット」を選べます。
回想シーンに使うflashback
スナップショットを選びましょう。
リバーブが追加されているバスをflashback
スナップショットで操作したいのでdialogue
バスをflashback
スナップショット追加します。
次に、追加したdialogue
バスのバスセンド値を調整します。
dialogue
バス→MasterOut
バスへのセンド値を0
dialogue
バス→reverb
バスへのセンド値を1
通常再生用に、normal
スナップショットも同じ手順で設定してみましょう。
バスセンド値の設定は逆になるので間違えないように!
キューにバスセンドを設定
キューのインスペクター「バスセンド」から「カスタムバスマップの作成」を選びます。
ここで今回使用するバスをカスタムバスマップに追加します。
最後にキューがdialogue
バスへセンドされるように設定します。
これで設定が完了しました!
作成したスナップショットのプレビュー再生
それでは作成したスナップショットを再生して確認してみましょう。
CRI Atom Craft上部にあるPreview Mixer欄で
プレビュー時に適用するスナップショットとミキサーの設定を選べます。
Mixer
とnormal
を選んで、作成したスナップショットを試してみましょう。
キューを再生すると、この状態ではリバーブがかかっていない音声がきこえますね!
続けて、flashback
スナップショットを選択して再生してみます。
…音声にリバーブがかかりました!
スナップショットが正しく動作したらデータの準備は完了です。
もしうまくいっていないときは、スナップショットとキューのバスセンド設定を確認してみましょう!
サウンドデータをビルドし、Unityプロジェクトにサウンドデータを取り込んだら
次はUnityでの設定です。
ゲーム内で適用する
プログラムからスナップショットを適用するにはCriAtomExクラスのAPIを呼びます。
スナップショットを切り替える
先ほど作成したリバーブのスナップショットを呼び出してみましょう。
//(1)バス設定の初期化
CriAtomEx.AttachDspBusSetting("DspBusSetting_0");
CriAtomEx.ApplyDspBusSnapshot("normal", 0);
//(2)onEnteringFlashbackScene
CriAtomEx.ApplyDspBusSnapshot("flashback", 3000);
//(3)onExitingFlashbackScene
CriAtomEx.ApplyDspBusSnapshot("normal", 0);
(1)バス設定の初期化
ライブラリ初期化後に、AttachDspBusSetting()
を呼び出して
CRI Atom Craft上で作成したバス設定をアタッチしましょう。
バス設定をアタッチした直後はスナップショットが適用されていません。
なのでApplyDspBusSnapshot()
を呼び出して、normal
を適用します。
(2)onEnteringFlashbackScene
次に回想シーンに入るのに合わせて、音声も回想シーン用の設定に切り替えます。
ApplyDspBusSnapshot()
でflashback
を指定して、音声にリバーブを掛けます。
第二引数を3000
(ミリ秒)に指定したので、3秒間かけてゆっくりとflashback
スナップショットの設定がバスに設定されます。
(3)onExitingFlashbackScene
最後に、スナップショットをnormal
に切り替えて、回想シーンから出ます。
第二引数を0
に指定したので、normal
のスナップショット設定がバスに即時適用されます。
これでデータ上で設定したスナップショットをUnity上でも確認できました!
Tips
ACFファイルの登録
AttachDspBusSetting()
でバス設定をアタッチするには
あらかじめACF情報を登録しておく必要があります。
以下のコンポーネントやAPIで、ACF情報を登録しておきましょう。
- Cri Atom Assetsコンポーネントの
ACF Asset
欄 CriAtomEx.RegisterAcf()
ミキサーとスナップショット間での共有項目について
スナップショットでは「エフェクトのバイパス」ができません。
したがって、今回の回想シーンのようなエフェクトのオンオフする挙動はバスへのセンド値を調整することで実現しました。
スナップショットでは他にも注意が必要なパラメーターがあります。マニュアルを確認してみましょう!
バスとエフェクトをさらに活用する
今回の記事では「リバーブ」のみバスに追加しましたが、
リバーブ自体のパラメーター調整や他のエフェクトと組み合わせるとさらに実践的な音になります!
実際のタイトルでのバスや各エフェクトの設定が紹介されています!
ぜひ参考にしてみてください。