32-bit Float セッション、音源の理解は非常に難しい。

Learn More
32-bit Float セッション、音源の理解は非常に難しい。

32-bit Float セッション、音源の理解は非常に難しい。 

例えば、32-bit Float のダイナミックレンジの理論値で言えば、いろいろな DAW メーカーが 約1680dB、約1679dB、約1638dB、などと、まず メーカーでも表現が錯綜 し、そのダイナミックレンジが然も DAW 上で扱えるかのような表現をしていますが、これは 32-bit Float で表現が可能な dB 範囲のことです。

そして扱える範囲も、資料によってまちまちですが、簡単に計算で割り出すなら、255*6.02 = 1535 dB です。そこから 144 dB を足して、1679 dB と説明している方もいます。

そもそもダイナミックレンジという表記が理解をややこしくしていて、AES 2008 でプレゼンを行った方の資料によれば 32-bit Float では整数として扱える範囲は 約150.5dB です。また瞬間ダイナミックレンジという言葉を使用しています。詳しくは →https://dsp.stackexchange.com/questions/38832/more-instantaneous-dynamic-range-with-fixed-point-or-floating-point

(※これは SN比 の相対値です。23bit の仮想部と符号ビット、ケチ計算合わせて 25-bit、これに丸め誤差 1-bit を含めて 26-bit で算出した、156dB が SN比 の理論値という資料もあります。どっちが整数ビットとして正しい値なのかよくわかりません。有効ビット数 25.26-bit というのが実際の値に一番近いと過程して話を勧めます。)

確かに、32-bit Float の信号を ±750dB くらいしてもオーバーフローやアンダーフローせず、元の音源を復元できますが、±750dB の信号をマスターチャンネルで 0dBFS 付近の領域まで信号を調整しなくては、音が聞けるというレベルでなく、16**dB のダイナミックレンジと言い張るのは、非常に疑問で実用数値ではありません。

また、32-bit Float の SN比 は、音量を 0dBFS 以上や -150dBFS 以下に動かしても、どこをとっても理論的には 150dB となるため、ダイナミックレンジが 16**dB というのは正しい表記とは言えません。非常に難しい話なので、FFT Example と以下の図を参照してください。

これが唯一の有効ビット数を表す図だと思われます。
非常に 32−bit Float は理解が難しいですが、図に起こすとこのような表現が一番近い。

さっきから SN比 と言っていますが、SN比 = ダイナミックレンジ です。SN比 は 150dB だからダイナミックレンジは 150dB でいいと思います。確かにクリッピングする段階と最小音の段階は 16**dB ほどありますが、たとえ + 500dB の音源があっても、その領域でも SN比 は 150dB 程度になってしまいます。だからダイナミックレンジは 32-bit Float のどこでも 150dB 程度じゃんってなります。これだから 32-bit Float について理解が深まりません。

また、SNR と ダイナミックレンジを間違えて教えている DTM スクールのページもあります。間違えて覚えちゃった人は、今 覚え直しましょう。以下の図は間違いの図です。このように覚えていたら直しましょう。

この図は大きな間違いです。このように覚えている方が多いです。

話を戻しますが、32−bit Float は実際には、どのようにして整数を DA におくっているのか、全然わかりません。おそらく DAW ごとでも違うと思います。ProTools は -146dB 以下の音はマスターフェーダーに出力すらされていませんでした。おそらく 24−bit で表せない音量以下は切り捨てしていると思います。だから ProTools の場合は 32−bit Float でも -144dB 以下の整数は切り捨て、と考えるべきなのでしょうか。

32-bit float の信号を 24-bit DA に出力した時の信号。倍音は量子誤差ノイズ。

Studio One は -192dB の信号でもちゃんとマスターから出力はされていました。Logic はまず、32−bit Float 音源を読み込めないので論外です。Cubase は仕事で使わないので調べていません。

整数の場合は音量を下げれば下げるだけ、精度は低下する。

実際に録音する音は 24−bit 整数なので、144dB 以下は表現できないし、ADC の有効ビット数を考えると、120dB くらいが実用なんですが、例えば、32−bit Float で動作するシンセサイザーの場合、どのように考えればいいのでしょうか?

結局、この場合も 150dB に計算できない雑音、ノイズが溜まると考えて良さそうだ。https://forum.juce.com/t/vst-2-4-double-floats/3985/7

ちなみに、0dBFS 付近では 32−bit Float を 24−bit DAC に送っても量子誤差はほぼ発生しない。32−bit Float を再生中に DAC のスペクトラム測定を行ってみたが、結局誤差が発生しても DAC の分解能ではほぼ無視できるレベルであった。結局、普通に使っている分には本当に何も考えなくて良さそう。

  • 書いた人: Naruki
    レコーディングエンジニア
SNS Share