11

For personal reasons (I'm hearing impaired) I need my linux machine to produce mono downmixed sound. Downmixed, not just single channel.

Is there any possibility to force such behavior in ALSA / PulseAudio server? Hardware mixing (short-circuiting L and R channels with some resistors) is not possible at the moment. I'm looking for a software solution to mix two channels into one.

I know that some media players have this functionality, but I'd like the whole system (ie games, flash applications, etc) to produce downmixed audio.

quack quixote
  • 42,186
  • 14
  • 105
  • 129
Neo
  • 2,047
  • 4
  • 18
  • 20

1 Answers1

11

I haven't done any extensive testing, but this ~/.asoundrc file (or /etc/asound.conf) should work for anything that uses ALSA. Assumes that you only want to deal with two in-channels (left and right), and that your soundcard is at hw:0.

pcm.!default makemono

pcm.makemono {
    type route
    slave.pcm "hw:0"
    ttable {
        0.0 1    # in-channel 0, out-channel 0, 100% volume
        1.0 1    # in-channel 1, out-channel 0, 100% volume
    }
}

Check out the official documentation for details on how to fine-tune/complicate things further.

goldPseudo
  • 2,208
  • 15
  • 22
  • This got me on the right track, thank you! Now that PulseAudio is a thing, I had to also copy `/etc/pulse/default.pa` to `~/.config/pulse/default.pa` and uncomment the line that says `load-module module-alsa-sink`, then run `pulseaudio -k` to pick up the changes. See also: https://superuser.com/a/1158248/9599 – We Are All Monica Jun 29 '19 at 06:20