je cherche à réceptionner des notes midi envoyées depuis un clavier midi via une interface midi usb.
j'ai fais ça :
//init de la variable globale //et allocation en memoire d'un buffer midiHdr.dwFlags =0; midiHdr.lpData = (char*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 50); midiHdr.dwBufferLength = 50;
[COLOR=black] //ouverture du port midi In à l'indice 0 if (!midiInOpen(&handleIn, 0, (DWORD)MidiInProc, 0, CALLBACK_FUNCTION | MIDI_IO_STATUS) ) { fprintf(stderr,"ouvert IN\n"); MMRESULT resultatIn; [/COLOR] [COLOR=black] //preparation du buffer midiInPrepareHeader(handleIn, &midiHdr, sizeof(MIDIHDR)); //lien entre le port midi In et le buffer pr reception info note midiInAddBuffer(handleIn, &midiHdr, sizeof(MIDIHDR)); //ecoute du port Midi In midiInStart(handleIn); [/COLOR] [COLOR=black] resultatIn = midiInStart(handleIn); [/COLOR] [COLOR=black] switch(resultatIn) { case MMSYSERR_NOERROR: fprintf(stderr,"IN start OK\n "); break; [/COLOR] [COLOR=black] case MMSYSERR_INVALHANDLE: fprintf(stderr,"PAAAAAAASSS , INVALHANDLE\n"); break; [/COLOR] [COLOR=black] default: fprintf(stderr,"PAAAAAAASSS REEECCCUUUU, REPONSE PAR DEFAUT\n"); break; } [/COLOR] [COLOR=black] }[/COLOR]
void CALLBACK MidiInProc(HMIDIIN hMidiIn,UINT wMsg,DWORD_PTR dwInstance,DWORD_PTR dwParam1,DWORD_PTR dwParam2) { /**code ???**/ unsigned err; fprintf(stderr,"je suis dans ma fonction callback\n"); LPMIDIHDR lpMidiHeader = (LPMIDIHDR)dwParam1; char param1[50]=""; char param2[50]=""; char instance[50]="";
[COLOR=black] param1[50]= dwParam1; param2[50]= dwParam2; instance[50]=dwInstance; [/COLOR] [COLOR=black] fprintf(stderr,"MON MESSSSSSAAAAAAAGGGGEEE : %u\n",wMsg); fprintf(stderr,"MON param1 : %s\n",param1); fprintf(stderr,"MON param2 : %s\n",param2); fprintf(stderr,"MON Instance : %s\n",instance); [/COLOR] [COLOR=black] //lpMidiHeader->dwBytesRecorded=0 ; //if (0 != (err = midiInAddBuffer(handleIn, lpMidiHeader, sizeof(MIDIHDR)))) //fprintf(stderr,"probleme midiInAddBuffer\n"); }[/COLOR]
MON MESSSSSSAAAAAAAGGGGEEE : 961
MON param1 :
MON param2 :
MON Instance :
ouvert IN
IN start OK
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 :
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 : '
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 : <
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 : Q
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 : f
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 : {
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 :
MON param2 :
MON Instance :
je suis dans ma fonction callback
MON MESSSSSSAAAAAAAGGGGEEE : 963
MON param1 : ¥
MON param2 :
MON Instance :
après mon programme doit continuer en fonction des notes jouées
pouvez-vous m'aider s'il vous plait ? je trouve pas grand chose comme explication sur internet à part la doc sur msdn
merci
Commentaire