LoginSignup
4

More than 3 years have passed since last update.

posted at

updated at

UnityのAudioMixerでダッキング再生とかあれこれ

AudioMixerの音量の設定とか

まぁここ見て、その通りにやればいいよ。
http://tsubakit1.hateblo.jp/entry/2015/05/23/234053

ただAudioMixerの音量はデジベル(-80~0)なので注意。
AudioSource.volumeの0f~1fの感覚でやるとダメだぞ。
0.5f = -40dB とか思ってやると、全然音が50%より小さくなるぞ。

※あと20dBとか設定できて、音量上げれると思うが、
 ただ音割れするだけだからやめたほうがいい

詳しいことはググれ。
結果だけ載せる。

デジベル(dB)変換の式は、
dB = 20.0 × log10(i0/i1) ※「i0/i1」は割合
なので、C#で書くと、
20 * Mathf.Log10(volume);
すりゃええねん。

volumeにはスライダーの値とか(0f~1f)を送ればいい。
丁寧に値のバリデートするなら以下のように。

public void SetBgmVolume(float _volume)
{
    float volume = Mathf.Clamp(_volume, 0.0001f, 1.0f);
    var volumeDB = (float) (20.0d * Math.Log10(volume));
    audioMixer.SetFloat("BGMVol", Mathf.Clamp(volumeDB, -80.0f, 0.0f));
}

AudioMixerのダッキング再生の方法とか

そもそもダッキング再生ってなんぞや?

例えば、キャラクターがセリフをしゃべっている時に、
BGMがそのまま鳴っているとセリフが聞こえにくいから、BGMの音量さげる的な奴のこと。

そんなん、自分で好きに音量設定したらええやろ、って思うが。

まぁここ見て、その通りにやればいいよ。
http://kikikiroku.session.jp/unity5-basic-audio/#Voice

ただこの方法だと、
ボイスが再生されているときは、必ずBGMの音量が下がってしまう。

「戦闘中のボイスではBGN下げたくないんだよねぇ」

とか無能プランナーが言ってくるのはざらなので、
その場合は、ダッキングさせないボイスの別グループを作るか、SEで鳴らすとかで。

さて本題

音量設定しつつ、その音量設定の元、ダッキング再生する方法

http://kikikiroku.session.jp/unity5-basic-audio/#Voice
ここの設定では固定値で-40dB
ダッキングでBGM音量を下げるようになっているので、
その固定値で音量が下がってしまう。

「音量設定した音量の50%の音量でダッキング再生してくれ」

とか無能プランナーが言ってくるのはざらなので、
ダッキングの音量をスクリプトで設定できるようにしておく。

やり方は簡単。

ボリューム設定の時と同じ感じで、
InspectorビューでBGMのDuck VolumeのThresholdを右クリックし、
Export ’Threshold (of BGM→Duck Volume)’ to scriptを選択。

Test.png

Exposed Parametersで、「DuckVol」とか好きな名前に変更。

あとは、BGMの音量設定を変更するときなどに、
一緒に(スライダーの値を送って)設定してあげればいい。

public void SetDuckVolume(_volumeRate)
{
    float DuckVolumeRate = 0.5f // どっかに定数定義してもいい
    float duckVolume = Mathf.Clamp(_volumeRate * DuckVolumeRate , 0.0001f, 1.0f);
    var duckVolumeDB = (float)(20.0d * Math.Log10(duckVolume));

    audioMixer.SetFloat("DuckVol", duckVolumeDB);
}

サウンドの実装であれこれ困った場合

Unityのサウンド周りは、
Unity5で特大のクソからクソになっただけ少しはマシになったが、
必要な最低限な機能しかないので、
だいたいCRIの『ADX2』を導入すれば解決してくれるよ。
https://game.criware.jp/products/adx2-smartphone/

ただUnityのポンコツAssetBundleとの相性は最悪だけど。

Unityのサウンドが最低限のクソみたいな機能しかないのは、
こういうミドルウェアに配慮という名の手抜きなんじゃないかな。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4