あらすじ
大抵の音声再生ライブラリは音量を音圧で指定するが、音の単位には音圧レベルってのもあるけど、どっち基準がいいのだろうか・・・
内容的にはトリビア的な物でそんなに製作活動に参考にはならないかもしれませんがご理解ください。
音の感じ方
音の単位には、「音圧を表すPa」と「音圧レベルを表すDB」が存在します。
人間が聞ける音の大きさの範囲は20μPa〜20Paぐらい、最小と最大で音の大きさは100万倍!
音の強さは音圧が倍になると4倍になるので、最小と最大の音の強さは1兆倍!
こういう風に桁数が多いと音の強さが何倍になったかとかを表現するのが分かりにくいので「dB SPL」が使われています。
db splは基準である、20uPaの音に対して音の強さが10の何乗であるかで表します
20uPaの音なら0[db SPL]、20Paの音は130[db SPL]となります
音圧指定の音声ライブラリで素直に実装した場合
音量50%と音量100%で音圧は2倍差になるので、音の強さは4倍になります。
これは約+12[db]程変化する事になります
音量50%を音量1%にすると音圧は1/50なので、音の強さは1/2500になります。
これは約-68[db]程変化する事になります
デシベルでの変化は5倍以上差が出るんだ!
音の強さが変化するエンジンで素直に実装した場合
音の強さが50→100で2倍なので、約6[db]変化
音の強さが50→1で1/50なので、約-34[db]変化
という感じ
つまりどっちにしても音を大きくする方がdbの変化の範囲が小さい
なので音を小さくするのに比べて音を大きくする方は調整範囲が狭いけど微調整が効くって事になりやすいはず
最大音量と最低音量で初期音量からのDBの変化量を同じにするには?
せっかくなのでDBの変化量で調整して、大きくする方と小さくする方で調整範囲を同じにしてみましょう?
50%の音量を1として、100%をxのn乗倍、xのn乗分の1になるようにすれば、同じになりますね!
例えば0~256の範囲で音量指定するライブラリだと、最低音量が1、最大音量が256、初期音量を16にすれば良いと言う事になります
音の強さは256倍変化するので、上下に約48デシベルの設定範囲になる
一目盛り動かした時のdb変化量を一定にするには?
音量をnの目盛り乗にすると1目盛りあたりのDB変化量が一定になります。
例えば0~256の範囲で音量指定するライブラリだと、1~9の範囲設定で、最小は2の0乗で1、5で2の4乗の16、最大の9で2の8乗で256にする
個人的な感想
これまでは音量設定値に比例した音量にしてたのを、一個上の段落の方法で実装してみました
前は目盛りを変化させても音の変化が分かりにくい範囲があったけど、どこで目盛りを上げ下げしても音量の変化が常にあるので良くなったような印象
(この感想には、個人差があります)
(Webで確認出来るサンプルアプリ等は用意していない)
まとめ
DB基準とPa基準の音量設定どっちが良いのかは結局良く分かりませんでした、どっちが良いんでしょうね。
統計的に優位なアンケートを取れたらデータ下さい。
そもそも音量設定に求められるのは?
・最大でも音が小さすぎない
・最小でも音が大きすぎない
・初期音量設定がうるさすぎて不快にならない
・初期音量が小さすぎて音がなっている事に気づかれない事が無い
の4点だと思います
・初期設定音量が最大or最小になっていて、音を大きくする or 小さくする事が出来ない
・他のソフトの初期設定音量と比較して極端に音が大きかったり小さい(特に大きい方は良くない)
・目盛り数が少なすぎて微調整が効かない、マスターボリューム × BGM or SEボリュームが望ましい。
みたいなわりと見かけるので、その辺りを改善すれば十分なんじゃないかな
音量設定なんかに拘るより別の所に力を入れた方が良いな?
参考にしました
https://info.shimamura.co.jp/digital/knowledge/2014/03/21161