Volume control digital or analog to headphone jack?

I am curious about how Apple's computer DACs are implemented, especially on computers like MacBooks and iMacs. I have been trying to figure out if the 3.5mm output on Apple devices (specifically a MacBook Pro, for me) is controlled by the system volume level through an analog section after the actual DAC, or is it reducing the volume digitally before the DAC?

I can't seem to find any good info about it. Does anyone know?


The volume control on a computer (specifically, your MacBook) is usually handled by your audio API, which on Mac OS X is CoreAudio. All computers these days will act like this, but I seem to recall one Toshiba laptop of my parents’ running Windows 98 with a physical dial on the side for audio. Obviously this is not practical today due to modern laptops getting thinner and digital audio outputs such as SPDIF and HDMI audio. I might be rambling a bit, but I hope this answers your question.


USB audio devices (which can be as simple as an USB stick with a headphone jack) have a dedicated volume property. So if you reduce the playback volume, the system will not send "smaller sample values" to the USB device, it will send the same sample values it would send at full volume. How the device manages to get a small output volume is up to the device itself.

Basically the device has three options:

  1. It may have a micro controller that is pre-processing the sample values before passing them to the DAC and the volume is the factor by how much those values are reduced. This would be digital volume control.

  2. It may also have a digital potentiometer. Those are chips that act as a variable resistor and the resistance can be controlled in digital steps. By using such a chip to build a voltage divider, you get good old analog volume control, just not as fine grained (those chips usually have 100 to 255 steps, some only have 64) and digitally controlled. While this is the coolest way to do it IMHO, it's also the way that wastes the largest amount of energy (not good for battery driven devices).

  3. It may also use a digitally controllable signal amplifier. There's often a signal amplifier involved if the DAC itself has not enough power to directly drive bigger headphones. And instead of decreasing the volume of the signal on the way to this signal amplifier, it's also possible to directly control the level of amplification, up to the point that it becomes negative (the signal leaving the amplifier is weaker than the signal that was delivered to it).

Most devices today use a fully integrated sound chips that feature a micro controller, multiple DACs, possibly multiple ADCs, as well as signal amplifiers in a single package. Somehow these chips also offer volume control but how exactly is up to each chip.

E.g. the line out expansion board for the Raspberry Pie bases on the PCM5122. And if you look how the chip is actually constructed:

https://www.ti.com/ods/images/SLAS763C/fbd_pcm512x.gif

You will notice, that is has a "Digital Volume Control" directly after the I2S input pin. So this chip in fact works according to option (1). Yet if you compare that to the PCM175x:

https://www.ti.com/ods/images/SLES092E/functional_block_dgm_les254.gif

You'll notice that this chip has an output amplifier at the end and no volume control at all. This chip is supposed to be used with an existing external volume control (e.g. it should be used inside HiFi receivers that already have a master volume control).

And now compare that to the TLV320DAC3203:

https://www.ti.com/ds_dgm/images/fbd_slos756b.gif

This chip has two volume controls. There is a digital volume control before the DACs but there is also a digital controllable signal amplifier after the DACs that can alter volume from -6 to +29 dB in 1 dB steps (whereas the one before the DAC can control in the range -63.5 to +24 dB). So here the output volume is a mixture of digital and analog control. If the user wants less volume/more volume, you could first use analog volume control and only fall back to digital one once you fully utilised the analog range.

And it's no different for on-board chips, chips integrated into south bridges of motherboards, or chips as found on dedicated sound cards.

So to answer your question exactly, I'd need to know the block diagram of the chip that actually houses the DAC and this will certainly not be the same chip for all Apple computers. It will probably be different by model and often even by production year, so there is no single answer to that question.

Note that in case the system detects an output device that has no volume control (e.g. almost all USB devices have one but the standard does not require one), it could always fall back to regulating the volume entirely in software by applying digital volume control on the CPU. This holds true especially if the system has no controllable audio device at all but just digitally passes audio data to an external device using something like an S/PDIF port, a HDMI cable, or a Bluetooth link. In the later case the receiver has usually an own volume control but all that the system can do to achieve lower volume is sending lower sample values of that link.

This is also what happens if an app itself wants to perform volume control and uses a high level (e.g. AVFoundation) or low level (e.g. CoreAudio) system API to play audio and regulate its playback volume (as iTunes/Music does). Int that case the volume should only affect the audio originating from this app and not the audio from other apps or the system. All playing audio streams are digitally muxed by the system before they are even sent to the chosen audio output, so of course volume can only be regulated digitally when altered before being muxed.

However, if the chosen output device has an own volume control, then this is not what will happen if you regulate system volume with your keyboard or in the menu bar. If your output device has a volume control and the system does support setting this control, this is also the control the system will use for controlling the master audio volume and leave it up to the device how to achieve a lower volume.