AtlatestRepositorysigil-studio
sigil-studio / tree / testtest-audio.sgl
1
;;; test-audio.sgl - Test audio playback3
(import (sigil core)4
(sigil app)5
(sigil graphics)6
(sigil audio)7
(sigil graphics font))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 music19
(display "Playing music...\n")20
(if (play-music "test/music.ogg" #t)21
(begin22
(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
(begin51
(set-color 1.0 0.3 0.3)52
(draw-text *font* "MUTED" 300 390))))54
;; Input handling55
(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)