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