-
This commit is contained in:
45
player.rkt
45
player.rkt
@@ -1,16 +1,55 @@
|
|||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require racket/class)
|
(require racket/class
|
||||||
|
racket-audio
|
||||||
|
)
|
||||||
|
|
||||||
(provide player%)
|
(provide player%)
|
||||||
|
|
||||||
(define player%
|
(define player%
|
||||||
(class object%
|
(class object%
|
||||||
|
|
||||||
(define/public (play playlist)
|
(define pl #f)
|
||||||
(displayln "playing playlist")
|
(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)
|
(super-new)
|
||||||
|
|
||||||
|
(begin
|
||||||
|
(player))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user