1

I have recently learned that all(at least the ones I use) DAWs and VSTs essentially convert audio to 32-bit float in realtime. The problem with this is that going from a fixed point to a floating point causes quantization error and thus noise in the same way as going from 24 bit to 16 bit does. This means that ideally I'd want to dither but I imagine that doesn't happen along with the conversion.

So is there any reason (besides hard drive space) to not offline convert my files to 32bit floating point with dither using a converter?

1 Answer 1

1

There's two cases to be considered:

  • You use ordinary 24-bit, or even 16-bit (integer) source files. Never mind quantisation here, it doesn't happen because 32-bit floats use a 24-bit significand, i.e. this is lossless without dither.
  • You use 32-bit or 48-bit integer, 64-bit float, or DSD source files. In this case there will indeed be quantisation when going to 32-bit. But unlike with 24-to-16 integer conversion, the quantisation-noise has no absolute level, but scales with the signal. Now, even for the pretty lousy 16 bits without dithering, the quantisation noise is pretty hard to discern for a full-scale signal and only becomes obvious in quieter passages. With 32-bit float, the situation is basically that you always have a perfectly gain-normalised 24-bit signal, even in passages of silence. Perhaps you could come up with contrived signals that would expose audible quantisation in 32-bit float, but it would probably need generous amounts of infrasound / DC bias. I suspect nobody is actually able to hear the quantisation artifacts from converting a real-world audio file, say, 48-bit integer, to 32-bit float.

That said, even if you remain doubtful it gets less relevant as DAWs proceed to switch to all-64-bit float. That uses a 53-bit significand, so quantisation noise is always 318 dB below the signal level. Nobody can seriously claim to be able to hear that!


To answer the question: no, you shouldn't offline convert to 32-bit float, it just wastes hard drive space and -performance. (It saves a little bit in conversion, but without dither that's a single-cycle CPU instruction and even with simple dither – no noise-shaping – it's not really an issue.)

6
  • Well I've heard otherwise on your first point. Floating point doesn't accurately depict numbers. Regardless, would you say I shouldn't bother dithering then when going from 32 bit back down to 24bit? I typically export out of my DAW and import back into RX3 (which upconverts to 32 bit regardless) so I generally export 32bit regardless of my file types.
    – Andrei
    Jul 29, 2014 at 0:42
  • 1
    @andrei - Single-precision FP (32 bit IEEE) uses a 24-bit mantissa (23 actual, 1 implied). So it can exactly represent every 24-bit integer. Beyond that, there's a tradeoff between precision and range.
    – Jim Mack
    Jul 29, 2014 at 2:21
  • Well I've been reading that VSTs use a range of 0 to 1 for the audio and floating point can't accurately represent 1, so I don't see how it's possible to say that it's represented 100% accuretely.
    – Andrei
    Jul 29, 2014 at 3:57
  • 1
    Simply put, 32 bit float is exactly 24 bits plus overhead. The overhead can't be heard, but it can be used for processing. It's very simple really, an overdriven signal in 24 bit will sound exactly one-to-one with the exact same signal in 32 bit float, except the float might have an option to pull down the signal below clip using for example a compressor. For this to work at all, the signal must be recorded in 32 float to begin with, a format I've never seen in an A/D anyway, meaning having files in 32 bit is a waste of space and nothing else. Internally in a DAW it's extremely useful though. Jul 29, 2014 at 7:39
  • 1
    @Andrei: "floating point can't accurately represent 1" is utter nonsense: the number one can be represented exactly in any floating-point system (in 32-bit it's 0-01111111-00000000000000000000000). As it were, integer formats can't represent the corresponding value (24-bit ranges from -1 to 1 – 2⁻²³). Again, a float with 24-bit mantissa can exactly represent any 24-bit integer, it just can also do a lot of other numbers. If you've read otherwise somewhere, they were writing nonsense. Jul 29, 2014 at 9:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.