I’m using a DAC that has the Amanero USB to I2S board and the firmware developer is asking if:
“it is possible to send an USB request FU_MUTE_CONTROL with the MUTE state asserted just before the end of a music and a FU_MUTE_CONTROL with MUTE state de-asserted just after the playback started?”
This is to deal with annoying pops at the start or end of a track or between PCM to DSD or DSD to PCM transitions.
We speak to USB via a driver, and have no direct access to USB commands at the level he is describing. Only the driver can send those commands.
But…even if we could, we shouldn’t. It is the responsibility of the USB interface chip + the DAC chip together to manage mute states in order to keep things quiet during transitions. For us to do it would be a hack–ultimately if a DAC is making noises on transitions, it’s always the DAC’s fault(*).
In most DACs, the interface chip tells the DAC chip to mute shortly before performing a transition, and then to unmute shortly after. Many DAC chips have mute implementations that can perform a short fade in/out on mute/unmute to allow for clean transitions on S/PDIF sources, too. This is just an expected task when integrating a USB interface with a DAC chip inside of a DAC.
Every once in a great while, we have run into a product that manages this detail poorly. We usually take up the issue with the manufacturer, and they either decide to fix it via an update, or if that’s not possible, they at least resolve to avoid the issue on future products.
We have two Amanero-based DACs here that make clean transitions on their own, with no “help” from the player–so we know it’s possible.
(*) One exception to this that I’m aware of: There was a version of the Linux kernel that sent a
00000000 PCM-style silence pattern briefly at the start of Native DSD playback–in that case, the reason for artifacts was that kernel bug. That bug has since been fixed, but if you are specifically having a problem only when beginning Native DSD playback, and not other other circumstances, it might be worth investigating an upgrade/kernel patch to address it.
Thanks for the detailed response!
I agree that it should be done in the driver but for some reason the developer writing/updating the Amanero firmware to support native DSD on Linux keeps having problems with pops. You are correct that with the alsa patch to fix the silence pattern and the original firmware there were no pops.
Also with the new beta firmwares there was a high pitched noise coming after music playback stops or is paused.
It almost seems that he cannot detect when actual music is playing when running on Linux and he needs the OS to tell him when.
The USB-level protocol is the same regardless, so it’s hard to see how the USB interface couldn’t know when this stuff is happening.
What I suspect is: the communication pathways between the USB interface and the DAC chip relating to this sort of muting are not well established on this hardware implementation, but the normal volume/mute controls are all hooked up properly. So using the user-facing mute control as a workaround is feeling more viable to him.