|
|
|
#
|
|
|
|
# ALSA library configuration file
|
|
|
|
#
|
|
|
|
|
|
|
|
# pre-load the configuration files
|
|
|
|
|
|
|
|
@hooks [
|
|
|
|
{
|
|
|
|
func load
|
|
|
|
files [
|
|
|
|
"/var/lib/alsa/conf.d"
|
|
|
|
"/usr/etc/alsa/conf.d"
|
|
|
|
"/etc/alsa/conf.d"
|
|
|
|
"/etc/asound.conf|||/usr/etc/asound.conf"
|
|
|
|
"~/.asoundrc"
|
|
|
|
{
|
|
|
|
@func concat
|
|
|
|
strings [
|
|
|
|
{
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
XDG_CONFIG_HOME
|
|
|
|
]
|
|
|
|
default "~/.config"
|
|
|
|
}
|
|
|
|
"/alsa/asoundrc"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
errors false
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
# load card-specific configuration files (on request)
|
|
|
|
|
|
|
|
cards.@hooks [
|
|
|
|
{
|
|
|
|
func load
|
|
|
|
files [
|
|
|
|
{
|
|
|
|
@func concat
|
|
|
|
strings [
|
|
|
|
{ @func datadir }
|
|
|
|
"/cards/aliases.conf"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{
|
|
|
|
func load_for_all_cards
|
|
|
|
files [
|
|
|
|
{
|
|
|
|
@func concat
|
|
|
|
strings [
|
|
|
|
{ @func datadir }
|
|
|
|
"/cards/"
|
|
|
|
{ @func private_string }
|
|
|
|
".conf"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{
|
|
|
|
root {
|
|
|
|
@func private_integer
|
|
|
|
}
|
|
|
|
file {
|
|
|
|
@func concat
|
|
|
|
strings [
|
|
|
|
"/var/lib/alsa/card"
|
|
|
|
{ @func private_integer }
|
|
|
|
".conf.d"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
table {
|
|
|
|
id {
|
|
|
|
@func concat
|
|
|
|
strings [
|
|
|
|
{ @func private_integer }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
value {
|
|
|
|
@func concat
|
|
|
|
strings [
|
|
|
|
"cards."
|
|
|
|
{ @func private_string }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
errors false
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
#
|
|
|
|
# defaults
|
|
|
|
#
|
|
|
|
|
|
|
|
# show all name hints also for definitions without hint {} section
|
|
|
|
defaults.namehint.showall off
|
|
|
|
# show just basic name hints
|
|
|
|
defaults.namehint.basic on
|
|
|
|
# show extended name hints
|
|
|
|
defaults.namehint.extended off
|
|
|
|
#
|
|
|
|
defaults.ctl.card 0
|
|
|
|
defaults.pcm.card 0
|
|
|
|
defaults.pcm.device 0
|
|
|
|
defaults.pcm.subdevice -1
|
|
|
|
defaults.pcm.nonblock 1
|
|
|
|
defaults.pcm.compat 0
|
|
|
|
defaults.pcm.minperiodtime 5000 # in us
|
|
|
|
defaults.pcm.ipc_key 5678293
|
|
|
|
defaults.pcm.ipc_gid audio
|
|
|
|
defaults.pcm.ipc_perm 0660
|
|
|
|
defaults.pcm.tstamp_type default
|
|
|
|
defaults.pcm.dmix.max_periods 0
|
|
|
|
defaults.pcm.dmix.channels 2
|
|
|
|
defaults.pcm.dmix.rate 48000
|
|
|
|
defaults.pcm.dmix.format unchanged
|
|
|
|
defaults.pcm.dmix.card defaults.pcm.card
|
|
|
|
defaults.pcm.dmix.device defaults.pcm.device
|
|
|
|
defaults.pcm.dsnoop.card defaults.pcm.card
|
|
|
|
defaults.pcm.dsnoop.device defaults.pcm.device
|
|
|
|
defaults.pcm.front.card defaults.pcm.card
|
|
|
|
defaults.pcm.front.device defaults.pcm.device
|
|
|
|
defaults.pcm.rear.card defaults.pcm.card
|
|
|
|
defaults.pcm.rear.device defaults.pcm.device
|
|
|
|
defaults.pcm.center_lfe.card defaults.pcm.card
|
|
|
|
defaults.pcm.center_lfe.device defaults.pcm.device
|
|
|
|
defaults.pcm.side.card defaults.pcm.card
|
|
|
|
defaults.pcm.side.device defaults.pcm.device
|
|
|
|
defaults.pcm.surround21.card defaults.pcm.card
|
|
|
|
defaults.pcm.surround21.device defaults.pcm.device
|
|
|
|
defaults.pcm.surround40.card defaults.pcm.card
|
|
|
|
defaults.pcm.surround40.device defaults.pcm.device
|
|
|
|
defaults.pcm.surround41.card defaults.pcm.card
|
|
|
|
defaults.pcm.surround41.device defaults.pcm.device
|
|
|
|
defaults.pcm.surround50.card defaults.pcm.card
|
|
|
|
defaults.pcm.surround50.device defaults.pcm.device
|
|
|
|
defaults.pcm.surround51.card defaults.pcm.card
|
|
|
|
defaults.pcm.surround51.device defaults.pcm.device
|
|
|
|
defaults.pcm.surround71.card defaults.pcm.card
|
|
|
|
defaults.pcm.surround71.device defaults.pcm.device
|
|
|
|
defaults.pcm.iec958.card defaults.pcm.card
|
|
|
|
defaults.pcm.iec958.device defaults.pcm.device
|
|
|
|
defaults.pcm.modem.card defaults.pcm.card
|
|
|
|
defaults.pcm.modem.device defaults.pcm.device
|
|
|
|
defaults.pcm.file_format raw
|
|
|
|
defaults.pcm.file_truncate true # truncate files via file or tee PCM
|
|
|
|
defaults.rawmidi.card 0
|
|
|
|
defaults.rawmidi.device 0
|
|
|
|
defaults.rawmidi.subdevice -1
|
|
|
|
defaults.hwdep.card 0
|
|
|
|
defaults.hwdep.device 0
|
|
|
|
defaults.timer.class 2
|
|
|
|
defaults.timer.sclass 0
|
|
|
|
defaults.timer.card 0
|
|
|
|
defaults.timer.device 0
|
|
|
|
defaults.timer.subdevice 0
|
|
|
|
|
|
|
|
#
|
|
|
|
# PCM interface
|
|
|
|
#
|
|
|
|
|
|
|
|
pcm.hw {
|
|
|
|
@args [ CARD DEV SUBDEV ]
|
|
|
|
@args.CARD {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_PCM_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.DEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func igetenv
|
|
|
|
vars [
|
|
|
|
ALSA_PCM_DEVICE
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.SUBDEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.subdevice
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type hw
|
|
|
|
card $CARD
|
|
|
|
device $DEV
|
|
|
|
subdevice $SUBDEV
|
|
|
|
hint {
|
|
|
|
show {
|
|
|
|
@func refer
|
|
|
|
name defaults.namehint.extended
|
|
|
|
}
|
|
|
|
description "Direct hardware device without any conversions"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pcm.plughw {
|
|
|
|
@args [ CARD DEV SUBDEV ]
|
|
|
|
@args.CARD {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_PCM_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.DEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func igetenv
|
|
|
|
vars [
|
|
|
|
ALSA_PCM_DEVICE
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.SUBDEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.subdevice
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type plug
|
|
|
|
slave.pcm {
|
|
|
|
type hw
|
|
|
|
card $CARD
|
|
|
|
device $DEV
|
|
|
|
subdevice $SUBDEV
|
|
|
|
}
|
|
|
|
hint {
|
|
|
|
show {
|
|
|
|
@func refer
|
|
|
|
name defaults.namehint.extended
|
|
|
|
}
|
|
|
|
description "Hardware device with all software conversions"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pcm.plug {
|
|
|
|
@args [ SLAVE ]
|
|
|
|
@args.SLAVE {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
type plug
|
|
|
|
slave.pcm $SLAVE
|
|
|
|
}
|
|
|
|
|
|
|
|
pcm.shm {
|
|
|
|
@args [ SOCKET PCM ]
|
|
|
|
@args.SOCKET {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
@args.PCM {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
type shm
|
|
|
|
server $SOCKET
|
|
|
|
pcm $PCM
|
|
|
|
}
|
|
|
|
|
|
|
|
pcm.tee {
|
|
|
|
@args [ SLAVE FILE FORMAT ]
|
|
|
|
@args.SLAVE {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
@args.FILE {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
@args.FORMAT {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.file_format
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type file
|
|
|
|
slave.pcm $SLAVE
|
|
|
|
file $FILE
|
|
|
|
format $FORMAT
|
|
|
|
truncate {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.file_truncate
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pcm.file {
|
|
|
|
@args [ FILE FORMAT ]
|
|
|
|
@args.FILE {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
@args.FORMAT {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.file_format
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type file
|
|
|
|
slave.pcm null
|
|
|
|
file $FILE
|
|
|
|
format $FORMAT
|
|
|
|
truncate {
|
|
|
|
@func refer
|
|
|
|
name defaults.pcm.file_truncate
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pcm.null {
|
|
|
|
type null
|
|
|
|
hint {
|
|
|
|
show {
|
|
|
|
@func refer
|
|
|
|
name defaults.namehint.basic
|
|
|
|
}
|
|
|
|
description "Discard all samples (playback) or generate zero samples (capture)"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# redirect to load-on-demand extended pcm definitions
|
|
|
|
pcm.cards cards.pcm
|
|
|
|
|
|
|
|
pcm.default cards.pcm.default
|
|
|
|
pcm.sysdefault cards.pcm.default
|
|
|
|
pcm.front cards.pcm.front
|
|
|
|
pcm.rear cards.pcm.rear
|
|
|
|
pcm.center_lfe cards.pcm.center_lfe
|
|
|
|
pcm.side cards.pcm.side
|
|
|
|
pcm.surround21 cards.pcm.surround21
|
|
|
|
pcm.surround40 cards.pcm.surround40
|
|
|
|
pcm.surround41 cards.pcm.surround41
|
|
|
|
pcm.surround50 cards.pcm.surround50
|
|
|
|
pcm.surround51 cards.pcm.surround51
|
|
|
|
pcm.surround71 cards.pcm.surround71
|
|
|
|
pcm.iec958 cards.pcm.iec958
|
|
|
|
pcm.spdif iec958
|
|
|
|
pcm.hdmi cards.pcm.hdmi
|
|
|
|
pcm.dmix cards.pcm.dmix
|
|
|
|
pcm.dsnoop cards.pcm.dsnoop
|
|
|
|
pcm.modem cards.pcm.modem
|
|
|
|
pcm.phoneline cards.pcm.phoneline
|
|
|
|
|
|
|
|
#
|
|
|
|
# Control interface
|
|
|
|
#
|
|
|
|
|
|
|
|
ctl.default cards.ctl.default
|
|
|
|
ctl.sysdefault cards.ctl.default
|
|
|
|
|
|
|
|
ctl.hw {
|
|
|
|
@args [ CARD ]
|
|
|
|
@args.CARD {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_CTL_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.ctl.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type hw
|
|
|
|
card $CARD
|
|
|
|
hint.description "Direct control device"
|
|
|
|
}
|
|
|
|
|
|
|
|
ctl.shm {
|
|
|
|
@args [ SOCKET CTL ]
|
|
|
|
@args.SOCKET {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
@args.CTL {
|
|
|
|
type string
|
|
|
|
}
|
|
|
|
type shm
|
|
|
|
server $SOCKET
|
|
|
|
ctl $CTL
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# RawMidi interface
|
|
|
|
#
|
|
|
|
|
|
|
|
rawmidi.default {
|
|
|
|
type hw
|
|
|
|
card {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_RAWMIDI_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.rawmidi.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
device {
|
|
|
|
@func igetenv
|
|
|
|
vars [
|
|
|
|
ALSA_RAWMIDI_DEVICE
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.rawmidi.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
hint.description "Default raw MIDI device"
|
|
|
|
}
|
|
|
|
|
|
|
|
rawmidi.hw {
|
|
|
|
@args [ CARD DEV SUBDEV ]
|
|
|
|
@args.CARD {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_RAWMIDI_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.rawmidi.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.DEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func igetenv
|
|
|
|
vars [
|
|
|
|
ALSA_RAWMIDI_DEVICE
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.rawmidi.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.SUBDEV {
|
|
|
|
type integer
|
|
|
|
default -1
|
|
|
|
}
|
|
|
|
type hw
|
|
|
|
card $CARD
|
|
|
|
device $DEV
|
|
|
|
subdevice $SUBDEV
|
|
|
|
hint {
|
|
|
|
description "Direct rawmidi driver device"
|
|
|
|
device $DEV
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
rawmidi.virtual {
|
|
|
|
@args [ MERGE ]
|
|
|
|
@args.MERGE {
|
|
|
|
type string
|
|
|
|
default 1
|
|
|
|
}
|
|
|
|
type virtual
|
|
|
|
merge $MERGE
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Sequencer interface
|
|
|
|
#
|
|
|
|
|
|
|
|
seq.default {
|
|
|
|
type hw
|
|
|
|
hint.description "Default sequencer device"
|
|
|
|
}
|
|
|
|
|
|
|
|
seq.hw {
|
|
|
|
type hw
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# HwDep interface
|
|
|
|
#
|
|
|
|
|
|
|
|
hwdep.default {
|
|
|
|
type hw
|
|
|
|
card {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_HWDEP_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.hwdep.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
device {
|
|
|
|
@func igetenv
|
|
|
|
vars [
|
|
|
|
ALSA_HWDEP_DEVICE
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.hwdep.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
hint.description "Default hardware dependent device"
|
|
|
|
}
|
|
|
|
|
|
|
|
hwdep.hw {
|
|
|
|
@args [ CARD DEV ]
|
|
|
|
@args.CARD {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func getenv
|
|
|
|
vars [
|
|
|
|
ALSA_HWDEP_CARD
|
|
|
|
ALSA_CARD
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.hwdep.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.DEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func igetenv
|
|
|
|
vars [
|
|
|
|
ALSA_HWDEP_DEVICE
|
|
|
|
]
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.hwdep.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type hw
|
|
|
|
card $CARD
|
|
|
|
device $DEV
|
|
|
|
hint {
|
|
|
|
description "Direct hardware dependent device"
|
|
|
|
device $DEV
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Timer interface
|
|
|
|
#
|
|
|
|
|
|
|
|
timer_query.default {
|
|
|
|
type hw
|
|
|
|
}
|
|
|
|
|
|
|
|
timer_query.hw {
|
|
|
|
type hw
|
|
|
|
}
|
|
|
|
|
|
|
|
timer.default {
|
|
|
|
type hw
|
|
|
|
class {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.class
|
|
|
|
}
|
|
|
|
sclass {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.sclass
|
|
|
|
}
|
|
|
|
card {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.card
|
|
|
|
}
|
|
|
|
device {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.device
|
|
|
|
}
|
|
|
|
subdevice {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.subdevice
|
|
|
|
}
|
|
|
|
hint.description "Default timer device"
|
|
|
|
}
|
|
|
|
|
|
|
|
timer.hw {
|
|
|
|
@args [ CLASS SCLASS CARD DEV SUBDEV ]
|
|
|
|
@args.CLASS {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.class
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.SCLASS {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.sclass
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.CARD {
|
|
|
|
type string
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.card
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.DEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.device
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@args.SUBDEV {
|
|
|
|
type integer
|
|
|
|
default {
|
|
|
|
@func refer
|
|
|
|
name defaults.timer.subdevice
|
|
|
|
}
|
|
|
|
}
|
|
|
|
type hw
|
|
|
|
class $CLASS
|
|
|
|
sclass $SCLASS
|
|
|
|
card $CARD
|
|
|
|
device $DEV
|
|
|
|
subdevice $SUBDEV
|
|
|
|
hint {
|
|
|
|
description "Direct timer device"
|
|
|
|
device $DEV
|
|
|
|
}
|
|
|
|
}
|