You are not logged in.

#1 2024-01-04 18:40:17

betaminos
Member
Registered: 2024-01-04
Posts: 5

Combine front and rear audio channels with Pipewire

Hello all,

I have been using Arch for some time and have come across an issue that has me stumped:
My laptop has got a pseudo 4-channel setup for its sound system, with FR and FL being a small woofer speaker, RL and RR being the actual stereo speakers.

What I am trying to do is to get the sound of the left channel duplicated and sent to FL (woofer) and RL (left speaker), and the right channel to FR and RR.
However, I am struggling with how to set this up in Pipewire as a permanent solution :-(

My attempt in qpwgraph works just fine but I need to recreate this every time the stream changes:
A qpwgraph showing output_FL being linked to playback_FL and playback_RL - output_FR is similar

I have tried the upmixing as described in Pipewire's Guides, but I am not able to make it work.
After creating the files, and restarting, I am still getting the sound only from FL and FR (which is the woofer on the back of my laptop).

Can you please help me?

Thank you for your time smile

Offline

#2 2024-01-22 19:56:09

betaminos
Member
Registered: 2024-01-04
Posts: 5

Re: Combine front and rear audio channels with Pipewire

I have since come across this post, seemingly struggling with a similar topic:
https://forum.manjaro.org/t/pipewire-re … -1/84774/3

The solution seemed to be creating a .conf file (e.g. 40-upmix.conf) in ~/.config/pipewire/client.conf.d/ with this content:

# Enables upmixing
stream.properties = {
    channelmix.upmix      = true
    channelmix.upmix-method = simple
    channelmix.mix-lfe    = true
    channelmix.lfe-cutoff = 0
}

In addition to this, I ended up adding the following part into ~\.config/pipewire/pipewire.conf (after copying it from /usr/share/pipewire/pipewire.conf).
This allows to switch rear and front channel (making the high frequency speakers actually front, with the "woofer" pushed to the rear) via a clever loopback use I found here: https://askubuntu.com/questions/1382581 … on-on-pipe
I ended up using the "libpipewire-module-loopback" part in this config and adjusting it as follows:

{   name = libpipewire-module-loopback
        args = {
            #audio.position = [ FL FR FL FR ]
            capture.props = {
                # INPUT
                media.class = Audio/Sink
                node.name = my_sink
                node.description = "Fix my sound!"
                audio.channels = 4
            }
            playback.props = {
                # OUTPUT
                media.class = Audio/Source
                node.name = my_sink
                node.description = "Fix my sound!"
                audio.channels = 4
                audio.position = [ RL RR FL FR ]
            }
        }
    }

This creates a loopback audio device called "Fix my sound!" and seems team up with the upmixing to work around my previous issue.
I am still not sure why it did not reliably work previously, but at least it is working now smile
(The only concern left: my woofer seems much easier to power or to receive much more power - resulting in an imbalance compared to the small speakers, but I have yet to find a way to balance it in Pipewire configruations and am working around it via the GUI)

EDIT yet again:
I am stumped.
The configuration shown above works fine except for this video: https://www.youtube.com/watch?v=b7bORW_R4gY
In this, the sound is once again coming only from the woofer (which should be rear only) - no upmixing and no high pitch speakers sad
Other videos, like this one https://www.youtube.com/watch?v=d6P99CDSMKk, work just fine.

Last edited by betaminos (2024-01-22 21:15:00)

Offline

Board footer

Powered by FluxBB