QT player and continuous play of a list of songs problem

Mark Stuart mfstuart at cox.net
Wed Dec 5 23:11:08 CST 2012


Hi all,
I've built an MP3 player to play songs while at work.
I decided to add a checkbox "Continuous play" to allow the songs to play one
after the other, 
to the end of the list of songs.

To start the player, I double click on the first in the list (see "on
mouseDoubleUp" script below),
and it sets the player filename with the path and MP3 filename.
When it finishes playing that song, it should go to the next line in the
list and start playing that song.

I have a "on playStopped" script to handle that. But there's a problem with
it.
It skips a line and starts playing that song.

Here's the script for that:

on playStopped
   local TotalLines, tLineNum, tCPlay, tSong
   put the number of lines of fld "SongList" into TotalLines
   put the hilitedLine of fld "SongList" into tLineNum
   add 1 to tLineNum
   put the hilited of btn "Continuous Play" into tCPlay
   
   if tCPlay then
      if tLineNum <= TotalLines then
         set the hilitedLine of fld "SongList" to tLineNum
         --PlaySong
         put fld "MusicFolder" into MusicFolder
         put the selectedText of fld "SongList" into tSong
         replace tab with empty in tSong
         set the fileName of player "Player" to MusicFolder & slash & tSong
         set the currentTime of player "Player" to zero
         start player "Player"
      else
         set the hilitedLine of fld "SongList" to 1
      end if
   end if
end playStopped

Here's the peculiar behavior:
When the LC engine gets to "set the filename of player...", the engine goes
back to the "on playStopped" line and executes from the top again.
When it gets to "set the fileName of player..." again, it continues on to
"start player...", then goes to "end playStopped", which it should do.
But then it goes to the line "set the currentTime..." line and then the next
line "start player...".

Sometimes when it is playing the song, there's no audio at all.

Here's the SongList field script to get the player started:

global MusicFolder

on mouseDoubleUp
   local tSongTitle
   
   put fld "MusicFolder" into MusicFolder
   put the selectedText of me into tSongTitle
   
   -- SongList field is set as a table.
   -- First column is the MP3 filename and the 2nd column contains ".mp3"
   -- This is for asthetics, so you don't see the .mp3 in the list.
   replace tab with empty in tSongTitle   
   
   set the fileName of player "Player" to MusicFolder & slash & tSongTitle
   set the currentTime of player "Player" to zero
   start player "Player"
end mouseDoubleUp

How do I stop the "on playStopped" script from repeating itself and get it
to play without skipping a line?

Any and all help appreciated,
Mark Stuart




More information about the use-livecode mailing list