Score:2

How can I downmix stereo audio output to mono in PipeWire (on 22.10)?

fr flag

I need a way to set mono audio output on my system.
I had used this solution before: Can I downmix stereo audio to mono?

pacmd load-module module-remap-sink sink_name=mono master=NAME_OF_AUDIO_SINK \
 channels=2 channel_map=mono,mono

However, it stopped working when I upgraded to Kubuntu 22.10, presumably because it now uses PipeWire instead of PulseAudio. When I do pacmd list-sinks I get:
No PulseAudio daemon running, or not running as session daemon.

How can I do the same (downmix stereo audio output to mono) on PipeWire?

I found here a solution to a similar problem, but if I understand correctly that's for getting mono input. I want mono output.
Even better if I can easily switch it to mono/stereo using GUI, or set it to mono only when my stupid earphones are connected.

PS: They should really implement Mono Sound as a profile/configuration on System Settings > Audio, but oh well...

geekley avatar
fr flag
Also asked here: https://askubuntu.com/questions/1409194/enable-mono-audio-output-in-ubuntu-22-04lts
Score:1
fr flag

I managed to make mono audio output work in PipeWire by installing EasyEffects equalizer.

sudo apt install easyeffects
  1. Output > Effects > Add Effect > Stereo Tools
  2. On Stereo Matrix tab, choose "Mono Sum L+R". "Stereo to Mid-Side" seems to work too.
  3. In Preferences, make sure to enable "Launch Service at System Startup".
  4. Create presets for "Mono" and "Stereo" if desired (optional).

EasyEffects - Downmix audio output to mono EasyEffects - Launch service at system startup

nelson6e65 avatar
cn flag
Thanks. This works in my Fedora distro too.
Score:1
cn flag

Maybe you could use qpwgraph and link both L and R channels in a manner similar to this:

enter image description here

Profiles can be saved, but for that I redirect you to the docs. Here is a bit about saving and loading profiles with pipewire on ArchWiki: https://wiki.archlinux.org/title/PipeWire#PipeWire_patch_sets_for_command_line

geekley avatar
fr flag
OK, so I tried this. While this connection in the answer is wrong (it's linking mic to output), I was able to make it work *temporarily* for my case by linking `monitor_FL` to `playback_FR` (my earphone problem is that it has only R output on both sides, so although this isn't "mono" it would work for me; mixing connections didn't work). HOWEVER I was not able to persist settings across reboots. The program is probably buggy, because I couldn't make it apply the profile on startup via command-line - I would have to manually make the connection every time, which doesn't solve my problem.
geekley avatar
fr flag
I tried many different things, but the app doesn't even load the connection in the saved profile correctly.
William Martens avatar
cn flag
@Tooster I have to say; even if this wouldn't work (that is if it won't work), I must say this anyway, a nice program recommendation! +1 for that, really.
Score:0
bs flag
  • Another solution without the need to install another program would be creating a mono output configuration file for PipeWire.

  • For example the following configuration can be done per user session:

    • Create a mono-playback.conf in ~/.config/pipewire/pipewire.conf.d with the following:

      context.modules = [
          { name = libpipewire-module-loopback
              args = {
                  node.description = "Mono Playback Device"
                  capture.props = {
                      node.name      = "mono_output"
                      media.class    = "Audio/Sink"
                      audio.position = [ MONO ]
                  }
                  playback.props = {
                      node.name      = "playback.mono_output"
                      audio.position = [ MONO ]
                      node.passive   = true
                  }
              }
          }
      ]
      
    • Restart pipewire service:

      systemctl --user restart pipewire{,-pulse}.{service,socket}
      
    • This will create a virtual device (a sink in this case) named Mono Playback Device

    • The device can be selected by GUI from an audio applet or system settings. Example using KDE Plasma audio applet.

  • For Further reading to understand the options you can refer to PipeWire Wiki, Virtual Devices section.

I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.