Skip to main content

Topic: Is it possible to stretch 16 bits symmetrically? (Read 25330 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • giro1991
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #100
Yes. It appears I got alot of terms and methods confused getting here I wholeheartedly accept full responsibility for that.

for example
I've been condoning noise shaping the entire thread, I will be using it. It must be used.


haha, I was so sure 

Sorry.

Seems to me it's simple:

You have a signal. You dither appropriately and then quantize it.

You now have a quantized signal, which consists of your original signal, dither and quantization error.

I missed this one...

so yeah, back on track, does 32bit dither exist, would make sense if to minimise error.
I found one herelink but it does not appear to be a valid VST that works in foobar. (last edited seven years ago what on earth guys)
Though the source code is in that file I'm sure
  • Last Edit: 24 April, 2014, 01:37:53 PM by giro1991

  • pdq
  • [*][*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #101
At 32 bits, and also at 24 bits, processing will produce roundoff errors. This is acceptable because it is below the level of audibility. You should never need to add dither at anything more than 16 bits, and even at 16 bits it is debatable whether dither is actually necessary.

Whenever possible, do all of your processing at 24 bits or more, and only when you must reduce to 16 bits for distribution, such as on a CD, do you add dither,

Edit: typo
  • Last Edit: 24 April, 2014, 02:30:52 PM by pdq

  • saratoga
  • [*][*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #102
I'm very curious as to the nature of this mysterious "ultrasonic content."

giro, have you gotten your setup to work with 16-bit / 48kHz without any of the additional tinkering?

Not yet still experimenting ...

However, if you convert 16-bits to 24-bits, you still have the noise floor of the original 16-bit recording. The noise floor hasn't dropped at all, because you haven't removed any noise. It's the same signal.

Yes, but noise floor is not what bothers me. What I'm gettin at is the increase in depth helps at the interpolation stage...


Aside from noise, what other concerns would you have?

Just like computer games graphics (and I mean smooth), just like image editing...


What about them?  This is a thread about audio. 

And refering to the 28bit dsp. 28bits is ALOT considering were talking 1984 here.


Not really.  That is a fixed point filter.  The precision there refers to how accurately the filter tap output is computed, which is only distantly related to what you are wondering about.  28 and 36 bits were common register sizes.  Using less is probably not possible without having an unacceptable error in the filter.  If you want to know how rounding error in fitlers works, I suggest a textbook.  This is a well studied, if incredibly boring topic.

Edit:  missed a word in that last paragraph.
  • Last Edit: 24 April, 2014, 02:28:15 PM by saratoga

  • xnor
  • [*][*][*][*][*]
  • Developer
Is it possible to stretch 16 bits symmetrically?
Reply #103
You should never need to add dither at anything less than 16 bits

Typo?
"I hear it when I see it."

  • pdq
  • [*][*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #104
You should never need to add dither at anything less than 16 bits

Typo?

Corrected, thanks.

  • drewfx
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #105
See this picture, it was 28 for a reason, because the dac the very first dac from philips was a 14bitter, initially CD spec was going to be 14bit, but sony changed it to 16bit last minute forcing philips to use noisehaped dither.

Not sure what the purpose of 28bit here is but it appears to be half the definition allowable of the 1540, so to minimise rounding errors, it makes sense.
Signal is quantised/oversampled to 28bits/176.4, (interpolation) smooths out the wave 44.1 wave for the dac to reconstruct.
Noise shaping is only employed here to reduce the audible effect of dither by shifitng it out-of-band because to improve SNR through the 1540.
NS is not at all needed to quantize, as i first though either. Regardless of how it is employed dither is needed.


There's no dither in that picture - only noise shaping.

  • drfisheye
  • [*]
Is it possible to stretch 16 bits symmetrically?
Reply #106
Isn't it true that most audio software internally works at 32 float point bits? And that in 32 float bit audio, only the values between -1 and 1 are used? Since 32 bit floats use exactly 24 bits to represent all numbers between -1 and 1, 32 bit floats audio has exactly the same precision as 24 bit audio.

So let's stop talking about 32 bit as if that is better than 24 bit. It's the same. Regular x86 processors are faster with float calculations than with integers, so working in 32 bit floats makes sense for speed. Not for precision.

Also, 16 bits provides enough precision for the human hearing, so 24 bits provides more than enough headroom for rounding errors. No need to go above that.

  • saratoga
  • [*][*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #107
Isn't it true that most audio software internally works at 32 float point bits? And that in 32 float bit audio, only the values between -1 and 1 are used?


Yes, at least on PCs. 

Since 32 bit floats use exactly 24 bits to represent all numbers between -1 and 1, 32 bit floats audio has exactly the same precision as 24 bit audio.


They're not exactly the same, since floating point handles extreme values better than fixed point. 

Also, 16 bits provides enough precision for the human hearing, so 24 bits provides more than enough headroom for rounding errors. No need to go above that.


Well yes, in general caring about these things is foolish, but this thread exists so we're stuck with it. 

  • drfisheye
  • [*]
Is it possible to stretch 16 bits symmetrically?
Reply #108
Since 32 bit floats use exactly 24 bits to represent all numbers between -1 and 1, 32 bit floats audio has exactly the same precision as 24 bit audio.


They're not exactly the same, since floating point handles extreme values better than fixed point. 

You just had to say that, didn't you? Now Neil Young needs to remaster everything in floating point. 

  • xnor
  • [*][*][*][*][*]
  • Developer
Is it possible to stretch 16 bits symmetrically?
Reply #109
Similar signal to noise ratio, but the obvious difference is in the dynamic range.
With 32-bit floating point you could achieve a dynamic range over 1500 dB.
  • Last Edit: 24 April, 2014, 07:11:41 PM by xnor
"I hear it when I see it."

Is it possible to stretch 16 bits symmetrically?
Reply #110
Similar signal to noise ratio, but the obvious difference is in the dynamic range.
With 32-bit floating point you could achieve a dynamic range over 1500 dB.


Great, now he's going to add another pointless "upconverting" node in his processing chain with the idea that he'll get 1500 dB dynamic range out of it! 

  • drewfx
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #111
Isn't it true that most audio software internally works at 32 float point bits? And that in 32 float bit audio, only the values between -1 and 1 are used? Since 32 bit floats use exactly 24 bits to represent all numbers between -1 and 1, 32 bit floats audio has exactly the same precision as 24 bit audio.

So let's stop talking about 32 bit as if that is better than 24 bit. It's the same. Regular x86 processors are faster with float calculations than with integers, so working in 32 bit floats makes sense for speed. Not for precision.


By convention 0dBFS in fixed point = 1 in floating point and numbers above +/- 1 will be clipped when converting back to fixed point.

As levels get lower, 32bit floating point has increasingly more precision compared to 24 bit fixed. Thus, for instance, if you were to reduce volume dramatically and then increase it again the lower bits are preserved under floating point rather than truncated.


Quote
Also, 16 bits provides enough precision for the human hearing, so 24 bits provides more than enough headroom for rounding errors. No need to go above that.


If you are doing recursive processing, there is indeed a need to go above that, as errors can accumulate. For this reason, 64 bit double precision is commonly used for certain types of DSP processing in which there might be thousands of iterations.

  • Martel
  • [*][*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #112
... noise shaping the entire thread... It must be used.
I agree.
IE4 Rockbox Clip+ AAC@192; HD 668B/HD 518 Xonar DX FB2k FLAC;

  • Nick.C
  • [*][*][*][*][*]
  • Developer
Is it possible to stretch 16 bits symmetrically?
Reply #113
|By convention 0dBFS in fixed point = 1 in floating point and numbers above +/- 1 will be clipped when converting back to fixed point.


For 32-bit and 64-bit float, certainly. For 16-bit float, not at all. The proof of concept converter I wrote (TransPCM) makes use of the full dynamic range of 16-bit float and allows values in the range -65504 to +65504. foobar2000 will play 16-bit float WAV and WavPack files.
lossyWAV -q X -a 4 -s h -A --feedback 1| FLAC -5 -e -p -b 512 -P=4096 -S- ~= 320kbps

  • 2Bdecided
  • [*][*][*][*][*]
  • Developer
Is it possible to stretch 16 bits symmetrically?
Reply #114
However, if you convert 16-bits to 24-bits, you still have the noise floor of the original 16-bit recording. The noise floor hasn't dropped at all, because you haven't removed any noise. It's the same signal.

Yes, but noise floor is not what bothers me.
You want more bits, but noise floor is not what bothers you?


Good luck everyone.

Cheers,
David.

  • giro1991
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #115
Aside from noise, what other concerns would you have?

Rounding error caused by the disproportional increase.
Increase in sample rate should be directly proportional to increase in quantisising steps.

Direct Proportion
"When two quantities are in direct proportion, as one increases, the other increases by the same percentage."

This is crucial for processing audio.

You may not agree but graphics is exactly the same regarding interpolation.

There's no dither in that picture - only noise shaping.

Noise shaping is just dither but shaped. It's dither. How low dither is applied is key.

Similar signal to noise ratio, but the obvious difference is in the dynamic range.
With 32-bit floating point you could achieve a dynamic range over 1500 dB.

Which is a scary number if you convert it. But we're not converting, only processing. The added accuracy is benificial.

If you are doing recursive processing, there is indeed a need to go above that, as errors can accumulate. For this reason, 64 bit double recision is commonly used for certain types of DSP processing in which there might be thousands of iterations.

I agree. I'm sure what i'm talking is very well understood and commonly used by technicians who make dsps, but that knowledge stays there. By asking this question I have shed some light on the fact that we can quantise music ourselves prior to it entering hardware, so that dsps following work at optimum capacity (32 float).

  • lvqcl
  • [*][*][*][*][*]
  • Developer
Is it possible to stretch 16 bits symmetrically?
Reply #116
Increase in sample rate should be directly proportional to increase in quantisising steps.

Not true.

Direct Proportion
"When two quantities are in direct proportion, as one increases, the other increases by the same percentage."

Sample rate and bit depth are unrelated.

Noise shaping is just dither but shaped. It's dither.

Not true.

  • julf
  • [*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #117
I agree. I'm sure what i'm talking is very well understood and commonly used by technicians who make dsps, but that knowledge stays there. By asking this question I have shed some light on the fact that we can quantise music ourselves prior to it entering hardware, so that dsps following work at optimum capacity (32 float).


Asking questions about things you don't know about or understand is great, but making all sorts of strange claims at the same time doesn't work very well...

  • giro1991
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #118
lvqcl, is this also true for fixed point?

Floating point involves head room, which is perhaps why proportions stop being relevant...
But for fixed point, if 0dbfs max / MSB remains fixed and the LSB extends (or w/e approach dithering takes) with increase in quantising slices, then you are theroetically extending the "dynamic range", yes?
  • Last Edit: 25 April, 2014, 07:01:30 AM by giro1991

  • lvqcl
  • [*][*][*][*][*]
  • Developer
Is it possible to stretch 16 bits symmetrically?
Reply #119
But you said that "sample rate is proportional to increase in quantisising steps". Now you say that "dynamic range is proportional to increase in quantisising steps"... 

  • giro1991
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #120
Sample rate proportional to the dynamic range ...

I now realise that applying a 24bit dither (or even a 32bit dither) to a 16 bit file, does not extend the dynamic range.

I'm trying to increase theoretical dynamic range in the quantisation sense, in the dsp realm - 1500 yes is loud and impossible, no dacs today do it (there's no need lol) - but to increase for processing only...
  • Last Edit: 25 April, 2014, 07:19:27 AM by giro1991

  • julf
  • [*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #121
Sample rate proportional to the dynamic range ...


Sample rate and dynamic range are independent of each other.


  • giro1991
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #122
Sample rate proportional to the dynamic range ...


Sample rate and dynamic range are independent of each other.

So it's impossible to increase each, by the same factor, independantly?

  • julf
  • [*][*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #123
So it's impossible to increase each, by the same factor, independantly?


if they are independent of each other you can of course increase or decrease each one as much as you want independently.


  • giro1991
  • [*][*][*]
Is it possible to stretch 16 bits symmetrically?
Reply #124
And by independant, is there no way I can apply each to a streaming wave?

I think I'm trying to break the laws of physics right here, bear with...
  • Last Edit: 25 April, 2014, 07:41:55 AM by giro1991