見出し画像

第13回/BGMをクロスフェードさせてみる

こんにちは。
G2 Studios サウンドチームのサキサキです。
今回は、ゲーム制作におけるサウンド演出の1つ「クロスフェード」についてご紹介いたします。

…クロスフェード、格好いいネーミングですよね。
心の奥底に眠る何か(厨二心?)をくすぐられるような感じがします(笑)
そしてこれは、重要度MAX!
サウンドデザイナーとしては絶対に外せない内容になってきますので、この機会に理解を深めておきましょう。

■作業環境

本記事は以下の環境下での作業内容を記載いたします。
-----
<作業環境>
 Windows :Windows 10 Pro
 CRI SDK :criware_sdk_unity_v3_10_00_smartphone_ja
-----

話が逸れますが、CRI SDKが待望のバージョンアップを行いました!

何が待望かというと、今回(2024/02/09)のバージョンアップで、YAMAHAの仮想立体音響ソリューション「Sound xR™」がなんと標準搭載になりました。(⇒ 公式ニュースリリース

コンシュマー開発のみならず、スマートフォン開発においても3D音響が多く取り入れられるようになってきた昨今、まさに願ったり叶ったりの内容です。
CRI Atom Craftもデザイン変更されて、良い感じに仕上がってます。
これはもう、触らずにはいられませんね!
早速、そのバージョンアップほやほやのADX2を使っていきたいと思います。

■クロスフェードとは

「クロスフェード」は異なる複数の音声について、フェードインとフェードアウトを同時に行うことで、スムーズな音の切替を行う手法です。

先に再生している音(=サウンドA)をフェードアウトし、後から再生する音(=サウンドB)をフェードインする、といった具合です。

■クロスフェードの用途

クロスフェードは、BGMの切り替えに多く用いられます。
この場合、シーン遷移やキャラクターを取り巻く環境の変化、ステータスの状態変化などが演出発動のトリガーになります。

■クロスフェードによる効果

クロスフェードを用いれば、音声切り替え時の急な音の途切れや立ち上がりをなくし、また、ノイズの発生を防止することもできます。
これにより、「ゲームへの没入感を高め(る)」たり、「ゲームへの没入感を途切れさせない」といった効果が期待できます。

■クロスフェードの実装に必要な機能

CRI ADX2では、これまでの記事で紹介してきた機能(※これまでの記事リリースはこちら)をいくつか組み合わせることで、簡単にクロスフェードを実装できます。
その機能とは、
エンベロープ」「カテゴリ設定」「カテゴリキューリミット」です。

慣れてしまえば、これらの設定に掛かる時間を数分から30分程度に抑えることもできます(※内容の細かさにより大小前後します)。
もし仮に、CRI ADX2を利用せず1からクロスフェードを実装する場合には、設計から実装、デバック、最適化に至るまでに、小規模なもので1~2週間程度、より複雑なものだと3週間以上の工数が必要になると考えられ(※プロジェクトの規模や複雑さ、開発スキルによって変動します)、これがいかに大きな恩恵であるかが分かります。

■CRI Atom Craftでクロスフェードを設定してみる

それでは、CRI Atom CraftでBGMのクロスフェードを設定してみましょう。
先に挙げた機能を未修得の方は、先にそちらをご一読いただくことをお勧めします。

作業用に2つのサンプル音源「Bgm_CrossFade_01.wav」「Bgm_CrossFade_02.wav」を用意しました。
※こちらは私が作成したものですので、商用でも何でも自由にご利用いただいて大丈夫です。
※予めループ処理を行っています

ゴール条件は以下の通りとします。
-----
<ゴール条件>
・全体設定にカテゴリ「Bgm(楽曲)」を作成する

・カテゴリ「Bgm」のカテゴリキューリミット数を「1」に設定する

・サンプル音源から音声データ「Bgm_CrossFade_01」「Bgm_CrossFade_02」(※キューシート、キューは同名)をそれぞれ作成し、キューにカテゴリ「Bgm」を設定する

・各音声データ内のウェーブフォームリージョンにエンベロープを設定する

・音声データ「Bgm_CrossFade_01」「Bgm_CrossFade_02」を交互に再生し、クロスフェード演出されることを確認する
-----
CRI Atom Craftを起動し、作業を始めるための準備を行います。
※キューシートやキューの作成など、基本的なサウンドデータの作成方法についてはこちら

<手順①>
全体設定にカテゴリ「Bgm」を作成します。 
カテゴリグループは、新規作成でも既存のものを利用する形でもどちらでも大丈夫です。
ここでは、カテゴリグループ「Main」を用意し、その中に作成します。

※カテゴリの登録方法についてはこちら

<手順②>
カテゴリ「Bgm」を選択し、インスペクター上にある「カテゴリキューリミットフラグ」を「True」、「カテゴリキューリミット数」を「1」に設定します。

<手順③>
マテリアルツリーにある該当マテリアル(2つ)をワークユニットツリー上にドラッグ&ドロップし、それぞれキューシート&キューを作成します。

<手順④>
作成された2つのキューについて、それぞれカテゴリ「Bgm」を設定します。

<手順⑤>
各キューシート内の最下層にあるウェーブフォームリージョンを選択し、エンベロープを設定します。
2つの音声がフェードイン&アウトを交互に行う必要があるため、「Attack(アタック)」「Release(リリース)」の2要素について値を設定します。
ここでは、音の切り替わりが分かりやすいように、フェードの尺を少し長めに設定しておきます。
(※設定値 ⇒EGアタック:2000msec ,EGアタックカーブタイプ:S字曲線 ,EGアタックカーブの強さ:1.0)

<手順⑥>
作成された音声データを交互に再生させ、意図通りの音が鳴るかを確認します。
次の添付ファイルのように再生されれば成功です。

最後に、エンベロープの設定値を微調整して作業完了となります。

■実装における注意点

クロスフェードの実装における注意点をいくつか挙げておきたいと思います。
-----
・毎回、BGM頭からの再生になる
クロスフェードの際に後から再生される音声データは、再生開始の位置指定がされていない場合、毎回あたま(=0 msec)からの再生となります。
それが意図した形であったり、特に気にしない内容であれば問題ありませんが、そうでない場合は他の実装に切り替えたり、何らかの形で再生開始の位置指定を行うなどの工夫を行いましょう。

・BGM頭のフェードイン被りに注意
BGMによっては、波形そのものが既にフェードイン処理されているものがあります。
そこにエンベロープの設定(※「Attack(アタック)」の要素)が重なると、再生してから実際に音が鳴り始めるまでに、意図しない無音とも取れる時間ができてしまうことがあります。
クロスフェードがしっかりと機能するよう、個々の状態に応じて適切に調整を行いましょう。

■まとめ

「クロスフェード」はゲームへの没入感を高めたり、途切れさせないようにするために用いられるサウンド演出です。
ユーザー継続率に影響すると考えられ、ゲーム市場のランキング上位に位置するようなリッチコンテンツにおいては、当然のように実装されているのが現状です。
技術的な敷居がやや高いため、通常であればそれなりの時間をかけて作成されるものですが、CRI ADX2を用いれば短時間かつ高性能での作成ができます。
サウンドデザイナーにとっての大事な見せ場でもありますので、確実にマスターするようにしましょう。

今回のnoteは以上となります。

▼G2 Studiosについてはこちら


X(Twitter)にて最新のお知らせを配信しております。ぜひフォローしてください!