Publicité

Annonce

Réduire
Aucune annonce.

Communication MIDI en C#

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #31
    Le code-source de RTMidi est public ; rien ne t'empêche de l'améliorer et d'offrir ta contribution
    Hello, World!

    Commentaire


    • #32
      Je suis déjà dessus

      Commentaire


      • #33
        Cool !

        Contacte l'auteur, il a peut-être des explications pour ces goti (gotos à gogo) et try/catch imbriqués :
        - code généré
        - code extrait d'exemples mal torchés
        - code mal torché mal corrigé
        - ...

        N'oublie pas non plus que ce code a le mérite de fonctionner sur Mac, PC et Linux, avec différents compilateurs. Il y a probablement des astuces à ce niveau
        Hello, World!

        Commentaire


        • #34
          Cool !

          Contacte l'auteur, il a peut-être des explications pour ces goti (gotos à gogo) et try/catch imbriqués :
          - code généré
          - code extrait d'exemples mal torchés
          - code mal torché mal corrigé
          - ...

          N'oublie pas non plus que ce code a le mérite de fonctionner sur Mac, PC et Linux, avec différents compilateurs. Il y a probablement des astuces à ce niveau
          Hello, World!

          Commentaire


          • #35
            salut à tous et avant tout bonne année :super,

            j'ai le même problème que novaXire sauf que je suis un novice. Je développe en C avec la librairie SDL j'ai fais un include de windows.h et de MMSYSTEM.H, j'arrive à envoyer des notes mais pas à en recevoir. je voudrai récupérer les notes jouées (de type 0x54876204 ) depuis un clavier midi. Je lis, relis, "rerelis" la doc sur msdn mais vu que c'est dépourvu d'exemples et d'explications je suis un peu perdu. ça fais 4 jours que je suis dessus sans résultat et vu que mon patron me met grave la pression franchement je suis au bord du suicide. j'ai déja fais ça (ce qui est faux bien sûr):
            Code:
            if (!midiInOpen(&handleIn, 0, 0, 0, CALLBACK_NULL) )
                   {
                       fprintf(stderr,"ouvert IN\n");
                       MMRESULT resultatIn;
                       MMRESULT resultBuffer;
                       LPMIDIHDR buffer;
                       UINT tailleBuffer;
            
                       resultatIn = midiInStart(handleIn);
            
                         switch(resultatIn)
                        {
                            case MMSYSERR_NOERROR:
                                fprintf(stderr,"IN start OK\n ");
            
                                  resultBuffer = midiInPrepareHeader(handleIn,buffer,tailleBuffer);
            
                                  switch(resultBuffer)
                                {
                                    case MMSYSERR_NOERROR:
                                            fprintf(stderr,"RECU DANS BUFFER OK \n");
            
                                      break;
            
                                      case MMSYSERR_INVALHANDLE:
                                        fprintf(stderr,"PAAAAAAASSS RECCUUU, INVALHANDLE\n");
                                    break;
            
                                      case MMSYSERR_INVALPARAM:
                                        fprintf(stderr,"PAAAAAAASSS RECCUUUU, INVALPARAM\n");
                                    break;
            
                                      case MMSYSERR_NOMEM:
                                        fprintf(stderr,"PAAAAAAASSS RECCUUU, NOMEM\n");
                                    break;
            
                                      default:
                                        fprintf(stderr,"PAAAAAAASSS RECUCUCUCUCUCU, REPONSE PAR DEFAUT\n");
                                    break;
                                }
            
            
                               break;
            
                              case MMSYSERR_INVALHANDLE:
                                fprintf(stderr,"PAAAAAAASSS , INVALHANDLE\n");
                            break;
                    /***/
                            default:
                                fprintf(stderr,"PAAAAAAASSS REEECCCUUUU, REPONSE PAR DEFAUT\n");
                            break;
                        }
            
            
                      }
            est ce que quelqu'un pourrai me corriger s'il vous plait ?

            Commentaire


            • #36
              Utilise un call-back. Regarde le code C++ que j'ai écrit, c'est du plus du C que du C++
              Sinon, utilise un système implémentant le MIDI comme rtmidi, portmidi, ... et regarde leurs exemples (rtmidi est super, mais en C++)
              Hello, World!

              Commentaire


              • #37
                en gros faut juste que je passe une fonction en paramètre à midiInOpen du style
                Code:
                midiInOpen(&handleIn,0,(DWORD)Mafonction,0,CALLBACK_FUNCTION)
                ?

                Et est ce que ma fonction de callback peut être midiInProc()? ou est ce que faut que j'en fasse une moi même?

                désolé mais je ne comprend pas trop ce que tu fais dans ta fonction midiCallback()? en plus tu gère du sysex je crois mais pas moi. Ou alors c'est moi qui pige rien. Enfin en gros je sais pas ou je suis :mefie.

                Je suis vraiment désolé :roll: d'être aussi chi$&^:! embêtant mais ça m'énerve d'avoir la réponse sous mes yeux et de ne pas savoir la manipuler sachant que ça fais un petit moment que je suis dessus et je tourne en rond. est ce que tu pourrai m'expliquer un peu comment fonctionne la fonction midiInOpen() s'il te plais. Sans vouloir trop te demander

                Commentaire


                • #38
                  Oui il fait beaucoup de chose comme il gère le sysex, tout dépend ce que tu veux faire des ce que tu reçois du synthé, si c'est juste afficher le message reçu dans une console tu n'auras qu'une ligne dans cette fonction.


                  Pour la fonction de callback il faut que tu lui passe une fonction que tu as faites et qui respecte le prototype à fournir. (comme tu dit que tu es novice, tu veux une explication sur ce que c'est le callback ou tu sais déjà?)
                  http://www.luxaeternaband.com/

                  Matos : Kurzweil PC3K8

                  Ma video pour le Kurzweil Forte Video Contest : https://www.youtube.com/watch?v=u_Fvc7UWGyI

                  Commentaire

                  Chargement...
                  X