Musiques MIDI

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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 ?




@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

..........
Dernière modification par Backup le dim. 24/juil./2011 17:55, modifié 1 fois.
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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: :)
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :)
Avatar de l’utilisateur
gildev
Messages : 380
Inscription : mar. 19/juin/2007 10:28
Localisation : Picardie (France)

Message 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...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :)
Avatar de l’utilisateur
gildev
Messages : 380
Inscription : mar. 19/juin/2007 10:28
Localisation : Picardie (France)

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

vais pas installer Linux pour chercher quand meme
T'es fainéant quand même ! Image

.........non ! pas tappppeerrrrr !Image
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
Répondre