Page 1 sur 2

lecteur multi-audio

Publié : dim. 04/déc./2005 17:57
par gadjet35
bonjour je viens de terminer un lecteur multi-audio :

Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Tree_0
  #Text_0
  #Button_0
  #Button_1
  #Button_2
  #Button_3
EndEnumeration

If InitMovie() = 0
 End
EndIf

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 228, 217, 499, 279,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Lecteur Audio")
    If CreateGadgetList(WindowID())
      TreeGadget(#Tree_0, 20, 50, 160, 180)
      TextGadget(#Text_0, 40, 20, 140, 30, "Liste des musiques :")
      ButtonGadget(#Button_0, 260, 60, 110, 50, "Play")
      ButtonGadget(#Button_1, 260, 130, 110, 50, "Pause")
      ButtonGadget(#Button_2, 260, 200, 110, 50, "Stop")
      ButtonGadget(#Button_3, 20, 240, 160, 30, "Ajouter une musique")
    EndIf
  EndIf
EndProcedure

open_window_0()

Repeat
 Select WaitWindowEvent()
  Case #PB_EventGadget
   Select EventGadgetID()
    Case #button_3
     fichier$ = OpenFileRequester("musique à ouvrir","","fichier musique|*.mp3;*.mid;*.wav;*.wave;*.midi",0)
     AddGadgetItem(#tree_0,position,GetFilePart(fichier$))
     LoadMovie(position,fichier$)
     position = position + 1
    Case #button_0
     movie = GetGadgetState(#tree_0)
     PlayMovie(movie,WindowID())
    Case #button_1
     If pause = 0  
      SetGadgetText(#button_1,"Replay")
      PauseMovie()
      pause = 1
     ElseIf pause = 1
      SetGadgetText(#button_1,"Pause")
      ResumeMovie()
      pause = 0
     EndIf
    Case #button_2
     StopMovie()
   EndSelect
  Case #PB_EventCloseWindow
   quit = 1
 EndSelect
Until quit = 1
Reproches, amélioration :?: :idea:
8) 8) 8)

Publié : dim. 04/déc./2005 18:02
par Chris
Ben comme d'hab, gadget.

C'est pas fini! :?

Sans l'avoir essayé, je suis persuadé que si tu cliques sur le bouton "Play" sans avoir chargé de musique, ça plante!

T'est vraiment indécrotable hein.... !

Publié : dim. 04/déc./2005 18:08
par gadjet35
voila maintenant si on appuie alors que rien n'est ouvert sa bug pas :

Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Tree_0
  #Text_0
  #Button_0
  #Button_1
  #Button_2
  #Button_3
EndEnumeration

If InitMovie() = 0
 End
EndIf

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 228, 217, 499, 279,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Lecteur Audio")
    If CreateGadgetList(WindowID())
      TreeGadget(#Tree_0, 20, 50, 160, 180)
      TextGadget(#Text_0, 40, 20, 140, 30, "Liste des musiques :")
      ButtonGadget(#Button_0, 260, 60, 110, 50, "Play")
      ButtonGadget(#Button_1, 260, 130, 110, 50, "Pause")
      ButtonGadget(#Button_2, 260, 200, 110, 50, "Stop")
      ButtonGadget(#Button_3, 20, 240, 160, 30, "Ajouter une musique")
    EndIf
  EndIf
EndProcedure

open_window_0()

Repeat
 Select WaitWindowEvent()
  Case #PB_EventGadget
   Select EventGadgetID()
    Case #button_3
     fichier$ = OpenFileRequester("musique à ouvrir","","fichier musique|*.mp3;*.mid;*.wav;*.wave;*.midi",0)
     AddGadgetItem(#tree_0,position,GetFilePart(fichier$))
     LoadMovie(position,fichier$)
     position = position + 1
    Case #button_0
     movie = GetGadgetState(#tree_0)
     If GetGadgetItemText(#tree_0,movie,0) <> ""
      PlayMovie(movie,WindowID())
     EndIf
    Case #button_1
     If pause = 0  
      SetGadgetText(#button_1,"Replay")
      PauseMovie()
      pause = 1
     ElseIf pause = 1
      SetGadgetText(#button_1,"Pause")
      ResumeMovie()
      pause = 0
     EndIf
    Case #button_2
     StopMovie()
   EndSelect
  Case #PB_EventCloseWindow
   quit = 1
 EndSelect
Until quit = 1
:D

Publié : dim. 04/déc./2005 18:40
par Chris
Ben voilà!

Alors pourquoi tu ne fais pas ça du premier coup? :lol:

Publié : dim. 04/déc./2005 18:41
par AWEAR
Tu pourrais rajouter un boutton pour le volume et éventuellement un pour la balance.
Tu pourrais aussi créer une barre d'avancement de la musique mais j'ai déjà essayé et impossible de trouver la longueur d'une musique. Quelqu'un sait-il comment faire ?

Publié : dim. 04/déc./2005 18:49
par AWEAR
Gros problème, il lit plusieurs musiques en même temps !!! :lol:
Tu pourrais aussi faire que les musiques se jouent les unes à la suite des autres, que lorsqu'on double clique sur une musique, le lecteur la joue, et enfin que l'on puisse supprimer des musiques de la playliste.
Voilà je pense que c'est à peu près tout :D

Publié : dim. 04/déc./2005 18:54
par gadjet35
reviens demain sue ce sujet je ferai tout ce que tu m'a dit !
8)

Publié : lun. 05/déc./2005 8:50
par Chris
-1 Au lieu d'utiliser un TreeGadget() alors que tu n'as pas de dossier à gérer, utilises plutôt un ListIconGadget() ou un ListViewGadget().
C'est plus simple à utiliser pour ce que tu veux faire.

- 2 Si je veux mettre 50 musiques dans ton prog, je dois appeler 50 fois la boite d'ouverture de fichier, et j'aime pas repèter 50 fois la même chose.
Avec l'option "#PB_Requester_MultiSelection", je pourrais sélectionner mes 50 musiques d'un seul coup, et comme ça, je ne ferais qu'un voyage.

- 3 Une fois que j'ai me 50 musiques chargées dans ton prog, je lance la lecture, et quand la première musique est terminée, je suis obligé d'aller à l'ordinateur pour lancer la deuxième, et ainsi de suite jusquà la fin de la liste.
Tu crois vraiment que j'ai envie de faire 50 aller/retours, tout ça pour écouter de la musique. Ben non! J'ai pas envie. Il faut charger les titres et le chemin de chaque fichier dans une LinkedList(), et faire une boucle qui va lire chaque chanson de la liste jusquà la fin.

- 4 Dans les 50 musiques que j'ai chargé, je viens de voir qu'il y en a une que je n'aime pas. Comment je fais pour la retirer? Je ferme le programme, et je recommence en faisant attention de ne pas me tromper? Ca va pas, non!!!


Voilà, avec ça, tu as déjà du boulot pour un petit moment. Et si il y a quelque chose que tu ne comprends pas, tu connais le chemin pour venir demander. :lol:

Publié : lun. 05/déc./2005 12:13
par gadjet35
bon j'ai améliorer tout les point de awear (à par celui qui joue les musiques les l'une après les autres) et j'ai améliorer tous les points de chris (à par le n°3) ! :D
j'ai même rajouté des choses... :idea:

Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #List_0
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Progress_0
  #Progress_1
EndEnumeration

If InitMovie() = 0
 End
EndIf

NewList musique.s()

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 228, 217, 499, 279,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Lecteur Audio")
    If CreateGadgetList(WindowID())
      ListViewGadget(#List_0, 20, 50, 160, 180)
      TextGadget(#Text_0, 40, 20, 140, 30, "Liste des musiques :")
      ButtonGadget(#Button_0, 230, 60, 110, 50, "Play")
      ButtonGadget(#Button_1, 230, 130, 110, 50, "Pause")
      ButtonGadget(#Button_2, 230, 200, 110, 50, "Stop")
      ButtonGadget(#Button_4, 200, 10, 140, 35, "Suprimer une musique")
      ButtonGadget(#Button_3, 20, 240, 160, 30, "Ajouter une musique")
      TrackBarGadget(#Progress_0,370,50,40,200,0,100,#PB_TrackBar_Vertical)
      TrackBarGadget(#Progress_1,420,50,40,200,0,200,#PB_TrackBar_Vertical)
      TextGadget(#Text_1,355,20,50,40,"Volume ="+Chr(10)+"   100")
      TextGadget(#Text_2,415,20,50,40,"Balance ="+Chr(10)+" Gauche")
      TextGadget(#Text_3,375,260,40,30,"0")
      TextGadget(#Text_4,415,260,40,30,"Droite")
    EndIf
  EndIf
EndProcedure

MessageRequester("J'ai rajouté ...","clique sur le bouton droit sur une musique = info sur la musique !"+Chr(10)+"double clique sur le bouton droit sur une musique = supression de la musique !"+Chr(10)+"bien sur double clique sur le bouton gauche sur une musique = lancement de la musique !"+Chr(10)+"(message à suprimer dans le code)")
open_window_0()

Repeat
 Select WaitWindowEvent()
  Case #PB_EventGadget
   Select EventGadgetID()
    Case #list_0
     Select EventType()
      Case #PB_EventType_LeftDoubleClick
       Goto jouer:
      Case #PB_EventType_RightDoubleClick
       Goto suprimer:
      Case #PB_EventType_RightClick
       SelectElement(musique.s(),GetGadgetState(#list_0))
       chemin$ = musique.s()
       MessageRequester("Info","Musique N°"+Str(GetGadgetState(#list_0))+Chr(10)+"Chemin :"+Space(5)+chemin$)
     EndSelect
    Case #button_3
     fichier$ = OpenFileRequester("musique à ouvrir","","fichier musique|*.mp3;*.mid;*.wav;*.wave;*.midi",0,#PB_Requester_MultiSelection)
     AddGadgetItem(#List_0,position,GetFilePart(fichier$))
     LoadMovie(position,fichier$)
     position = position + 1
     AddElement(musique.s())
    Case #button_4
     suprimer:
     movie = GetGadgetState(#list_0)
     RemoveGadgetItem(#list_0,movie)
     FreeMovie(movie)
    Case #button_0
     jouer:
     movie = GetGadgetState(#List_0)
     If GetGadgetItemText(#List_0,movie,0) <> ""
      If musique = 1
       StopMovie()
       musique = 0
      EndIf
      PlayMovie(movie,WindowID())
      musique = 1
     EndIf
    Case #button_1
     If musique = 1
      If pause = 0  
       SetGadgetText(#button_1,"Replay")
       PauseMovie()
       pause = 1
      ElseIf pause = 1
       SetGadgetText(#button_1,"Pause")
       ResumeMovie()
       pause = 0
      EndIf
     EndIf
    Case #button_2
     StopMovie()
     musique = 0
    Case #progress_0 
     volume = GetGadgetState(#progress_0)
     balance = GetGadgetState(#progress_1)
     MovieAudio(volume,balance)
    Case #progress_1
     volume = GetGadgetState(#progress_0)
     balance = GetGadgetState(#progress_1) - 100
     MovieAudio(volume,balance)
   EndSelect
  Case #PB_EventCloseWindow
   quit = 1
 EndSelect
Until quit = 1
maintenant c'est deja vachement cool ! :D :D :D
:10:

Publié : lun. 05/déc./2005 12:34
par gadjet35
il faut juste rajouter endessous de freemovie(movie)
select element(movie)
deleteelement()
j'avais oublier c'est rectifier !
:D

Publié : lun. 05/déc./2005 13:09
par Chris
Bon!

J'ai sélectionné mes 50 musiques dans la boite de dialogue. J'suis bien content, je clique su "Ok", et...
... et j'ai qu'une seule musique qui s'affiche dans la liste! :roll:

Publié : lun. 05/déc./2005 13:14
par gadjet35
je vais aranger ca ! :)
juste une question j'ai jamais réussis à sélèctionner plusieurs fichier comme ca commetnfaut-il faire ? :idea:

Publié : lun. 05/déc./2005 13:33
par Chris
Il faut utiliser NextSelectedFileName() dans une boucle. Regarde dans l'aide, il y en a une toute faite comme exemple.

Et dans ta boucle, tu remplis ta liste chainée avec la valeur retournée par la fonction, en faisant attention de ne pas mettre de chaine vide dans la liste.

Donc
If Fichier$ <> ""
Hop, Dans la liste
Endif

Publié : lun. 05/déc./2005 14:01
par gadjet35
voila c'est fait :

Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #List_0
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Progress_0
  #Progress_1
EndEnumeration

If InitMovie() = 0
 End
EndIf

NewList musique.s()

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 228, 217, 499, 279,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Lecteur Audio")
    If CreateGadgetList(WindowID())
      ListViewGadget(#List_0, 20, 50, 160, 180)
      TextGadget(#Text_0, 40, 20, 140, 30, "Liste des musiques :")
      ButtonGadget(#Button_0, 230, 60, 110, 50, "Play")
      ButtonGadget(#Button_1, 230, 130, 110, 50, "Pause")
      ButtonGadget(#Button_2, 230, 200, 110, 50, "Stop")
      ButtonGadget(#Button_4, 200, 10, 140, 35, "Suprimer une musique")
      ButtonGadget(#Button_3, 20, 240, 160, 30, "Ajouter une musique")
      TrackBarGadget(#Progress_0,370,50,40,200,0,100,#PB_TrackBar_Vertical)
      TrackBarGadget(#Progress_1,420,50,40,200,0,200,#PB_TrackBar_Vertical)
      TextGadget(#Text_1,355,20,50,40,"Volume ="+Chr(10)+"   100")
      TextGadget(#Text_2,415,20,50,40,"Balance ="+Chr(10)+" Gauche")
      TextGadget(#Text_3,375,260,40,30,"0")
      TextGadget(#Text_4,415,260,40,30,"Droite")
    EndIf
  EndIf
EndProcedure

open_window_0()

Repeat
 Select WaitWindowEvent()
  Case #PB_EventGadget
   Select EventGadgetID()
    Case #list_0
     Select EventType()
      Case #PB_EventType_LeftDoubleClick
       Goto jouer:
      Case #PB_EventType_RightDoubleClick
       Goto suprimer:
      Case #PB_EventType_RightClick
       SelectElement(musique.s(),GetGadgetState(#list_0))
       chemin$ = musique.s()
       MessageRequester("Info","Musique N°"+Str(GetGadgetState(#list_0))+Chr(10)+"Chemin :"+Space(5)+chemin$)
     EndSelect
    Case #button_3
     fichier$ = OpenFileRequester("musique à ouvrir","","fichier musique|*.mp3;*.mid;*.wav;*.wave;*.midi",0,#PB_Requester_MultiSelection)
     Repeat
      AddGadgetItem(#List_0,position,GetFilePart(fichier$))
      LoadMovie(position,fichier$)
      position = position + 1
      AddElement(musique.s())
      NextSelectedFileName()
     Until fichier$ = ""
    Case #button_4
     suprimer:
     movie = GetGadgetState(#list_0)
     RemoveGadgetItem(#list_0,movie)
     FreeMovie(movie)
     SelectElement(musique.s(),movie)
     DeleteElement(musique.s())
    Case #button_0
     jouer:
     movie = GetGadgetState(#List_0)
     If GetGadgetItemText(#List_0,movie,0) <> ""
      If musique = 1
       StopMovie()
       musique = 0
      EndIf
      PlayMovie(movie,WindowID())
      musique = 1
     EndIf
    Case #button_1
     If musique = 1
      If pause = 0  
       SetGadgetText(#button_1,"Replay")
       PauseMovie()
       pause = 1
      ElseIf pause = 1
       SetGadgetText(#button_1,"Pause")
       ResumeMovie()
       pause = 0
      EndIf
     EndIf
    Case #button_2
     StopMovie()
     musique = 0
    Case #progress_0 
     volume = GetGadgetState(#progress_0)
     balance = GetGadgetState(#progress_1)
     MovieAudio(volume,balance)
    Case #progress_1
     volume = GetGadgetState(#progress_0)
     balance = GetGadgetState(#progress_1) - 100
     MovieAudio(volume,balance)
   EndSelect
  Case #PB_EventCloseWindow
   quit = 1
 EndSelect
Until quit = 1
:D :D :D

Publié : lun. 05/déc./2005 14:12
par Chris
Tu vas me dire que tu as essayé et que ça marche chez toi, je parie