5 ms·
From "best" answer: Reducing volume in software is basically equivalent to reducing the bit depth This is really only true when The Audio System represents sam
by silvestrov 14y ago
From "best" answer: Reducing volume in software is basically equivalent to reducing the bit depth
This is really only true when The Audio System represents samples as integers and not floats like CoreAudio does.
- sek 14y agoThis is one of these questions i wondered about for decades, but never looked it up.
- themckman 14y agoAnecdotally, I "feel" I get better definition in the music I'm listening to when my Mac volume is maxed and I adjust the listening volume at the speakers, rather than the other way around.
- pedrocr 14y agoI don't think that's the case. Here's your pipeline: App->CoreAudio->HWSoundCard->Speakers(or amplifier) By using floats in the sound API you don't reduce the bit depth on the first step but you still do on the next two steps. Imagine a scenario where you want to set the volume at half the maximum volume. Your two options are: 1) You set the app to 50%. Core Audio handles that as floats but still has to program the hardware to only output half volume, so if the HW itself doesn't take floats the bit depth is halved. And the HW will always have to output half the voltage so the "voltage depth" of the third step is always halved. 2) You set the speakers to 50%. All the pipeline functions at 100% bit/voltage depth all the way to the speakers/amplifier. Only then, at the final amplification stage, does the signal not get boosted to 100% and only to 50%. How much this affects real world performance beats me...
- silvestrov 14y agoIn theory yes, but our ears can't hear below ca. 0 db, so the bits lost below 0 db were wasted anyway. So if you use a 24-bit DAC, those bits doesn't matter...
- pedrocr 14y agoThat 24-bit DAC does nothing for you after the sound turns analog between the DAC and the speakers/amplifier. That's why I said the second step may not lose you bit depth if your DAC is floating point or as you say 24bit, but on the third step you will lose something.
- Derbasti 14y agoFor digital signals, 0 dB usually means full power. That scale is typically denoted dB FS ("full scale"). Other scales are dB SPL ( "sound pressure level"), which is what you where probably referring to. So in other words, you are probably saying that reducing the signal loudness is reducing your signal-to-noise ratio and thus your audible dynamic range. However, your noise floor is probably far higher than 0 dB, more like 20-30 dB SPL (if you're lucky!). A normally-loud (that is, non-damaging) music playback will probably be at about 50-80 dB, so your usable dynamic range will be about 30-60 dB, which translates to about ten bits. Most environments will be worse. 0 dB are actually pretty hard to come by. Even well-insulated acoustical measurement chambers only go to about 10 dB. Only several meter of acoustic foam and a solid foundation and a purpose built air conditioning can go down to 0 dB. So, umm, 0 dB is usually a rather useless figure for non-scientific purposes.
- danbee 14y agoIt depends on what kind of curve the volume control uses but assuming 50% volume is half the amplitude (-6dB) you will only lose 1-bit of resolution. To lose half the bit depth you'd have to turn it down by 48dB! It's worth noting that perceptually, half the volume is actually closer to 3dB (a halving of energy), which is only half a bit of loss. If a floating point audio pipeline correctly dithers the signal going into the DAC it's unlikely anybody will notice any quality loss by using a digital volume control (even at 16-bit). You might hear the hiss of the dithering if you turn up the analogue portion of the chain, although you'd have to turn it up quite a lot.
- Derbasti 14y agoNo. Volume sliders do not use a linear scale. A linear scale is all but useless for volume. Most volume sliders use a logarithmic scale, where 50% basically has no meaning except in relation to the minimum value chosen by the slider. This is perfectly sensible, since our sense of hearing does not scale linearly from silent to loud. Our ears have a dynamic range of about 120 dB. On a linear scale, the 50% value would correspond to about -6 dB, which is perceptually one 50th of the full audible scale. A sensible volume slider (on a PC) would range about 40-60 dB, since anything below -60 dB will be lost in background noise anyway. Thus, the 50% mark would be somewhere around -20--30 dB. Thus, this 50% setting would lose roughly 5 bits of information, not one. Note however that a reduced dynamic range at "half loudness" is usually just fine, since the full dynamic range can only be heard at high volume anyway. (Also note that the bottom value of volume sliders usually mutes. Analogue equipment sometimes does not do that, which results in very faint signal playing even when turned all the way down.) That said, the whole argument about losing resolution probably does not make sense anyway since the operating system volume sliders attenuate the sound hardware DAC gain instead of actually decreasing digital gain...
- pedrocr 14y agoThat said, the whole argument about losing resolution probably does not make sense anyway since the operating system volume sliders attenuate the sound hardware DAC gain instead of actually decreasing digital gain... We were talking about reducing volume in the App. If the app is using the system volume then the App->CoreAudio step is irrelevant (as nothing changes), the CoreAudio->DAC step doesn't change either (full bit-depth and an OOB message to lower the gain), but the DAC->Speakers analog step still has to output half the volume and thus reduce the range of the signal. For this not to matter the OS would need to be able to change the gain in the speakers instead of the DAC. Again, how much this actually has an audible effect on quality beats me...
- fr0sty 14y agoThis may be true for the intermediate steps but but the last step is still a DAC changing integers to analog voltage. If you are attenuating the signal before that point you are still losing bit-depth (even if, by the magic of floating point numbers you are reducing the aliasing and other artifacts).
- deleted 14y ago[deleted]