123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- ;
- ; Toplevel configuration for the ALSA Ordinary Mixer Interface
- ;
- ; Copyright (c) 2003 Jaroslav Kysela <perex@perex.cz>
- ; License: GPL v2 (http://www.gnu.org/licenses/gpl.html)
- ;
- (defun sndo_include (hctl stream)
- (setq info (Acall "ctl_card_info" (Acall "hctl_ctl" hctl)))
- (if (= (Aerror info) 0)
- (progn
- (setq info (Aresult info))
- (setq driver (cdr (assq "driver" (unsetq info))))
- (setq file (concat (path "data") "/alsa/cards/" (snd_card_alias driver) "/sndo" stream "-mixer.alisp"))
- (setq r (include file))
- (when (= r -2) (Asyserr "unable to find file " file))
- )
- (setq r (Aerror info))
- )
- (unsetq info driver file r)
- )
- (defun sndo_mixer_open_fcn (hctl stream pcm)
- (setq fcn (concat "sndo" stream "_mixer_open"))
- (setq r (if (exfun fcn) (funcall fcn hctl pcm) 0))
- (when (= r 0)
- (setq hctls (if hctls (cons hctls (cons hctl)) hctl))
- )
- (unsetq fcn r)
- )
- (defun sndo_mixer_open_hctl (name stream pcm)
- (setq hctl (Acall "hctl_open" name nil))
- (setq r (Aerror hctl))
- (when (= r 0)
- (setq hctl (Aresult hctl))
- (setq r (sndo_include hctl stream))
- (if (= r 0)
- (setq r (sndo_mixer_open_fcn hctl stream pcm))
- (Acall "hctl_close" hctl)
- )
- )
- (unsetq hctl r)
- )
- (defun sndo_mixer_open_virtual (name stream pcm)
- (setq file (concat (path "data") "/alsa/virtual/" name "/sndo" stream "-mixer.alisp"))
- (setq r (include file))
- (when (= r -2) (Asyserr "unable to find file " file))
- (when (= r 0) (setq r (sndo_mixer_open_fcn nil stream pcm)))
- (unsetq file r)
- )
- (defun sndo_mixer_open1 (name stream)
- (if (compare-strings name 0 2 "hw:" 0 2)
- (sndo_mixer_open_hctl name stream nil)
- (sndo_mixer_open_virtual name stream nil)
- )
- )
- (defun sndo_mixer_open (pname cname)
- (setq r (sndo_mixer_open1 pname "p"))
- (when (= r 0) (setq r (sndo_mixer_open1 cname "c")))
- (when (!= r 0) (sndo_mixer_close))
- (unsetq sndo_mixer_open
- sndo_mixer_open_pcm sndo_mixer_open_pcm1
- sndo_mixer_open_virtual sndo_mixer_open_fcn
- sndo_include r)
- )
- (defun sndo_mixer_open_pcm1 (pcm stream)
- (setq info (Acall "pcm_info" pcm))
- (setq r (Aerror info))
- (when (= r 0)
- (setq info (Aresult info))
- (setq card (cdr (assq "card" info)))
- (setq r
- (if (< card 0)
- (sndo_mixer_open_virtual (Acall "pcm_name" pcm) stream pcm)
- (sndo_mixer_open_hctl (format "hw:%i" card) stream pcm)
- )
- )
- )
- (unsetq info card r)
- )
- (defun sndo_mixer_open_pcm (ppcm cpcm)
- (setq r (sndo_mixer_open_pcm1 ppcm "p"))
- (when (= r 0) (setq r (sndo_mixer_open_pcm1 cpcm "c")))
- (when (!= r 0) (sndo_mixer_close))
- (unsetq sndo_mixer_open
- sndo_mixer_open_pcm sndo_mixer_open_pcm1
- sndo_mixer_open_virtual sndo_mixer_open_fcn
- sndo_include r)
- )
- (defun sndo_mixer_close1 (hctl stream)
- (when hctl
- (progn
- (setq fcn (concat "sndo" stream "_mixer_close"))
- (when (exfun fcn) (funcall fcn hctl))
- (unsetq fcn)
- (Acall "hctl_close" hctl)
- )
- )
- )
- (defun sndo_mixer_close nil
- (sndo_mixer_close1 (nth 1 hctls) "c")
- (sndo_mixer_close1 (nth 0 hctls) "p")
- (snd_card_alias_unset)
- (unsetq hctls)
- )
- (include (concat (path "data") "/alsa/cards/aliases.alisp"))
|