diff --git a/src/conf/alsa.conf b/src/conf/alsa.conf index 0998058..c4525f0 100644 --- a/src/conf/alsa.conf +++ b/src/conf/alsa.conf @@ -67,8 +67,7 @@ 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.ipc_perm 0600 defaults.pcm.dmix.max_periods 0 defaults.pcm.dmix.channels 2 defaults.pcm.dmix.rate 48000 diff --git a/src/conf/alsa.conf.config b/src/conf/alsa.conf.config new file mode 100644 index 0000000..0998058 --- /dev/null +++ b/src/conf/alsa.conf.config @@ -0,0 +1,629 @@ +# +# ALSA library configuration file +# + +# pre-load the configuration files + +@hooks [ + { + func load + files [ + "/etc/alsa/conf.d" + "/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 +# + +# 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.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 +# truncate files via file or tee PCM +defaults.pcm.file_format "raw" +defaults.pcm.file_truncate true +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 +# + +# 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 + +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)" + } +} + +# +# 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 + } +} diff --git a/src/conf/pcm/dmix.conf b/src/conf/pcm/dmix.conf index 7fa5c8b..97936a8 100644 --- a/src/conf/pcm/dmix.conf +++ b/src/conf/pcm/dmix.conf @@ -48,10 +48,6 @@ pcm.!dmix { @func refer name defaults.pcm.ipc_key } - ipc_gid { - @func refer - name defaults.pcm.ipc_gid - } ipc_perm { @func refer name defaults.pcm.ipc_perm diff --git a/src/conf/pcm/dmix.conf.config b/src/conf/pcm/dmix.conf.config new file mode 100644 index 0000000..7fa5c8b --- /dev/null +++ b/src/conf/pcm/dmix.conf.config @@ -0,0 +1,123 @@ +# +# dmix output +# + +pcm.!dmix { + @args [ CARD DEV SUBDEV FORMAT RATE CHANNELS ] + @args.CARD { + type string + default { + @func refer + name defaults.pcm.dmix.card + } + } + @args.DEV { + type integer + default { + @func refer + name defaults.pcm.dmix.device + } + } + @args.SUBDEV { + type integer + default 0 + } + @args.FORMAT { + type string + default { + @func refer + name defaults.pcm.dmix.format + } + } + @args.RATE { + type integer + default { + @func refer + name defaults.pcm.dmix.rate + } + } + @args.CHANNELS { + type integer + default { + @func refer + name defaults.pcm.dmix.channels + } + } + type dmix + ipc_key { + @func refer + name defaults.pcm.ipc_key + } + ipc_gid { + @func refer + name defaults.pcm.ipc_gid + } + ipc_perm { + @func refer + name defaults.pcm.ipc_perm + } + slave { + pcm { + type hw + card $CARD + device $DEV + subdevice $SUBDEV + } + format $FORMAT + rate $RATE + channels $CHANNELS + period_size { + @func refer + name { + @func concat + strings [ + "defaults.dmix." + { + @func card_driver + card $CARD + } + ".period_size" + ] + } + default 1024 + } + period_time { + @func refer + name { + @func concat + strings [ + "defaults.dmix." + { + @func card_driver + card $CARD + } + ".period_time" + ] + } + default -1 + } + periods { + @func refer + name { + @func concat + strings [ + "defaults.dmix." + { + @func card_driver + card $CARD + } + ".periods" + ] + } + default 16 + } + } + hint { + show { + @func refer + name defaults.namehint.extended + } + description "Direct sample mixing device" + device_output $DEV + } +} diff --git a/src/conf/pcm/dsnoop.conf b/src/conf/pcm/dsnoop.conf index abbd44f..528fb6a 100644 --- a/src/conf/pcm/dsnoop.conf +++ b/src/conf/pcm/dsnoop.conf @@ -41,10 +41,6 @@ pcm.!dsnoop { @func refer name defaults.pcm.ipc_key } - ipc_gid { - @func refer - name defaults.pcm.ipc_gid - } ipc_perm { @func refer name defaults.pcm.ipc_perm diff --git a/src/conf/pcm/dsnoop.conf.config b/src/conf/pcm/dsnoop.conf.config new file mode 100644 index 0000000..abbd44f --- /dev/null +++ b/src/conf/pcm/dsnoop.conf.config @@ -0,0 +1,115 @@ +# +# dsnoop +# + +pcm.!dsnoop { + @args [ CARD DEV SUBDEV FORMAT RATE ] + @args.CARD { + type string + default { + @func refer + name defaults.pcm.dsnoop.card + } + } + @args.DEV { + type integer + default { + @func refer + name defaults.pcm.dsnoop.device + } + } + @args.SUBDEV { + type integer + default 0 + } + @args.FORMAT { + type string + default { + @func refer + name defaults.pcm.dmix.format + } + } + @args.RATE { + type integer + default { + @func refer + name defaults.pcm.dmix.rate + } + } + type dsnoop + ipc_key { + @func refer + name defaults.pcm.ipc_key + } + ipc_gid { + @func refer + name defaults.pcm.ipc_gid + } + ipc_perm { + @func refer + name defaults.pcm.ipc_perm + } + slave { + pcm { + type hw + card $CARD + device $DEV + subdevice $SUBDEV + } + format $FORMAT + rate $RATE + period_size { + @func refer + name { + @func concat + strings [ + "cards." + { + @func card_driver + card $CARD + } + ".pcm.dsnoop.period_size" + ] + } + default 1024 + } + period_time { + @func refer + name { + @func concat + strings [ + "cards." + { + @func card_driver + card $CARD + } + ".pcm.dsnoop.period_time" + ] + } + default -1 + } + periods { + @func refer + name { + @func concat + strings [ + "cards." + { + @func card_driver + card $CARD + } + ".pcm.dsnoop.periods" + ] + } + default 16 + } + } + hint { + show { + @func refer + name defaults.namehint.extended + } + description "Direct sample snooping device" + device_input $DEV + } +}