John Curl's Blowtorch preamplifier part II

Status
Not open for further replies.
Maybe there is better today. It was and still is a Pacific Microsonics Model 2 A/D D/A converter. Here is Kevin's gear list

They have a reputation for sounding good. I don't know if they are the most accurate today. If the digital sound is wanting, the first thing I would be inclined to do would be to repeat the test with something more mastering engineers are choosing today. See what happens. Also, look at any analog line amps or other equipment in the signal path. In other words, just double check if that is still the best that can be done.
 
Dither first, then truncate. "Dither should be added to any low-amplitude or highly periodic signal before any quantization or re-quantization process..."
Dither - Wikipedia

But, to answer your question, if properly dithered and truncated, or only truncated without dither, starting from clean Hi-Res sources, I have heard it so far and I expect I would again. Don't know why not. Is there some trick I don't know about?

Read again, dither than truncate the LSBs doesn’t make any sense, the result will always be undithered.

The trick is, you don’t have both the 16bit dithered and undithered to compare. But I’m not saying it would be impossible to sort the files, perhaps somebody will pick up, prepare the files and do the test. It would be interesting to see how golden the self appointed golden ears are.
 
Seriously, it's dither then truncate. The way it works is the dither noise randomly pushes up and down a few, maybe one and a half, bits right around the truncation line at the bottom of bit-16. That way, some of the bits below bit 16 modulate the noise, so that the noise has an envelope containing, say some random sampling of bit-17 and in theory some lower bits (there are more and less aggressive amounts of dither noise with different tradeoffs). By that means in theory information isn't lost, it's just hidden in the noise. And people can hear some signal under the noise floor.

On the other hand if you truncate first, all information below bit-16 is permanently lost. Adding noise at that point is useless for most practical purposes, it's just noise, not dither.

As Wikipedia says, add dither before any quantizing or re-quantizing. That's exactly right.
 
Last edited:
Seriously, it's dither then truncate. The way it works is the dither noise randomly pushes up and down a few, maybe one and a half, bits right around the truncation line at the bottom of bit-16. That way, some of the bits below bit 16 modulate the noise, so that the noise has an envelope containing, say some random sampling of bit-17 and in theory some lower bits (there are more and less aggressive amounts of dither noise with different tradeoffs). By that means in theory information isn't lost, it's just hidden in the noise. And people can hear some signal under the noise floor.

On the other hand if you truncate first, all information below bit-16 is permanently lost. Adding noise at that point is useless for most practical purposes, it's just noise, not dither.

As Wikipedia says, add dither before any quantizing or re-quantizing. That's exactly right.

Argh, there’s no sample rate conversion before truncating/dithering in this case, SR always comes first. The correct/logical sequence is normalize, truncate, dither, and don’t quote me Wikipedia, if it’s there it doesn’t mean it’s right.

In fact, at a second thought, from an academic DSP perspective, I don’t believe normalize, dither, truncate would make any difference, since the noise source and the material are anyway uncorrelated. In either case you end up with randomized lower 1.5 bit in the 16 bit output. Random is random, and the fact you are adding 8 random bits to 24 bits and propagate up 1.5 bits is irrelevant. The fact that certain DAW software package have a “dither and truncate” or “dither to 16 bit” function doesn’t mean the processing is in this order.

Actually truncate/dither vs. dither/truncate would be yet another interesting topic for a DBX audibility sorting test. I would place my bet on a big fat NULL result, though.
 
They have a reputation for sounding good. I don't know if they are the most accurate today. If the digital sound is wanting, the first thing I would be inclined to do would be to repeat the test with something more mastering engineers are choosing today. See what happens. Also, look at any analog line amps or other equipment in the signal path. In other words, just double check if that is still the best that can be done.
I can tell you this. On every DAC and ADC I have seen the insides of I look at the analog section and see pretty run of the mill resistors, caps and opamps. I have yet to see things like current sources for class A biasing, fully discrete voltage regulators and shunt regulation.
 
Yes, same thing before or after, see http://emlab.uiuc.edu/jose/Theses/radadia_bs.pdf p.19 and following.

The LUT (look-up table) is in fact a truncating device/method, see the previous chapter.

I understand one could do as you suggest. However, I am not aware of anyone doing it that way with audio because, as the paper you cite says on page 22, "By adding it before the LUT the size to LUT can be decreased without detoriating the resolution of the output..." (spelling and grammatical errors left intact in quote).

For some reason you would like use the option that deteriorates the output resolution. In order to retain maximum resolution, dither needs to applied first.

Also, I'm not sure that the noise is added at the same bit depth number in the case of before verses after. Would have to think about it more or look it up, no time now. Wouldn't be the first typo in that paper, though.

Back to your original question, can I hear dithered verses undithered 16-bit audio? I would say so based on my experience listening when dither is applied before truncation. I have no experience doing it as you suggest, but it would be interesting to try.
 
