August 7th, 2020
By: Carlin "Rick" Smith
I came across this blog article from Brendon Heinst from TRPTK of The Netherlands. I found the math and theory behind this fascinating. I was hoping I could take a listen on my reference gear but after a few emails back and forth with Brendon we came to conclusion most likely my dCS Rossini DAC would not accept this format, at least right now. I plan to send a message off to Andrew at dCS just to make him aware.
All the right bits in all the right places
Digital audio is stored in bits, representing the amplitude of the signal at a specific moment in time. The sample rate (e.g.. 352.8 kHz) determines how many of those bits are recorded and played back every second. So how many bits is stored for every sample? Well, that depends.
At CD quality, each sample carries 16 bits of fixed-point data (I can already hear you say: “wait, what’s fixed-point?!”but we’ll get to that), which basically means that it can store any integer value between 0 and 65.535. Technically (we’re not getting into noise shaping just yet, we will in our next More = More? blog), you can fit 96 dB of dynamic range in just these 16 bits.
If we go one step higher, we reach 24 bits per sample. This is the resolution almost all (let’s say 99.9%) of recordings are made at. And up until a couple of years ago, we did as well. Now, the 24bit format has a lot of interesting upsides for both recording and playback. 24 bits of fixed-point data can store any integer value between 0 and 16.777.216, or 256 times as much as the 16bit format can, reaching a theoretical dynamic range of 144 dB. Fantastic, right? Yes! But…
Introducing the 32bit format. I can already see you grabbing your calculator and discovering that 32 bits can hold over 4.2 billion integer values, or reach 192 dB of dynamic range… And yes! It does, as a fixed-point value. But, we told you before we’ll talk about what fixed-point means, because it gets interesting here…
Floating your points all over the place
As we discussed before, the values we talked about are all fixed-point, meaning that they basically just store their data in a binary fashion (for example, the number 13 as a 16-bit fixed-point integer looks a bit like this: 0000000000001101). But there’s a more efficient way of storing way bigger numbers, and it’s called floating point values.
We’re not getting into the nitty-gritty mathematics of things here, but here’s the ELI5 of it: floating-point arithmetic was created as a perfect trade-off between range and precision. It uses three components: a significand, a base, and an exponent. See the image below to get a feeling of how that works:
So what’s this useful for? Well, actually for a lot of things. You can use the same format to store the distance between two galaxies as well as the distance between two atoms in a molecule. It’s that flexible, and the scale can be huge.
Then, what does this all mean for audio? We’ll get more into why it could be useful in just a bit, but simply put: you can store data in it that has both extreme precision as well as giant scale! Sounds like it can be very useful for audio, right? Right. Basically put, you can be both extremely precise in your calculations on the audio, as well as having an extremely huge dynamic range. And when I say huge, I mean huge. Like blade-of-grass-falling-on-snow to supernova explosion huge. To be precise, a 32bit floating point audio stream can reach a dynamic range of 1.528 dB. And while these numbers are definitely overkill for any scenario life can throw at a mortal sound engineer, they are great for the fact that you have a huge headroom for DSP.