
マイケル
みなさんこんにちは!
マイケルです!

エレキベア
こんにちクマ〜〜〜

マイケル
前回に引き続き、UnityAudioによるサウンド実装を進めていきます。
今回は AudioMixer を使用して、
・ボリューム設定画面の実装
・サウンドエフェクトの適用
を行ってみます。

エレキベア
Unity標準機能でもサウンドエフェクトがかけれるのクマね
これは気になるクマ〜〜

【Unity】第一回 UnityAudioを使いこなす 〜サウンド再生処理編〜
2024-01-22

【Unity】第二回 UnityAudioを使いこなす 〜AudioMixer活用編〜
2024-01-22

【Unity】第三回 UnityAudioを使いこなす 〜オーディオスペクトラム描画編〜
2024-01-22
参考書籍

マイケル
学習するにあたっては、下記書籍を参考にさせていただきました!


マイケル
Unityでのサウンド処理をまとめた数少ない書籍です!
発売日からそれなりに経過していますが、UnityAudioだけでなくCRIと連携した使い方まで解説されているため、興味を持った方はぜひ一読してみてください!

エレキベア
サウンド専門となると書籍は中々ないクマから持っておく価値はありそうクマね
AudioMixerの概要

マイケル
まずAudioMixerがどんなものかというと、AudioSourceが鳴らしている音を分類し調整やエフェクト処理を行う機能になります。
こちらは Window > Audio > Audio Mixer からウィンドウを開くことができ、「Mixer」欄から新規作成することができます。

▲AudioMixerの画面

▲追加したMixerはAssets配下に作成される

エレキベア
DAWソフトとかで見るようなミキサー機能に近いクマね

マイケル
Groups欄からは Masterボリュームの子としてAudioMixerGroupを追加 することができ、例えばBGM用、SE用といった形で追加することができます。
また、各Groupには AddボタンからEffectを追加 することができ、リバーブや歪みといった一般のDAWソフトでみるようなエフェクトをかけることができます。

▲AudioMixerGroupの追加

▲エフェクトの追加

エレキベア
うへ〜〜〜
マジでDAWソフトみたいクマ

マイケル
作成したAudioMixerGroupをAudioSourceに設定することで出力先を指定することができます。
また、Shapshotという機能もあり、編集した値をSnapshotとして保存し、指定して呼び出すこともできます。
こちらも後ほど触ってみようかと思います。

▲AudioSourceにAudioMixerGroupを紐づけることで紐づける

▲編集した値をSnapshotとして保存することができる

エレキベア
大体使い方は分かった気がするクマ〜〜
ボリューム調整画面の実装

マイケル
それでは早速実装していきます。
まずはAudioMixerの機能を使用して、下記のようなボリューム調整画面を作ってみます。


エレキベア
よくある設定画面クマね

マイケル
また今回作るサンプルについては下記にGitHubリポジトリとして上げています。
こちらもよければご参照ください!

エレキベア
前回と同じサンプルプロジェクトクマね
AudioMixerGroupの作成

マイケル
まずはAudioMixerを作成し、BGM用、SE用でそれぞれAudioMixerGroupを追加します。

▲AudioMixerGroupの追加

マイケル
そして各AudioMixerGroup内の Attenuation > Volume を右クリックして「Expose ~~」を選択します。
こうすることで、ボリューム値をスクリプト側から操作できるようになります。

▲Volume値をExposeする

▲3つのVolume値をExposeした状態

エレキベア
これで準備は完了クマね
ボリューム調整画面の実装

マイケル
次に実装の方に移っていきます。
AudioMixerのロード処理について、今回はオーディオファイルと同様にResources配下から読み込むようにしました。
▲AudioMixerの読み込み

マイケル
そしてAudioSourceとの紐付けは下記のようにしました。
用意したAudioMixerとAudioMixerGroupを名前指定で読み込み、AudioSource作成時に設定しています。
▲AudioSourceとの紐付け