Last edited:
If dither is done correctly, then truncate-then-dither or dither-then-truncate should result in the same effect. Assuming you had the identical set of "random" numbers, the transform should be identical (given the dither is uncorrelated to the data).

We're not rounding on the the LSB when bit reducing.
 
Seriously, it's dither then truncate. The way it works is the dither noise randomly pushes up and down a few, maybe one and a half, bits right around the truncation line at the bottom of bit-16. That way, some of the bits below bit 16 modulate the noise, so that the noise has an envelope containing, say some random sampling of bit-17 and in theory some lower bits (there are more and less aggressive amounts of dither noise with different tradeoffs). By that means in theory information isn't lost, it's just hidden in the noise. And people can hear some signal under the noise floor.

On the other hand if you truncate first, all information below bit-16 is permanently lost. Adding noise at that point is useless for most practical purposes, it's just noise, not dither.

As Wikipedia says, add dither before any quantizing or re-quantizing. That's exactly right.

Mark, truncate != (re)quantization.
If you dither then truncate you delete the result of the dithering.

Jan
 
The school you seem to oppose are the "This sounds better" crowd. They don't seem to isolate each variable. Quite simply I don't see the point in arguing what sounds better to any given individual.

Quite right. We all have different preferences. Hearing, like our other senses, is affected by vision, touch, smell, what we have learned to hear (the way our personal DSP is tuned, if you like), etc. So, in open comparison we will all hear and respond differently to some extent. That's fine - and a good thing I think - as long as no one claims they are objectively right!
 
Hi Mark, Waly, Daniel, Jan .

With Steinberg Wavelab the sequence that works as intended is: Dither for x bits and then Save as x bit file.
Saving first as x bit file and then dithering, does not provide the same results.
Try it in you software with x =8 . I guarantee you can hear the difference. Please report back

You may have followed the discussion on the dither topic here (files are not at the dropbox anymore. If you really need them, PM me):

What is wrong with op-amps?

What is wrong with op-amps?

What is wrong with op-amps?

What is wrong with op-amps?

John Curl's Blowtorch preamplifier part II

John Curl's Blowtorch preamplifier part II

George
 
Hi Mark, Waly, Daniel, Jan .

With Steinberg Wavelab the sequence that works as intended is: Dither for x bits and then Save as x bit file.
Saving first as x bit file and then dithering, does not provide the same results.
Try it in you software with x =8 . I guarantee you can hear the difference. Please report back

You may have followed the discussion on the dither topic here (files are not at the dropbox anymore. If you really need them, PM me):

What is wrong with op-amps?

What is wrong with op-amps?

What is wrong with op-amps?

What is wrong with op-amps?

John Curl's Blowtorch preamplifier part II

John Curl's Blowtorch preamplifier part II

George

I’m sure in a compare test dithering or not is clearly audible, this was not under the debate. What was under debate is if a subject could sort correctly 24 16 bit truncated files, some with and some without dither. I would not place a bet on this one.

How a particular piece of software processes the dither and truncate is irrelevant, the result should be the same (as an effect, otherwise bitwise it’s always different). I just proposed a DBX test to compare truncating pre- and post- dither, that would be interesting. I would bet for a null result.
 
Hi Mark, Waly, Daniel, Jan .

With Steinberg Wavelab the sequence that works as intended is: Dither for x bits and then Save as x bit file.
Saving first as x bit file and then dithering, does not provide the same results.
Try it in you software with x =8 . I guarantee you can hear the difference. Please report back

You may have followed the discussion on the dither topic here (files are not at the dropbox anymore. If you really need them, PM me):

What is wrong with op-amps?

What is wrong with op-amps?

What is wrong with op-amps?

What is wrong with op-amps?

John Curl's Blowtorch preamplifier part II

John Curl's Blowtorch preamplifier part II

George

Sigh. OK. I have a 24 bit word. I dither that with a 1LSB TPF dither. That means that the last bit, bit 24, value is manipulated. Now I truncate (= throw away) everything above 16 bit.
So where's my dither now?

Jan
 
Jan, Waly, the question George is answering isn't necessarily what the mathematical function *should* be doing (applying dither 1.5 bits above the new bit depth regardless of whether the truncation has/hasn't happened) but what the software is actually doing.

That's to answer the question: "dither then truncate" or "truncate then dither"? The mathematical answer should be "doesn't matter", unless it's using an algorithm that borrows data from the higher resolution to inform it's dither algorithm (and thus not totally de-correlated from the input stream) to perceptual mask the noise shaping. I don't know any dither that does that, though.

If I'm mistaken as to your point, George, my apologies.
 
This makes me wonder if that's something about the implementation of the algorithm here. Does Steinberg also manipulate bits 17-24 in the dither step?

Exactly. Some of the commercial audio dither algorithms are proprietary. Some audio processing programs don't expose their dithered audio unless they do the tuncation first, perhaps to make reverse engineering of their dither algorithm more difficult.

