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
au lieu de faire comme ce-ci:
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
pour plus de facilité j'y est ajouté l'option
openfilerequester()
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
au lieu de faire comme ce-ci:
je procedais comme ça:
Code : Tout sélectionner
Global chemin$= "C:\test.mid"
Global nom_fichier$= "MATHILDE.MID "
pffff !!

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

Tient je vais chercher pour nunuxe comment on peu faire ça...

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

Tient je vais chercher pour nunuxe comment on peu faire ça...

désolé, j'ai pas linux..
mais cela doit surement exister, il existe des application midi sous linux ??

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 !
.........non ! pas tappppeerrrrr !
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 !
.........non ! pas tappppeerrrrr !
mes deux references de vie sont
Moustaki
Henry Salvador
tu comprends mieux ?
