-
This commit is contained in:
45
player.rkt
45
player.rkt
@@ -1,16 +1,55 @@
|
||||
#lang racket
|
||||
|
||||
(require racket/class)
|
||||
(require racket/class
|
||||
racket-audio
|
||||
)
|
||||
|
||||
(provide player%)
|
||||
|
||||
(define player%
|
||||
(class object%
|
||||
|
||||
(define/public (play playlist)
|
||||
(displayln "playing playlist")
|
||||
(define pl #f)
|
||||
(define state 'stopped)
|
||||
(define track 0)
|
||||
|
||||
(define (player)
|
||||
|
||||
(define (state-machine)
|
||||
(cond
|
||||
((eq? state 'quit)
|
||||
'done)
|
||||
((eq? state 'stopped)
|
||||
(sleep 0.25)
|
||||
(state-machine))
|
||||
((eq? state 'play)
|
||||
(if (eq? pl #f)
|
||||
(begin
|
||||
(set! state 'stopped)
|
||||
(state-machine))
|
||||
(begin
|
||||
(play-
|
||||
|
||||
)
|
||||
|
||||
(thread (λ ()
|
||||
|
||||
|
||||
)
|
||||
|
||||
(define/public (play playlist)
|
||||
(set! state 'stopped)
|
||||
(set! pl playlist)
|
||||
(set! track 0)
|
||||
(set! state 'play)
|
||||
)
|
||||
|
||||
(define/public (quit)
|
||||
(set! state 'quit))
|
||||
|
||||
(super-new)
|
||||
|
||||
(begin
|
||||
(player))
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user