YAMADA TAISHI’s diary

ゲームについてとか私の日記とか。このブログのあらゆるコードは好きにどうぞ。利用規約があるものは記事内のGitHubのRepositoryのリンクで貼られていると思うので、そちらを参照ください。

FMODでダッキングする

こんにちは、やまだたいし( やまだ たいし (@OrotiYamatano) / Twitter )です。
FMODシリーズです。
ダッキングの方法を毎回忘れてしまってググるので、今回は忘れないように書き留めて置こうと思い記事化しました。

目次


過去の記事


orotiyamatano.hatenablog.com

ダッキングとは?


かがめるという意味がありますが、
音楽ではメインの音声が鳴る際に他の音を絞って目立たせる事をいいます。

なぜダッキングが必要なのかというと、理由は2つだと私は考えます。

1.音割れが発生しやすくなってしまう

コンピューターが表現出来る音には限界があるのですが、音声を同時に鳴らした場合、「ビリビリビリ」とそのリミットを超えてしまうことが多々あります。
それを回避するためです。

2.入れた音が聞こえない

同時に音を鳴らしたらせっかく入れたSEやボイスが聞き取りづらくなってしまうことがあります。
BGMと鳴らしたい音源の周波数がかぶらないようにするという手段もありますが、簡単に回避できる方法としてダッキングがあげられます。

Unityで自前でダッキングを実装することも可能なのですが、ライブラリ側でやったほうが処理不可も少なく、ソースコードを汚染せずに済みます。

早速作っていく


今回は前までのFMODの最低限の操作を覚えた前提で記事を書いていきます。

バージョン


FMOD 2.01.07
Unity 2021.3.1f1
FMODプラグインバージョン:2.02.04

FMODStudioの設定


(何もない、まっさらな状態から開始)

まず、bank(バンク)を作っていきます。
右クリックしてBankをSEとBGM作成。
今回はBGMを鳴らしている間にSEを鳴らしてダッキングさせるものを作ります。

次にアセットの追加。
SEとBGMを追加します。

次にイベントを作ります。
今回は3D的に音声を配置しないので、2Dでそれぞれ作ります。

イベントに先程追加したSEとBGMをアサインします。

ミキサーの設定をしていきます。
まず、ミキサーウィンドウを開いて……。

グループを作ります。
グループには先程追加したイベントのSEとBGMをいれます。
(イベント名、分かりづらいので変えても良いかもしれないですね)
(今回は特段設定はしませんでしたが、グループは階層にも出来ます。マスターの下にぶら下がる形にすると音量調整のオプション画面も作りやすく非常に良いです)

次にダッキングさせるBGMにコンプレッサーを追加します。
コンプレッサーの設定はなんか適当に。
とりあえず、反応するThreshold(しきい値)の値だけ少しいじっています。

サイドチェインをSEに追加。
どのサウンドグループで音が鳴るとダッキングが起きるかの設定ですね。
サイドチェインをSEに追加したら先程のコンプレッサーにリンクさせます。

これで設定は完了です。
確認してみましょう。

イベントエディタでBGMを再生して、
新規ウィンドウで更にイベントエディタを開き、SEを再生した際にダッキングが働いているか確認します。

グループのコンプレッサーの反応あたりを確認すれば分かりやすいと思います。
後は通常通りプロジェクトをビルドして、Unityで再生させるだけです。

Unity側はプロジェクトをビルドさえすれば設定は勝手に引き継がれるので、特段設定をする必要なくただ再生すればダッキングが適用されます。

簡単ですね!

参考動画


www.youtube.com

まとめ


このように各イベントに対してグループを設定することですべてのSEにダッキングの設定が一括で行なえます。

もちろん、イベントごとに特殊な設定も行えますが、一括で設定したほうが色々と管理が楽だと思われます。
どちらにしてもビルドさえしてしまえば、SEの差し替えなどでプロジェクトのソースコードに影響を与えてしまうこともありません。
ダッキングの実装は意外と面倒なのでミドルウェアライブラリ導入してみてはいかがでしょうか?