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