85 lines
2.1 KiB
Racket
85 lines
2.1 KiB
Racket
#lang racket/base
|
|
(require "audio-player.rkt"
|
|
simple-log
|
|
"private/utils.rkt"
|
|
racket-sprintf
|
|
racket/runtime-path
|
|
racket/path
|
|
early-return
|
|
"tests.rkt"
|
|
)
|
|
|
|
(define place-mode #t)
|
|
|
|
(define run-queue #f)
|
|
(define (set-test a)
|
|
(set! run-queue a))
|
|
|
|
(define play-queue (list test-file2 test-file3 test-file4))
|
|
|
|
(define current-sec -1)
|
|
|
|
(define (to-time-str s*)
|
|
(let* ((s (round s*))
|
|
(minutes (quotient s 60))
|
|
(seconds (remainder s 60))
|
|
)
|
|
(sprintf "%02d:%02d" minutes seconds)))
|
|
|
|
(define (audio-player-state h s st)
|
|
(early-return
|
|
((? (not (audio-play? h)) => 'done))
|
|
(let* ((f (audio-file h))
|
|
(name (if (eq? f #f) "none" (file-name-from-path f)))
|
|
(sec* (audio-at-second h))
|
|
(sec (if (eq? sec* #f) 0 (round sec*)))
|
|
(msg (hash-ref st 'msg "none"))
|
|
(bs (hash-ref st 'buf-size 0))
|
|
(dur* (audio-duration h))
|
|
(dur (if (eq? dur* #f) 0 (round dur*)))
|
|
)
|
|
(unless (= current-sec sec)
|
|
(displayln (format "~a (~a): ~a - ~a - ~a - ~a - ~a - ~a"
|
|
name
|
|
(audio-music-id h)
|
|
(to-time-str sec)
|
|
(to-time-str dur)
|
|
(audio-state h)
|
|
(audio-volume h)
|
|
bs
|
|
msg))
|
|
(set! current-sec sec)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define (audio-player-eof h)
|
|
(dbg-sound "audio-player-eof called")
|
|
(when (eq? run-queue 'queue)
|
|
(if (null? play-queue)
|
|
(audio-quit! h)
|
|
(begin
|
|
(dbg-sound "audio-play! -> ~a" (audio-play! h (car play-queue)))
|
|
(set! play-queue (cdr play-queue))
|
|
)
|
|
))
|
|
(when (eq? run-queue 'once)
|
|
(set! run-queue #f)
|
|
(dbg-sound "audio-play! -> ~a" (audio-play! h (car play-queue))))
|
|
)
|
|
|
|
(displayln "Making audio player")
|
|
|
|
(define h (make-audio-player audio-player-state
|
|
audio-player-eof
|
|
#:use-place place-mode))
|
|
|
|
(displayln "done")
|
|
|
|
(sl-log-to-display)
|
|
(audio-player-eof h)
|
|
|
|
|
|
|