32 bit float vs 32 bit

Discuss music production with Ableton Live.
Post Reply
whitemagic
Posts: 11
Joined: Mon Jul 11, 2022 8:40 am

32 bit float vs 32 bit

Post by whitemagic » Wed Oct 05, 2022 8:48 am

Hi all,

When I render a wav file at 96khz 32 bit, then go to foobar and cover to flac (using latest flac 1.4.1 that supports 32 bit integer not float), it says that flac does not support float and the conversion will not be lossless, do you want to continue....

So does this mean that Ableton outputs as 32 bit float by default? (rather than 32 bit integer)?

Also, is sound quality any better or worse with float vs integer?

Thank you for any info.

ark
Posts: 1382
Joined: Thu Feb 26, 2009 4:25 pm
Location: New Jersey, USA
Contact:

Re: 32 bit float vs 32 bit

Post by ark » Wed Oct 05, 2022 4:27 pm

Each bit in a binary integer represents a factor of 2, which equates to 6dB. So, for example, CD audio, which uses 16-bit samples, has a dynamic range of 16 x 6, or 96dB.

However, this 96dB is relative to an absolute noise floor, which might cause problems in mixing. Suppose, for example, that you have a signal at -40dB. Then that signal cannot have a dynamic range greater than 56dB; and if that's the only thing playing, and you want to bring the level up to where people can hear it, that noise floor might creep in.

By using floating-point, you essentially allow the noise floor to drift to accommodate the signal level. For example, a 32-bit floating point number will typically have 24 fraction bits and 8 exponent bits (technically, it has only 23 fraction bits; but the 24th arises from the fact that in floating-point numbers, the leading bit is always 1 (unless the number is 0) so it doesn't need to be stored. 24 fraction bits gives you a dynamic range of 144 dB relative to a noise floor that itself can shift by up to 1536 dB. In contrast, 32 bit integer gives you a dynamic range of 192 dB over a fixed noise floor. So either of these has plenty of dynamic range for all practical purposes.

What floating-point arithmetic does for you is to eliminate the need for gain staging. If you have one channel that is running at +20 dB and another that is running at -40dB, and then you adjust their relative levels to where you want them for mixing purposes, you don't have to worry about the noise floor of that -40dB channel creeping up to where you need to care about it.

So yes, the conversion from 32-bit integer to 32-bit float will not be lossless. But in the worse case--if your integer signal had perfect gain scaling--you'd be cutting a 192dB dynamic range down to 144dB. That dynamic range is still greater than the difference between the quietest sound you can hear and a sound so loud as to permanently damage your hearing instantly. So I don't think you need to worry about the conversion.

Post Reply