#!/usr/bin/newlisp ;; Include alsa-api.lsp (load "libasound.lsp") (constant 'INFOFMT [text]Information ================================================= | Card: %d Id: %s Name: %s | Long name: %s | Components: %s | Driver: %s Mixer name: %s |============================================================[/text] ) ;;(SIZE (ALSA:snd_ctl_card_info_sizeof)) (define (show-card-info CTL) (println (format INFOFMT (ALSA:card-info CTL))) (map println (ALSA:elements CTL)) ) (define (show-card CARD) (let ((NAME (ALSA:snd_card_get_name CARD)) (LONG (ALSA:snd_card_get_longname CARD)) (CTL (ALSA:snd_ctl_open (format "hw:%d" CARD) 0))) (println "Card " CARD " is " NAME " (" LONG ")") ;;(show-card-info CTL) (ALSA:snd_ctl_close CTL))) (println (format "ALSA %s (%s) " (ALSA:snd_asoundlib_version) libasound:LIB)) (setf CARD -1) (while (>= (setf CARD (ALSA:snd_card_next CARD))) (show-card CARD) ) (setf CFG (libasound:traverse (libasound:snd_config@))) (define (key-of-list LIST) (if (and (list? LIST) (not (list? (LIST 0)))) (LIST 0) "")) (define (path-of-ref REF) (let ((P '()) (i 0)) (dotimes (i (length REF)) (push (key-of-list (nth (0 i REF) CFG)) P -1)))) ;(println CFG) ;(exit 0)