Re: Changing the way the OS responds to a USB DAC
Re: Changing the way the OS responds to a USB DAC
- Subject: Re: Changing the way the OS responds to a USB DAC
- From: Brian Willoughby <email@hidden>
- Date: Sat, 03 Mar 2012 15:31:23 -0800
On Mar 3, 2012, at 09:46, SB Tech wrote:
perhaps it's easier to simply outline my understanding of the
digital audio output process, indicate what I perceive as an
undesired response by the OS to my digital audio setup, and go from
there. I'm fully willing to accept that my misunderstanding of the
DAC process is causing confusion and misapprehensions.
In brief: ALAC file is unpacked to LPCM by iTunes, which sends the
resultant data via the USB port to the attached DAC, which converts
it to analogue audio and sends it to the amp, and thence to the
output (headphones or speakers).
You're missing a link. iTunes does not send data via USB. Instead,
iTunes sends data to CoreAudio, which then sends data to USB or non-
USB hardware as selected by the Default Output Audio Device.
It's at this link where the OS volume setting takes effect. If a
given CoreAudio device advertises a volume control, then the OS will
use it if it is in the right configuration. Otherwise, if a
CoreAudio device has no appropriate volume control, then the OS
volume setting is defeated.
As far as I understand it, the OS's volume setting has nothing to
do with the data that's sent to the DAC, which is why in the case
of the optical digital out the controls are all disabled. Perhaps
iTunes' volume control modifies the output, but that doesn't
surprise me, which is why I've long listened to the advice that
states you should always keep iTunes volume control at maximum.
Here is what you are missing: CoreAudio is a shared system that
allows hardware to define its own volume controls, or not. The (USB)
DAC is not wholly owned by iTunes or any other audio application. In
fact, any application can control the device volume if the driver for
the DAC makes a volume control available. If the audio device (DAC)
is not USB, then it will most likely need a custom driver that is
specific to the hardware, and that driver will be in control of
whether volume control(s) is/are made available, or not. If the DAC
is USB, then the USB Audio Class Specification determines whether
volume controls are available, or not. Since there is one system
driver for all USB Audio Class Devices, then the same Apple driver
looks at the Descriptors for individual Devices to determine what
volume controls are made available for each specific device, if any.
You seem to misunderstand the nature of the OS volume setting. If an
individual application such as iTunes offers a volume control, then
it is most likely using that control to modify the data that is sent
to the DAC. That much is easy to understand. However, the device
itself can advertise a volume control or controls to CoreAudio, and
this is completely independent of all applications that are sending
audio data. If the device offers volume control, then the OS volume
setting affects the data at the device level, and it does affect the
DAC or optical output. Some device hardware uses analog volume
controls, and thus the actual DAC data is unchanged, but the voltage
is reduced. Other device hardware is pure digital, and thus the
actual DAC data is changed.
Some devices define a global volume control, and if the correct
CoreAudio messages are sent to the driver then the volume will
change. The OS volume setting is generally connected to such a
device volume control. Other devices may define multiple volume
controls, one per stream (stereo, surround) or one per channel. Yet
other devices may define no volume controls at all. If Audio MIDI
Setup does not see a useful volume control at the device level, then
the OS volume setting will be disabled.
If you are unhappy with the fact that some of your audio devices have
OS volume settings that can be changed, while others of your audio
devices result in the OS volume setting being disabled, then you need
to suggest to the vendor for that specific audio device to change
their driver (if non-USB, or non-UAC) or their Descriptors (if USB
Audio). For example, if you don't like how the built-in optical
outputs respond/disable OS volume settings, then make a suggestion to
Apple to change their built-in CoreAudio driver. If you don't like
how particular USB Audio Devices respond/disable OS volume settings,
then make a suggestion to the vendor of that hardware to change their
USB Descriptors, with the understanding that there must be some sort
of digital or analog volume hardware in their device or else they
cannot create or enable a volume control out of thin air.
I will reiterate that your questions seem to basically be "user"
oriented. This mailing list and the USB mailing list are oriented
towards the kinds of "developers" who are creating audio hardware,
whether it is USB or not. Hardware developers are tasked with making
sure that CoreAudio understands what sorts of volume controls are
possible in their hardware. Once described to CoreAudio via custom
driver or USB Descriptors, non-hardware developers basically have no
ability to add/remove or enable/disable a volume control at the OS
level. In other words, there are mechanisms available to developers
that are not available to users.
Finally, perhaps I was not clear that I was suggesting a workaround
for "users." If a volume control appears in the OS, and you wish it
to be "disabled" then your best option is to set that volume control
to 0 dB. You cannot disable it as a "user" but you can effectively
make it leave the audio data unchanged.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden