Advanced Linux Sound Architecture (Italiano)/Configuration examples (Italiano)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Quanto di seguito riportato dovrebbe servire come guida per le configurazioni più avanzate di ALSA. La configurazione viene salvata in /etc/asound.conf come indicato nell'articolo principale. Di nessuna delle configurazioni riportate di seguito è garantito il funzionamento.

Nota: Molte delle funzioni mostrate di seguito, sono ottenibili più facilmente utilizzando plugin alsa come upmix, il cui utilizzo è spiegato nell'articolo principale su ALSA.

Surround 7.1 con upmix da stereo tramite dmix

~/.asoundrc
# 2008-11-15
 #
 # This .asoundrc will allow the following:
 #
 # - upmix stereo files to 7.1 speakers.
 # - playback real 7.1 sounds, on 7.1 speakers,
 # - allow the playback of both stereo (upmixed) and surround(7.1) sources at the same time.
 # - use the 6th and 7th channel (side speakers) as a separate soundcard, i.e. for headphones
 #   (This is called the "alternate" output throughout the file, device names prefixed with 'a')
 # - play mono sources in stereo (like skype & ekiga) on the alterate output
 #
 # Make sure you have "8 Channels" and NOT "6 Channels" selected in alsamixer!
 #
 # Please try the following commands, to make sure everything is working as it should.
 #
 # To test stereo upmix :      speaker-test -c2 -Ddefault -twav
 # To test surround(5.1):      speaker-test -c6 -Dplug:dmix6 -twav
 # To test surround(7.1):      speaker-test -c6 -Dplug:dmix8 -twav
 # To test alternative output: speaker-test -c2 -Daduplex -twav
 # To test mono upmix:         speaker-test -c1 -Dmonoduplex -twav
 #
 #
 # It may not work out of the box for all cards. If it doesnt work for you, read the comments throughout the file.
 # The basis of this file was written by wishie of #alsa, and then modified with info from various sources by 
 # squisher. Svenstaro modified it for 7.1 output support.
 
 #Define the soundcard to use
 pcm.snd_card {
     type hw
     card 0
     device 0
 }
 
 # 8 channel dmix - output whatever audio, to all 8 speakers
 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
     }
 
 # Some cards, like the "nforce" variants require the following to be uncommented. 
 # It routes the audio to the correct speakers.
 #    bindings {
 #        0 0
 #        1 1
 #        2 4
 #        3 5
 #        4 2
 #        5 3
 #        6 6
 #        7 7
 #    }
 }
 
 # upmixing - duplicate stereo data to all 8 channels
 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
 }
 
 # this creates a six channel soundcard
 # and outputs to the eight channel one
 # i.e. for usage in mplayer I had to define in ~/.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
 }
 
 # share the microphone, i.e. because virtualbox grabs it by default
 pcm.microphone {
     type dsnoop
     ipc_key 1027
     slave {
         pcm "snd_card"
     }
 }
 
 # rate conversion, needed i.e. for wine
 pcm.2chplug {
     type plug
     slave.pcm "ch71dup"
 }
 pcm.a2chplug {
     type plug
     slave.pcm "dmix8"
 }
 
 # routes the channel for the alternative
 # 2 channel output, which becomes the 7th and 8th channel 
 # on the real soundcard
 #pcm.alt2ch {
 #    type route
 #    slave.pcm "a2chplug"
 #    slave.channels 8
 #    ttable.0.6    1
 #    ttable.1.7    1
 #}
 
 # skype and ekiga are only mono, so route left channel to the right channel
 # note: this gets routed to the alternative 2 channels
 pcm.mono_playback {
     type route
     slave.pcm "a2chplug"
     slave.channels 8
     # Send Skype channel 0 to the L and R speakers at full volume
     #ttable.0.6    1
     #ttable.0.7    1
 }
 
 # 'full-duplex' device for use with 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"
 }
 
 # for aoss
 pcm.dsp0 "duplex"
 ctl.mixer0 "duplex"
 
 # softvol manages volume in alsa
 # i.e. wine likes this
 pcm.mainvol {
     type softvol
     slave.pcm "duplex"
     control {
         name "2ch-Upmix Master"
         card 0
     }
 }
 
 #pcm.!default "mainvol"
 
 # set the default device according to the environment
 # variable ALSA_DEFAULT_PCM and default to mainvol
 pcm.!default {
     @func refer
     name { @func concat 
            strings [ "pcm."
                      { @func getenv
                        vars [ ALSA_DEFAULT_PCM ]
                        default "mainvol"
                      }
            ]
          }
 }
 
 # uncomment the following if you want to be able to control
 # the mixer device through environment variables as well
 #ctl.!default {
 #    @func refer
 #    name { @func concat 
 #           strings [ "ctl."
 #                     { @func getenv
 #                       vars [ ALSA_DEFAULT_CTL
 #                              ALSA_DEFAULT_PCM
 #                       ]
 #                       default "duplex"
 #                     }
 #           ]
 #         }
 #}

Surround 5.1 con upmix da stereo tramite dmix, inversione canali destro/sinistro, cattiva disposizione degli speaker

Procedimento funzionante nella maggior parte dei casi senza ulteriori modifiche a programmi/files.

pcm.!default {
    type route
## forwards to the mixer pcm defined below
    slave.pcm dmix51
    slave.channels 6

## "Native Channels" stereo, swap left/right
    ttable.0.1 1
    ttable.1.0 1
## original normal left/right commented out
#    ttable.0.0 1
#    ttable.1.1 1

## route "native surround" so it still works but weaken signal (+ RL/RF swap) 
## because my rear speakers are more like random than really behind me
    ttable.2.3 0.7
    ttable.3.2 0.7
    ttable.4.4 0.7
    ttable.5.5 0.7

## stereo => quad speaker "upmix" for "rear" speakers + swap L/R
    ttable.0.3 1
    ttable.1.2 1

## stereo L+R => join to Center & Subwoofer 50%/50%
    ttable.0.4 0.5
    ttable.1.4 0.5
    ttable.0.5 0.5
    ttable.1.5 0.5
## to test: "$ speaker-test -c6 -twav" and: "$ speaker-test -c2 -twav"
}

pcm.dmix51 {
	type dmix
	ipc_key 1024
# let multiple users share
	ipc_key_add_uid false 
# IPC permissions (octal, default 0600)
# I think changing this fixed something - but I'm not sure what.
	ipc_perm 0660 # 
	slave {
## this is specific to my hda_intel. Often hd:0 is just allready it; To find: $ aplay -L 
		pcm surround51 
# this rate makes my soundcard crackle
#		rate 44100
# this rate stops flash in firefox from playing audio, but I don't need that
       rate 48000
       channels 6
## Any other values in the 4 lines below seem to make my soundcard crackle, too
       period_time 0
       period_size 1024
       buffer_time 0
       buffer_size 4096
	}
}