はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】「AudioMixerのVolume(dB, -80~0)←→SliderのValue(0~1のfloat)」の相互変換コード

はじめに

AudioMixerVolumeをスライダーを用いて変更したいと思った際、Volume-80~0の範囲でSlider0~1の値と少し厄介でした。

AudioMixer

docs.unity3d.com

それらの変換方法について紹介をしたいと思います。

変換方法

volumeをスライダーの値、dBAudioMixerVolumeだとすると以下の式で表せます。
音の大きさ・dBデシベル・音圧・A特性とは?Excel計算式・距離・合成和 – 私は何から出来ているのか?


 volume = 20 log_{10}{(dB)}
 dB = 10^{\frac{volume}{20}}

これをコードにするとこんな感じ。

public static float ConvertVolume2dB(float volume) => Mathf.Clamp(20f * Mathf.Log10(Mathf.Clamp(volume, 0f, 1f)), -80f, 0f);

public static float ConvertDB2Volume(float db) => Mathf.Clamp(Mathf.Pow(10, Mathf.Clamp(db, -80, 0) / 20f), 0, 1);