You are not logged in.

#1 2023-05-06 18:21:56

QuiZNo
Member
From: 127.0.0.1
Registered: 2015-10-07
Posts: 3

Pipewire-pulse Sink Downmixing to Mono Instead of Stereo

I have a Focusrite Scarlett 18i8, which is recognized by ALSA as being 7.1 surround while only having stereo outputs. This isn't normally an issue, but some games playing through wine will configure themselves for 7.1 surround causing some missing sounds when playing back in stereo. To work around this issue, I have created a stereo sink that only maps the front left and front right channels. This is a configuration I've had in place for well over a year now.

After a very recent update my stereo sink is now playing back as mono.

In /etc/pipewire/pipewire-pulse.conf under the context.exec section I have the following config to create the stereo sink.

{ path = "pactl"        args = "load-module module-remap-sink sink_name=Scarlett-18i8-Stereo sink_properties=device.description=Scarlett-18i8-Stereo remix=no master=alsa_output.usb-Focusrite_Scarlett_18i8_USB_00013448-00.analog-surround-71 channels=2 channel_map=front-left,front-right" }

Here is the sink output showing as mono.

pactl list sinks
Sink #38
	State: SUSPENDED
	Name: Scarlett-18i8-Stereo
	Description: Scarlett-18i8-Stereo
	Driver: PipeWire
	Sample Specification: float32le 1ch 44100Hz
	Channel Map: front-left
	Owner Module: 536870913
	Mute: no
	Volume: front-left: 65536 / 100% / 0.00 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: Scarlett-18i8-Stereo.monitor
	Latency: 0 usec, configured 0 usec
	Flags: DECIBEL_VOLUME LATENCY 
	Properties:
		node.name = "Scarlett-18i8-Stereo"
		device.description = "Scarlett-18i8-Stereo"
		media.class = "Audio/Sink"
		device.class = "filter"
		audio.channels = "2"
		audio.position = "FL"
		node.group = "remap-sink-536870913"
		pulse.module.id = "536870913"
		node.link-group = "loopback-569-12"
		node.virtual = "true"
		resample.prefill = "true"
		media.name = "Scarlett-18i8-Stereo input"
		stream.is-live = "true"
		node.autoconnect = "true"
		node.want-driver = "true"
		adapt.follower.spa-node = ""
		object.register = "false"
		factory.id = "6"
		clock.quantum-limit = "8192"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		client.id = "36"
		object.id = "38"
		object.serial = "38"
	Formats:
		pcm
pacman -Q | grep pipewire
lib32-libpipewire 1:0.3.70-1
lib32-pipewire 1:0.3.70-1
lib32-pipewire-jack 1:0.3.70-1
libpipewire 1:0.3.70-2
pipewire 1:0.3.70-2
pipewire-alsa 1:0.3.70-2
pipewire-audio 1:0.3.70-2
pipewire-jack 1:0.3.70-2
pipewire-media-session 1:0.4.2-2
pipewire-pulse 1:0.3.70-2

Here is the routing in qpwgraph. Normally FL would patch to AUX0 and FR would patch to AUX1, but there no longer a FR channel.
qgfvt3H.jpeg

Has the formatting in pipewire-pulse.conf changed that would cause my configuration to be invalid?

Offline

#2 2023-05-06 19:15:08

QuiZNo
Member
From: 127.0.0.1
Registered: 2015-10-07
Posts: 3

Re: Pipewire-pulse Sink Downmixing to Mono Instead of Stereo

I may have found the solution I was looking for here. https://gitlab.freedesktop.org/pipewire … tual-sinks

I've removed my previous config and added the following to /etc/pipewire/pipewire-pulse.conf.

context.modules = [
    { name = libpipewire-module-loopback
      args = {
	node.description = "Scarlett 18i8 Stereo Outputs 1 & 2"
	capture.props = {
	    node.name = "18i8_stereo_1_2"
	    media.class = "Audio/Sink"
	    audio.position = [ FL FR ]
	}
	playback.props = {
	    node.name = "playback.18i8_stereo_1_2"
	    audio.position = [ FL FR ]
	    target.object = "alsa_output.usb-Focusrite_Scarlett_18i8_USB_00013448-00.analog-surround-71"
	    stream.dont-remix = true
	}
    }
]
pactl list sinks
Sink #36
	State: IDLE
	Name: 18i8_stereo_1_2
	Description: Scarlett 18i8 Stereo Outputs 1 & 2
	Driver: PipeWire
	Sample Specification: float32le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: 18i8_stereo_1_2.monitor
	Latency: 0 usec, configured 0 usec
	Flags: DECIBEL_VOLUME LATENCY 
	Properties:
		node.name = "18i8_stereo_1_2"
		media.class = "Audio/Sink"
		audio.position = "[ FL FR ]"
		device.description = "Scarlett 18i8 Stereo Outputs 1 & 2"
		node.group = "loopback-559-11"
		node.link-group = "loopback-559-11"
		node.virtual = "true"
		resample.prefill = "true"
		media.name = "Scarlett 18i8 Stereo Outputs 1 & 2 input"
		stream.is-live = "true"
		node.autoconnect = "true"
		node.want-driver = "true"
		adapt.follower.spa-node = ""
		object.register = "false"
		factory.id = "6"
		clock.quantum-limit = "8192"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		client.id = "34"
		object.id = "36"
		object.serial = "36"
	Formats:
		pcm

I still have no idea what caused the previous config to no longer work.

Last edited by QuiZNo (2023-05-06 22:18:39)

Offline

Board footer

Powered by FluxBB