Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
98 lines (80 sloc) 2.27 KB

Splitting front and rear outputs .asoundrc

From the ALSA wiki

Jump to: navigation, search

Splitting front and rear outputs

I had a lot of trouble first figuring out how I could split front and rear channels into two devices that could be used independently. The following .asoundrc file is what I came up with. It can be used with mplayer for example as follows:

mplayer -ao alsa1x:frontx file1.avi
mplayer -ao alsa1x:rearx file2.mp3

Enjoy...

pcm.dshare {
    type dmix
    ipc_key 2048
    slave {
        pcm "hw:0"
        rate 44100
        period_time 0
        period_size 1024
        buffer_size 8192
        channels 4
    }
    bindings {
        0 0
        1 1
        2 2
        3 3
    }
}
pcm.frontx {
    type plug
    slave {
        pcm "dshare"
        channels 4
    }
    ttable.0.0 1
    ttable.1.1 1
}
pcm.rearx {
    type plug
    slave {
        pcm "dshare"
        channels 4
    }
    ttable.0.2 1
    ttable.1.3 1
}

Note, for ttable you might use fractions but then you cannot use LC_NUMERIC locales that use characters other than '.' as decimal separator. Actually this is a bug and has already been fixed in versions higher than 1.0.8.

With this setup, playing a mono file only produces sound in the left channel, is there any way to make mono files automatically go to both speakers? //Mikachu

To automatically upmix mono to stereo, you need to add another layer:

pcm.rearx {
   type plug
   slave {
       pcm {
           type plug
           slave {
               pcm "dshare"
               channels 4
           }
           ttable.0.2 1
           ttable.1.3 1
       }
       channels 4
   }
   route_policy default #This upmixes mono to stereo
}

//Jmkinny

Retrieved from "http://alsa.opensrc.org/Splitting_front_and_rear_outputs_.asoundrc"

Category: Howto