[alsa-devel] USB-Audio.conf routing and dmix
Hi,
I have a bose USB audio 5.1 device, a generic USB audio device.
I noticed that the proper channels routing was missing from the default generic USB pcm, but dmix was used. And for the surround pcms I noticed it was the other way around!
I did modify the default pcm to include a routing plugin. I put 8 channels in the routing plugin. I guess the proper way would be to detect the hw card number of channels and select a route plugin configuration with the correct count of channels (maybe their is a function to get that info?).
I linked the surround51 and surround71 pcms with the 'disable-able' dmix section from the default pcm.
I did not touch the surround40* pcms, surround pcms which are specific to some cards and the iec958 ones.
http://filebin.ca/214UTT8fBnUm/USB-Audio.conf
regards,
On Sat, May 09, 2015 at 12:20:17AM +0000, sylvain.bertrand@gmail.com wrote:
Hi,
I have a bose USB audio 5.1 device, a generic USB audio device.
I noticed that the proper channels routing was missing from the default generic USB pcm, but dmix was used. And for the surround pcms I noticed it was the other way around!
I did modify the default pcm to include a routing plugin. I put 8 channels in the routing plugin. I guess the proper way would be to detect the hw card number of channels and select a route plugin configuration with the correct count of channels (maybe their is a function to get that info?).
I linked the surround51 and surround71 pcms with the 'disable-able' dmix section from the default pcm.
I did not touch the surround40* pcms, surround pcms which are specific to some cards and the iec958 ones.
did I post on the right mailing list for alsa-lib default configuration improvment?
sylvain.bertrand@gmail.com wrote:
did I post on the right mailing list for alsa-lib default configuration improvment?
Yes.
I noticed that the proper channels routing was missing from the default generic USB pcm
The "default" device is supposed to have two channels.
I guess the proper way would be to detect the hw card number of channels and select a route plugin configuration with the correct count of channels (maybe their is a function to get that info?).
The number of channels can depend on other factors.
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.
Regards, Clemens
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?
regards,
On Wed, May 13, 2015 at 11:32:15AM +0000, sylvain.bertrand@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?
15.05.2015 07:07, sylvain.bertrand@gmail.com wrote:
On Wed, May 13, 2015 at 11:32:15AM +0000, sylvain.bertrand@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.
15.05.2015 10:53, Alexander E. Patrakov wrote:
15.05.2015 07:07, sylvain.bertrand@gmail.com wrote:
On Wed, May 13, 2015 at 11:32:15AM +0000, sylvain.bertrand@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.
I need to test things before posting. This is wrong, plug/dmix does not include the extra channels in the stereo mix.
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.
This is still my position.
I have a bose USB audio 5.1 device, a generic USB audio device.
I noticed that the proper channels routing was missing from the default
generic
USB pcm, but dmix was used. And for the surround pcms I noticed it was the other way around!
I did modify the default pcm to include a routing plugin. I put 8
channels in
the routing plugin. I guess the proper way would be to detect the hw card number of channels and select a route plugin configuration with the
correct
count of channels (maybe their is a function to get that info?).
I linked the surround51 and surround71 pcms with the 'disable-able' dmix section from the default pcm.
I did not touch the surround40* pcms, surround pcms which are specific to
some
cards and the iec958 ones.
Post the output of your usb audio
lsusb -vvvv
Most likely your usb audio device does not support stereo
Post output of alsa-info.sh
Pulseaudio don't support if your volume control have more than two channels
http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/src/modules/alsa?id...
My USB audio does work fine. The only thing: apps cannot output at the same time 5.1 on that device. (stereo goes through dmix by default so it's fine).
Why does alsa-lib limit dmix/plug usage to stereo only? Is there a good reason?
participants (4)
-
Alexander E. Patrakov
-
Clemens Ladisch
-
Raymond Yau
-
sylvain.bertrand@gmail.com