+ログ

あなたにおすすめのガジェットが見つかるブログメディア

+ログ

【Unity5】AudioMixerを導入してみる

AudioMixerを導入してみる

Unity5ではAudioMixerという機能が追加されました。
音源に応じて複数のSEが鳴ったときのNormalizeや、Voice再生時にBGMをダッキングするなど、色々な機能を提供しています。

過去に開発したゲームに導入してみて検証した時のメモです。

f:id:korekai:20170111130447g:plain
EditInPlayモードでプレイ中にAudioMixerを編集できるのが便利です。

AudioMixerの概要

Unity のオーディオミキサー(Audio Mixer)では、いろいろな音源をミックスしたり、それにエフェクトをかけたり、マスタリングを行ったりすることができます。

Unity5から追加された機能です。この機能で複数のAudioSourceのボリュームを一括制御/Offにしたり、オーディオグループにエフェクトを付与するといった事が可能になりました。

Unity - マニュアル: Audio Mixer

Audioコンポーネントについて

基本的なオーディオ関係のコンポーネントは4つあります。

  • AudioClip → 音データ
  • AudioSource → スピーカー
  • AudioListener → 耳 (シーン内に1つのみ。通常はCameraに付いている。)
  • AudioMixer → 音の調整

早速AudioMixerを作りましょう

Window->AudioMixer

f:id:korekai:20170111130925p:plain
Mixersの+をクリックして新規で作ります。

f:id:korekai:20170111130954p:plain
ゲームを想定してBgm、SE、Voiceの3つのグループを作成します。Groupsの+をクリックして追加します。ここではMasterの子にしておきます。

f:id:korekai:20170111135218p:plain
SoundManager等を用意してInspectorへMixerとGroupをアタッチします。

public class SoundManager : SingletonMonoBehaviour <SoundManager> {

	public AudioMixer Mixer;
	public AudioMixerGroup MixerBgmGroup;
	public AudioMixerGroup MixerSeGroup;
	public AudioMixerGroup MixerVoiceGroup;

        //**省略**//

}

まだSoundManager等を作られてない方は以下を参考にしてください。
Unity オレオレサウンドマネージャー · GitHub

先ほどアタッチしたAudioMixerGroupを各AudioSourceに設定します。これでソースコードの追加は以上です。

void Awake()
 {

  //**省略**//

  audioSourceBGMs.ForEach(asb => asb.outputAudioMixerGroup = MixerBgmGroup);
  audioSourceSEs.ForEach(ass => ass.outputAudioMixerGroup = MixerSeGroup);
  audioSourceVoices.ForEach(asv => asv.outputAudioMixerGroup = MixerVoiceGroup);
}

Unity オレオレサウンドマネージャー · GitHub

docs.unity3d.com

※今回は検証用ということで参考にされる場合、ソースコードは各自でお直しください。

Voiceグループはダッキング再生を行う

ダッキングはSEやセリフの音が鳴るときにBGMを自動的に下げるというようなものです。

f:id:korekai:20170111131651p:plain
Bgmグループに「Duck Volume」を追加します。

f:id:korekai:20170111131719p:plain
Voiceグループに「Send」を追加します。

f:id:korekai:20170111131800p:plain
Receiveを「Bgm/Duck Volume」を選択した後、Send Levelを-80dB(無音にいして送信)から0dB(音量そのまま送信)へ変更します。

f:id:korekai:20170111131822p:plain
Duck Volumeエフェクトのパラメーターを調整しましょう。Thresholdを-40.00dBに変更します。今回だとBGMとVoiceが同時再生されている時にThresholdの閾値を超えている間BGMが小さくなるという仕組みです。SEにも適用しています。

いろいろ設定してみた結果

f:id:korekai:20170111133718p:plain

AudioMixerは今日初めて触ったので間違っているかもしれませんが、いい感じで動いてます。ここまで30分程度で導入できました。

Voice再生時にBGMが小さくなってそれっぽくなってこんな簡単にできるんだなと思いました。

SEグループにNormalizeを設定したらSEのvolumeが大きくなったのでmixerで下げ調節しているのと、自分のゲームではVoiceがそれぞれ音量に差があったり、台詞の都合上で音量に波がある言い方あったりとかでダッキングが少し変になったりしているので少しmixerで上げ調整しています。

それぞれのゲームによって調整は変わってくると思うので少しでも参考になればと思います。何かご指摘があれば言ってください。修正させていただきます。