Bee Jay wrote:
But presumably, as, eg the L2 is converting the stream to a 16-bit, possibly fixed point, we end up with numbers that are much lower down, still representing out 16-bit audio, but still being inside a 32f number representation? And if we are still in 32f, doesn't Logic again have to downconvert in a bounce?
I'm no expert, either. I have studied the underlying math a bit, but I don't know the details of Logic's AU implementation, so my opinions are marginally useless 🙂
Here's what we know for sure: L2 (or whatever plug-in being using for dither) is adding 16-bit (in this case) dither to a 32f representation of the audio. The plug-in may or may not be zeroing out all the less significant bits, and it hopefully doesn't matter either way, because the point is for the host to truncate the result ASAP, throwing away those lower bits anyway. Presumably, the plug-in is smart enough to apply the fixed-point dither in a reasonable way to the floating-point data it's receiving.
It seems like a fair assumption to me then that the ultimate output of our dither plug-in will be a 32f stream where the 16 most significant bits are exactly what we want: dithered audio ready to be truncated to a fixed 16-bit format.
At this point, the question is whether the audio can make it through the bounce process without being altered.
Since Logic's bounce feature allows you to turn the dither on or off, I'm hoping that means you get absolutely
no dither when it's off. The possible confusion is since Logic doesn't allow bouncing to 32f, no matter what output type you choose, you
should dither in all cases (even if bouncing to a 24-bit file... in that case you'd want to apply 24-bit dither to the 32f stream). Hopefully, with Logic's dithering turned on, Logic applies the correct amount of dither based on the output file wordlength. And with dithering turned off, Logic applies
no dithering at all, not even 24-bit dithering, the idea being that although you do need the dither, Logic allows you to turn off its internal dither so you can use your own.
As long as Logic adds no dither, the 16-bit result from our dither plug-in should remain intact. The potential problem case would be if the dithering plug-in failed to zero out the LSBs, and Logic applied 24-bit dither on top of that output... that could conceivably affect our desired 16-bit output.
Be great if anyone knows enough about the internal workings of Logic to confirm all of this. For what it's worth, the iZotope dithering manual has instructions for use with Logic, and it simply says to put the plug-in on the output fader, and do a normal bounce with dithering turned off.
Given this, from a DSP standpoint, is that down conversion something that will leave that 16-bit alone, or does it need to be dithered again?
Again, not sure, but I don't see any reason the conversion from 32f to 16-bit fixed should mess with the 16 LSBs, unless Logic is forcing additional dither, which would seem at odds with the apparent "off" switch on its dither. But I'm not certain, and I haven't tried to test this...
No, not at all. Remember, a DAW is not the only environment for plugins. A wave editor environment working on audio files is a very different environment to a DAW implementation and doesn't have quite the same issues - as you are mostly destructively processing a file at the native number representation of the file, DSP headroom aside.
Another interesting wrinkle... I'm not sure this is the way wave editors work. I thought most DSP was done in floating-point (even in a destructive wave editor--do Audio Units even have the ability to accept multiple data types ?) I've always assumed the input and output of AUs was always 32f, so it was the host's responsibility to convert the data to and from that type if necessary, and if the AU used another representation internally, it performed any necessary conversion and dithering automatically (e.g. a "double-precision" plug-in would need to zero-extend the input, and dither and truncate the output).
Can somebody PM Justin C? He's a good guy to come in on this - he always helps clear up mathmatical confusion... Justin!!!
Great idea... the virtual beer is on me (possibly literally...)!
-James