【Unity】ダッキングで簡単にサウンド演出を向上！CRI ADX2のサンプルを触って学ぶ実装手法

# 最初に

本記事では、CRI ADX2を使用して音声演出の一つである**ダッキング**の実装方法を解説します。ダッキングは、ゲーム内での音声バランスを整え、ゲームプレイヤーの没入感を高めるために非常に有効な手法となります。これもCRI ADX2を活用すれば、比較的容易に実装することが可能です。

本記事の対象読者は以下の通りです。

- UnityでCRI ADX2を利用中の方
- ゲーム内でのサウンド演出にこだわりたい方
- ダッキングの仕組みや設定手順を理解したい方

### 環境

本記事の環境は以下の通りとなります。

- Unity：2022.3.52f1（CRI社が提供しているサンプルを開くため）
- OS：Windows
- CRI ADX SDK：ADX LE Unity SDK（3.11.00）
- CRIツール：Windows用（3.54.02）

<br>

# **ダッキングとは？**

ダッキングとはサウンド演出の一つで、**特定の音を際立たせるために他の音量を自動的に下げる技術**です。

例えば、キャラクターが話している間にBGMの音量を下げることで、ボイスを聞き取りやすくする、といった効果を実現します。

<br>

## **どうして必要？**

ゲーム内では、BGMや効果音、ボイスなど多くの音が同時に再生されます。

このとき、以下のような問題が発生しがちです。

- キャラクターボイスがBGMに埋もれて聞き取れない
- 効果音が重要な場面で十分に響かない
- 音量調整を手動で行うと煩雑で手間がかかる

こうした問題を解決するために、ダッキングは非常に有効です。

<br>

## ダッキングの流れ

ダッキングは、**ある特定の音（トリガー音）が再生される際に、それ以外の音の音量を一時的に下げる**ことで実現します。


例えば

1. キャラクターボイスが再生される
2. BGMの音量が自動的に減少
3. ボイス再生が終わると、BGMの音量が元に戻る

この仕組みによって、音同士の干渉を避けつつ、プレイヤーにとって重要な音声を際立たせることができます。

<br>

## **ゲームでの活用例**

- **ビジュアルノベルゲーム**：キャラクターのセリフを際立たせるために、BGMの音量を下げる
- **アクションゲーム**：ボス戦での重要な効果音やジングルを目立たせるために、環境音とBGMを調整
- **カジュアルゲーム**：特定のイベント時にBGMを一時的にフェードアウトし、ジングルを強調

<br>
大体どんなゲームでも活用できる箇所は多いと思います。

では、そんなダッキングを、実際どのように実装すれば良いのか、CRI社が提供しているサンプルプロジェクトで見ていきましょう。

<br>

# ダッキングの効果を確認

:::note warn

もしまだサンプルが手元にない方は、以下の公式サイトにアクセスして、ページ下部にある「ダウンロード」からご自身の環境に合わせたSDKとツールをダウンロードしてください。本記事ではUnityを使用して確認するため、「ADX LE Unity SDK」と、ツールの「Windows用」を使用します。

[無償版サウンドミドルウェアCRI ADX LE - CRIWARE for Games](https://game.criware.jp/products/adx-le/)

予め、以下の公式マニュアルに沿ってツールユーザーライセンス認証を行ってください。

[CRI ADX: ツールユーザーライセンス認証について](https://game.criware.jp/manual/native/adx2/latest/criatom_tools_license_about.html)

:::

<br>

ダッキングがわかりやすく実装されているサンプルは以下の２つのSceneとなります。

- `Assets/Scenes/criatom/basic/Scene_05_Category.unity`
- `Assets/Scenes/criatom/script/GameSample_Pinball/Scenes/GameSample_Pinball.unity`

まずは１つ目のサンプルを開いて見てみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/5675032a-ab9e-a1fb-ac37-0dcea46d70c9.png)


実行するとBGMが流れてきます。

「Play Special Voice」ボタンを押下すると、しっかりめにダッキングが入るので聞こえてくる音がすっきりし、ボイスが強調されていることがわかると思います。

このサンプルのドキュメントは以下となります。

[CRIWARE Unity Plugin Manual: [CriAtom]カテゴリ](https://game.criware.jp/manual/unity_plugin/latest/contents/cri4u_samples_criatom_basic_scene05.html)

<br>

次に２つ目のサンプルを開いてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/f2f944e9-9ed4-81cc-bc11-b793afd6c42d.png)


実行すると、ピンボールゲームが始まり、パドル部分はオートで動き続けます。弾が下に落ちると弾の残機が減っていき、０になるとゲームオーバーとなります。弾のカウントが減る度に、BGMには楽器が足されていき、BGM演出、SE演出共に素敵なクオリティなサンプルです。

このサンプルのどこにダッキングがあるかというと、ボールが下に落ちていき、ゲームオーバーになるタイミングです。

このサンプルのドキュメントは以下となります。

[CRIWARE Unity Plugin Manual: ゲーム風：ピンボール](https://game.criware.jp/manual/unity_plugin/latest/contents/cri4u_samples_criatom_script_game_pinball.html)

<br>

では、このダッキングがどのように実装されているのか、ピンボールゲームのAtomCraftプロジェクトを開いて確認していきましょう。

<br>

# Atom Craftプロジェクトの確認

CriAtomCraftを起動し、以下のパスにあるAtomCraftのプロジェクトを開いてください。

- `criadx2le_sdk_unity_v3_11_00_smartphone_j\cri\unity\samples\AtomCraftProject\AtomCraftWork_Pinball\Pinball.atmcproject`

ダッキングを実現するためには、**「REACT」** という機能を使います。

**REACT**は、CRI ADX2に組み込まれた**リアクティブサウンド制御システム**です。**トリガー（条件）** に基づいて、音声の再生やパラメータの変更を自動的に行うことができます。今回はこの機能を用いてダッキング用の音量を変更することが可能です。

<br>

Atom Craftプロジェクト上での左上「プロジェクトツリー」にあるカテゴリ設定とREACT設定を確認してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/b755e220-b386-b634-aa0e-fb1aaea0e2c7.png)

<br>

カテゴリ設定から見ていきます。

このプロジェクトでは３つのカテゴリが用意されており、ゲーム内で使用する音をそれぞれのカテゴリに割り当てています。

例えば、ワークユニットツリーを見てみますと、「aaa」というキューがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/065f0d7a-50aa-875c-e6bf-b3c77c409156.png)

