So I did a null test to show people what the differences are. For this test I used the Jodi Good song "Where Did We Go Wrong?" that came as a demo with X2, as it's not a specially created file and is one that many people here might be familiar with.
I exported it with X3 using no dither with both the 64 bit double precision engine and the 32 bit engine to 64bit float files that I then nulled in Sound Forge. I then used SF's "statistics" feature to report the peak and RMS levels of the differences.
I decided to do the null test "wrong" once to illustrate how easy it is to screw things up and draw the wrong conclusions if you aren't careful. In this case, I left all of the FX enabled (knowing that at least some of them would create random differences between exports), nulled the files from the 64bit and 32bit engines and got the following results:
32bit vs. 64bit engines with FX causing random differences between exports:
Left Channel Right Channel
Minimum sample value (dB) -26.421 -26.536
Maximum sample value (dB) -26.202 -25.950
RMS level (dB) -48.229 -48.289
Looks pretty bad right? But how much of that was due to the engines and how much was due to random differences that had nothing to do with the engine's bit depth? Well I exported twice using the 64bit engine (the only export option that changed was the file name, so any differences were due to some other difference between the exports) and nulled
those files and got the following results:
64bit vs. 64bit with FX causing random differences between exports:
Left Channel Right Channel
Minimum sample value (dB) -27.302 -25.628
Maximum sample value (dB) -26.343 -26.088
RMS level (dB) -48.292 -48.400
As you can see these numbers, which were produced by randomly differing FX processing in each export, are all within a fraction of dB of the 32 vs. 64bit differences above.
Now let's see what happens when I do it a little more carefully. In this case I disabled track and bus FX on the export page and exported using the 64bit engine twice:
64bit vs. 64bit (no FX):
Left Channel Right Channel
Minimum sample value (dB) -Inf. -Inf.
Maximum sample value (dB) -Inf. -Inf.
RMS level (dB) -Inf. -Inf.
Everything nulls perfectly this time, so now we know that when we compare the 32 and 64bit engine exports, all of the differences will be due to the engines alone:
32bit vs. 64bit (no FX):
Left Channel Right Channel
Minimum sample value (dB) -138.739 -136.175
Maximum sample value (dB) -138.943 -138.192
RMS level (dB) -164.395 -164.148
Now those numbers might already seem ridiculously low and are surely inaudible, but wait, there's more - they are actually overstating the differences because in the real world everything is going to be output at 24bits or less. Let's see what happens when we reduce the bit depth to 24bit:
32bit vs. 64bit (no FX) reduced to 24bits:
Left Channel Right Channel
Minimum sample value (dB) -138.474 -138.474
Maximum sample value (dB) -138.474 -138.474
RMS level (dB) -Inf. -Inf.
The reason the RMS is now -infinity is that so very few of the differences survived truncation to 24bits that the RMS value doesn't even make it into the LSB of 24bit audio!