ab initio
500+ Head-Fier
- Joined
- May 1, 2013
- Posts
- 854
- Likes
- 158
Okay, please excuse the title (but admit it, it did get your attention!). This thread is to discuss the digital audio mantra that "You should always always always leave software volume at 100%". Well suppose you have a powerful amp and sensitive cans, should you lose sleep over using a little bit of software control to attenuate your music? No! This is something I deal with, driving the fairly sensitive HD280pro from a Schiit Modi+Magni (Schiit, who specifically recommend using a tasteful amount of software volume control to get usability from the volume knob... the blasphemy!)
The question is, if I turn down the software volume, how much do I lose? And when I cause significant lose of sound quality by using the software volume control. The answer is to calculate the effective number of bits!
Here's the deal, most music is encoded 16bit/44kHz that offers ~96dB of dynamic range, and I am unaware of any ears that can demonstrate the ability to distinguish 16bit/44kHz from otherwise identical sound clips at higher bit depths e.g. 24bit/96kHz. So, just for the sake of this thread, lets assume that 16 bits represents a "complete" audio experience. Another thing to keep in mind is that (at least in Windoze kmixer) dither will be applied to the digital audio stream before getting spit out to the hardware, just like any mixer should. Dither will (intelligently) randomize the lowest bit to shape the noise spectrum; however this discussion is beyond the scope of this post. Further information on dither can be found here.
So what do I mean by "effective number of bits"? Well, the sound card (or DAC) will convert the digital audio it receives to an analog signal, usually at either 16bit or 24bit depth. That means the hardware will spit out its maximum voltage output when it receives an 0x7FFF(FF) and its most negative voltage when it receives an 0x8000(00) i.e. we get full resolution output. However, if we use software control to set the volume to 1/8th full scale, then the largest change in output levels we can achieve will be 0x0FFF(FF) max and 0xF000(00) min. So we've lost 3 bits of resolution! (Note 1/8 = 1/2^3). We are left with either 13 or 21 bits of resolution, depending on whether we are using 16 or 24 bit hardware.
The general formula to calculate the effective number of bits is something like this: (you can try this in GNU/octave or MATLAB)
Here, "ENB" is the effective number of bits and it depends on digital-to-analog converter bit depth, "Bits", and on the software volume level, which we specify in decibels, "dB". The plot below shows the effective number of bits as a function of volume setting for the two most common hardware configurations: 16 and 24 bit DAC

A couple things I'd like to point out. First, 16bit represents about 96dB of dynamic range, while 24bit represents about 144dB of dynamic range. Second, if you set your soundcard/DAC for 24bit decoding, you can still play CD-quality music at full resolution (i.e. essentially bit-perfect with the exception of dither on the last bit) with software volume set as much as -48dB!!! As a point of reference, using window's volume control, so-called "10% volume" equals -35dB attenuation, which means 16 bit audio is still being sent to the soundcard/DAC at full resolution. On my laptop, the volume control buttons operate in 10% increments, so even at the lowest volume setting on my laptop I am still getting full resolution 16 bit audio from my DAC when it operating in 24bit mode.
So, am I saying that everyone should set their software volume one step up from mute? NO! Not all soundcards/DACs can operate in 24 bit mode. If you are using a device with a 16bit decoder, then it is probably preferable to keep the volume up. But if you have any have decent quality device with a 24 bit digital-to-analog section, there is no reason to fret using a software volume control. When I am up late at night (or early morning), and the office or apartment is very quite, and I am listening on my noise-isolating studio monitors plugged into my (very low noise) Modi/Magni combo, I won't be losing any sleep over using software volume control to get the volume down to a place where I can get some useable range on the volume knob of the Magni at a volume level that won't blow my eardrums into my skull.
There's more ro the story that what I discussed here (like the noise floor of the amplifier, etc..) but I suppose the other knowledgeable forum members can help fill in some of the points that I missed, or help me correct anything I might have messed up.
Cheers!
The question is, if I turn down the software volume, how much do I lose? And when I cause significant lose of sound quality by using the software volume control. The answer is to calculate the effective number of bits!
Here's the deal, most music is encoded 16bit/44kHz that offers ~96dB of dynamic range, and I am unaware of any ears that can demonstrate the ability to distinguish 16bit/44kHz from otherwise identical sound clips at higher bit depths e.g. 24bit/96kHz. So, just for the sake of this thread, lets assume that 16 bits represents a "complete" audio experience. Another thing to keep in mind is that (at least in Windoze kmixer) dither will be applied to the digital audio stream before getting spit out to the hardware, just like any mixer should. Dither will (intelligently) randomize the lowest bit to shape the noise spectrum; however this discussion is beyond the scope of this post. Further information on dither can be found here.
So what do I mean by "effective number of bits"? Well, the sound card (or DAC) will convert the digital audio it receives to an analog signal, usually at either 16bit or 24bit depth. That means the hardware will spit out its maximum voltage output when it receives an 0x7FFF(FF) and its most negative voltage when it receives an 0x8000(00) i.e. we get full resolution output. However, if we use software control to set the volume to 1/8th full scale, then the largest change in output levels we can achieve will be 0x0FFF(FF) max and 0xF000(00) min. So we've lost 3 bits of resolution! (Note 1/8 = 1/2^3). We are left with either 13 or 21 bits of resolution, depending on whether we are using 16 or 24 bit hardware.
The general formula to calculate the effective number of bits is something like this: (you can try this in GNU/octave or MATLAB)
Code:
ENB = @(Bits,dB) log2(10.^((20*log10(2.^Bits) + dB)/20))
A couple things I'd like to point out. First, 16bit represents about 96dB of dynamic range, while 24bit represents about 144dB of dynamic range. Second, if you set your soundcard/DAC for 24bit decoding, you can still play CD-quality music at full resolution (i.e. essentially bit-perfect with the exception of dither on the last bit) with software volume set as much as -48dB!!! As a point of reference, using window's volume control, so-called "10% volume" equals -35dB attenuation, which means 16 bit audio is still being sent to the soundcard/DAC at full resolution. On my laptop, the volume control buttons operate in 10% increments, so even at the lowest volume setting on my laptop I am still getting full resolution 16 bit audio from my DAC when it operating in 24bit mode.
So, am I saying that everyone should set their software volume one step up from mute? NO! Not all soundcards/DACs can operate in 24 bit mode. If you are using a device with a 16bit decoder, then it is probably preferable to keep the volume up. But if you have any have decent quality device with a 24 bit digital-to-analog section, there is no reason to fret using a software volume control. When I am up late at night (or early morning), and the office or apartment is very quite, and I am listening on my noise-isolating studio monitors plugged into my (very low noise) Modi/Magni combo, I won't be losing any sleep over using software volume control to get the volume down to a place where I can get some useable range on the volume knob of the Magni at a volume level that won't blow my eardrums into my skull.
There's more ro the story that what I discussed here (like the noise floor of the amplifier, etc..) but I suppose the other knowledgeable forum members can help fill in some of the points that I missed, or help me correct anything I might have messed up.
Cheers!