[RESOLU] problème PROPSYS.dll

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

[RESOLU] problème PROPSYS.dll

Message par microdevweb »

Bonjour à tous,

Je développe un programme qui décode un fichier midi et doit jouer des notes (midi ou autres). Je me suis inspirer de certains code trouvé sur le forum pour jouer les note midi (code de 2004) si je lance ces code avec PB 3.91 cela fonctionne, mais avec ma version PB 5.22
j'ai le message suivant c:\users\Microdev\AppData\Local\Temp\PROPSYS.dll n'est pas conçu pour s'exécuter sous WINDOWS ou il contient une erreur.Installe à nouveau le programme à l'aide du support d'installation d'origine, ou bien contacter votre administrateur ...ect

Voici le code qui bloque

Code : Tout sélectionner

   If m_MIDIOpen = 0
        If midiOutOpen_(@m_hMidiOut,MIDIMAPPER,0,0,0) <> 0
            MessageRequester("Problème", "Impossible d'ouvrir le périphérique MIDI",0)
        Else
            SendMIDIMessage($C0,0,0,0)
            m_MIDIOpen = 1
        EndIf
    EndIf
EndProcedure
Merci d'avance pour votre aide
Dernière modification par microdevweb le jeu. 27/mars/2014 10:39, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: PROPSYS.dll

Message par Backup »

un lien vers le code d'origine ?

voici un code qui fonctionne , tu choisis un fichier midi , il le lit ..

il y a tout ce qu'il faut pour lire, mettre en pause, relancer , stopper ....


Code : Tout sélectionner

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2786&highlight=
; Author: GPI
; Date: 09. November 2003


;info:Play Midis direct (with mci) 
Procedure GetMidiLength(Nb) 
	a$=Space(#MAX_PATH) 
	i=mciSendString_("status mid"+Str(Nb)+" length",@a$,#MAX_PATH,0) 
	ProcedureReturn Val(a$) 
EndProcedure 
Procedure SetMidiTimeFormatToMS(Nb) 
	ProcedureReturn mciSendString_("set mid"+Str(Nb)+" time format milliseconds",0,0,0) 
EndProcedure 
Procedure SetMidiTimeFormatToTick(Nb) 
	ProcedureReturn mciSendString_("set mid"+Str(Nb)+" time format song pointer",0,0,0) 
EndProcedure 
Procedure LoadMidi(Nb,file.s) 
	;i=mciSendString_("open Sequencer!"+Chr(34)+file+Chr(34)+" alias mid"+Str(Nb),0,0,0) 
	i=mciSendString_("OPEN "+Chr(34)+file+Chr(34)+" Type SEQUENCER ALIAS mid"+Str(Nb),0,0,0) 
	If i=0 
		ProcedureReturn #True 
		Else 
		ProcedureReturn #False 
	EndIf 
EndProcedure 
Procedure PlayMidi(Nb) 
	i=mciSendString_("play mid"+Str(Nb)+" from "+Str(0),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure PlayMidiFrom(Nb,Start,endPos) 
	i=mciSendString_("play mid"+Str(Nb)+" from "+Str(Start)+" to "+Str(endPos),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure PauseMidi(Nb) 
	i=mciSendString_("pause mid"+Str(Nb),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure ResumeMidi(Nb) 
	i=mciSendString_("resume mid"+Str(Nb),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure StopMidi(Nb) 
	i=mciSendString_("stop mid"+Str(Nb),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure FreeMidi(Nb) 
	i=mciSendString_("close mid"+Str(Nb),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure SetMidiTempo(Nb,Tempo) 
	i=mciSendString_("set mid"+Str(Nb)+" tempo "+Str(Tempo),0,0,0) 
	ProcedureReturn i 
EndProcedure 
Procedure GetMidiPosition(Nb) 
	a$=Space(#MAX_PATH) 
	i=mciSendString_("status mid"+Str(Nb)+" position",@a$,#MAX_PATH,0) 
	ProcedureReturn Val(a$) 
EndProcedure 
Procedure GetMidiTempo(Nb) 
	a$=Space(#MAX_PATH) 
	i=mciSendString_("status mid"+Str(Nb)+" Tempo",@a$,#MAX_PATH,0) 
	ProcedureReturn Val(a$) 
EndProcedure 
Procedure IsMidiPlaying(Nb) 
	a$=Space(#MAX_PATH) 
	i=mciSendString_("status mid"+Str(Nb)+" mode",@a$,#MAX_PATH,0) 
	If a$="playing" 
		ProcedureReturn #True 
		Else 
		ProcedureReturn #False 
	EndIf 
EndProcedure 
Procedure IsMidiPaused(Nb) 
	a$=Space(#MAX_PATH) 
	i=mciSendString_("status mid"+Str(Nb)+" mode",@a$,#MAX_PATH,0) 
	If a$="paused" 
		ProcedureReturn #True 
		Else 
		ProcedureReturn #False 
	EndIf 
EndProcedure 
Procedure IsMidiReady(Nb) 
	a$=Space(#MAX_PATH) 
	i=mciSendString_("status mid"+Str(Nb)+" mode",@a$,#MAX_PATH,0) 
	Debug a$ 
	If a$="not ready" 
		ProcedureReturn #False 
		Else 
		ProcedureReturn #True 
	EndIf 
EndProcedure 


;- Example
OpenWindow(1,0,200,10,10,"Midi-Test",#PB_Window_SystemMenu) 
file$=OpenfileRequester( "Midi player","c:\","*.mid;*.MID",0)
LoadMidi(1,file$) 
Debug GetMidiLength(1) 
SetMidiTimeFormatToMS(1) 
Debug GetMidiLength(1) 

PlayMidi(1) 

old=-1 
Repeat 
	If IsMidiPlaying(1) 
		event=WindowEvent() 
		x=GetMidiPosition(1)/100 
		If old<>x 
			Debug "+"+Str(x) 
			old=x 
		EndIf 
		Else 
		event=WaitWindowEvent() 
	EndIf 
Until event=#PB_Event_CloseWindow 
StopMidi(1) 
FreeMidi(1)



; ExecutableFormat=Windows
; EOF
; Epb

Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: PROPSYS.dll

Message par microdevweb »

Merci Dobro,
Voici le lien su code
http://www.purebasic.fr/french/viewtopic.php?p=3444

Merci pour l'exemple, mais je voulais jouer des note bien spécifique en vériter. Mais je vais regarder comment exploiter ce code
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: PROPSYS.dll

Message par microdevweb »

Problème résolu si le code est appelé après l'ouverture d'une fenêtre

Merci
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre