The dynamic range of 16 bits

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Now Fred almost agrees with me, that we get a squarewave.
However, if I get you right you are alternating between the
input values 0001 and FFFF so we have only two output values,
ie. a square wave, but the amplitude is "2 bits" pp (0001 - FFFF =
0002), ie. 1 bit peak, not 1/2 bit. To get the squarewave with
1/2 bit amplitude it seems we must add an offset to the signal
as SY suggested and as I used in my program that generated
such a squarewave. Well, now, what about larger amplitudes
than 1/2 bit? Do we still get a square wave? No, except for
signals of frequency 1/2 fs. Rather we do get at least three
distinct levels, as in the Stereophile diagram and in Steves
diagram. Well, I may be wrong, but this is my argument. It
is just a proof sketch, for the lack of time and a reasonable
way to write formulas (well, I could scan).

:att'n: Mathematics ahead!!:att'n:

"Theorem": With 16 bits, we can represent sine waves with
real-valued amplitude arbitrarily close to, but not including
the value 20log(2^-16) dB (which is approximately -96 dB).

Proof sketch:
One error that I, at least, have made is to not really bother
about the case where the source has a value not corresponding
to any of the quantization levels. It seemed not necessary,
but of course it is.

Let's suppose our input signal is a sine wave of amplitude A
and with angular frequency w, that is Asin(wt). We restrict
A to be a real number s.t. 0<= A <= 32767. For every sample,
the real-number value of the function must be converted to
an integer in the interval -32767..+32767, which I assume
is most appropriately done by rounding off to the nearest
integer. (Note that we cannot use the value -32768 when
representing symmetric signals with no offset).

Now, let's look at input signals at and just above the amplitude
0.5, and write the amplitude on the form 0.5+x, where x >= 0.
Define this signal as the function f(x), that is

f(x) = (0.5+x)sin(wt) , where x >= 0

and let r(x) be f(x) rounded off to the nearest integer.

Now, consider the case x = 0.5, that is f(x) = f(0.5) = sin(wt),
that is r(0.5) will have the values -1, 0 and +1. In each cycle we
get a sample sequence of the form

0,...,0,1,...,1,0,...,0,-1,...,-1,0,...,0

that is, a signal of the form shown in Stereophile, or in Steves
diagrams. We have one positive pulse of amplitde 1 and one
negative pulse of value one. This is a "two-bit" peak to peak
signal corresponding to a sine at level 20log(2^-15) which is
approximately -90 dB. (I will round off all dB figures, not the
formulas, to enhance readability).

Then consider the case x = 0, which means f(x) = f(0) =
0.5sin(wt). Since the max and min values are 0.5 and -0.5 and
these get rounded off to 0, we get r(0) = 0, that is no signal at
all!!! Since f(0.5) = 2f(0), f(0) must be a sine at level
20log(2^-16) which is approximately -96 dB. So, this proves
that we cannot record down to -96 dB then?? No, not at all.
We have forgotten that the input signal can take on any
real-valued amplitude between 0.5 and 1, i.e. we can have
x values between 0 and 0.5 (and, of course larger too).

Now consider an arbitrary value of x, s.t. 0 < x < 0.5. Obviusly
the function r(x) will be of the alternating-sequence form
shown for f(0.5), but the positive and negative peaks will
be narrower, just as Steve showed in his diagrams. i won't
go into trivial calculus details here, but we note that as the
value of x decreases, the width of the pulses decreases (the
width can be expressed in intervals of angular frequency, in
time intervals or number of samples, though the latter case,
gives us a further quantization in the time domain).

To sum up, for arbitrary x > 0, r(x) will be a signal with one
positive peak of value one and one negative peak of value
one, and the remaining intervals of the cycle have the value
zero. The width of the pulses decreases as x approaches 0,
and the pulses disappear at x = 0. What does this mean?
Well, it seems to me to mean that we can represent the
function f(x) for all real values of x down to but not including 0.
We get the smallest representable sine wave as the limes
of f(x) when x approaches 0, and this corresponds to the
amplitude 20log(2^-16), since it is the amplitude of this limes
sine wave, although a signal
of exactly amplitude 20log(2^-16) cannot be repsented. So
there is a difference between -96 dB and -96 dB :) The conclusion
would be that we can record sine waves with amplitude
down to, but not including -96dB (where 96 is a rounded off
value itself, to simplify).
 
Christer, "offset" is a term that offputs some people. You can equally well call it "asymmetry" (as I've said, people don't normally call a trumpet's waveform "offset"), or "scalar gauge," or a bunch of other things. The imposition of a symmetry requirement about an arbitrarily selected bit would trivially be seen to require three values, i.e., a two bit argument. But that imposition of symmetry was not a qualification of any of the original claims that are being discussed. The claims went to dynamic range (resolution) only.
 
Addendum to previous "theorem"

I should, perhaps comment on one assumption I made in
the "theorem" above.

I assumed that the smallest signal we can represent is the
smallest signal that does not get represented as a sequence
of all zeroes. That is, it is the smallest signal that does not get
completely lost in quantization error. One might argue that
we should, perhaps, have some requirement for reconstruction
also, but I think this is the right way to define it. As I have
said previously, no sine wave can be represented in PCM
and fully reconstructed, no matter what level it has, no matter
what number of bits we use, and I am assuming a theoretical
DAC and a theoretical LP filter. I need hardly say how much
harder it would be in practice. So, if requiring reconstruction,
beyong not being reconstructed as a DC level, we cannot
really have any firm levels and say what the smallest signal
is. We can only do so under some extra condition for the
reconstructed signal (eg. less than a certain amoung of THD
relative to the original signal), a condition that is not, to my
knowledge, included in any PCM standard and thus would
be an added requirement, not present in the original problem
formulation. Adding for instance a THD limit as condition, would
give us not one value for the dynamics, but an infinite number
of values of the dynamics, one for each possible value of
the max THD allowed.
 
SY said:
Christer, "offset" is a term that offputs some people. You can equally well call it "asymmetry" (as I've said, people don't normally call a trumpet's waveform "offset"), or "scalar gauge," or a bunch of other things. The imposition of a symmetry requirement about an arbitrarily selected bit would trivially be seen to require three values, i.e., a two bit argument. But that imposition of symmetry was not a qualification of any of the original claims that are being discussed. The claims went to dynamic range (resolution) only.

Yes, I agree. I didn't mean we should not allow "offsets", I
merely pointed out that it was not necessary to add a 1/2-bit
offset as I did in my program, after your suggestion. We can
get down to the -96dB limit even with signals symmetric
around zero, which my "theorem" says. Not sure what result
we get if taking away that constraint too, but I guess (time
for somebody else to the maths this time :), that with offset
we can get down to the value 20log(2^-16) inclusive, while
with symmetry around zero we can only
come arbitrarily close to it. A distinction that is of no importance
whatsoever to others than us who are amused by theory. In
practice it becomes -96 dB in both cases.
 
Re: Re: One, two, three... three or two, what do we need?

RobM said:


There are 65536 quantization steps, so LSB is 1/65536, or -96.33dB. Any other answer is wrong.

:headbash:

Pedja, assuming my maths is correct above, I would say it is
now clear that you will not get the correct answer from any
program. This would require the program to do the inverse
transformation from digital to analog domain (which is not
even possible for some data, the alternating unit sequence),
which would involve very heavy numerical computations
probably beyond what even a good PC today can do within
the time you are prepared to wait. I am sure the programs
just look at the actual digitalized samples and uses these
values as approximations.
 
Re: Re: One, two, three... three or two, what do we need?

RobM said:
There are 65536 quantization steps, so LSB is 1/65536, or -96.33dB. Any other answer is wrong.

:headbash:

You look rather lonely there, Rob. Care for some company?

An externally hosted image should be here but it was not working when we last tested it.


As they say, two heads are better than one. :) :)

se
 
two heads are better than one and two voltage levels are smaller than three

The the number of possible DAC output voltage levels for the smallest possible output signal.
 

Attachments

  • image3.gif
    image3.gif
    19 KB · Views: 251
"Philosophers have argued for centuries about how many angels can dance on the head of a pin, but materialists have always known it depends on whether they are jitterbugging or dancing cheek to cheek"

"But 'glory' doesn't mean 'a nice knock-down argument,'" Alice objected.
"When I use a word," Humpty Dumpty said, in a rather scornful tone, "it means just what I choose it to mean – neither more nor less."

Today Humpty would write software; hardware engineers have always known the digital word zero doesn’t necessarily represent the analog voltage zero in any real ADC or DAC. But people do find it handy to use 2’s-complement and ignore the ½ lsb offset that comes along with dividing a symmetrical range into 2^^n-1 intervals. In fact “zero” in digital audio is often special cased in software and hardware allowing the distinction between a 0 level signal and “digital black” between valid data blocks.

If you choose to require that the digital code 0 to represent analog 0V and ask what is the smallest symmetric waveform amplitude then you get the 90 dB number that is causing so much consternation here

If you recognize that the most efficient use of your bits results in analog 0 volts being midway between 2 digital codes, the common 96 dB answer is about right for AC and consistent with the DC case where 96 dB is just right (for AC ½ lsb amplitude signal the amplitude of the fundamental of a square wave is ~ 2 dB higher than the square wave amplitude – this difference could be attributed to the correlation of the quantization noise which is causing further confusion and real distortion in the ½ lsb “sine” wave signal)

http://www.soundslogical.com/suppor...documentparts/resamplehelp-28.html#P403_35603

Which is Right? – I vote neither

If you want to move beyond pinheaded angel counting and address practical audible resolution and 16 bit word length issues you quickly discover that digital domain manipulation must be done at high bit resolution and dithering used to create the final 16 bit representation. Using dither and noise shaping, audible resolution in 16/44 CD digital audio can easily exceed 96 dB – with the greater advantages of sub-lsb linearity and decorrelation of quantization noise – only people shipwrecked on desert islands, working with bamboo and coconuts have any excuse to be limited to undithered or 16 bit resolution editing for even 16/44 mastering

(see next page in first link)

http://www.digido.com/ditheressay.html
 
Rob M said:
I also think everyone would agree that one could create a .wav file with only two sample values, giving an amplitude of -96dB with some DC offset. Yes? It's not especially easy to do that with cooledit, but all that tells us is that cooledit doesn't handle DC offsets very well.

Riiiiiight.....

Open Cool Edit. Create a new file, 44.1k, 16bit. Turn off dithering. Create a new wave with 50% DC offset, -6dBFS. Amplify it by -96dB. Zoom in, and you see a nice, but not perfectly symmetric, square wave with amplitude 1/2 LSB with a 1/2LSB DC offset.

I'd post the screengrabs, but it is really far too tedius.

Regards,

Mark Broker
 
mbroker said:
...square wave with amplitude 1/2 LSB with a 1/2LSB DC offset.

You will never, never get signal, offset or anything written as 1/2LSB. I have never tried CoolEdit, but from the screenshots already posted here it is obvious it oversamples – why and how, by default or not, I do not have a clue and it is not important for now, but screenshots showed bigger resolution than those original files had. It is not hard to understand this way it can easily and happily move something up or down for the level that matches to the 16bit’s 1/2LSB. The point is that you’ll never, never save anything of it into the 16 bit file.

I have some wav files considering this… if I do not post it in the next hour it means I went to sleep, but will post them tomorrow.

Pedja
 
address practical audible resolution and 16 bit word length issues you quickly discover that digital domain manipulation must be done at high bit resolution and dithering used to create the final 16 bit representation. Using dither and noise shaping, audible resolution in 16/44 CD digital audio can easily exceed 96 dB – with the greater advantages of sub-lsb linearity and decorrelation of quantization noise

JCX,
Well Said!
Who was that masked man?

There has been a lot of talk here about PCM coding but no specific reference to a standard (AES, ISO, EBU, SMPTE, Sony, Phillips…) that identifies that specific binary values against specific specific voltage levels.

Digression:
[Back in the steam driven days of Digital audio processing I became perhaps a little too familiar withy a DAW built by some bright guys up in Boston. It had a 16 bit I/O but all the mix, DSP and other editing was performed on a 56 bit buss. The DSP had no less than 16 Motorola DSP 5600 chips on two VME cards.]
 

Attachments

  • opus.jpg
    opus.jpg
    41.9 KB · Views: 152
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.