pcm.hda-intel { type hw card 0 } ctl.hda-intel { type hw card 0 } pcm.snd_card { type hw card 0 # change to your cards number or name } # 6 channel dmix: pcm.dmix6 { type dmix ipc_key 1024 ipc_key_add_uid false # let multiple users share ipc_perm 0660 # IPC permissions (octal, default 0600) slave { pcm snd_card # see below rate 48000 channels 6 period_time 0 period_size 1024 # try 2048 against skipping buffer_time 0 buffer_size 5120 # in case of problems reduce this # in case of skipping, try increasing } } pcm.jackplug { type plug slave { pcm "jack" } } pcm.jack { type jack playback_ports { 0 alsa_pcm:playback_1 1 alsa_pcm:playback_2 } capture_ports { 0 alsa_pcm:capture_1 1 alsa_pcm:capture_2 } } # upmixing: pcm.ch51dup { type route slave.pcm dmix6 slave.channels 6 ttable.0.0 1 ttable.1.1 1 ttable.0.2 1 ttable.1.3 1 ttable.0.4 0.5 ttable.1.4 0.5 ttable.0.5 0.5 ttable.1.5 0.5 } pcm.duplex { type asym playback.pcm "51to2m" # playback.pcm "ch51dup" # upmix first # playback.pcm "dmix6" # just pass to 6 channel dmix # capture.pcm "dsnoop:0" # doesn't work for me capture.pcm "snd_card" } # change default device: pcm.!default { type plug slave.pcm "duplex" } # for aoss pcm.dsp "duplex" pcm.dsp1 "duplex" pcm.51to2m { # This is like the pcm51to40 from # http://www.halfgaar.net/surround-sound-in-linux # but meant to use Dolby Surround (2.0 Matrix encoded) type route slave.pcm surround51 slave.channels 6 # 0 - Front Left ttable.0.0 1 # 1 - Front Right ttable.1.1 1 # 2 - Rear Left # TODO: get -90 phase shift ttable.2.0 0.5 # 3 - Rear Right # TODO: get +90 phase shift ttable.3.1 0.5 # 4 - Center # Center channel routing (routed to front-left and front-right), # 6dB gaindrop (gain of 0.5) per channel ttable.4.0 0.5 ttable.4.1 0.5 # 5 - LFE # LFE channel routing (routed to front-left and front-right), # 6dB gaindrop (gain of 0.5) per channel ttable.5.0 0.5 ttable.5.1 0.5 }