lecteur multi-audio

Programmation d'applications complexes
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

lecteur multi-audio

Message 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)
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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.... !
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message 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
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ben voilà!

Alors pourquoi tu ne fais pas ça du premier coup? :lol:
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message 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 ?
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message 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
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

reviens demain sue ce sujet je ferai tout ce que tu m'a dit !
8)
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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:
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message 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:
bonne journer à tous !!!
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

il faut juste rajouter endessous de freemovie(movie)
select element(movie)
deleteelement()
j'avais oublier c'est rectifier !
:D
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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:
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message 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:
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message 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
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tu vas me dire que tu as essayé et que ça marche chez toi, je parie
Répondre