On Thu, Mar 3, 2011 at 9:26 AM, Drew Hess <drew.h...@gmail.com> wrote:
> Add a couple of WAV file names to the song-list variable in > drew-game.ss, make sure they're in the same directory as drew-game.ss, > and run the program on Mac OS X. Observe that songs play back fine > while the game is running (except that, as I mentioned above, > they keep playing when the game window is closed; I would love to > know how to hook a window-closed event so that I can kill the thread > when this happens). Oh! I forgot to mention, and this is very important: if you test this on Mac OS X, on Racket 5.1, you must first invert the play-sound async flag in the thread's loop! i.e., change the loop to read: (letrec ((loop-songs (lambda () (begin (map (lambda (filename) (play-sound filename #t)) ; very important, make sure this is #t ! song-list) (loop-songs))))) (loop-songs)) Otherwise, due to the bug in play-sound on Mac OS X that inverts the meaning of the async flag, this loop will turn into a play-sound bomb: it won't wait for the previous play-sound call to finish before starting the next song, ad infinitum! (That was *not* a fun one to debug, trying to kill DrRacket while it ate up all the available memory on my Mac and played a sound that sounded like the universe was collapsing.) d _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users