[alsa-devel] USB-Audio.conf routing and dmix

Alexander E. Patrakov patrakov at gmail.com
Fri May 15 07:53:51 CEST 2015


15.05.2015 07:07, sylvain.bertrand at gmail.com wrote:
> On Wed, May 13, 2015 at 11:32:15AM +0000, sylvain.bertrand at gmail.com wrote:
>> On Wed, May 13, 2015 at 11:24:32AM +0200, Clemens Ladisch wrote:
>>>>> I linked the surround51 and surround71 pcms with the 'disable-able' dmix
>>>>> section from the default pcm.
>>>
>>> These devices are not supposed to use plug or dmix.
>>
>> Ok. Then, there is no pcm to output 5.1 sound with dmix.
>>
>> Does it mean that the application is in charge to build a alsa-lib pipeline
>> with dmix pcm and surround51 pcm, in order to let other applications output 5.1
>> sound at the same time?
>
> Then what is the "Right"(tm) way to do that?
>

[this is my personal opinion, in no way official]

The right way seems to be to use PulseAudio. Pure ALSA, in its default 
configuration, just does not support mixing 5.1 audio, on any card. This 
default cannot really be changed, because there are many people who use 
5.1 cards for output to stereo headphones only, i.e. who need automatic 
downmixing if an app (such as VLC) starts a 5.1 stream. The default 
plug/dmix setup provides such downmixing.

Those who actually have a 5.1 system and need to opt out of this 
downmixing must actively do it (both with ALSA and with PulseAudio). For 
PulseAudio, it is as simple as starting pavucontrol and selecting a 5.1 
output profile for the relevant card. For ALSA, a config has to be 
created from scratch. On some cards, the config suggested by mpv 
developers works:

https://github.com/mpv-player/mpv/wiki/ALSA:-Surround-Sound-and-Upmixing

As an application developer, just tell your users "your default device 
needs to support 5.1, see you there", as mpv developers did. This will 
be the case either with PulseAudio or with a hacked .asoundrc.

OTOH, I will be happy to review a patch that makes the dmix channel 
count configurable on a per-card basis in .asoundrs in a way similar to 
the rate. But that's hard - you will have to change all card configs, 
and implement some conditional blocks because some cards expose 
themselves as several stereo devices, so you want a multi plugin on 
several instances of dmix then.

-- 
Alexander E. Patrakov


More information about the Alsa-devel mailing list