Pour moi cette lib n'est pas finie !!
deja , il manque de quoi connaitre la taille total du nombre de paternes
de plus lorsqu'on impose une position , ça ne marche pas puisque la position de lecture d'un mod
n'est pas linéaire ....
ce sont des boucles qui souvent se repetent, donc la position reviens quelques fois a zero
avant de sauter a la position 15 par exemple ...
rien de prévisible ...
en l'etat, on peut juste lancer la lecture, l'arreter , faire un semblant de pause (qui ne garantira pas un redepart de la position courante
bref, pas la peine de penser a faire un Sountracker maison avec cette lib
tout juste un petit lecteur avec Load ,Play Stop
un peu dans ce style : (mais ici la pause n'est pas parfaite, et le track suit la position, mais comme celle-ci renvoi n'importe quoi...
Code : Tout sélectionner
If InitSound() = 0
MessageRequester("Error", "Sound system not available.")
End
EndIf
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Win
#Mod
EndEnumeration
;}
;{ Gadgets
Enumeration
#Button_Stop
#Button_Play
#Button_Av
#Button_Ar
#Button_Pause
#Button_Load
#Text_Titre
#Text_auteur
#Gadget_track
#Gadget_volume
EndEnumeration
;}
;{ Fonts
Enumeration
#Font_Text_Titre
EndEnumeration
;}
Define.l Event
Global Position,volume=50 ,mem_position
Global flag_play=#False
;}
Procedure OpenWindow_Win()
If OpenWindow(#Win, 471, 165, 302, 113, "Pure_mod", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
SetWindowLong_(WindowID(#Win), #GWL_EXSTYLE , GetWindowLong_(WindowID(#Win), #GWL_EXSTYLE) | #WS_EX_TOOLWINDOW)
ResizeWindow(#Win, #PB_Ignore, #PB_Ignore, 302 + 1,113)
ButtonGadget(#Button_Stop, 25, 50, 45, 40, "Stop")
ButtonGadget(#Button_Play, 80, 50, 45, 40, "Play")
ButtonGadget(#Button_Av, 185, 50, 45, 40, "->")
ButtonGadget(#Button_Ar, 135, 50, 45, 40, "<-")
ButtonGadget(#Button_Pause, 240, 50, 45, 40, "II",#PB_Button_Toggle )
ButtonGadget(#Button_Load, 25, 10, 45, 25, "Load")
TextGadget(#Text_Titre, 105, 10, 80, 25, "Pure_Mod")
TextGadget(#Text_auteur, 240, 95, 50, 15, "By Zorro")
TrackBarGadget(#Gadget_track, 25, 90, 200, 20, 0, 255)
TrackBarGadget(#Gadget_volume, 290, 10, 10, 80, 0, 100,#PB_TrackBar_Vertical)
; Gadget Fonts
SetGadgetFont(#Text_Titre, LoadFont(#Font_Text_Titre, "Arial", 11, #PB_Font_Bold|#PB_Font_HighQuality))
EndIf
EndProcedure
OpenWindow_Win()
SetGadgetState(#Gadget_volume,Volume)
;{- Event loop
Repeat
Event = WaitWindowEvent(12)
If IsMusic(#mod) and flag_play=#true
MusicVolume(#Mod, volume)
position=GetMusicPosition(#mod)
SetGadgetState(#Gadget_track, position)
; debug Position la position n'est pas lineaire dans les Module , ils s'agit de boucle imbriquées
Endif
Select Event
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget_volume
If IsMusic(#Mod) and flag_play=#True
volume=GetGadgetState(#Gadget_volume)
Endif
Case #Gadget_track
Case #Button_Stop
If IsMusic(#Mod)
StopMusic(#Mod)
flag_play=#False
Endif
Case #Button_Play
If IsMusic(#Mod)
PlayMusic(#Mod)
flag_play=#True
Endif
Case #Button_Av
flag_play=#False
position=GetMusicPosition(#mod)
position=position+10
SetMusicPosition(#mod,position)
Case #Button_Ar
flag_play=#False
position=GetMusicPosition(#mod)
position=position-10
SetMusicPosition(#mod,position)
Case #Button_Pause
If IsMusic(#Mod)
Select GetGadgetState(#Button_Pause)
Case 1 ; Pressé
mem_position=GetMusicPosition(#mod)
StopMusic(#Mod)
flag_play=#False
debug Position
Case 0 ; pas pressé
position=mem_position
SetMusicPosition(#mod,position)
debug Position
PlayMusic(#mod)
flag_play=#True
EndSelect
Endif
Case #Button_Load
FileName$ = OpenFileRequester("","","Music Modules (*.mod, *.xm, *.it)|*.mod;*.xm;*.it", 0)
If FileName$
If LoadMusic(#Mod, FileName$)
SetGadgetAttribute(#gadget_track, #PB_TrackBar_Maximum, 500)
Endif
Endif
Case #Text_Titre
Case #Text_auteur
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Win
CloseWindow(#Win)
Break
EndSelect
EndSelect
Forever
;
;}
Sur le forum Anglais, peut etre que quelqu'un a utilisé une librairie Externe pour faire un Lecteur de Mod complet
(avec pause et av,ret rapide ) ??? !