Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
spotifyd-docker/alsa.conf
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
720 lines (676 sloc)
11 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ALSA library configuration file. This is somewhat condensed to just get PulseAudio proxying | |
# working inside ALSA with a single configuration file. I'm sure this could be condensed further! | |
# 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" | |
] | |
} | |
] | |
errors false | |
} | |
] | |
# | |
# defaults | |
# | |
# show all name hints also for definitions without hint {} section | |
defaults.namehint.showall on | |
# show just basic name hints | |
defaults.namehint.basic on | |
# show extended name hints | |
defaults.namehint.extended on | |
# | |
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.sysdefault { | |
type hw | |
card { | |
@func getenv | |
vars [ | |
ALSA_CTL_CARD | |
ALSA_CARD | |
] | |
default { | |
@func refer | |
name defaults.ctl.card | |
} | |
} | |
hint.description "Default control device" | |
} | |
ctl.default ctl.sysdefault | |
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 | |
} | |
} | |
pcm.samplerate { | |
@args [ SLAVE RATE CONVERTER ] | |
@args.SLAVE { | |
type string | |
default "plug:hw" | |
} | |
@args.RATE { | |
type integer | |
default 48000 | |
} | |
@args.CONVERTER { | |
type string | |
default "samplerate" | |
} | |
type rate | |
converter $CONVERTER | |
slave { | |
pcm $SLAVE | |
rate $RATE | |
} | |
hint { | |
show { | |
@func refer | |
name defaults.namehint.basic | |
} | |
description "Rate Converter Plugin Using Samplerate Library" | |
} | |
} | |
pcm.speexrate { | |
@args [ SLAVE RATE CONVERTER ] | |
@args.SLAVE { | |
type string | |
default "plug:hw" | |
} | |
@args.RATE { | |
type integer | |
default 48000 | |
} | |
@args.CONVERTER { | |
type string | |
default "speexrate" | |
} | |
type rate | |
converter $CONVERTER | |
slave { | |
pcm $SLAVE | |
rate $RATE | |
} | |
hint { | |
show { | |
@func refer | |
name defaults.namehint.basic | |
} | |
description "Rate Converter Plugin Using Speex Resampler" | |
} | |
} | |
# Add a specific named PulseAudio pcm and ctl (typically useful for testing) | |
pcm.pulse { | |
@args [ DEVICE ] | |
@args.DEVICE { | |
type string | |
default "" | |
} | |
type pulse | |
device $DEVICE | |
hint { | |
show { | |
@func refer | |
name defaults.namehint.basic | |
} | |
description "PulseAudio Sound Server" | |
} | |
} | |
ctl.pulse { | |
@args [ DEVICE ] | |
@args.DEVICE { | |
type string | |
default "" | |
} | |
type pulse | |
device $DEVICE | |
} | |
# This file is referred to by /usr/share/alsa/pulse.conf to set pulseaudio as | |
# the default output plugin for applications using alsa when PulseAudio is | |
# running. | |
pcm.!default { | |
type pulse | |
hint { | |
show on | |
description "Playback/recording through the PulseAudio sound server" | |
} | |
} | |
ctl.!default { | |
type pulse | |
} | |