[pulseaudio-discuss] RME Babyface Pro: How do I get pulseaudio to see output 3/4?

Allan Wind allan at yaxto.com
Tue Oct 25 22:02:58 UTC 2016


Hi Tanu,

Thanks for looking into this for me.

On 2016-10-25 17:15:57, Tanu Kaskinen wrote:
> If there are profiles with more channels, they will anyway be surround
> oriented, but that's still better than having just a 2-channel sink
> available. If such profiles aren't available, you'll have to write the
> profile configuration yourself.

Here are the existing profiles which did not look interesting:

input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority: 60, available: yes)
input:iec958-stereo: Digital Stereo (IEC958) Input (sinks: 0, sources: 1, priority: 55, available: yes)
output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 6000, available: yes)
output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority: 6060, available: yes)
output:analog-stereo+input:iec958-stereo: Analog Stereo Output + Digital Stereo (IEC958) Input (sinks: 1, sources: 1, priority: 6055, available: yes)
output:iec958-stereo: Digital Stereo (IEC958) Output (sinks: 1, sources: 0, priority: 5500, available: yes)
output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5560, available: yes)
output:iec958-stereo+input:iec958-stereo: Digital Stereo Duplex (IEC958) (sinks: 1, sources: 1, priority: 5555, available: yes)
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)

I had already looked through the user documentation and was not 
able to find 
<https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/Profiles/>
which appears to the relevant information.  Should there be 
something in the faq?

Anyways, I wrote the attached udev rule for my device, then 
/usr/share/pulseaudio/alsa-mixer/profile-sets/rme-babyface-pro.conf:

[General]
auto-profiles = no

[Mapping headphone]
device-strings = hw:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 analog-output-mono
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headset-mic
priority = 2

[Mapping speaker]
device-strings = hw:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 analog-output-mono
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headset-mic
priority = 1

The device strings you get from `aplay -L`, right?  I know there 
is no (alsa) mixer support for the device, so should I leave 
path-input blank or leave it out?  How do I know what 
paths-output should be?  There is a reference in the "pulseaudio 
paths" to  /usr/share/lib/pulseaudio/alsa-mixer/paths which I 
don't have on my system.  There is also no 
/proc/asound/card1/codec* files.

The configuration (in pavucontrol) remains unchanged even after I 
`devadm control --reload-rules`, replug the device, and
restart pulseaudio.

In the debugging section it says `udevadm info -qall -p 
/sys/class/sound/card1` should tell me which profile is being 
used.  What am I looking for specifically?

P: /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/sound/card1
E: 
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/sound/card1
E: ID_BUS=usb
E: ID_FOR_SEAT=sound-pci-0000_00_14_0-usb-0_6_1_0
E: ID_ID=usb-RME_Babyface_Pro__70793162__926E13156329DC8-00
E: ID_MODEL=Babyface_Pro__70793162_
E: ID_MODEL_ENC=Babyface\x20Pro\x20\x2870793162\x29
E: ID_MODEL_ID=3fb0
E: ID_PATH=pci-0000:00:14.0-usb-0:6:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_6_1_0
E: ID_REVISION=0001
E: ID_SERIAL=RME_Babyface_Pro__70793162__926E13156329DC8
E: ID_SERIAL_SHORT=926E13156329DC8
E: ID_TYPE=audio
E: ID_USB_CLASS_FROM_DATABASE=Miscellaneous Device
E: ID_USB_DRIVER=snd-usb-audio
E: ID_USB_INTERFACES=:010120:010220:010300:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_PROTOCOL_FROM_DATABASE=Interface Association
E: ID_VENDOR=RME
E: ID_VENDOR_ENC=RME
E: ID_VENDOR_ID=2a39
E: SOUND_INITIALIZED=1
E: SUBSYSTEM=sound
E: SYSTEMD_WANTS=sound.target
E: TAGS=:systemd:seat:
E: USEC_INITIALIZED=1139682166673

Is it not problematic that a customization has to live in 
/usr/share (opposed to /etc)?  I don't get the whole /lib 
containing config files either but that is a different tree.

> Once you have a 4-channel sink available, you'll need to use module-
> remap-sink to create virtual stereo sinks on top of the 4-channel sink.
> There's an example for doing that in the module-remap-sink
> documentation:
> 
> https://wiki.freedesktop.org/www/Software/PulseAudio/Documentation/User/Modules/#index12h3

With that suggestion, I think that I just need to use 
surround40:%f instead of hw:%f

> It would be nice to be able to split multichannel sinks into multiple
> stereo sinks in some more straightforward way, but currently such
> feature doesn't exist.

For pro-audio, I think the logical organization is a set of mono 
input, and a set of mono outputs, then user group those as 
needed.  For me, it would be input 1 => microphone-1, 2 => 
microphone-2, 3 => keyboard-left, input 4 => keyboard-right, 5 
through 11 => adat-input-1 through 8.  You can run ADAT in double 
or quad speed in which case you only get 4 and 2 inputs 
respectively, or as two channel SPDIF.  With output, it would be 
1 => left, 2 => right, 3 => headphone-left, 3 =>
headphone-right, 5 through 11 => adat-output-1 through 8.


/Allan
-- 
Allan Wind
Yaxto - Runs My Business
<https://yaxto.com>
-------------- next part --------------
SUBSYSTEM!="sound", GOTO="pulseaudio_end"
ACTION!="change", GOTO="pulseaudio_end"
KERNEL!="card*", GOTO="pulseaudio_end"
SUBSYSTEMS!="usb", GOTO="pulseaudio_end"

ATTRS{idVendor}=="2a39", ATTRS{idProduct}=="3fb0", ENV{PULSE_PROFILE_SET}="rme-babyface-pro.conf"

LABEL="pulseaudio_end"


More information about the pulseaudio-discuss mailing list