recovered
[rrq/lsp-utils.git] / lsp-alsa / sounder.lsp
1 #!/usr/bin/newlisp
2
3 ;; Include alsa-api.lsp
4 (load "libasound.lsp")
5
6 (constant 'INFOFMT [text]Information =================================================
7 | Card: %d Id: %s Name: %s
8 | Long name: %s
9 | Components: %s
10 | Driver: %s Mixer name: %s
11 |============================================================[/text] )
12
13 ;;(SIZE (ALSA:snd_ctl_card_info_sizeof))
14 (define (show-card-info CTL)
15   (println (format INFOFMT (ALSA:card-info CTL)))
16   (map println (ALSA:elements CTL))
17   )
18
19 (define (show-card CARD)
20   (let ((NAME (ALSA:snd_card_get_name CARD))
21         (LONG (ALSA:snd_card_get_longname CARD))
22         (CTL (ALSA:snd_ctl_open (format "hw:%d" CARD) 0)))
23     (println "Card " CARD " is " NAME " (" LONG ")")
24     ;;(show-card-info CTL)
25     (ALSA:snd_ctl_close CTL)))
26
27 (println (format "ALSA %s (%s) "
28                  (ALSA:snd_asoundlib_version) libasound:LIB))
29
30 (setf CARD -1)
31 (while (>= (setf CARD (ALSA:snd_card_next CARD)))
32   (show-card CARD)
33   )
34
35 (setf CFG (libasound:traverse (libasound:snd_config@)))
36
37 (define (key-of-list LIST)
38   (if (and (list? LIST) (not (list? (LIST 0)))) (LIST 0) ""))
39
40 (define (path-of-ref REF)
41   (let ((P '()) (i 0))
42     (dotimes (i (length REF))
43       (push (key-of-list (nth (0 i REF) CFG)) P -1))))
44        
45 ;(println CFG)
46 ;(exit 0)