NP. Please be aware that Amir kindly pulled many of the earlier posts over from another forum, so they are pushing 20 years old in some cases (and are based upon even earlier documents and notes). The fundamentals do not change, fortunately, but some of the info is less relevant these days. For instance, virtually all modern audio DACs resample asynchronously and isolate the clock from incoming jitter in the data stream, something rare when I wrote about that back then.@DonH56 Thanks for the links. I start reading...
"Virtually all"? The ESS ones do for sure, high-end TIs like PCM1792/94/95/96/98 possibly do (at least they have a propensity towards hard clipping at 0 dBFS, which is usually an indication), but PCM510x I'm pretty sure do not, and your average AKMs like AK4493 definitely do not either. Neither do CS4398s (not like you would expect it in a 20-year-old part), not sure about CS43198/CS43131.For instance, virtually all modern audio DACs resample asynchronously and isolate the clock from incoming jitter in the data stream, something rare when I wrote about that back then.
Fully agree. I wasn't supporing the need for floating point - though it does have some advantages in this application (for example being able to represent the captured voltage as it's actual numerical voltage, rather than some arbitrary scaling factor)If we define the peak voltage level as 10 Volts, 32-bit integer precision takes us down to around 2.5e-9 or 2.5 nano volts. Check my calculation: 32 bits * 6 dB = 192 dB; 10^(192/20) = 3.98e9; 10 / 3.98e9 = 2.5e-9.
How small is that? By comparison, theoretical Johnson/Nyquist noise of a 1 ohm resistor at room temperature over 20 kHz bandwidth is about 18 nano volts. The noise of most high quality opamps is also higher than this. So it appears 32-bit int has enough numeric precision, in absolute terms, no need for scaling or exponents. The limitation must be somewhere else, and apparently it is the dynamic range of ADCs.
PS: alternate computation: 32 bits give 4.29e9 values, 10 volts divided into 4.29e9 equal parts is 2.3e-9 or 2.3 nano volts each.
There is no limitation for data acquisition, it's mainly (but not only) done for user experience, namely: presenting a stronger signal, even above 0dBFS, to the end user. That inevitably requires floating point.So it appears 32-bit int has enough numeric precision, in absolute terms, no need for scaling or exponents. The limitation must be somewhere else
I'm still stuck on this BeerBear. I've only done hobby electronics, Arduino, Pi, etc., but to my knowledge the principles are the same for all chips, even the most advanced ADC chip manufactured today. So if someone here has the technical knowledge I would like to hear it.That inevitably requires floating point.
Hi Don. I started reading through it! Interesting stuff! However, I'm still pretty laser focused on the Analog to Digital stuff. Distortion from my speakers? What speakers haha! When I get to those subjects I will certainly circle back! BTW, is you python code for that on github or anything. Mine is here should anyone have an interest. I'll post more about it once it has matured. https://github.com/maxrottersman/headless_filmmaking/tree/master/cookbooks/pythonNP. Please be aware that Amir kindly pulled many of the earlier posts over from another forum, so they are pushing 20 years old in some cases (and are based upon even earlier documents and notes). The fundamentals do not change, fortunately, but some of the info is less relevant these days. For instance, virtually all modern audio DACs resample asynchronously and isolate the clock from incoming jitter in the data stream, something rare when I wrote about that back then.
HTH - Don
I do not know the current audio DAC market and what DACs are used. As I said, some of those posts are approaching 20 years old so it was a caution, not worth reading too much into that comment. I have other battles more important to me right now,"Virtually all"? The ESS ones do for sure, high-end TIs like PCM1792/94/95/96/98 possibly do (at least they have a propensity towards hard clipping at 0 dBFS, which is usually an indication), but PCM510x I'm pretty sure do not, and your average AKMs like AK4493 definitely do not either. Neither do CS4398s (not like you would expect it in a 20-year-old part), not sure about CS43198/CS43131.
Hope it helps, it is a lot to wade through (and only scratches the surface of the actual design, natch). The sampling and data converter info is relevant for ADCs or DACs. I do not remember every one, but the posts themselves likely focus more on DACs given the audience here, though most of my work was for ADCs. I have a host of old Mathcad (and some Matlab) files for both ADCs and DACs. The main difference between ADC and DAC code is in the architectures; flash, folding, slope, multipass, delta-sigma ADCs vs. binary, unary, hybrid, and delta-sigma DACs best I recall.Hi Don. I started reading through it! Interesting stuff! However, I'm still pretty laser focused on the Analog to Digital stuff. Distortion from my speakers? What speakers haha! When I get to those subjects I will certainly circle back!
No, sorry. I don't use Github but the main reason it is not posted is that I am an analog guy, not a programmer, and do not want to try to explain and support my code for everyone. It is not all that complicated, and I comment reasonably well, but I am sure a real programmer would have fits about my (lack of) style. For example, some of the distortion functions do not have closed-form solutions, so I have iterative solutions (functions, methods) programmed that are a bit messy (but verified valid so I decided to quit while they worked rather than try to clean them up further).BTW, is you python code for that on github or anything. Mine is here should anyone have an interest. I'll post more about it once it has matured. https://github.com/maxrottersman/headless_filmmaking/tree/master/cookbooks/python
I'll put on our long list of future rantsthe renewal price quadrupled I switched to Mathcad
Those article are 23-years old so quite in the infancy of ADCs. Skimming through one reads, "Simulation results indicate that this approach is capable of achieving up to a 16 bit dynamic range with an 8-10 bit effective resolution at a sampling rate of 40 MS/s" Whoa! I mean at the time, I'm sure that was the bees-knees, but we no longer worry about fitting data into 8-10 bits. At that time I remember soldiering in 16-kbyte RAM chips into a friends computer to fix it. 16 kilobytes! I remember when memory was DEAR.There are a lot of articles on floating-point ADCs, such as this one: https://ieeexplore.ieee.org/abstract/document/982987 or https://ieeexplore.ieee.org/document/814428 , and there were several commercial ICs available but I have not looked recently. Most targeted instrumentation and sensor systems IIRC rather than audio, and used switched gain blocks on-chip in front of a conventional converter. The exponent set the gain range and mantissa was the actual ADC output. I have a paper on a 64-bit version (!) from a gov't R&D conference but I do not recall it reaching commercial product stage. IIRC, it was a fairly complicated IC, with multiple gain stages, attenuators, and ADCs to cover uV to kV signals (10^9 range, about 30 bits). The rest was from on-chip processing to produce a 64-bit FP output word. I do not recall any details after all this time but remember the ADC performance itself was not SOTA.
Well, the infancy of ADCs predates those articles by quite a bit... When my career began, ca. 40+ years ago, ADCs were already well-established in may systems, and the CD was being introduced, so 20 years later things were pretty well defined (even delta-sigma, the new kid on the block). Those are just references I had at hand. At that time I was designing similar ADCs with multi-GHz bandwidths but they were not published. You can probably find much newer ones; I have no dog in this hunt so did not go past a quick search and glance in my files.Those article are 23-years old so quite in the infancy of ADCs. Skimming through one reads, "Simulation results indicate that this approach is capable of achieving up to a 16 bit dynamic range with an 8-10 bit effective resolution at a sampling rate of 40 MS/s" Whoa! I mean at the time, I'm sure that was the bees-knees, but we no longer worry about fitting data into 8-10 bits. At that time I remember soldiering in 16-kbyte RAM chips into a friends computer to fix it. 16 kilobytes! I remember when memory was DEAR.
I could see how you might have a large current that you could quantize beyond 24-bit fixed and might want to use 32-bit float, 64-bit float, etc. So in no way am I arguing that one can't write to float using an ADC, or that they don't exist in the military, etc. I can definitely see a use as those articles explain them. BUT and this is the big BUT, I don't see how microphone data (or most analog audio data) ever creates a need to write floating point. Again, not dismissing those who say its needed in DSP. If you need it, use it!
My question remains, how does 32-bit float improve the analog-to-digital conversion of Microphone inputs?
I can definitely see that being an option. I think I speculated about it somewhere. (BTW, on the voltage/current, yes, I remain somewhat befuddled on the difference).you could have a programmable gain-of-256 (max) stage before it to provide 32 bits of dynamic range and 24 bits of resolution
I have no idea what any specific manufacturer is doing; I was approaching this as a generic engineering problem.I can definitely see that being an option. I think I speculated about it somewhere. (BTW, on the voltage/current, yes, I remain somewhat befuddled on the difference).
Indeed, what you suggest as a possibility is the first thing I wanted to test with one of these devices. So I bought a TASCAM Portacapture X6 to test this. I set it to record in both 24-bit fixed and 32-bit float (interestingly, it only does 32-bit float as a backup to 24-bit fixed--I wonder why but I will resist commenting on that). Anyway, if they had done what you theorized, I would imagine that there would be a difference between the 32-bit float, where the exponents are written first, then the precision, and the 24-bit fixed. However, in my analysis both files were COMPLETELY the same At least, the 32-bit float to 24-bit conversions were the same. If they were getting some better quality by doing the exponent first approach I would expect a few differences in samples. But none.
Now, that isn't to say Sound Devices isn't using a the approach you described. But I don't feel like spending $1,000 to test. And I don't feel Sound Devices is making hard claims about 32-bit float. The tech guy I spoke to there said he often warns his customers not to rely on 32-bit float to remove clipping. My feeling is Sound Devices released new equipment with 32-bit float and did a tiny bit of fibbing, then Zoom and TASCAM amplified that a bit more, and then Rode went FULL ON LIES.
When I was a kid my Dad gave me the water analogy. If electricity is water, then voltage is pressure, current and resistance are just what they sound like: flow rate and resistance/constriction/obstruction to flow.... I am not sure where you stand on voltage and current; do you know Ohm's Law? A basic picture often posted is this one:
Voltage is the driving force to push electrons (current) through a conductor. Resistance (ohms) is a measure of how hard it is to force current through that conductor.
...
There's couple analogies here, including the water: An intuitive approach for understanding electricity (AlphaPhoenix channel)When I was a kid my Dad gave me the water analogy.
Hi BeerBear, if you'll excuse another one of my rants--not directed at you! It's misleading schematics like that which make understanding electronics difficult. It reads "when a signal is applied". As I've pounded my keyboard before, there's no "signal" coming through the wire, only a voltage. Because the "signal", the variations of voltage that lead to recognizable sound, is all we care about, we almost never talk about the voltage. FURTHER, because we mostly think in digital terms, where the signal can easily be preserved through almost limitless RE-AMPLIFICATIONS, it's easy to accept, based on that schematic, that the signal can be split up 4 times and sent to separate pre-amps, then ADCs.regarding gain-ranging, this is from an older ASR thread