# # ALSA library configuration file # # pre-load the configuration files @hooks [ { func load files [ "/etc/asound.conf" "~/.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" ] } ] errors false } ] # defaults defaults.ctl.card 0 defaults.pcm.card 0 defaults.pcm.device 0 defaults.pcm.subdevice -1 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.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.iec958.card defaults.pcm.card defaults.pcm.iec958.device defaults.pcm.device 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 } 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 } } pcm.plug { @args [ SLAVE ] @args.SLAVE { type string } type plug slave.pcm $SLAVE } pcm.dmix { @args [ SLAVE FORMAT RATE ] @args.SLAVE { type string default "hw:0,0" } @args.FORMAT { type string default S16_LE } @args.RATE { type integer default 48000 } type dmix ipc_key 5678293 ipc_key_add_uid yes slave { pcm $SLAVE format $FORMAT rate $RATE } } pcm.dsnoop { @args [ SLAVE FORMAT RATE ] @args.SLAVE { type string default "hw:0,0" } @args.FORMAT { type string default S16_LE } @args.RATE { type integer default 48000 } type dsnoop ipc_key 5778293 ipc_key_add_uid yes slave { pcm $SLAVE format $FORMAT rate $RATE } } 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 raw } type file slave.pcm $SLAVE file $FILE format $FORMAT } pcm.file { @args [ FILE FORMAT ] @args.FILE { type string } @args.FORMAT { type string default raw } type file slave.pcm null file $FILE format $FORMAT } pcm.null { type null } pcm.default { type plug slave.pcm { type hw card { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } device { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } subdevice { @func refer name defaults.pcm.subdevice } } } # redirect to load-on-demand extended pcm definitions pcm.cards cards.pcm # some links for easy use pcm.front cards.pcm.front pcm.rear cards.pcm.rear pcm.center_lfe cards.pcm.center_lfe pcm.surround40 cards.pcm.surround40 pcm.surround41 cards.pcm.surround41 pcm.surround50 cards.pcm.surround50 pcm.surround51 cards.pcm.surround51 pcm.iec958 cards.pcm.iec958 pcm.spdif cards.pcm.iec958 # # Control interface # 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 } ctl.shm { @args [ SOCKET CTL ] @args.SOCKET { type string } @args.CTL { type string } type shm server $SOCKET ctl $CTL } ctl.default { type hw card { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } } # # RawMidi interface # 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 } 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 } } } rawmidi.virtual { @args [ MERGE ] @args.MERGE { type string default 1 } type virtual merge $MERGE } # # Sequencer interface # seq.default { type hw } seq.hw { type hw } # # HwDep interface # 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 } 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 } } } # # Timer interface # timer_query.hw { type hw } timer_query.default { type hw } 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 } 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 } }