Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: 16 bit vs 24 bit (Read 254068 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

16 bit vs 24 bit

Reply #125
You could have noise with exactly the same character (white, -90dB RMS), which has nothing to do with the original signal. It would be interesting to know if both can be ABXed against the 24-bit original, or if the latter cannot. That would determine whether what you can detect here is any old noise, or a specific type of noise.


Oh I see now, excellent idea! Thanks for explaining. I can try ABX:ing with this shitty setup, but I'd much rather get deeper into the testing when I'm back in my studio with proper gear, where I'll be able to measure the SPL used too.

Martin

16 bit vs 24 bit

Reply #126
Based on that statement, I've come to the conclusion that you're pushing some weird subjectivist agenda.


Uh, is that a scientific conclusion? But seriously, my interest in this is genuine. While working in the studio the audible difference has always been obvious enough on certain material with enough dynamics, it's actually a surprise to me that it's not an accepted scientific fact. The people with good brains and good ears need to be able to talk to each other.

As no one with decent equipment can validate your results


Not 100% true. Please read the GS thread. But as I said, we need more results to either invalidate or validate.

I'm not gonna argue this any more, I'm just out.


OK, bye... But again, I'm not here to argue!!!

Martin

16 bit vs 24 bit

Reply #127
Yes, I begin to see this... I guess I'm more irritable today than I thought at first. Please excuse my skepticism. I've had this argument with so many people that it's not even funny. It's even worse when I'm right and I crush their self-confidence.

Have you tried ABXing this sample with other forms of dither? I see one 5.5% result in the GS thread. That is not particularly statistically significant. If you'll look at this thread before you posted, Pio also perceived this difference. Yet without the appropriate dither, there's still no proof that 16-bit is not sufficient, just that this HPT dither is. Your result for the AVD dither is 8/10, and your results seem noisy like there's no real perceived difference. Personally, given my own preferences, I'd love to see the foobar2000 dither tested.

16 bit vs 24 bit

Reply #128
There are thousands of examples of "obvious" differences that vanish in a double blind test. Thousands of examples of things that "everyone knows" which, when it comes to it, no one can actually prove. Sadly, the audio world is full of them.


Very true. And that's why I got so excited with ABX! But let's not forget all the work that's been done on different dithering and noise shaping methods, and how we've arrived at some that do a great job. Do we really think it's all inaudible at normal listening levels?

Also sadly, many people who claim to hear such things refuse point-blank to do ABX tests.


Shame, personally I firmly believe that anything real can eventually be both heard and measured (or ABX:ed). But not easily in all cases.

As far as I know, you're the first person to ABX 24>16-bit conversion at a low level. That's kind of extraordinary.


You think? Don't think the 24 bit standard is only a result of clever marketing. There must have been a lot of testing at low (or normal) level among people who developed all these converters and software. My ears are probably pretty good because of many ears of training, but not extraordinary.

Martin

16 bit vs 24 bit

Reply #129
Have you tried ABXing this sample with other forms of dither? I see one 5.5% result in the GS thread. If you'll look at this thread before you posted, Pio also perceived this difference. Yet without the appropriate dither, there's still no proof that 16-bit is not sufficient, just that this HPT dither is.


Thanks for staying! I received a file with this "ditherbox avd" dither and the specific difference I heard with HPT was definitely gone. Instead I heard something in the stereo image change between A and B, but it was still an improvement in quality no doubt. Maybe I should test that one again with more trials for a more reliable result?

Martin

16 bit vs 24 bit

Reply #130
Yes. If you truly heard a difference, increasing the number of tests should not pose a huge difficulty, though I acknowledge the crucial role of listener fatigue. The most interesting ABX result to me would be foobar2000's dither algorithm, which is novel and could be superior to these other solutions.

16 bit vs 24 bit

Reply #131
I would sincerily hope that *nobody* would try to do *anything* definitiive with these files. Based on my evaluaton of the 24/96 version...
There are two completely different recordings on that page. I don't think anyone in this thread has shown any interest in the second one.

The first file, a 24/48 file named 24.wav is even worse!

It stands to reason that if you want to hear the benefits of 24 bits, the sample itself has to have some dynamic contrast.

16 bit vs 24 bit

Reply #132
The first file, a 24/48 file named 24.wav is even worse! It stands to reason that if you want to hear the benefits of 24 bits, the sample itself has to have some dynamic contrast.


Thanks for listening, but would you care to explain yourself a bit more in detail? How did you evaluate this recording and in which way did you find it so bad? You are hinting that the sample does not have dynamic contrast, which is a bit surprising considering that the dynamic range was not altered in any way, i.e. no compression or limiting was used.

Martin

16 bit vs 24 bit

Reply #133
I use CoolEdit 2000. This idea that quantization errors occur and thus can’t be nulled out seems logical to me. Where am I going wrong?

I created two files with Generate/Tones presets, one the Chord, the other the Bell. I used the Mix-Paste function to add them together. The peaks go way over 0dB, but since this is in 32 bit float, that should not matter.

Next I Mix-Paste-Inverted one of the originals to the sum file. Then I Mix Paste Inverted the other. Statistics on the results:
    Mono
Min Sample Value:    0
Max Sample Value:    0
Peak Amplitude:        -144.5 dB
Possibly Clipped:    0
DC Offset:        0
Minimum RMS Power:    -167.07 dB
Maximum RMS Power:    -153.7 dB
Average RMS Power:    -158.69 dB
Total RMS Power:        -158.15 dB

Then I recreated both starting with the presets but setting the level sliders at -24dB. This kept the sum far below 0dB. The same processing as above gave
    Mono
Min Sample Value:    0
Max Sample Value:    0
Peak Amplitude:        -162.56 dB
Possibly Clipped:    0
DC Offset:        0
Minimum RMS Power:    -188.58 dB
Maximum RMS Power:    -174.01 dB
Average RMS Power:    -179.1 dB
Total RMS Power:    -178.45 dB

Both remainders were made visible in Spectral View by increasing the range to 200dB. Likewise, both show up on the Frequency Analysis graph. I find it interesting that the Min and Max sample values are all zero. I am not sure what that means, but I think it is simply that the values are less than 1 and these statistics don’t resolve that far down. If I zoom into a peak sample, for instance, and look at its 24 bit range, 0.0625 is displayed.

An inverse mix of either file with only itself does produce digital silence.

16 bit vs 24 bit

Reply #134
I use CoolEdit 2000. This idea that quantization errors occur and thus can’t be nulled out seems logical to me. Where am I going wrong?
Am not sure I understand where you are going with this analysis, and I may be missing the point, so correct me if I am wrong.  However I'll mention that intermediate calculations in digital signal processing software are commonly carried out at a higher precision than the nominal format in use.  Hence, the quantization rounding to 32 bit float may only ocur when saving the final result to disc.  Intermediate steps in the processing may benefit from much more precise quantization. 

In any event, I would have thought that quantization error at the least significant bit of 32 bit float would be inaudible; only the cumulative effect of multiple stages of processing at 32 bit float might possibly be audible.

16 bit vs 24 bit

Reply #135
I think this is all done at 32 bit float. However, the post is in response to David's comment that I errored in my conclusion on this operation. This has nothing to do with audibility, only with whether or not quantization errors prevent a null final result.

16 bit vs 24 bit

Reply #136
Andy,

I think I know what's gone wrong there.

The 32-bit float format in Cool Edit is something like* 1 sign bit, 23 data (mantissa) bits, and 8 exponent bits. That holds 24-bit audio perfectly, since 24-bits can be thought of (or actually can be) 1 sign bit and 23 data bits. 24-bit > 32-bit = lossless.

However, if you take two 24-bit files with values over 50%, and add them, you get a 25-bit result - an overflow.

In 32-bit floating point, this overflow isn't clipped - it's preserved because the exponent simply increases by 1. However, you should have 25-bits of resolution - but you have nowhere to store the least significant bit. So Cool Edit simply throws it away.

That's the re-quantisation you're seeing. It happens when working with 24-bit files in 32-float and exceeding 0dB FS.

It will not happen if you don't exceed 0dB FS. It will not happen if the original files are 16-bit (unless you add enough of them together to generate more than 24-bits).


If that's not what you're seeing, then I don't know what the problem is. CEP certainly works properly - even when you enabled "dither transform results" it doesn't dither non-scaled addition -because it doesn't have to - they're just integers.

Cheers,
David.

P.S. * = the 32-bit float format changed at some point in CEP, and I can't remember exactly which one is in CE2k. There are a lot of different flavours of 32-bit audio! Several are listed in the CE2k help file, but not in enough detail for me to be sure I've interpreted it correctly.

16 bit vs 24 bit

Reply #137
Sorry, I've lost track a bit -- did anyone ever supply 16 vs 24 bit recordings for testing this, that were 'HA approved'?  Or is all this still working off those files supplied on another forum?

16 bit vs 24 bit

Reply #138
The latter.

Would you be happier if I ran the 24-bit file through Cool Edit Pro to generate a 16-bit file and posted the result?


16 bit vs 24 bit

Reply #139
The latter.

Would you be happier if I ran the 24-bit file through Cool Edit Pro to generate a 16-bit file and posted the result?




Couldn't hurt.  What dither will you use?  CE/Audition standard (triangular, no noise shaping, depth = 1?)

But as there is now some question whether the 24 bit file is sufficiently dynamic in the first place, better still might be a
new set of files.

16 bit vs 24 bit

Reply #140
I've done three...

  • No dither at all, no noise shaping
  • 1-bit dither TPDF, no noise shaping
  • 1-bit dither TPDF, 48k noise shaping


...all created using CEP 1.2a. All files 16-bit, from the same 24-bit original. It's not "the best" conversion that's available, but it's what many people use, and supposedly far more than good enough.

They're here::

http://www.mediafire.com/?sharekey=605ee2b...621d66e282a0ee8

If you subtract these files from the original, and perform an FFT analysis averaged over the whole file (using the "SCAN" button), you get this...
[attachment=4884:diff.jpg]
...which is what you'd expect.


I think it's precisely because Martin can ABX it despite it being a "normal" file that it's interesting. (how many audio tracks really use more than 16-bit dynamic range anyway?)

FWIW all the tracks in the tiny collection of 24-bit audio I have are similar - i.e. the noise floor is above that of a correctly dithered 16-bit file.


Aside:

It occurs to me that this can be a misleading way of thinking - it implies that if you have noise at x dB, and some noise at y dB, then as long as y is less than x, then adding signal y to signal x will make no audible difference. This is nonsense! y has to be "much less"* than x for the addition to be inaudible. If it's just "a little bit less", then it's clearly audible - that's basic noise addition. So, if you have a 24-bit recording with noise at the 16-bit level, you can't convert it to 16-bits without adding more noise, which may be audible.

* "much less" isn't trivial to quantify. If the addition raises the noise power across the board and in each spectral band by less than a small fraction of 1dB when added, it's probably "much less", i.e. inaudible. There must be psychoacoustic data available where this has been quantified in listening tests, but I don't have it on my desk.

Cheers,
David.

16 bit vs 24 bit

Reply #141
I think I understand your response, a simple addition shouldn’t overflow, and thus there would be no quantization errors, depending upon the values added.. However, as I stated, the second example of my last post used lower level components. The mixture read
Min Sample Value:    -3835.67
Max Sample Value:    3778.33
Peak Amplitude:    -18.63 dB
Possibly Clipped:    0
DC Offset:    0
Minimum RMS Power:    -35.4 dB
Maximum RMS Power:    -23.83 dB
Average RMS Power:    -28.41 dB
Total RMS Power:    -27.94 dB
which is way below 0dB, yet there was still leftover after invert mixing.

The file format is 32 bit 16.8 float (type 1 - 32 bit), which is, I believe, also  CE2K’s working format.

16 bit vs 24 bit

Reply #142
...there was still leftover after invert mixing.

The file format is 32 bit 16.8 float (type 1 - 32 bit), which is, I believe, also  CE2K’s working format.
This is delving really deep, but there's an explanation even for that. Yes, I can reproduce it here. I can fix it too...

btw, interestingly, the "peak amplitude" values in the analysis window in CEP 1.2a report the correct values, i.e. +/-.00012207, rather than simply 0.


What's happening is that when you generate the artificial signals, you're doing so in 32-bit float = exponent and mantissa. All samples have a 23-bit mantissa, even the low level ones.

So a sample which happens to have a value of about -48dB FS (which, if we were working with integers, would have 8 leading/MSB zeros) still has 23 bits of accuracy - and, if we were working with integers, it would need 8 leading zeros and then another 24 bits - i.e. it's a 32 bit integer.

A sample which happens to have a value of about -96dB FS (which, if we were working with integers, would have 16 leading zeros!) still has 23 bits of accuracy - and, if we were working with integers, it would need 16 leading zeros and then another 24 bits - i.e. it's a 40 bit integer!


When you add these various samples together, all floats, all with different levels of equivalent integer bitdepth, the result is still a 32-bit float. It still only have 23-bits of actual data/resolution. So you're throwing away lots of genuine bits from at least some samples of the original. That's where your quantisation error comes in.


Now, if you take your two signals, your -24dB tone and your -24dB bell, and before you do anything else with them you convert them to 24-bits without dither - and then work with those 24-bit versions (still expressed in 32-bit floats, but now only with the resolution of 24-bit integers - any extra LSBs of the mantissa will have been zeroed) - you'll find that adding them and subtracting them will give samples with a value of exactly 0, and RMS measures displayed as -Inf dB (which is exactly what you get if you generate pure digital silence).

So, with real 24-bit data, 32-bit floating processing works properly, and completely avoids quantisation errors within the top 24-bits.

It's only by starting with artificially generated 32-bit floats (with a maximum resolution which is equivalent 48-bit integers!) that you get rounding errors.

I must be quite sad, because I find all this interesting - mainly because it shows that a lot of thought went into Cool Edit to design it properly.

Cheers,
David.

16 bit vs 24 bit

Reply #143
I think David has cleared up the issue AndyH raised concerning very small discrepancies that can occur when adding and subracting 32-bit float files.  Now, returning to the main subject matter of this thread ...


Everyone (especially Martin!),
the 24 bit original recently discussed can be found in Martin's link.  It is the first file, labelled "24-bit 48KHz source", and it has the filename 24.wav :-
Greetings, found your forum recently, so here's my first post! Wanted to share another set of files that might be useful for listening tests. The source material is a 'raw' unprocessed master recording downsampled from 96kHz. Uploaded the files here:

Digital audio resolution test files


A foobar dithered version can be downloaded using David's link in post #145, just below.  It has the filename 24_16_fb2k_dither.wav

Can ABXs please be done on 24.wav in comparison with 24_16_fb2k_dither.wav ?

If someone does find they can successfully ABX, can they explain how the sound of the dithered version differs from the original 24-bit sound?  If the difference is most noticeable at a particular time interval from the start of the file, can that time interval be quoted?

16 bit vs 24 bit

Reply #144
I didn't include foobar2k before.

I have now - it's much better than Cool Edit at reducing noise in the main audible range...
[attachment=4886:diff2.jpg]
(sorry it's gone off the scale at the bottom - I'm not going to re-do all the others to fix the scale)

Here's the direct download link:
http://www.mediafire.com/file/zaiiuyx4izd/...fb2k_dither.wav

That's the one to try to ABX against 24.wav from Martin.

The "null" file (24.wav minus 24_16_fb2k_dither.wav) is much quieter - though if you boost the volume and listen very loudly (i.e. about 60dB more loudly than normal!) all that high frequency noise is quite painful. This isn't relevant to listening to the actual 24_16_fb2k_dither.wav file itself, since boosting that by 60dB would be more than deafening (it would peak at 140-160dB SPL - pretty much impossible.).

Cheers,
David.

16 bit vs 24 bit

Reply #145
That's the one to try to ABX against 24.wav from Martin.


OK, thanks, will try this in during the weekend sometime. How many trials should I do? Would 25 be enough? Don't want to go through 100 again if this is really difficult...

Martin

16 bit vs 24 bit

Reply #146
Since you need to decide on the number before the test, if you are happy doing 25, that's how many you should do.

Cheers,
David.

16 bit vs 24 bit

Reply #147
Since you need to decide on the number before the test, if you are happy doing 25, that's how many you should do.


Yep, that's why I asked. 25 it is then. BTW, might have another recording of a completely different nature to use for further testing.

Martin

16 bit vs 24 bit

Reply #148
To make a contribution, of sorts, I report that I managed a score of 8/14, using the dither I normally use. Before listening, I converted the 16 bit file back to 24 bit, although I don’t think that my system has any difficulty playing 16 vs 24 bit differently. I had intended to do 15 trials but somehow got confused. I don’t think that invalidates the idea that I do not appear to be able to hear any difference.

This is more a technical point than a practical one, but is it not the case that if I first saved my white noise dither at 24 bit, before using it in the procedure I described (i.e. as David wrote a few post back), I would remove all traces of dither from the 16 bit version, thus completely eliminating any possibility of dither noise itself being responsible for any perceived difference?

16 bit vs 24 bit

Reply #149
The 3kHz tone was chosen to be easy to distinguish the result of dithering vs non-dithering. Non-dithered conversion to 16 bit produces ample distortion, easily viewed and measured. Then, starting over,

(1) Mix same 32 bit audio file with 32 bit white noise file, producing dithered audio.
(2) Convert mixed file to 16 bit, no dithering. Produces non-distorted 16 bit.
(3) Convert back to 32 bit. Nothing below 16 bit but zeros.
(4) Convert white noise file 16 bit, no dithering.
(5) Convert 16 bit white noise back to 32 bit. As always, this leave zeros below 16 bits.
(6) Invert (5) and mix with (3).

The second half of the resulting file, which was originally silence, is again complete silence. The first half of the file, the tone, is now the tone plus quantization noise.

Naturally the second half of the resulting audio file remains as silence, as the white noise was mixed at step 1 with nil, i.e in the absence of a non-zero signal to disturb the white noise.  The conversion of the white noise to 16 bits at step 2 created exactly the same result, as at step 4.  These resuts were subtracted from each other at step 6, yielding zero.

As for the first half of the file, I do not understand the purpose of subtracting low resolution (converted to 16 bit) white noise from a dithered file created using high resolution (32 bit float) white noise.  The result likely to be obtained strikes me as somewhat arbitrary, and not simply 'the tone plus quantization noise'. 

I note that bits in the high resolution dither will interact with bits 17 to 24 of the original (if it were 24 bit integer) audio such that the audio will modulate the random dither, and the result will be rounded to 16 bits (integer).  In contrast, rounding of 32 bit float dither to 16 bit integer without another audio signal present  is a straightforward "unmodulated" conversion.

If the dither were of a maximum amplitude of slightly less than 0.5 bit at 16 bit integer resolution, the converted (to 16 bit integer) value of the dither would at all times be zero; and yet even that low amplitude of dither at original resolution would have an effect when combined with a 32 bit float or 24-bit audio signal destined for rounding to 16 bits integer.  But I do not understand dither at a detailed mathematical level, and perhaps I am missing some key explanation!