選択してインスペクターを確認すると、カテゴリ「Main/Voice」に振り分けられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/9a60d85f-5286-2c3f-1498-3ae3cc16955d.png)

<br>

また、ワークユニットツリーにある「BGM」というキューは、カテゴリ「Main/Music」に振り分けられているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/52a13d9e-1b6b-ec41-12e1-78445b0d6864.png)

<br>
実際にサンプルを見つつ、ダッキング用の設定を行ってみましょう！

<br>

# ダッキング設定手順

まずは新規カテゴリの作成を行ってください。名前は「MUSIC2」としておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/2b62e044-e582-ab44-a4ba-e9ba990013d0.png)


<br>

REACTの方にも、今回のダッキング演出用に「Music2_Voice」を新たに作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/06f8e665-521b-ad53-f82b-489e2f77b843.png)


<br>

ワークユニットツリーのキューシートフォルダ以下（今回は`PinballMain`フォルダ下）に、新しくポリフォニックキューの作成を行います。名前は「BGM2」にしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/c30b6bfa-21d3-ad15-c526-1599bf5d07d7.png)


<br>

ワークユニットツリー上のキュー名に、マテリアルツリー上にある`bgm1.wav`をD&Dしてあげてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/b0b58e86-e4f2-e907-ae4c-1731320beb6c.png)


<br>

これで自動的にキューでのサウンド再生準備が整います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/814325f0-31db-235a-601b-06ae0407de2c.png)


<br>

新規作成したキューを選択し、インスペクターから「カテゴリ」という設定項目を探してください。先ほど作成した「Music2」を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/ab6fb254-3afd-43b2-c553-b3653d3d1ed0.png)


設定すると、以下のように「カテゴリ」の横に編集済マークであるオレンジの線が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/e739b7da-a565-a457-b928-b63630a34fa9.png)


<br>

では、REACTの設定に移りましょう。

先ほど作成した「Music2_Voice」を選択して 、インスペクターを確認してください。設定項目として「変化カテゴリ」を見つけ、ここに作成したMusic2を設定します。変化カテゴリは、トリガーが発火した際にパラメータ変更を受ける側のカテゴリ設定となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/45e6c8ed-cbed-c1e0-c772-39b019078e1f.png)


<br>

続いて、「トリガーカテゴリ」に任意のカテゴリを設定しましょう。今回は「Main/Voice」、つまりボイスが流れた際にトリガーを発火させる設定にしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/279f17e3-1473-dea2-0dc0-be6a248fc7a0.png)


合わせて、「変化パラメーター」が「ボリュームレベル」になっていることを確認しつつ、「変化レベル値」を好きな値に設定してください。今回はわかりやすいように音量を0にする設定をしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/408c659c-8bea-743b-9fed-2a4e9a8cf2b0.png)

<br>

画面の中央下部に、「REACT」「タイムライン」「ミキサー」などタブが並んでいるのが見えると思います。REACTタブをクリックして、自身の設定に間違いがないか確認してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36899/b6474290-b198-472d-9790-aa04d777f3e2.png)


<br>

これで設定は完了です！

実際にBGM2のキューを再生しながら、トリガーカテゴリにあるキューを再生してみてください。問題なくダッキングが行われていれば成功です。

<br>

# まとめ

本記事では、**CRI ADX2を使用したダッキングの実装方法**について解説しました。ダッキングは、ゲーム内の音声バランスを整える上で欠かせないものであり、REACTを活用することで簡単かつ柔軟に設定できることがわかりました。

**ダッキングのポイント**

- プレイヤーにとって重要な音を際立たせ、ゲームへの没入感を底上げできる
- CRI ADX2とREACTを組み合わせることで、音量調整を自動化し、効率的な演出が可能

ゲーム開発において、こうした細かなサウンド演出はプレイヤー体験の向上に大きく貢献します。

今回ご紹介したダッキングの手法を、ぜひご自身のプロジェクトで試してみてください。