Hacker News new | ask | show | jobs
by PaulDavisThe1st 28 days ago
There are precisely zero 32 bit ADCs in existence.

There are ADCs that will provide 32 bits per sample but that's entirely different.

Current technology limits the bit depth to 18-22 bits and going beyond that you'd be very quickly recording brownian (atomic) noise anyway.

The point about 32 bit float is that it is a useful format for mixing, editing and general processing, so it is widely used in digital audio tools. But it is not a format that ADCs generate "natively" via their electronics - almost all of them are generate a 24 bit integer or fixed point value and then just supplying that as a 32 bit float value because the software asked for it (the software could have done it all by itself.

[EDITED: DAC->ADC since that is what I meant and what this is all about]

5 comments

The ADCs that do direct sampling of the input signal (i.e. by successive approximation or by the pipelined algorithm) become very expensive at high resolutions and they are limited to 18 bits per sample or at most 20 bits per sample.

Due to their high cost such ADCs have no longer been used in audio for many decades. They may still be encountered in some expensive measurement instruments that need high resolutions at significantly higher sampling frequencies than needed for audio.

All audio ADCs have a very low resolution per sample, e.g. 4 bits or even lower, but they sample at a very high frequency, of many MHz. Then the bit stream is digitally processed to generate whatever format is desired for output, at a lower sampling frequency and a higher resolution, e.g. 24 bits @ 192 kHz.

There is a difference between the actual resolution at the output and the effective resolution, which is limited by noise, e.g. the 24 bit samples may have an effective resolution of 20 bits or 21 bits or 23 bits, etc., i.e. they contain noise with an amplitude corresponding to those effective resolutions.

The digital algorithm that converts the low resolution input samples (e.g. 4 bits @ 5 MHz) inside the ADC can easily be modified to generate a different numeric output format, e.g. FP32.

Neither FP32 nor 24-bit is the native format of the A/D conversion. If the ADC outputs FP32, that is even more convenient for further audio processing. Obviously, the quality of the ADC is independent of whether it outputs FP32, and the FP32 samples will have a different effective resolution on each ADC, which seldom would be as high as 24 bits, due to the noise.

> There are precisely zero 32 bit ADCs in existence.

> There are ADCs that will provide 32 bits per sample but that's entirely different.

Now that requires elaboration.

There is e.g. AD's LTC2500 (https://www.analog.com/en/products/ltc2500-32.html). Not meant for audio (too slow at 32b) and not noise free, but it's a bona-fide 32b ADC.

Now there might be no ADC which provides 32b wide noise-free samples at sample rates needed for audio and given the absurdly low level of a LSB signal that might be as infeasible as it would be pointless, but that's a bit of a different statement.

I didn't say anything about DACs! I'm correcting a specific claim you made

> Nobody uses 32 bit float for recording (to do so is just to capture at least 10 bits of noise, most of that being brownian);

This is not true and not true for a good and important reason! One which has no bearing on the kind of DACs that exist.

Modern field recorders allow gains set a 'reasonable' level that maximizes SNR for recordings but still won't clip when there are much louder peaks. Not so dissimilar to how a 6-digit multimeter can achieve its advertised performance both on a 0-5v range and a 0-300v range but cannot give more than 6 digits at the higher range.

When I said "nobody uses 32 bit float for recording", I am referring to the result of the DA process that generates samples values used by a recorder.

Obviously, everyone and their mother uses 32 bit float as an internal sample format because of its fitness for purpose (except the folks who think they need 64 or 80 bit floating point, of course). But they are not using "32 bit floating point samples" - the samples come from an (at best) 18-22 bit integer conversion.

Rode NT1-A 5th gen microphone claims 32-bit float output, insisting it will not clip peaks

so maybe they do sample at 24 bit at a well chosen gain level and then convert to 32 bit float, with the max 24 bit value being above 1.0 float

or as GP said, use two separate ADCs at two different gains and combine their output

> Rode NT1-A 5th gen microphone claims 32-bit float output, insisting it will not clip peaks

Of course it does! And that's what it does, of course. But that has absolutely nothing to do with the AD process itself, which is chip-limited to 24 bits and likely physics-limited to somewhat less than that.

You can't beat the physical limit of a DA circuit by doubling them up at different gains.

And .. you don't want to. Going beyond 22 bits gets you into brownian noise pretty quickly, which is completely pointless.

The best you can do (or could do) is get a very, very, very good DA that can really do 22 bits (likely not commercially available because of the expense), and then get the samples from it in whatever format works best for your purpose (24 bit integer, some fixed point value, or 32 bit floating point).

you have 22 bits for the typical audio voltage level, which you call 1.0 float

but what if you "allow" double that voltage and call it 2.0 float? a strong pressure into the microphone generates a stronger voltage

thermal noise limits you on the quiet signals, but not on the powerfull ones

so 22 bit for typical -1.0 -> 1.0 range and you can add a few more bits on top of that for stronger audio pressures (voltages) which you would traditionally clip

Sorry, but this not how AD works. If your idea was valid, we'd have new generations of ADCs in our hands.
> In a 32-bit float recorder, you have two ADCs working in tandem to create a single audio file. One “low gain” ADC is optimized for high-level audio, and the other “high gain” ADC is optimized for low-level audio. If the high gain ADC clips due to loud sounds, the low gain ADC does not. And if sounds are too quiet for the low gain ADC to capture clearly above its noise floor, the high gain ADC still has plenty of headroom above its noise floor. Said another way, the low-level ADC handles the quieter sections, and the high-level ADC handles loud sections.

https://tascam.jp/int/feature/32-bit_float

The first diagram in that article is pretty ironic in an HN comment thread about Monty @ Xiph's stuff. Have you never seen his takedown of the "stairstep" drawing?
It's discontinuous.

You have some low noise amplifier. There is a signal. You split it. The result on each side has >=1 bit worse noise floor, probably somewhat worse as we're not using superconductors :P-- as you expect: there is no free lunch.

Now: take one copy and attenuate it 48dB, further degrading its noise floor. Sample both. The attenuated copy is mostly useless, except when the input goes high enough that it would have hard clipped the other ADC.

So the tradeoff is that you lose a small amount of noise floor constantly-- out at the 20th bit, that you probably didn't care about (microphone self-noise is limiting you out there anyways at normal volume levels), in exchange for never clipping.

To turn this into a better ADC generally, you'd need the splitting stage to not hurt the noise floor, but it does.

The reason it's not the same as just lowering the gain so that you won't ever clip is that to get the same dynamic range you'd have to lower it by 48dB and now your ADC doesn't achieve its potential for typical signals. You could lower the gain by 3dB (or whatever the splitting cost you) and get the same results for the low gain signal and a little more headroom, but you would not get the massive headroom increase of this approach.

For this to work one must also have amplifiers with much wider dynamic range and SNR than ADCs, but we do.

The natural output for this approach is a float-- the most natural would be a weird float where instead of an exponent one bit tells you which ADC is in use and represents a factor of 256 or whatever, but in practice these recorders just output 32-bit floats. I haven't looked but I wouldn't be surprised if there were only two exponent values ever used in their output.

> So the tradeoff is that you lose a small amount of noise floor constantly-- out at the 20th bit

So, basically, no better than the best AD converters we already have?

My understanding of the fundamental limit to AD performance is that the brownian noise level is around the 22nd bit level. So even if you come up with techniques to successfully measure down to that level, you're basically picking up .. inevitable, irremovable, irrelevant noise.

Possibly there are gains to be made by not worrying about the noise floor and caring more about the lack of clipping, but I'm not seeing people screaming about that. The "noise" seems to be "N bits of dynamic range", not "slightly less dynamic range but it will never clip!"

> use two separate ADCs at two different gains and combine their output

That's what could be done if ADCs were perfectly linear and noise free and limited only by their bit-width. Sadly, they are not. The non-linearity one can in theory measure and correct for, but the noise can be corrected for only by oversampling. And then you might as well use a single ADC of lesser bit width and higher sampling rate.

I feel like you’re arguing against a straw man.

No one is arguing that there are practical audio microphones + ADCs that produce accurate, undistorted 32-bit float output across the full representable range. But they don’t need to! For professional use, the ability to produce perceptually accurate output, with inaudible noise, across a very wide dynamic range, is extremely useful. Think of it as fancy, real-time AGC. It does not need to be perfect. If you can record a loud transient without substantial distortion, and also record sounds with 2^16-fold lower amplitude (~96dB lower) while still remaining well above the noise floor immediately after the transient is gone, this ability is useful. Plenty of real-world noises are well above 120dB, and plenty of human-audible sounds are below 20dB. You can’t play back the recording, at least not without making parts inaudible or injuring your audience, but you can edit it. And a setup like this lets you do it with one microphone and no fiddling with gains in advance.

One cannot create a noise-free, perfectly linear 32b ADC using 2 lesser ADCs as described above. That is however not needed and I suspect isn't what they are attempting.

If, say, two 24b ADC (20b noise free, non-linearity 2LSB) with one receiving the input signal with an approximate 10bit higher gain (+60dB) and one would combine their outputs with that 10b shift (and ignoring the input of the low gain path, if the signal falls below a given threshold to reduce the noise contribution of that ADC and the input of the high gain path if the signal exceeds another threshold in order to avoid clipping), then one could construct a 32b float.

This doesn't improve resolution (which arguably would be pointless) or linearity (not all that critical in audio methinks) but dynamic range, which I can see some appeal of (in extreme recording situations, say you'd want to record the breathing of a shooter followed by the gun shot -- there remains the challenge of finding a microphone capable of a 120dB range, but perhaps one could use two different ones ...).

Why are you obsessed with DAC? Its the ADC that is WHY we capture 32/192.
If I said DAC, it was a mistyping. I am (in this context) always talking about the ADC.