「Advanced Linux Sound Architecture/設定例」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
  +
[[Category:サウンド]]
#redirect[[en:Advanced Linux Sound Architecture/Example Configurations]]
 
  +
[[en:Advanced Linux Sound Architecture/Example Configurations]]
  +
[[it:Advanced Linux Sound Architecture/Example Configurations]]
  +
以下は [[ALSA]] の高度な設定のガイドです。メインの記事にあるように設定は {{ic|/etc/asound.conf}} に記述します。以下の設定が機能するという保証はありません。
  +
  +
{{Note|Most things discussed here are much easier to accomplish using alsa plugins like upmix which are explained in the main article.}}
  +
  +
==dmix を使ってステレオ音源を 7.1 にアップミックスして 7.1 の音源はアップミックスしない==
  +
# 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"
  +
# }
  +
# ]
  +
# }
  +
#}
  +
  +
==Surround51 incl. ステレオのアップミックス & dmix, L/R を交換, 部屋のスピーカーの位置の調整==
  +
  +
Bad practice but works fine for almost everything without additional per-program/file customization:
  +
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 do not 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
  +
}
  +
}

2015年12月9日 (水) 01:08時点における版

以下は ALSA の高度な設定のガイドです。メインの記事にあるように設定は /etc/asound.conf に記述します。以下の設定が機能するという保証はありません。

ノート: Most things discussed here are much easier to accomplish using alsa plugins like upmix which are explained in the main article.

dmix を使ってステレオ音源を 7.1 にアップミックスして 7.1 の音源はアップミックスしない

# 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"
#                     }
#           ]
#         }
#}

Surround51 incl. ステレオのアップミックス & dmix, L/R を交換, 部屋のスピーカーの位置の調整

Bad practice but works fine for almost everything without additional per-program/file customization:

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 do not 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
	}
}