Actually, no quantization error at all.
BUT...here is the problem, which I alluded to early in this thread:
The files are perfect, to the bit. So, there is no dither necessary—strictly speaking to the
values in the files—because there is no quantization error. That's what makes them "perfect"—exact repeating patterns that make perfect sine waves with no quantization error.
Where all this goes off the rails is that, 1) you only have a choice of three frequencies relative to the sample rate—divisors of 3, 4, and 6. So, for the frequencies in the directory of "perfects", the sample rates are selected to obtain the frequencies implied in the naming. That is, non-standard frequencies, so sample rate conversion needs to be performed in order to really get "20 Hz", etc., as indicated—by specifying sample rates of 60, 80, or 100Hz. I don't find those samples rate supported on any converters I own (do you?), so SRC will be used...and there goes "perfect".
And, 2) The samples are normalized in a way that will produces inter-sample overs. So they need to be multiplied by a number less than 1, and since they use all the bits, you'll have to ensure that the result remains symmetrical (rounding towards zero, for instance), or you'll need to dither. This one is not as big of a problem as #1, in practice, because the error is relative. (That is, as long as the error induced by the gain is symmetrical, the peak amplitude might be a little off but the spectrum will still be perfect.)
So, yes, the data in the files are perfect. But you can't play them as expected without sacrificing that perfection.
If anyone needs a little clarity, examples:
4_1_20Hz.wav has the repeating pattern 0x0000, 0x7FFF, 0x0000, 0x8001...in other words, 0, 1, 0, -1, 0, 1, 0, -1 (with each 1 being slightly less than "1.0", but symmetrical. That's the easiest to understand, since it's the zero crossings and positive and negative peaks for a sine. But obviously it will always be one-quarter of the sample rate, because it takes four samples to complete a cycle. So, the sample rate needs to be 80 Hz in order to achieve a 20 Hz tone, as indicated in the file name.
3_1_20Hz.wav is the repeating triplet of 0x0000, 0x7FFF, 0x8001...It looks like the same amplitude, but since one cycles is divided into three samples, 0x7FFF and 0x8001 (±1) aren't at the peaks of the sine, they are down the side a bit. So this will play back well over full output of the DAC (~16% over), and need to be scaled back. The same with 6_1_20Hz.wav. All need SRC if you want to specify and arbitrary frequency.
So, the perfect waves are interesting mathematically, but have limited practical value, except for producing a third, fourth, or sixth of the sample rate in use. Their best use is, for instance, is to give a 24-bit DAC a perfect 24-bit sequence that can generate a perfect, noise-free sine on a perfect DAC. But you only have three choices of frequencies.