Listing 2. KEXP.brs 'Copyright 2010 Dirk Elmendorf Function Init() as Object obj = { port: CreateObject("roMessagePort") screen: CreateObject("roSpringboardScreen") player: CreateObject("roAudioPlayer") screen_options: CreateObject("roAssociativeArray") song: CreateObject("roAssociativeArray") status: "" drawScreen: function(description) m.screen_options.Description = description m.screen.SetContent(m.screen_options) m.screen.Show() end function playingNow: function() m.screen.ClearButtons() m.screen.AddButton(1, "Pause Stream") m.screen.AddButton(3, "Exit") m.DrawScreen("Live MP3 Stream from KEXP.org") end function play: function() if m.status = "" then m.player.AddContent(m.song) m.player.SetLoop(true) m.player.play() m.status = "playing" else if m.status = "paused" m.player.resume() m.status = "playing" endif m.screen.ClearButtons() m.screen.AddButton(3, "Exit") m.drawScreen("Buffering....") end function pause: function() if m.status = "playing" then m.player.pause() m.status = "paused" endif m.screen.ClearButtons() m.screen.AddButton(2, "Resume Stream") m.screen.AddButton(3, "Exit") m.drawScreen("Stream Paused") end function exit: function() print "Goodbye World!" m.player.stop() return 0 end function } obj.screen.SetMessagePort(obj.port) obj.player.SetMessagePort(obj.port) obj.screen_options.ContentType = "episode" obj.screen_options.Title = "KEXP" obj.screen_options.SDPosterURL = "pkg:/images/episode_icon_sd.png" obj.screen_options.HDPosterURL = "pkg:/images/episode_icon_sd.png" obj.screen.SetStaticRatingEnabled(false) obj.song.Url = "http://kexp-mp3-2.cac.washington.edu:8000/" obj.song.StreamFormat = "mp3" obj.status = "" return(obj) end Function Function Main() as Integer app = Init() app.play() while true msg = wait(0, app.port) if type(msg) = "roAudioPlayerEvent" if msg.isStatusMessage() then print "Audio Player Event:"; msg.getmessage() if msg.GetMessage() = "start of play" then app.playingNow() endif endif else if msg.isButtonPressed() then if msg.GetIndex() = 1 then app.pause() else if msg.GetIndex() = 2 then app.play() else if msg.GetIndex() = 3 then return app.exit() endif else if msg.isScreenClosed() then return app.exit() endif end while end Function