Page 2 sur 2

Publié : lun. 29/sept./2008 18:51
par venom
salut Dobro,

désolé mais ton code ne fonctionne pas chez moi j'ai aucun son qui sort :?
tu dira quoi gildev si sa tourne chez toi ?




@++

Publié : lun. 29/sept./2008 19:46
par Backup
..........

Publié : lun. 29/sept./2008 20:05
par venom
quel boulet que je fait :oops:

au lieu de faire comme ce-ci:

Code : Tout sélectionner

Global chemin$= "C:\"
Global nom_fichier$= "test.MID "
je proceder comme sa:

Code : Tout sélectionner

Global chemin$= "C:\test.mid"
Global nom_fichier$= "MATHILDE.MID "
autant pour moi le 1er code tourne parfaitement j'ai voulu aller trop vite :wink:

pour plus de facilité j'y est ajouté l'option openfilerequester() :wink:

Code : Tout sélectionner

Declare.b play_midi(chemin$,action$)
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)

   ; ********* chemin du fichier midi a parametrer !! (vais pas tout faire non plus!! : o) ) **********
repertoire$= OpenFileRequester("fichier midi", "", "Fichiers midi|*.mid"  , 0)
Global chemin$= GetPathPart(repertoire$)
Global nom_fichier$= GetFilePart(repertoire$)
chemin$=chemin$+nom_fichier$
       ;***************************************************************************
      




If OpenWindow (0, 100, 200, 195, 150, "yeeehaaa" , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget )
      Handle = WindowID (0)
       CreateGadgetList (Handle)
       TextGadget (0, 10, 10,250,20, "Patiente quelques secondes" )
       ; *************on prepare un timer ************** <-- pour la demo d'arret er relance du fichier midi
       SetTimer_ (Handle, 1, 10000, @TimerProc()) ; envoie un evenement toutes les 10 secondes
       SetTimer_ (Handle, 2, 11000, @TimerProc()) ; envoie un evenement toutes les 11 secondes
       ; *****************************************************************************
      
      
       Global Buffer$= Space (128 ) ; <--- besoin pour la lecture
      
      
      play_midi(chemin$, "load" ) ; on load le fichier midi (grace a ma belle procedure toute neuve)
      
      play_midi(chemin$, "play" ) ; lance le morceau
       SetGadgetText (0, "le morceau joue !! " )
      
      
       ;********* boucle principale ***************************
       Repeat
            EventID.l = WaitWindowEvent ()
            
             If EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
                  Quit = 1
                  play_midi(chemin$, "close" ) ; on ferme le fichier midi
             EndIf
       Until Quit = 1
       ; **************************************************
EndIf
End






; *********************************************
;******* Les procedures *************************
; *********************************************


Procedure.b play_midi(chemin$,action$) ; la super procedure qui charge, lit, stop,et close un midifile
       ; By Dobro
       Select action$
             Case "load"
                   mciSendString_ ( "open " + chemin$+ " type sequencer alias mid" ,Buffer$,128,0)
                   ProcedureReturn 0
             Case "play"
                   mciSendString_ ( "play mid" ,0,0,0)
             Case "stop"
                   mciSendString_ ( "stop mid" ,0,0,0)
             Case "close"
                   mciSendString_ ( "CLOSE MIDI" ,0,0,0)
       EndSelect
EndProcedure




Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l) ; le timer qui gere le temps de lecture et d'arret successif
      
       Select uMsg
             Case #WM_TIMER
                   Select idEvent
                         Case 1
                               Debug "--------------------10 seconde"
                               ; Ici, le code à executer toutes les 10 secondes
                              play_midi(chemin$, "stop" ) ; on stop la lecture toute les 5 secondes
                               SetGadgetText (0, "le morceau est Stopé" )
                         Case 2
                               Debug "------------------------11 secondes"
                               ; Ici, le code à executer toutes les 11 secondes
                              play_midi(chemin$, "play" ) ; on relance la lecture toute les 6 secondes
                               SetGadgetText (0, "le morceau est Relancé" )
                   EndSelect
       EndSelect
EndProcedure



@++

Publié : lun. 29/sept./2008 20:06
par Backup
venom a écrit :quel boulet que je fait :oops:

au lieu de faire comme ce-ci:

Code : Tout sélectionner

Global chemin$= "C:"
Global nom_fichier$= "test.MID "
je procedais comme ça:

Code : Tout sélectionner

Global chemin$= "C:\test.mid"
Global nom_fichier$= "MATHILDE.MID "

pffff !! :lol: :lol: :lol: :)

Publié : mar. 30/sept./2008 5:37
par Thyphoon
Merci pour le Code Dobro !!! Mas hélas ce n'est pas compatible linux et MacOsX :P
Tient je vais chercher pour nunuxe comment on peu faire ça... :D

Publié : mar. 30/sept./2008 10:38
par Backup
Thyphoon a écrit :Merci pour le Code Dobro !!! Mas hélas ce n'est pas compatible linux et MacOsX :P
Tient je vais chercher pour nunuxe comment on peu faire ça... :D
désolé, j'ai pas linux..
mais cela doit surement exister, il existe des application midi sous linux ?? 8O :)

Publié : mar. 30/sept./2008 12:08
par gildev
C'est assez facheux car je fais mon prog sous Windows mais je le compile aussi sous Linux pour avoir mon appli sur les deux plateformes.

Je ferai un essai ce soir après le taf...

Publié : mar. 30/sept./2008 12:21
par Backup
gildev a écrit :C'est assez facheux car je fais mon prog sous Windows mais je le compile aussi sous Linux pour avoir mon appli sur les deux plateformes.

Je ferai un essai ce soir après le taf...
pas besoin de faire d'essai !!

mon listing se sert de l'api Windows
mciSendString_ ( "play mid" ,0,0,0)
donc pas compatible sur Linux ! :)

Publié : mar. 30/sept./2008 21:57
par gildev
Arf! Donc j'en reviens à mon idée précédente: il faut dire à Fred d'ajouter les fonctions natives dans PB pour tous les compilateurs.

Publié : mar. 30/sept./2008 22:24
par Backup
gildev a écrit :Arf! Donc j'en reviens à mon idée précédente: il faut dire à Fred d'ajouter les fonctions natives dans PB pour tous les compilateurs.
Linux aussi a une API
il y a certainement une api equivalente...

vais pas installer Linux pour chercher quand meme :)

Publié : mer. 01/oct./2008 10:53
par Ar-S
vais pas installer Linux pour chercher quand meme
T'es fainéant quand même ! Image

.........non ! pas tappppeerrrrr !Image

Publié : mer. 01/oct./2008 11:40
par Backup
Ar-S a écrit :
vais pas installer Linux pour chercher quand meme
T'es fainéant quand même ! Image

.........non ! pas tappppeerrrrr !Image
mes deux references de vie sont

Moustaki

Henry Salvador

tu comprends mieux ? :lol: