MovieSeek()
MovieSeek()
I've got my media player doing just about everything I want except being able to position whatever's playing with a slider bar. It would be nice if MovieSeek() would do this for at least the popular video and audio formats. The friends and family I've sent my program to say they like it, but without the ability to rewind or fast forward to a selected point, it's not quite useable as a player. Is there a chance of adding this? Thanks.
-
- Enthusiast
- Posts: 218
- Joined: Sat Apr 26, 2003 4:47 am
- Location: Dullsville..population: me
- Contact:
Re: MovieSeek()
Have a look at the following commands...urland wrote:The friends and family I've sent my program to say they like it, but without the ability to rewind or fast forward to a selected point, it's not quite useable as a player. Is there a chance of adding this? Thanks.
MovieSeek(Framenumber)
MoveLength()
MovieStatus()
TrackBarGadget()
and maybe MovieInfo()
But as the manual says, not all commands work with MP3 files!
quick example (from the top of my head !)
to make the movie skip fwd 5 secs..
MovieSeek(MovieStatus()+(5*(MovieInfo()/1000)))
Shouldn`t be that much harder to fit in with a gadget event, by reading the new trackbarposition and skipping forward.
Re: MovieSeek()
>Have a look at the following commands...
>MovieSeek(Framenumber)
>MoveLength()
>MovieStatus()
>TrackBarGadget()
>and maybe MovieInfo()
> But as the manual says, not all commands work with MP3 files!
I'm aware that the manual states this. I have a "wish" that the commands would work with .avi, .asf, .wav, .wmv, .mp3, .ogg, etc. To the best of my knowledge, the only thing MovieSeek() actually works on is mpeg files. Anything else gets sent back to the beginning. If I'm wrong on this, please give me an example of code using PB commands that works. If you have any interest in the source code I put together, it's available on the resource site under the name of UPlayer. Thanks much for the reply.
> quick example (from the top of my head !)
> to make the movie skip fwd 5 secs..
> MovieSeek(MovieStatus()+(5*(MovieInfo()/1000)))
Doesn't work here... (except on mpeg of course) PB 3.70 W2K SP3
>MovieSeek(Framenumber)
>MoveLength()
>MovieStatus()
>TrackBarGadget()
>and maybe MovieInfo()
> But as the manual says, not all commands work with MP3 files!
I'm aware that the manual states this. I have a "wish" that the commands would work with .avi, .asf, .wav, .wmv, .mp3, .ogg, etc. To the best of my knowledge, the only thing MovieSeek() actually works on is mpeg files. Anything else gets sent back to the beginning. If I'm wrong on this, please give me an example of code using PB commands that works. If you have any interest in the source code I put together, it's available on the resource site under the name of UPlayer. Thanks much for the reply.
> quick example (from the top of my head !)
> to make the movie skip fwd 5 secs..
> MovieSeek(MovieStatus()+(5*(MovieInfo()/1000)))
Doesn't work here... (except on mpeg of course) PB 3.70 W2K SP3
>To the best of my knowledge, the only thing MovieSeek() actually works on is mpeg files.
Right, i had the same problem. wrote a movie player and tested it with mpegs (worked) - wmv and avi didn't work.
So i second your request for MovieSeek() to work with other movie formats
Also, a generic PB command to take screenshots from movies would be nice (if it is possible at all with reasonable effort). Now it has to be done via the graphics buffer (to complicated for me...
)
Right, i had the same problem. wrote a movie player and tested it with mpegs (worked) - wmv and avi didn't work.
So i second your request for MovieSeek() to work with other movie formats
Also, a generic PB command to take screenshots from movies would be nice (if it is possible at all with reasonable effort). Now it has to be done via the graphics buffer (to complicated for me...

-
- Enthusiast
- Posts: 218
- Joined: Sat Apr 26, 2003 4:47 am
- Location: Dullsville..population: me
- Contact:
Re: MovieSeek()
Sorry Urland, I misread your original post..
I just found out myself about it only really working with Mpegs..
and MoveStatus() gives really high values when running wmv`s..
...and MovieInfo() crashes your app when used on a wmv !
I just found out myself about it only really working with Mpegs..
and MoveStatus() gives really high values when running wmv`s..
...and MovieInfo() crashes your app when used on a wmv !
Hi, I got MovieSeek working off a TrackBarGadget()... Problems come in with some MP3s that have very high # of Frames (shown as negative values)...
Ta - N
; PureBasic Visual Designer v3.62
;- MenuBar Constants
;
#MenuBar_9 = 0
#MENU_1 = 1
#MENU_2 = 2
#MENU_3 = 3
#MENU_6 = 4
#MENU_4 = 5
;- Gadget Constants
;
#STATUS=0
#B_PLAYLIST = 1
#LOAD = 2
#SAVE = 3
#DELALL = 4
#PROGRESS = 5
#FADEIN = 6
#FADEOUT = 7
#VOLUME = 8
#T_PROGRESS = 9
#T_START = 10
#T_STOP = 11
#BALANCE = 12
#PLAYLIST_FILE = 13
#B_TRACKLIST = 14
#TRACKINFO = 15
#REW = 16
#FF = 17
#PAUSE = 18
#PLAY = 19
#STOP = 20
#PREV = 23
#NEXT = 24
#TRACKLIST = 25
#PLAYLIST = 26
#RECORD = 29
#HELP=30
;-PlayList AutoNav*
#PL_MOVEDN = 21
#PL_MOVEUP = 22
#PL_DELTRK =27
#PL_STOP=28
#IMG_PLAY=1
#IMG_PAUSE=2
#IMG_FWD=3
#IMG_REW=4
#IMG_PREV=5
#IMG_NEXT=6
#IMG_DEL=7
#IMG_REC=8
#IMG_DELALL=9
#IMG_MOVEUP=10
#IMG_MOVEDN=11
#IMG_INSSTOP=12
#IMG_STOP=13
;- StatusBar Constants
;
#StatusBar_11 = 0
;- Other Stuff
DefType.l
#FRAMEDIV.f=1000000000
#DEBUG=1
#DELAY=10
TRACKCTR=0
HELP$="Hints and tips are shown here..."+Chr(13)+" ...Before Loading an Tracks, Press all the buttons to discover what they do."+Chr(13)+" - just cancel any 'File Save' / 'File Load' Dialogue boxes..."
Global TRACKCTR, HELP$
Procedure.s ReadINI(section.s,key.s,empty.s,inifile.s)
result.s=Space(255)
GetPrivateProfileString_(section,key,empty,@result,255,inifile)
ProcedureReturn result.s
EndProcedure
Procedure.l WriteINI(section.s,key.s,value.s,inifile.s)
ProcedureReturn WritePrivateProfileString_(section,key,value,inifile)
EndProcedure
Procedure Open_Window_0()
If OpenWindow(0, 343, 80, 620, 370, #PB_Window_SystemMenu |#PB_Window_TitleBar | #PB_Window_BorderLess | #PB_Window_ScreenCentered , "New window ( 0 )")
SetWindowPos_(WindowID(),#HWND_TOPMOST,200,200,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
If CreateGadgetList(WindowID())
ComboBoxGadget(#PLAYLIST, 20, 30, 220, 240, #PB_ComboBox_Editable): AddGadgetItem(#PLAYLIST,0,"")
Frame3DGadget(#B_PLAYLIST, 10, 10, 600, 51, "Playlist Manager")
ButtonGadget(#LOAD, 250, 30, 40, 20, "Load")
ButtonGadget(#SAVE, 560, 30, 40, 20, "Save")
TrackBarGadget(#PROGRESS, 190, 70, 370, 20, 0, 10000)
TrackBarGadget(#FADEIN, 190, 90, 370, 20, 0, 10000): SetGadgetState(#FADEIN,0)
TrackBarGadget(#FADEOUT, 190, 110, 370, 20, 0, 10000): SetGadgetState(#FADEOUT,10000)
TrackBarGadget(#VOLUME, 70, 75, 100, 15, 0, 100): SetGadgetState(#VOLUME,100)
TextGadget(#T_PROGRESS, 560, 70, 50, 20, "Progress")
TextGadget(#T_START, 560, 90, 50, 20, "FadeIn")
TextGadget(#T_STOP, 560, 110, 50, 20, "FadeOut")
TrackBarGadget(#BALANCE, 70, 115, 100, 15, 0, 200): SetGadgetState(#BALANCE,100)
StringGadget(#PLAYLIST_FILE, 300, 30, 250, 20, "")
Frame3DGadget(#B_TRACKLIST, 10, 53, 600, 95, "Track Manager")
Frame3DGadget(#B_TRACKLIST, 10, 140, 600, 190, "TrackList Manager")
ListViewGadget(#TRACKINFO, 420, 160, 180, 150): AddGadgetItem(#TRACKINFO,0,"");: AddGadgetColumn(#TRACKINFO,1,"Value",86)
ListViewGadget(#TRACKLIST, 40, 160,380,150)
TextGadget(#STATUS,550,312,55,12,"STATUS")
TextGadget(#HELP,10,330,600,50,"Hint")
If (LoadImage(#IMG_REW, "./icons/back.ico")): ButtonImageGadget(#REW, 30, 90, 20, 20, UseImage(#IMG_REW)): Else: ButtonGadget(#REW,30,90,20,20,"<<"): EndIf
If (LoadImage(#IMG_FWD, "./icons/fwd.ico")): ButtonImageGadget(#FF, 70, 90, 20, 20, UseImage(#IMG_FWD)): Else: ButtonGadget(#FF,70,90,20,20,">>"): EndIf
If (LoadImage(#IMG_PAUSE, "./icons/pause.ico")): ButtonImageGadget(#PAUSE, 140, 90, 20, 20, UseImage(#IMG_PAUSE)): Else: ButtonGadget(#PAUSE,140,90,20,20,"||"): EndIf
If (LoadImage(#IMG_PLAY, "./icons/play.ico")): ButtonImageGadget(#PLAY, 50, 90, 20, 20, UseImage(#IMG_PLAY)): Else: ButtonGadget(#PLAY,50,90,20,20,">"): EndIf
If (LoadImage(#IMG_STOP, "./icons/stop.ico")): ButtonImageGadget(#STOP, 120, 90, 20, 20, UseImage(#IMG_STOP)): Else: ButtonGadget(#STOP,120,90,20,20,"!"): EndIf
If (LoadImage(#IMG_REC, "./icons/record.ico")): ButtonImageGadget(#RECORD, 95, 90, 20, 20, UseImage(#IMG_REC)): Else: ButtonGadget(#RECORD,95,90,20,20,"O"): EndIf
If (LoadImage(#IMG_PREV, "./icons/prev.ico")): ButtonImageGadget(#PREV, 50, 70, 20, 20, UseImage(#IMG_PREV)): Else: ButtonGadget(#PREV,50,70,20,20,"A"): EndIf
If (LoadImage(#IMG_NEXT, "./icons/next.ico")): ButtonImageGadget(#NEXT, 50, 110, 20, 20, UseImage(#IMG_NEXT)): Else: ButtonGadget(#NEXT,50,110,20,20,"V"): EndIf
If (LoadImage(#IMG_DEL, "./icons/delete.ico")): ButtonImageGadget(#PL_DELTRK,16,160,20,20,UseImage(#IMG_DEL)): Else: ButtonGadget(#PL_DELTRK,16,160,20,20,"X"): EndIf
If (LoadImage(#IMG_MOVEUP, "./icons/prev.ico")): ButtonImageGadget(#PL_MOVEUP,16, 180, 20, 20, UseImage(#IMG_MOVEUP)): Else: ButtonGadget(#PL_MOVEUP,16,180,20,20,"A"): EndIf
If (LoadImage(#IMG_MOVEDN, "./icons/next.ico")): ButtonImageGadget(#PL_MOVEDN,16, 200, 20, 20, UseImage(#IMG_MOVEDN)): Else: ButtonGadget(#PL_MOVEDN,16,200,20,20,"V"): EndIf
If (LoadImage(#IMG_INSSTOP, "./icons/stop.ico")): ButtonImageGadget(#PL_STOP,16, 220, 20, 20, UseImage(#IMG_INSSTOP)): Else: ButtonGadget(#PL_STOP,16,220,20,20,"!"): EndIf
If (LoadImage(#IMG_DELALL, "./icons/delall.ico")): ButtonImageGadget(#DELALL,16, 240, 20, 20, UseImage(#IMG_DELALL)): Else: ButtonGadget(#DELALL, 16, 240, 20, 20, "*"): EndIf
EndIf
EndIf
EndProcedure
Procedure.s LoadPlayList()
HELP$="This Loads a PlayList - you can Load multiple MP3 files or single Play Lists, Multiple 'Loads' will append to the bottom of the existing 'PlayList'. Loading a *.M3U PlayList will also perform various FileChecks. Loading a *.PLY will not include the same Checks (but is faster), the *.PLY format allows you to include 'STOPS' in the PlayList."
_index=0
_pl$=OpenFileRequester("Load Playlist","C:\My Music\"+GetGadgetText(#PLAYLIST),"Load PlayList (*.ply)|*.ply|Import PlayList (*.m3u)|*.m3u|Import MP3 Files (*.mp3)|*.mp3" ,0, #PB_Requester_MultiSelection)
_seek=0
;- Load Tracks from M3U File
If (GetExtensionPart(_pl$)="m3u")
If (ReadFile(_file, _pl$))
SetGadgetText(#PLAYLIST_FILE,_pl$)
AddGadgetItem(#PLAYLIST,-1,_pl$)
Repeat:
_track$=ReadString():
If (FileSize(_track$)>1000): LoadMovie(1,_track$):
If (MovieLength()>0): _index=_index+1: AddGadgetItem(#TRACKLIST,-1,_track$): TRACKCTR=TRACKCTR+1: EndIf:
EndIf
Until Eof(_file)
AddGadgetItem(#TRACKLIST,-1," - END OF PLAYLIST -")
EndIf
EndIf
;-Load Tracks from PLY File
If (GetExtensionPart(_pl$)="ply")
If (ReadFile(_file, _pl$))
SetGadgetText(#PLAYLIST_FILE,_pl$)
AddGadgetItem(#PLAYLIST,-1,_pl$)
Repeat:
_track$=ReadString():
_index=_index+1: AddGadgetItem(#TRACKLIST,-1,_track$): TRACKCTR=TRACKCTR+1
Until Eof(_file)
EndIf
EndIf
;- Load Tracks from MP3 File(s)
If ( GetExtensionPart(_pl$)="mp3")
SetGadgetText(#PLAYLIST_FILE,"Multiple MP3 Selection")
_track$=_pl$
Repeat:
If (FileSize(_track$)>1000): LoadMovie(1,_track$): If (MovieLength()>0):
_index=_index+1: AddGadgetItem(#TRACKLIST, -1, _track$): TRACKCTR=TRACKCTR+1: EndIf: EndIf
_track$=NextSelectedFileName()
Until _track$=""
AddGadgetItem(#TRACKLIST,-1," - END OF PLAYLIST -")
EndIf
ProcedureReturn _pl$
EndProcedure
Procedure$ PlayTrack(_track$,_index)
_vol$=ReadINI(_track$,"VOL","100","./PlayerTracks.db")
_fadein$=ReadINI(_track$,"FADEIN","0","./PlayerTracks.db")
_fadeout$=ReadINI(_track$,"FADEOUT","10000","./PlayerTracks.db")
SetGadgetState(#VOLUME,Val(_vol$))
If (_track$=" - STOP -"): StopMovie(): ProcedureReturn("READY"): EndIf
If (IsFilename(_track$) Or FileSize(_track$)<1000 ): ProcedureReturn("BAD FILE"): EndIf
LoadMovie(1,_track$)
If (MovieLength()<0): ProcedureReturn("BAD FILE")
Else: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)): LoadMovie(1,_track$): PlayMovie(1,0)
SetGadgetState(#FADEIN,Val(_fadein$))
SetGadgetState(#FADEOUT,Val(_fadeout$))
MovieSeek(GetGadgetState(#FADEIN) * (MovieLength()/10000))
RemoveGadgetItem(#TRACKINFO,1): AddGadgetItem(#TRACKINFO,1,"FileName"+Space(10)+GetFilePart(_track$))
RemoveGadgetItem(#TRACKINFO,2): AddGadgetItem(#TRACKINFO,2,"FileSize "+Space(10)+Str(FileSize(_track$))+" Bytes")
RemoveGadgetItem(#TRACKINFO,3): AddGadgetItem(#TRACKINFO,3,"# Frames"+Space(10)+Str(MovieLength()/10000)+" Frames")
ProcedureReturn("PLAYING")
EndIf
EndProcedure
Procedure PL_MoveUp()
HELP$="While Reordering the TrackList, the Track continues to play but 'Progress' updates are frozen until you press 'Play' again"
_tmppos=GetGadgetState(#TRACKLIST): _tmpitem$=GetGadgetText(#TRACKLIST):
If (_tmppos>0):
RemoveGadgetItem(#TRACKLIST,GetGadgetState(#TRACKLIST)):
AddGadgetItem(#TRACKLIST,_tmppos-1,_tmpitem$):
SetGadgetState(#TRACKLIST,_tmppos-1)
EndIf
EndProcedure
Procedure PL_MoveDn()
HELP$="While Reordering the TrackList, the Track continues to play but 'Progress' updates are frozen until you press 'Play' again"
_tmppos=GetGadgetState(#TRACKLIST): _tmpitem$=GetGadgetText(#TRACKLIST):
If (_tmppos<TRACKCTR-1)
RemoveGadgetItem(#TRACKLIST,GetGadgetState(#TRACKLIST)):
AddGadgetItem(#TRACKLIST,_tmppos+1,_tmpitem$):
SetGadgetState(#TRACKLIST,_tmppos+1)
EndIf
EndProcedure
Procedure PL_Stop()
HELP$="You Inserted a 'STOP' into the TrackList - The Player will now stop once it reaches this point (until you select another track to play)"
_tmppos=GetGadgetState(#TRACKLIST):
AddGadgetItem(#TRACKLIST,_tmppos," - STOP -"):
TRACKCTR=TRACKCTR+1
SetGadgetState(#TRACKLIST,_tmppos):
EndProcedure
Procedure RecordTrackSettings(_track$,_vol,_fadein,_fadeout)
HELP$="This will record Volume & FadeIn / Fadeout positions to the 'PlayerTracks.db' file so your Track will start & stop at the right place and play at the right volume."
WriteINI(_track$,"VOL",Str(_vol),"./PlayerTracks.db")
WriteINI(_track$,"FADEIN",Str(_fadein),"./PlayerTracks.db")
ProcedureReturn WriteINI(_track$,"FADEOUT",Str(_fadeout),"./PlayerTracks.db")
EndProcedure
Procedure PL_DelTrk()
HELP$="This will clear a single track from the TrackList"
_track=GetGadgetState(#TRACKLIST): RemoveGadgetItem(#TRACKLIST,_track):
SetGadgetState(#TRACKLIST,_track):
TRACKCTR=TRACKCTR-1
EndProcedure
Procedure PL_DelAll()
HELP$="Selecting this option will clear the entire TrackList (but not the file)"
If (MessageRequester("Confirm","Are you sure you want to clear your tracklist?",#PB_MessageRequester_YesNo)=6):
Repeat:
RemoveGadgetItem(#TRACKLIST,0): TRACKCTR=TRACKCTR-1:
Until TRACKCTR<=-999:
TRACKCTR=0
SetGadgetState(#TRACKLIST,0)
EndIf:
EndProcedure
Procedure SavePlayList(_index)
HELP$="This will save your PlayList in the *.PLY format which may include any 'STOPS' you may have inserted into your PlayList"
_ext$=GetExtensionPart(GetGadgetText(#PLAYLIST_FILE))
_file$=ReplaceString(GetGadgetText(#PLAYLIST_FILE),_ext$,"ply",1)
If (_file$=""): _file$="Default.ply": EndIf
_file$=SaveFileRequester("Save PlayList File",_file$,"*.ply",1)
DeleteFile(_file$)
If (OpenFile(0,_file$))
_index=0
Repeat:
SetGadgetState(#TRACKLIST,_index)
_track$=GetGadgetText(#TRACKLIST): _index=_index+1
WriteStringN(_track$)
Until _index=TRACKCTR+1
CloseFile(0)
SetGadgetState(#TRACKLIST,_index)
EndIf
EndProcedure
;-MAIN#######################################
If (InitMovie()): Else: MessageRequester("Fatal Error","Can't Initialise Movie Player",1): EndIf
LOOPCTR=0
Open_Window_0()
AdvancedGadgetEvents(#TRUE)
STATUS$="READY": reps=0
_vol=100: bal=0
Repeat: EventID = WindowEvent(): Delay(#DELAY)
reps=reps+1
SetGadgetText(#STATUS,STATUS$)
If (STATUS$="PLAYING"); And reps=1)
RemoveGadgetItem(#TRACKINFO,4): AddGadgetItem(#TRACKINFO,4,"Position"+Space(10)+Str(MovieStatus()/10000))
RemoveGadgetItem(#TRACKINFO,5): AddGadgetItem(#TRACKINFO,5,"Fadein "+Space(10)+Str(GetGadgetState(#FADEIN)*(MovieLength()/10000)/10000))
RemoveGadgetItem(#TRACKINFO,6): AddGadgetItem(#TRACKINFO,6,"Fadeout"+Space(10)+Str(GetGadgetState(#FADEOUT) * (MovieLength()/10000)/10000))
RemoveGadgetItem(#TRACKINFO,7): AddGadgetItem(#TRACKINFO,7,"# Tracks"+Space(10)+Str(TRACKCTR))
SetGadgetState(#PROGRESS,MovieStatus()/(MovieLength()/10000)):
EndIf
If (reps=1): SetGadgetText(#STATUS,STATUS$) : EndIf
If (STATUS$="SEEK")
_divfactor.f=MovieLength()/10000
_seek.f=GetGadgetState(#PROGRESS)*_divfactor.f
RemoveGadgetItem(#TRACKINFO,4): AddGadgetItem(#TRACKINFO,4,"Position"+Space(10)+Str(MovieStatus()/10000)):
MovieSeek(_seek.f)
EndIf
If (GetGadgetState(#PROGRESS)>GetGadgetState(#FADEOUT)+1 And STATUS$<>"STOPPED" ); And reps=1):
_vol=_vol-1: MovieAudio(_vol,_bal): SetGadgetState(#VOLUME,_vol)
If (_vol=0):
_vol=100: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)):
EndIf
EndIf
If (GetGadgetState(#PROGRESS)>=9997)
SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
EndIf
If (GetGadgetText(#TRACKLIST)=" - END OF PLAYLIST -"): STATUS$="READY": StopMovie(): EndIf
If (reps>=300): reps=0: EndIf
If (GetGadgetState(#FADEIN)<0 Or GetGadgetState(#FADEOUT)<0): STATUS$="BAD FILE": EndIf
Select EventID:
Case #PB_EventGadget:
Select EventGadgetID():
Case #PLAYLIST: GID=0
Case #TRACKLIST: Select EventType():
Case #PB_EventType_LeftDoubleClick: STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
EndSelect
Case #LOAD: PLAYLIST$=LoadPlayList()
Case #SAVE: SavePlayList(GetGadgetState(#TRACKLIST))
Case #DELALL: PL_DelAll():
Case #REW: MovieSeek(MovieStatus()-9999999): HELP$="Skipping Backwards a few seconds"
Case #FF: MovieSeek(MovieStatus()+9999999): HELP$="Skipping Forwards a few seconds"
Case #PAUSE: PauseMovie(): STATUS$="PAUSED": HELP$="You Paused the Track, Press 'Play' to resume"
Case #PLAY: Select STATUS$
Case "SEEK": STATUS$="RESUME"
Case "REORDER": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
Case "PAUSED" : ResumeMovie(): STATUS$="PLAYING"
Case "PLAYING": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
Case "STOPPED": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
Case "READY": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
EndSelect
HELP$="This Plays a Track - (unless you inserted a 'STOP') - ' - End Of PlayList -' markers are simply skipped"+Chr(13)+"If you previously paused a track, 'Play' will resume it. If you 'STOPPED' a track, this will restart it."
Case #STOP: StopMovie(): STATUS$="STOPPED": HELP$="You Stopped Playing the Track - Press 'PLAY' to Restart"
Case #PREV: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)-1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)): HELP$="Use this to skip back a track"
Case #NEXT: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)): HELP$="Use this to skip to the Next Track"
Case #PROGRESS: STATUS$="SEEK": HELP$="Use this to quickly skip forwards or backwards - press 'PLAY' to resume Playing"
Case #VOLUME: MovieAudio(GetGadgetState(#VOLUME), GetGadgetState(#BALANCE)-100): _vol=GetGadgetState(#VOLUME): HELP$="This is the Volume Control"
Case #BALANCE: MovieAudio(GetGadgetState(#VOLUME), GetGadgetState(#BALANCE)-100): _bal=GetGadgetState(#BALANCE)-100: HELP$="This is the Balance Control"
Case #PL_DELTRK: PL_DelTrk()
Case #PL_MOVEUP: OSTATUS$=STATUS$: PL_MoveUP(): STATUS$="REORDER"
Case #PL_MOVEDN: OSTATUS$=STATUS$: PL_MoveDn(): STATUS$="REORDER"
Case #PL_STOP: PL_Stop()
Case #RECORD: OSTATUS$=STATUS$: STATUS$="RECORD": SetGadgetText(#STATUS,STATUS$)
_result=RecordTrackSettings(GetGadgetText(#TRACKLIST),GetGadgetState(#VOLUME),GetGadgetState(#FADEIN),GetGadgetState(#FADEOUT))
Case #FADEIN: HELP$="This sets the Start Point for an individual track - If you press the 'RECORD' button, it will be stored in the 'PlayerTracks.db' file"
Case #FADEOUT: HELP$="This sets the FadeOut for an individual track - Once the Progress slider reaches the same point, it takes about 3 seconds to 'FadeOut' and move to the next track."+Chr(13)+"If you press the 'RECORD' button, it will be stored in the 'PlayerTracks.db' file"
Case #TRACKINFO: HELP$="This shows specific TrackInfo - Progress / Fadein / FadeOut stuff"
Case #TRACKLIST: HELP$="This is the TrackList - 'Reorder' / 'Delete' tracks or Insert a 'Stop' using the Buttons to the Left"
EndSelect
Case #PB_Event_Menu:; Do Nothing
Case #PB_Event_CloseWindow: Exit=1
Case #PB_Event_Repaint:; Do Nothing
Case #PB_Event_MoveWindow; Do Nothing
EndSelect
Delay(#DELAY)
Select STATUS$:
Case "RESUME": STATUS$=OSTATUS$:
Case "BAD FILE": SetGadgetText(#STATUS,STATUS$):
Delay(#DELAY*1): SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1):
STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)):
Case "RECORD": Delay(#DELAY*30): STATUS$=OSTATUS$: SetGadgetText(#STATUS,STATUS$)
EndSelect
If (HELP$<>_ohelp$): SetGadgetText(#HELP,HELP$): EndIf: _ohelp$=HELP$
Until Exit=1
Ta - N
; PureBasic Visual Designer v3.62
;- MenuBar Constants
;
#MenuBar_9 = 0
#MENU_1 = 1
#MENU_2 = 2
#MENU_3 = 3
#MENU_6 = 4
#MENU_4 = 5
;- Gadget Constants
;
#STATUS=0
#B_PLAYLIST = 1
#LOAD = 2
#SAVE = 3
#DELALL = 4
#PROGRESS = 5
#FADEIN = 6
#FADEOUT = 7
#VOLUME = 8
#T_PROGRESS = 9
#T_START = 10
#T_STOP = 11
#BALANCE = 12
#PLAYLIST_FILE = 13
#B_TRACKLIST = 14
#TRACKINFO = 15
#REW = 16
#FF = 17
#PAUSE = 18
#PLAY = 19
#STOP = 20
#PREV = 23
#NEXT = 24
#TRACKLIST = 25
#PLAYLIST = 26
#RECORD = 29
#HELP=30
;-PlayList AutoNav*
#PL_MOVEDN = 21
#PL_MOVEUP = 22
#PL_DELTRK =27
#PL_STOP=28
#IMG_PLAY=1
#IMG_PAUSE=2
#IMG_FWD=3
#IMG_REW=4
#IMG_PREV=5
#IMG_NEXT=6
#IMG_DEL=7
#IMG_REC=8
#IMG_DELALL=9
#IMG_MOVEUP=10
#IMG_MOVEDN=11
#IMG_INSSTOP=12
#IMG_STOP=13
;- StatusBar Constants
;
#StatusBar_11 = 0
;- Other Stuff
DefType.l
#FRAMEDIV.f=1000000000
#DEBUG=1
#DELAY=10
TRACKCTR=0
HELP$="Hints and tips are shown here..."+Chr(13)+" ...Before Loading an Tracks, Press all the buttons to discover what they do."+Chr(13)+" - just cancel any 'File Save' / 'File Load' Dialogue boxes..."
Global TRACKCTR, HELP$
Procedure.s ReadINI(section.s,key.s,empty.s,inifile.s)
result.s=Space(255)
GetPrivateProfileString_(section,key,empty,@result,255,inifile)
ProcedureReturn result.s
EndProcedure
Procedure.l WriteINI(section.s,key.s,value.s,inifile.s)
ProcedureReturn WritePrivateProfileString_(section,key,value,inifile)
EndProcedure
Procedure Open_Window_0()
If OpenWindow(0, 343, 80, 620, 370, #PB_Window_SystemMenu |#PB_Window_TitleBar | #PB_Window_BorderLess | #PB_Window_ScreenCentered , "New window ( 0 )")
SetWindowPos_(WindowID(),#HWND_TOPMOST,200,200,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
If CreateGadgetList(WindowID())
ComboBoxGadget(#PLAYLIST, 20, 30, 220, 240, #PB_ComboBox_Editable): AddGadgetItem(#PLAYLIST,0,"")
Frame3DGadget(#B_PLAYLIST, 10, 10, 600, 51, "Playlist Manager")
ButtonGadget(#LOAD, 250, 30, 40, 20, "Load")
ButtonGadget(#SAVE, 560, 30, 40, 20, "Save")
TrackBarGadget(#PROGRESS, 190, 70, 370, 20, 0, 10000)
TrackBarGadget(#FADEIN, 190, 90, 370, 20, 0, 10000): SetGadgetState(#FADEIN,0)
TrackBarGadget(#FADEOUT, 190, 110, 370, 20, 0, 10000): SetGadgetState(#FADEOUT,10000)
TrackBarGadget(#VOLUME, 70, 75, 100, 15, 0, 100): SetGadgetState(#VOLUME,100)
TextGadget(#T_PROGRESS, 560, 70, 50, 20, "Progress")
TextGadget(#T_START, 560, 90, 50, 20, "FadeIn")
TextGadget(#T_STOP, 560, 110, 50, 20, "FadeOut")
TrackBarGadget(#BALANCE, 70, 115, 100, 15, 0, 200): SetGadgetState(#BALANCE,100)
StringGadget(#PLAYLIST_FILE, 300, 30, 250, 20, "")
Frame3DGadget(#B_TRACKLIST, 10, 53, 600, 95, "Track Manager")
Frame3DGadget(#B_TRACKLIST, 10, 140, 600, 190, "TrackList Manager")
ListViewGadget(#TRACKINFO, 420, 160, 180, 150): AddGadgetItem(#TRACKINFO,0,"");: AddGadgetColumn(#TRACKINFO,1,"Value",86)
ListViewGadget(#TRACKLIST, 40, 160,380,150)
TextGadget(#STATUS,550,312,55,12,"STATUS")
TextGadget(#HELP,10,330,600,50,"Hint")
If (LoadImage(#IMG_REW, "./icons/back.ico")): ButtonImageGadget(#REW, 30, 90, 20, 20, UseImage(#IMG_REW)): Else: ButtonGadget(#REW,30,90,20,20,"<<"): EndIf
If (LoadImage(#IMG_FWD, "./icons/fwd.ico")): ButtonImageGadget(#FF, 70, 90, 20, 20, UseImage(#IMG_FWD)): Else: ButtonGadget(#FF,70,90,20,20,">>"): EndIf
If (LoadImage(#IMG_PAUSE, "./icons/pause.ico")): ButtonImageGadget(#PAUSE, 140, 90, 20, 20, UseImage(#IMG_PAUSE)): Else: ButtonGadget(#PAUSE,140,90,20,20,"||"): EndIf
If (LoadImage(#IMG_PLAY, "./icons/play.ico")): ButtonImageGadget(#PLAY, 50, 90, 20, 20, UseImage(#IMG_PLAY)): Else: ButtonGadget(#PLAY,50,90,20,20,">"): EndIf
If (LoadImage(#IMG_STOP, "./icons/stop.ico")): ButtonImageGadget(#STOP, 120, 90, 20, 20, UseImage(#IMG_STOP)): Else: ButtonGadget(#STOP,120,90,20,20,"!"): EndIf
If (LoadImage(#IMG_REC, "./icons/record.ico")): ButtonImageGadget(#RECORD, 95, 90, 20, 20, UseImage(#IMG_REC)): Else: ButtonGadget(#RECORD,95,90,20,20,"O"): EndIf
If (LoadImage(#IMG_PREV, "./icons/prev.ico")): ButtonImageGadget(#PREV, 50, 70, 20, 20, UseImage(#IMG_PREV)): Else: ButtonGadget(#PREV,50,70,20,20,"A"): EndIf
If (LoadImage(#IMG_NEXT, "./icons/next.ico")): ButtonImageGadget(#NEXT, 50, 110, 20, 20, UseImage(#IMG_NEXT)): Else: ButtonGadget(#NEXT,50,110,20,20,"V"): EndIf
If (LoadImage(#IMG_DEL, "./icons/delete.ico")): ButtonImageGadget(#PL_DELTRK,16,160,20,20,UseImage(#IMG_DEL)): Else: ButtonGadget(#PL_DELTRK,16,160,20,20,"X"): EndIf
If (LoadImage(#IMG_MOVEUP, "./icons/prev.ico")): ButtonImageGadget(#PL_MOVEUP,16, 180, 20, 20, UseImage(#IMG_MOVEUP)): Else: ButtonGadget(#PL_MOVEUP,16,180,20,20,"A"): EndIf
If (LoadImage(#IMG_MOVEDN, "./icons/next.ico")): ButtonImageGadget(#PL_MOVEDN,16, 200, 20, 20, UseImage(#IMG_MOVEDN)): Else: ButtonGadget(#PL_MOVEDN,16,200,20,20,"V"): EndIf
If (LoadImage(#IMG_INSSTOP, "./icons/stop.ico")): ButtonImageGadget(#PL_STOP,16, 220, 20, 20, UseImage(#IMG_INSSTOP)): Else: ButtonGadget(#PL_STOP,16,220,20,20,"!"): EndIf
If (LoadImage(#IMG_DELALL, "./icons/delall.ico")): ButtonImageGadget(#DELALL,16, 240, 20, 20, UseImage(#IMG_DELALL)): Else: ButtonGadget(#DELALL, 16, 240, 20, 20, "*"): EndIf
EndIf
EndIf
EndProcedure
Procedure.s LoadPlayList()
HELP$="This Loads a PlayList - you can Load multiple MP3 files or single Play Lists, Multiple 'Loads' will append to the bottom of the existing 'PlayList'. Loading a *.M3U PlayList will also perform various FileChecks. Loading a *.PLY will not include the same Checks (but is faster), the *.PLY format allows you to include 'STOPS' in the PlayList."
_index=0
_pl$=OpenFileRequester("Load Playlist","C:\My Music\"+GetGadgetText(#PLAYLIST),"Load PlayList (*.ply)|*.ply|Import PlayList (*.m3u)|*.m3u|Import MP3 Files (*.mp3)|*.mp3" ,0, #PB_Requester_MultiSelection)
_seek=0
;- Load Tracks from M3U File
If (GetExtensionPart(_pl$)="m3u")
If (ReadFile(_file, _pl$))
SetGadgetText(#PLAYLIST_FILE,_pl$)
AddGadgetItem(#PLAYLIST,-1,_pl$)
Repeat:
_track$=ReadString():
If (FileSize(_track$)>1000): LoadMovie(1,_track$):
If (MovieLength()>0): _index=_index+1: AddGadgetItem(#TRACKLIST,-1,_track$): TRACKCTR=TRACKCTR+1: EndIf:
EndIf
Until Eof(_file)
AddGadgetItem(#TRACKLIST,-1," - END OF PLAYLIST -")
EndIf
EndIf
;-Load Tracks from PLY File
If (GetExtensionPart(_pl$)="ply")
If (ReadFile(_file, _pl$))
SetGadgetText(#PLAYLIST_FILE,_pl$)
AddGadgetItem(#PLAYLIST,-1,_pl$)
Repeat:
_track$=ReadString():
_index=_index+1: AddGadgetItem(#TRACKLIST,-1,_track$): TRACKCTR=TRACKCTR+1
Until Eof(_file)
EndIf
EndIf
;- Load Tracks from MP3 File(s)
If ( GetExtensionPart(_pl$)="mp3")
SetGadgetText(#PLAYLIST_FILE,"Multiple MP3 Selection")
_track$=_pl$
Repeat:
If (FileSize(_track$)>1000): LoadMovie(1,_track$): If (MovieLength()>0):
_index=_index+1: AddGadgetItem(#TRACKLIST, -1, _track$): TRACKCTR=TRACKCTR+1: EndIf: EndIf
_track$=NextSelectedFileName()
Until _track$=""
AddGadgetItem(#TRACKLIST,-1," - END OF PLAYLIST -")
EndIf
ProcedureReturn _pl$
EndProcedure
Procedure$ PlayTrack(_track$,_index)
_vol$=ReadINI(_track$,"VOL","100","./PlayerTracks.db")
_fadein$=ReadINI(_track$,"FADEIN","0","./PlayerTracks.db")
_fadeout$=ReadINI(_track$,"FADEOUT","10000","./PlayerTracks.db")
SetGadgetState(#VOLUME,Val(_vol$))
If (_track$=" - STOP -"): StopMovie(): ProcedureReturn("READY"): EndIf
If (IsFilename(_track$) Or FileSize(_track$)<1000 ): ProcedureReturn("BAD FILE"): EndIf
LoadMovie(1,_track$)
If (MovieLength()<0): ProcedureReturn("BAD FILE")
Else: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)): LoadMovie(1,_track$): PlayMovie(1,0)
SetGadgetState(#FADEIN,Val(_fadein$))
SetGadgetState(#FADEOUT,Val(_fadeout$))
MovieSeek(GetGadgetState(#FADEIN) * (MovieLength()/10000))
RemoveGadgetItem(#TRACKINFO,1): AddGadgetItem(#TRACKINFO,1,"FileName"+Space(10)+GetFilePart(_track$))
RemoveGadgetItem(#TRACKINFO,2): AddGadgetItem(#TRACKINFO,2,"FileSize "+Space(10)+Str(FileSize(_track$))+" Bytes")
RemoveGadgetItem(#TRACKINFO,3): AddGadgetItem(#TRACKINFO,3,"# Frames"+Space(10)+Str(MovieLength()/10000)+" Frames")
ProcedureReturn("PLAYING")
EndIf
EndProcedure
Procedure PL_MoveUp()
HELP$="While Reordering the TrackList, the Track continues to play but 'Progress' updates are frozen until you press 'Play' again"
_tmppos=GetGadgetState(#TRACKLIST): _tmpitem$=GetGadgetText(#TRACKLIST):
If (_tmppos>0):
RemoveGadgetItem(#TRACKLIST,GetGadgetState(#TRACKLIST)):
AddGadgetItem(#TRACKLIST,_tmppos-1,_tmpitem$):
SetGadgetState(#TRACKLIST,_tmppos-1)
EndIf
EndProcedure
Procedure PL_MoveDn()
HELP$="While Reordering the TrackList, the Track continues to play but 'Progress' updates are frozen until you press 'Play' again"
_tmppos=GetGadgetState(#TRACKLIST): _tmpitem$=GetGadgetText(#TRACKLIST):
If (_tmppos<TRACKCTR-1)
RemoveGadgetItem(#TRACKLIST,GetGadgetState(#TRACKLIST)):
AddGadgetItem(#TRACKLIST,_tmppos+1,_tmpitem$):
SetGadgetState(#TRACKLIST,_tmppos+1)
EndIf
EndProcedure
Procedure PL_Stop()
HELP$="You Inserted a 'STOP' into the TrackList - The Player will now stop once it reaches this point (until you select another track to play)"
_tmppos=GetGadgetState(#TRACKLIST):
AddGadgetItem(#TRACKLIST,_tmppos," - STOP -"):
TRACKCTR=TRACKCTR+1
SetGadgetState(#TRACKLIST,_tmppos):
EndProcedure
Procedure RecordTrackSettings(_track$,_vol,_fadein,_fadeout)
HELP$="This will record Volume & FadeIn / Fadeout positions to the 'PlayerTracks.db' file so your Track will start & stop at the right place and play at the right volume."
WriteINI(_track$,"VOL",Str(_vol),"./PlayerTracks.db")
WriteINI(_track$,"FADEIN",Str(_fadein),"./PlayerTracks.db")
ProcedureReturn WriteINI(_track$,"FADEOUT",Str(_fadeout),"./PlayerTracks.db")
EndProcedure
Procedure PL_DelTrk()
HELP$="This will clear a single track from the TrackList"
_track=GetGadgetState(#TRACKLIST): RemoveGadgetItem(#TRACKLIST,_track):
SetGadgetState(#TRACKLIST,_track):
TRACKCTR=TRACKCTR-1
EndProcedure
Procedure PL_DelAll()
HELP$="Selecting this option will clear the entire TrackList (but not the file)"
If (MessageRequester("Confirm","Are you sure you want to clear your tracklist?",#PB_MessageRequester_YesNo)=6):
Repeat:
RemoveGadgetItem(#TRACKLIST,0): TRACKCTR=TRACKCTR-1:
Until TRACKCTR<=-999:
TRACKCTR=0
SetGadgetState(#TRACKLIST,0)
EndIf:
EndProcedure
Procedure SavePlayList(_index)
HELP$="This will save your PlayList in the *.PLY format which may include any 'STOPS' you may have inserted into your PlayList"
_ext$=GetExtensionPart(GetGadgetText(#PLAYLIST_FILE))
_file$=ReplaceString(GetGadgetText(#PLAYLIST_FILE),_ext$,"ply",1)
If (_file$=""): _file$="Default.ply": EndIf
_file$=SaveFileRequester("Save PlayList File",_file$,"*.ply",1)
DeleteFile(_file$)
If (OpenFile(0,_file$))
_index=0
Repeat:
SetGadgetState(#TRACKLIST,_index)
_track$=GetGadgetText(#TRACKLIST): _index=_index+1
WriteStringN(_track$)
Until _index=TRACKCTR+1
CloseFile(0)
SetGadgetState(#TRACKLIST,_index)
EndIf
EndProcedure
;-MAIN#######################################
If (InitMovie()): Else: MessageRequester("Fatal Error","Can't Initialise Movie Player",1): EndIf
LOOPCTR=0
Open_Window_0()
AdvancedGadgetEvents(#TRUE)
STATUS$="READY": reps=0
_vol=100: bal=0
Repeat: EventID = WindowEvent(): Delay(#DELAY)
reps=reps+1
SetGadgetText(#STATUS,STATUS$)
If (STATUS$="PLAYING"); And reps=1)
RemoveGadgetItem(#TRACKINFO,4): AddGadgetItem(#TRACKINFO,4,"Position"+Space(10)+Str(MovieStatus()/10000))
RemoveGadgetItem(#TRACKINFO,5): AddGadgetItem(#TRACKINFO,5,"Fadein "+Space(10)+Str(GetGadgetState(#FADEIN)*(MovieLength()/10000)/10000))
RemoveGadgetItem(#TRACKINFO,6): AddGadgetItem(#TRACKINFO,6,"Fadeout"+Space(10)+Str(GetGadgetState(#FADEOUT) * (MovieLength()/10000)/10000))
RemoveGadgetItem(#TRACKINFO,7): AddGadgetItem(#TRACKINFO,7,"# Tracks"+Space(10)+Str(TRACKCTR))
SetGadgetState(#PROGRESS,MovieStatus()/(MovieLength()/10000)):
EndIf
If (reps=1): SetGadgetText(#STATUS,STATUS$) : EndIf
If (STATUS$="SEEK")
_divfactor.f=MovieLength()/10000
_seek.f=GetGadgetState(#PROGRESS)*_divfactor.f
RemoveGadgetItem(#TRACKINFO,4): AddGadgetItem(#TRACKINFO,4,"Position"+Space(10)+Str(MovieStatus()/10000)):
MovieSeek(_seek.f)
EndIf
If (GetGadgetState(#PROGRESS)>GetGadgetState(#FADEOUT)+1 And STATUS$<>"STOPPED" ); And reps=1):
_vol=_vol-1: MovieAudio(_vol,_bal): SetGadgetState(#VOLUME,_vol)
If (_vol=0):
_vol=100: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)):
EndIf
EndIf
If (GetGadgetState(#PROGRESS)>=9997)
SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
EndIf
If (GetGadgetText(#TRACKLIST)=" - END OF PLAYLIST -"): STATUS$="READY": StopMovie(): EndIf
If (reps>=300): reps=0: EndIf
If (GetGadgetState(#FADEIN)<0 Or GetGadgetState(#FADEOUT)<0): STATUS$="BAD FILE": EndIf
Select EventID:
Case #PB_EventGadget:
Select EventGadgetID():
Case #PLAYLIST: GID=0
Case #TRACKLIST: Select EventType():
Case #PB_EventType_LeftDoubleClick: STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
EndSelect
Case #LOAD: PLAYLIST$=LoadPlayList()
Case #SAVE: SavePlayList(GetGadgetState(#TRACKLIST))
Case #DELALL: PL_DelAll():
Case #REW: MovieSeek(MovieStatus()-9999999): HELP$="Skipping Backwards a few seconds"
Case #FF: MovieSeek(MovieStatus()+9999999): HELP$="Skipping Forwards a few seconds"
Case #PAUSE: PauseMovie(): STATUS$="PAUSED": HELP$="You Paused the Track, Press 'Play' to resume"
Case #PLAY: Select STATUS$
Case "SEEK": STATUS$="RESUME"
Case "REORDER": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
Case "PAUSED" : ResumeMovie(): STATUS$="PLAYING"
Case "PLAYING": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
Case "STOPPED": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
Case "READY": STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST))
EndSelect
HELP$="This Plays a Track - (unless you inserted a 'STOP') - ' - End Of PlayList -' markers are simply skipped"+Chr(13)+"If you previously paused a track, 'Play' will resume it. If you 'STOPPED' a track, this will restart it."
Case #STOP: StopMovie(): STATUS$="STOPPED": HELP$="You Stopped Playing the Track - Press 'PLAY' to Restart"
Case #PREV: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)-1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)): HELP$="Use this to skip back a track"
Case #NEXT: SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1): STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)): HELP$="Use this to skip to the Next Track"
Case #PROGRESS: STATUS$="SEEK": HELP$="Use this to quickly skip forwards or backwards - press 'PLAY' to resume Playing"
Case #VOLUME: MovieAudio(GetGadgetState(#VOLUME), GetGadgetState(#BALANCE)-100): _vol=GetGadgetState(#VOLUME): HELP$="This is the Volume Control"
Case #BALANCE: MovieAudio(GetGadgetState(#VOLUME), GetGadgetState(#BALANCE)-100): _bal=GetGadgetState(#BALANCE)-100: HELP$="This is the Balance Control"
Case #PL_DELTRK: PL_DelTrk()
Case #PL_MOVEUP: OSTATUS$=STATUS$: PL_MoveUP(): STATUS$="REORDER"
Case #PL_MOVEDN: OSTATUS$=STATUS$: PL_MoveDn(): STATUS$="REORDER"
Case #PL_STOP: PL_Stop()
Case #RECORD: OSTATUS$=STATUS$: STATUS$="RECORD": SetGadgetText(#STATUS,STATUS$)
_result=RecordTrackSettings(GetGadgetText(#TRACKLIST),GetGadgetState(#VOLUME),GetGadgetState(#FADEIN),GetGadgetState(#FADEOUT))
Case #FADEIN: HELP$="This sets the Start Point for an individual track - If you press the 'RECORD' button, it will be stored in the 'PlayerTracks.db' file"
Case #FADEOUT: HELP$="This sets the FadeOut for an individual track - Once the Progress slider reaches the same point, it takes about 3 seconds to 'FadeOut' and move to the next track."+Chr(13)+"If you press the 'RECORD' button, it will be stored in the 'PlayerTracks.db' file"
Case #TRACKINFO: HELP$="This shows specific TrackInfo - Progress / Fadein / FadeOut stuff"
Case #TRACKLIST: HELP$="This is the TrackList - 'Reorder' / 'Delete' tracks or Insert a 'Stop' using the Buttons to the Left"
EndSelect
Case #PB_Event_Menu:; Do Nothing
Case #PB_Event_CloseWindow: Exit=1
Case #PB_Event_Repaint:; Do Nothing
Case #PB_Event_MoveWindow; Do Nothing
EndSelect
Delay(#DELAY)
Select STATUS$:
Case "RESUME": STATUS$=OSTATUS$:
Case "BAD FILE": SetGadgetText(#STATUS,STATUS$):
Delay(#DELAY*1): SetGadgetState(#TRACKLIST,GetGadgetState(#TRACKLIST)+1):
STATUS$=PlayTrack(GetGadgetText(#TRACKLIST),GetGadgetState(#TRACKLIST)):
Case "RECORD": Delay(#DELAY*30): STATUS$=OSTATUS$: SetGadgetText(#STATUS,STATUS$)
EndSelect
If (HELP$<>_ohelp$): SetGadgetText(#HELP,HELP$): EndIf: _ohelp$=HELP$
Until Exit=1
Ta - N
Re: MovieSeek()
No problem. Sorry it took so long to reply. Things been kinda crazy. Yeah, I've noticed the thing with MovieStatus as well. Really high numbers. Thanks for the crash info with wmv's. I hadn't run into that (yet!).Doobrey wrote:Sorry Urland, I misread your original post..
I just found out myself about it only really working with Mpegs..
and MoveStatus() gives really high values when running wmv`s..
...and MovieInfo() crashes your app when used on a wmv !