Signal generator distorting in 16-bit

Signal generated in 16 bits has harmonic distortion.
In purple is the sine generated using the configuration in the picture, in 16 bits. In blue is a reference sine generated by changing the generator to 32-bit float and then reducing to 16 bits using Lin (dither type none).

WaveLab 11 on Windows 10.

16 bit has 96dB dynamic range, so the artefacts are below -100dB
what is your point here?

No suchs artifacts in the reference 16-bit signal. They result from the design of the 16-bit generator, don’t they?

Out of curiosity, what is the WaveLab bit-depth meter showing when this occurs?

The bitmeter shows the same 16 bits and a couple bits of headroom at the top whether playing back the 16-bit output or fp32 output through Lin.

Correct remark

What reference? Also a 16 bit file?

The blue spectrum is a 16-bit file made using the signal generator at fp32 and reducing it to 16 bits, no dither. THD is at -130dB.
The purple spectrum in the background is a 16-bit file straight from the generator. THD is at -92dB.

I’d guess the signal is quantized to 16-bit by lopping off bits from a higher bit-depth instead of doing proper numerical rounding.

Truncating fp32 to 16 bits gives similar nonideal results.

How did you do that?

The bit reduction is done with LIN Pro in the Master Section when rendering out. I believe this is rounding without dither. Other WaveLab conversion methods appear to produce truncated results.

If you activate it. WaveLab never performs any kind of dithering anywhere unless you explicitly activate it.

To be clear, there’s never dither per se. This configuration is not adding dither noise, just reducing the bit-depth to 16 bits using LIN’s math. LIN is necessary because otherwise WaveLab 11 is introducing the very same type of error in its rendering / batch conversion of high precision sources to a 16-bit format. (Not knowing better at the moment, I’ll just guess it’s a rounding error from ignoring the last half a bit of precision that comes from numerical rounding as opposed to truncation.)

This gets you the reference for what I’d want to see from the signal generator in 16-bit.