Looking into some non-subtractive dither AES and IEEE articles, it looks like dither prior to quantization is virtually always assumed and even dictated, but often it is in the context of A/D conversion where the exact transfer function of the data converter may result in less total or less objectionable errors if dither is added first, which might be a purely practical consideration, aside from basic theory. Perhaps not something applicable for truncation.

Jan: Truncation is a type of quantizing, as is rounding. When an analog signal is digitized it is effectively truncated from maybe near infinite bit-depth to some very finite bit depth.

Wally: If an audio program used a dither algorithm for truncation as you suggest, then I would agree before or after should give essentially the same result, but differing due to the particular random noise used at the time of processing. So, maybe not bitwise identical.

But, I suspect that's not what they're doing. Perhaps along the lines of Daniel's point about manipulating lower bits. If so, presumably testing has shown it to sound better than conventional dither.


Edit: Steinberg used to use UV22 dither, a proprietary HF scheme. Think it has mostly fallen by the wayside though.
 
Last edited:
Jan, Waly, the question George is answering isn't necessarily what the mathematical function *should* be doing (applying dither 1.5 bits above the new bit depth regardless of whether the truncation has/hasn't happened) but what the software is actually doing.

That's to answer the question: "dither then truncate" or "truncate then dither"? The mathematical answer should be "doesn't matter", unless it's using an algorithm that borrows data from the higher resolution to inform it's dither algorithm (and thus not totally de-correlated from the input stream) to perceptual mask the noise shaping. I don't know any dither that does that, though.

If I'm mistaken as to your point, George, my apologies.

The dither before is generating 8bit of random data, adding these 8bit to the 24bit of music (and let the addition result propagate to the upper 1.5 bits), then truncate to 16 bit by deleting the 8bit LSBs.

For a fair comparison, a possible algorithm for pre/after dither would be:

- For each 24bit music word,
- Generate 8bit of random data (true random seed, by collecting some computer entropy)
- Use them to dither the 8bit LSBs of the current music word, then truncate the 24bit word to 16bit and save it in the new 16bit pre-dither music file.
- Bitwise XOR the 8bit random data. The resulting bit will a be random 0/1, since the result depends on the odd/even number of 0/1 in the 8bit random data, which is a random variable for any 8bit random data.
- Truncate the 24bit music word to 16bit. Add the random bit above to the new 16bit music word and save it the new 16bit post-dithered music file.
- Repeat for all 24bit music words.

Of course files won't be bitwise identical, but I'm ready to place a bet that the two 16bit music files above will be indistinguishable in any conceivable listening DBX.
 
Last edited:
The dither before is generating 8bit of random data, adding these 8bit to the 24bit of music (and let the addition result propagate to the upper 1.5 bits), then truncate to 16 bit by deleting the 8bit LSBs.

For a fair comparison, a possible algorithm for pre/after dither would be:

- For each 24bit music word,
- Generate 8bit of random data (true random seed, by collecting some computer entropy)

The most basic "correct" dither would be TPDF, add two random numbers at the right scale that turns the 16 bit staircase of an ideal quantizer into a straight line. Separating say a -60db sine from the dither afterwards yields a white noise floor and a perfect sine. There is nothing to distinguish, you can do it all day long and they're all the same. There are a large number of very good non-proprietary dither algorithms, I posted the white paper on several here before.

A question might turn up if the original 24bit data came from a pathologically bad A/D?
 
Last edited:
Jan, Waly, the question George is answering isn't necessarily what the mathematical function *should* be doing
but what the software is actually doing.
That's to answer the question: "dither then truncate" or "truncate then dither
If I'm mistaken as to your point, George, my apologies.

Thank you Daniel.
This is exactly what my post was about.
What a specific software (Steinberg Wavelab) is doing.
Nothing more nothing less.🙂

Does Steinberg also manipulate bits 17-24 in the dither step?

I don’t know. If you can suggest a way to test it, I will do it.

Edit: Steinberg used to use UV22 dither, a proprietary HF scheme. Think it has mostly fallen by the wayside though.

It is available but I haven’t used UV22 dither.
I have used internal dither which allows to select No Noise (?), Noise Type 1 (RPDF noise), Noise Type 2 (TPDF noise)

George
 
Glad I didn't misrepresent you, George.

The easiest analysis would be to play with the spectrums (feel free to use a single tone) of:
1. a 24 bit dithered and truncated to 16 bit, per Steinberg's instruction
2. a 24 bit truncated to 16-bit effective by zero-filling the 8 LSB's, then dither/truncation.
3. a 24-bit truncated to 16-bit, then dithered.

Obviously each sample is going to have it's own randomized distribution so a bitwise compare will be different, but a pure tone and a 5s track *should* have enough sample to see the distribution function.

That's a lot of work to ask of you though. The moral of the story for me is to RTFM of the software one is choosing to use. 🙂
 
Status
Not open for further replies.