マイケル
そしてAudioMixerからExposeしたボリューム値を取得して公開しておきます。
この値をUIと紐づければ実装は完了です。
▲Exposeしたボリューム値の公開

マイケル
UIの実装は下記のようにしました。
Sliderとボリューム値のgetter, setterを紐づけています。
▲ボリューム調整画面の実装
▲ボリューム値との紐付け

マイケル
以上で実装は完了です。
UI側からスライダーを操作すると、AudioMixer側のボリュームも連動して変更されるのが確認できるはずです。

▲AudioMixer側のボリュームも変更される

エレキベア
AudioMixerと紐づけるだけで簡単に調整画面が作れたクマね
BGM、SEへのエフェクト適用

マイケル
次に、BGMとSEに簡単なエフェクトを適用できるよう対応してみます。
今回は通常、リバーブ、歪みの3種類で切り替えれるようにしました。

▲サンプル内のエフェクト切り替え部分

エレキベア
なかなか面白くなってきたクマね
エフェクト用AudioMixer作成と紐付け

マイケル
まず、エフェクトを適用するためのAudioMixerを別途作成します。
今回は
・EffectBgmAudioMixer
・EffectSeAudioMixer
の2つを作成しました。

マイケル
そして作成したエフェクト用のAudioMixerをメインとなるAudioMixerにドラッグすると、下記のように出力させるAudioMixerGroupを選択するウィンドウが出てくるため、それぞれBGM、SEを選択します。

▲エフェクト用のAudioMixerをメインとなるAudioMixerにドラッグする

▲BGM用、SE用で紐付けが完了した状態

エレキベア
これでエフェクト用のAudioMixerに流し込むと最終的にメインのAudioMixerにも流れていくクマね

マイケル
そしてエフェクト用のAudioMixerに
・SFX Reverb (リバーブ)
・Distortion (歪み)
を追加した後、3種類のSnapshotを保存しておきます。

▲エフェクト値を変えたSnapshotを3種類用意

▲Snapshot: Normal (エフェクト無し)

▲Snapshot: Reverb (残響あり)

▲Snapshot: Distortion (歪み)

エレキベア
なるほどクマ
それぞれのSnapshotに切り替えることでエフェクト値を調整するクマね
AudioSouceへの設定

マイケル
作成したエフェクト用のAudioMixerをAudioSourceに紐づけます。
この辺りはAudioMixer読み込み処理に追加する形で実装しました。
▲エフェクト用のAudioMixerとAudioSourceの紐付け

エレキベア
エフェクト用のAudioMixerがあればそちらを設定するようにしているクマね
Snapshotの切り替え処理

マイケル
そしてSnapshotの切り替え処理は下記のように実装します。
名前と合わせてフェード時間も指定することで滑らかに切り替えることができます。
▲Snapshotの切り替え処理

エレキベア
滑らかに切り替えれるのは自然でいいクマね

マイケル
以上でエフェクトが切り替えれるようになっているはずです!

エレキベア
いい感じクマ〜〜〜
おわりに

マイケル
というわけでAudioMixerの活用についてでした!
どうだったかな??

エレキベア
これまであまり触ってなかったクマが、想像以上に高機能で驚いたクマ
スクリプトから柔軟に操作できるのも好印象クマね

マイケル
これで大体UnityAudioの活用はできるようになったけど、
次回は最後にオーディオスペクトラムを実装して終わりたいと思います!
お楽しみに!!

エレキベア
そんなことまで出来るのクマか・・・
楽しみクマ〜〜〜〜
【Unity】第二回 UnityAudioを使いこなす 〜AudioMixer活用編〜 〜完〜

【Unity】第一回 UnityAudioを使いこなす 〜サウンド再生処理編〜
2024-01-22

【Unity】第二回 UnityAudioを使いこなす 〜AudioMixer活用編〜
2024-01-22

【Unity】第三回 UnityAudioを使いこなす 〜オーディオスペクトラム描画編〜
2024-01-22