Advanced Linux Sound Architecture/Example Configurations (Português)
Este artigo deve servir como um guia para configurações mais avançadas do ALSA. A configuração fica armazenada em /etc/asound.conf como mencionado no artigo principal. Nenhuma das configurações abaixo tem a garantia de funcionar.
Upmixagem de fontes stereo para 7.1 usando dmix enquanto fontes saturadas não fican upmixadas
# 2008-11-15
#
# Esse .asoundrc vai permitir o seguinte:
#
# - upmix com arquivos stereo para alto-falantes 7.1.
# - reproduzir sons em 7.1 real, em alto-falantes 7.1,
# - permitir a reprodução de ambas fontes stereo(upmixado) e surround(7.1) ao mesmo tempo
# - usar o 6º e 7º canal (alto-falantes laterais) como uma placa de som separada, i,e, para fones de ouvido
#   (Isso é chamado de saída "alternativa" ao longo deste arquivo, nomes de dispositivos prefixados com 'a')
# - reproduz fontes mono em stereo (como skype & ekiga) na saída alternativa
#
# Certifique-se de ter "8 Channels" e NÃO "6 Channels" selecionado no alsamixer!
#
# Por favor tente os seguintes comandos, para se certificar que tudo está funcionado como deveria.
#
# Testar upmix stereo:       speaker-test -c2 -Ddefault -twav
# Testar surround(5.1):      speaker-test -c6 -Dplug:dmix6 -twav
# Testar surround(7.1):      speaker-test -c6 -Dplug:dmix8 -twav
# Testar saída alternativa:  speaker-test -c2 -Daduplex -twav
# Testar upmix mono:         speaker-test -c1 -Dmonoduplex -twav
#
#
# Ele pode não funcionar sem uma configuração manual para todas as placas. Se não funcionar para você, leia
# os comentários ao longo deste arquivo.
# A base deste arquivo foi escrito por wishie de #alsa e, então, modificado com as informações de várias fontes
# por squisher. Svenstaro modificou-o para suporte a saída 7.1.
# Defina a placa de som para usar
pcm.snd_card {
    type hw
    card 0
    device 0
}
# dmix de 8 canal - saída de qualquer áudio, para todos os 8 alto-faltantes
pcm.dmix8 {
    type dmix
    ipc_key 1024
    ipc_key_add_uid false
    ipc_perm 0660
    slave {
        pcm "snd_card"
        rate 48000
        channels 8
        period_time 0
        period_size 1024
        buffer_time 0
        buffer_size 5120
    }
# Algumas placas, como as variantes "nforce" exigem que o seguinte seja descomentado.
# Ele roteia o áudio para os alto-falantes corretos.
#    bindings {
#        0 0
#        1 1
#        2 4
#        3 5
#        4 2
#        5 3
#        6 6
#        7 7
#    }
}
# upmixing - duplica dados stereo para todos os 8 canais
pcm.ch71dup {
    type route
    slave.pcm dmix8
    slave.channels 8
    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
    ttable.0.6 1
    ttable.1.7 1
}
# isso cria uma placa de som de seis canais
# e emite para o oitavo canal
# i.e. para uso de mplayer, tive que definir em ~/.mplayer/config:
#   ao=alsa:device=dmix6
#   channels=6
pcm.dmix6 {
    type route
    slave.pcm dmix8
    slave.channels 8
    ttable.0.0 1
    ttable.1.1 1
    ttable.2.2 1
    ttable.3.3 1
    ttable.4.4 1
    ttable.5.5 1
    ttable.6.6 1
    ttable.7.7 1
}
# compartilha o microfone, i.e. porque virtualbox pega-o por padrão
pcm.microphone {
    type dsnoop
    ipc_key 1027
    slave {
        pcm "snd_card"
    }
}
# taxa de conversão, necessário para i.e. wine
pcm.2chplug {
    type plug
    slave.pcm "ch71dup"
}
pcm.a2chplug {
    type plug
    slave.pcm "dmix8"
}
# roteia o canal para a alternativa
# saída de 2 canais que se torna o 7º e 8º canal
# na placa de som real
#pcm.alt2ch {
#    type route
#    slave.pcm "a2chplug"
#    slave.channels 8
#    ttable.0.6    1
#    ttable.1.7    1
#}
# skype e ekiga são apenas mono, então roteia canal esquerdo para o canal direito
# nota: isso roteia 2 canais para a alternativa
pcm.mono_playback {
    type route
    slave.pcm "a2chplug"
    slave.channels 8
    # Envia canal 0 do Skype para os alto-falantes L e R no volume máximo
    #ttable.0.6    1
    #ttable.0.7    1
}
# dispositivo "full-duplex" para uso com aoss
pcm.duplex {
    type asym
    playback.pcm "2chplug"
    capture.pcm "microphone"
}
#pcm.aduplex {
#    type asym
#    playback.pcm "alt2ch"
#    capture.pcm "microphone"
#}
pcm.monoduplex {
    type asym
    playback.pcm "mono_playback"
    capture.pcm "microphone"
}
# para aoss
pcm.dsp0 "duplex"
ctl.mixer0 "duplex"
# softvol gerencia volume no alsa
# i.e. wine gosta disso
pcm.mainvol {
    type softvol
    slave.pcm "duplex"
    control {
        name "2ch-Upmix Master"
        card 0
    }
}
#pcm.!default "mainvol"
# define o dispositivo padrão de acordo com o ambiente
# variável ALSA_DEFAULT_PCM e padrão para mainvol
pcm.!default {
    @func refer
    name { @func concat 
           strings [ "pcm."
                     { @func getenv
                       vars [ ALSA_DEFAULT_PCM ]
                       default "mainvol"
                     }
           ]
         }
}
# descomente o seguinte se você deseja ser capaz de controlar
# o dispositivo mixador também por meio de variáveis de ambiente
#ctl.!default {
#    @func refer
#    name { @func concat 
#           strings [ "ctl."
#                     { @func getenv
#                       vars [ ALSA_DEFAULT_CTL
#                              ALSA_DEFAULT_PCM
#                       ]
#                       default "duplex"
#                     }
#           ]
#         }
#}
Surround51 incl. stereo de upmix & dmix, troca L/R, alto-falante em posição ruim na sala
Prática ruim, mas funciona bem para a quase tudo sem personalização adicional per-programa/arquivo:
pcm.!default {
    type route
## encaminha para mixer pcm definido abaixo
    slave.pcm dmix51
    slave.channels 6
## "Canais Nativos" stereo, troca esquerda/direita
    ttable.0.1 1
    ttable.1.0 1
## esquerda/direita original comentada
#    ttable.0.0 1
#    ttable.1.1 1
## rota "surround nativo" de forma que ele ainda funcione, mas com sinal
## mais fraco (+ troca RL/RF), porque meus alto-falantes traseiros são
## mais aleatórios do que realmente atrás de mim
    ttable.2.3 0.7
    ttable.3.2 0.7
    ttable.4.4 0.7
    ttable.5.5 0.7
## stereo => "upmix" de quatro alto-falantes para alto-falantes "traseiros" + troca L/R
    ttable.0.3 1
    ttable.1.2 1
## stereo L+R => junta ao Centro & Subwoofer 50%/50%
    ttable.0.4 0.5
    ttable.1.4 0.5
    ttable.0.5 0.5
    ttable.1.5 0.5
## para testar: "$ speaker-test -c6 -twav" e: "$ speaker-test -c2 -twav"
}
pcm.dmix51 {
	type dmix
	ipc_key 1024
# deixe múltiplos usuários compartilhar
	ipc_key_add_uid false 
# permissões IPC (octal, padrão 0600)
# acho que alterar isso corrigiu algo - mas não tenho certeza do quê.
	ipc_perm 0660 # 
	slave {
## isso é específico para meu hda_intel. Geralmente hd:0 já está bom; Para localizar: $ aplay -L 
		pcm surround51 
# essa taxa faz minha placa de som crepitar
#		rate 44100
# essa taxa evita flash o firefox de reproduzir som, mas eu não preciso disso
       rate 48000
       channels 6
## Quaisquer outros valores nas 4 linhas abaixo parecem fazer minha placa de som crepitar também
       period_time 0
       period_size 1024
       buffer_time 0
       buffer_size 4096
	}
}