RME Babyface Pro FS and PipeWire

Out of the box the headphones output of the Babyface Pro FS doesn’t do anything with PipeWire. You could connect it manually but it would be nice if this would happen automatically whenever a new PipeWire source appears and the RME is being used with the Pro audio profile.

With the help of the Combine Stream module I managed to set this up. The PipeWire configuration file to achieve simultaneous playback on both the default outputs and the headphones output can be found here: https://codeberg.org/autostatic/gists/raw/branch/main/babyface-pro-fs.conf Put it in ~/.config/pipewire/pipewire.conf.d/babyface-pro-fs.conf, restart PipeWire with systemctl --user restart peipewire and you should be good to go. I’ve asked in #pipewire on the OFTC IRC server if there were maybe easier ways to achieve this but the maintainer told me this is the best way.

For completeness’ sake I’ll also post the content of the PipeWire configuration file here.

# ~/.config/pipewire/pipewire.conf.d/babyface-pro-fs.conf

context.modules = [
    {   name = libpipewire-module-combine-stream
        args = {
            combine.mode = sink
            node.name = "Babyface_Pro_FS_All"
            node.description = "Babyface Pro FS All"
            combine.latency-compensate = false
            combine.props = {
                audio.position = [ FL FR ]
            }
            stream.props = {
                stream.dont-remix = true      # link matching channels without remixing
            }
            stream.rules = [
                {
                    matches = [
                        {
                            media.class = "Audio/Sink"
                            node.name = "alsa_output.usb-RME_Babyface_Pro__73088117__3A179EAA722D068-00.pro-output-0"
                        }
                    ]
                    actions = {
                        create-stream = {
                            combine.audio.position = [ FL FR ]
                            audio.position = [ AUX0 AUX1 AUX2 AUX3 ]
                            api.alsa.period-size = 1024
                            api.alsa.period-num = 3
                        }
                    }
                }
            ]
        }
    }
]

Edit: What I could also have done was reading the manual. In chapter 34 on page 91 the Copy Mode is explained. By enabling Copy Mode, which I just did, all output gets copied to channels 1/2, 3/4 (phones) and SPDIF/ADAT channels 1/2. This works way better and it can be set up on the device itself.

RME Babyface Pro FS and PipeWire