Here's something interesting... if I use 32-bit with CDP_NOCLIP_FLOATS=1, I can increase the gain above 0 dBFS and then back down, with no clipping, as expected. BUT the resulting file is no longer identical to the original file!
You can see it for yourself in this experiment. If you uncomment lines 57-62 you'll see that the comparison fails. And indeed, running "sndinfo diff" on the original and processed files shows that they differ starting from the very beginning. Finally, if I invert one and mix it with the other, the gain is reduced but they don't null.
So something seems to be off. I'm staying in floating point from start to finish... and while the processed file
sounds identical to the original file, they are
not bit-for-bit identical.
Any ideas as to what's going on? Is it CDP's fault, or mine?