AtlatestRepositorysigil-studio

sigil-studio / tree / testtest-audio.sgl

1;;; test-audio.sgl - Test audio playback
2
3(import (sigil core)
4 (sigil app)
5 (sigil graphics)
6 (sigil audio)
7 (sigil graphics font))
8
9(define *font* #f)
10(define *music-playing* #f)
11(define *volume* 1.0)
13(define (on-init)
14 (display "Initializing audio...\n")
15 (audio-setup)
16 (set! *font* (load-font "test/Saucer.ttf" 24))
18 ;; Start music
19 (display "Playing music...\n")
20 (if (play-music "test/music.ogg" #t)
21 (begin
22 (display "Music started!\n")
23 (set! *music-playing* #t))
24 (display "ERROR: Failed to load music!\n")))
26(define (on-frame)
27 (begin-frame)
28 (clear-screen 0.1 0.1 0.15)
30 (when *font*
31 (set-color 0.0 1.0 1.0)
32 (draw-text *font* "Audio Test" 300 50)
34 (set-color 0.8 0.8 0.8)
35 (draw-text *font* "P - Play/Pause music" 100 150)
36 (draw-text *font* "S - Stop music" 100 190)
37 (draw-text *font* "M - Mute/Unmute" 100 230)
38 (draw-text *font* "UP/DOWN - Volume" 100 270)
39 (draw-text *font* "ESC - Quit" 100 310)
41 (set-color 1.0 1.0 0.0)
42 (if (music-playing?)
43 (draw-text *font* "Status: Playing" 100 350)
44 (draw-text *font* "Status: Stopped/Paused" 100 350))
46 (set-color 0.5 0.8 1.0)
47 (draw-text *font* (string-append "Volume: " (number->string (truncate (* *volume* 100))) "%") 100 390)
49 (if (audio-muted?)
50 (begin
51 (set-color 1.0 0.3 0.3)
52 (draw-text *font* "MUTED" 300 390))))
54 ;; Input handling
55 (when (key-pressed? 'p)
56 (if (music-playing?)
57 (pause-music)
58 (resume-music)))
60 (when (key-pressed? 's)
61 (stop-music))
63 (when (key-pressed? 'm)
64 (if (audio-muted?)
65 (unmute-audio)
66 (mute-audio)))
68 (when (key-pressed? 'up)
69 (set! *volume* (min 1.0 (+ *volume* 0.1)))
70 (set-master-volume *volume*))
72 (when (key-pressed? 'down)
73 (set! *volume* (max 0.0 (- *volume* 0.1)))
74 (set-master-volume *volume*))
76 (when (key-pressed? 'escape)
77 (request-quit))
79 (end-frame))
81(define (on-cleanup)
82 (display "Cleaning up audio...\n")
83 (stop-music)
84 (audio-shutdown))
86(app-run on-init on-frame on-cleanup "Audio Test" 800 500)