IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Programmation Midi


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut Programmation Midi
    Voila mon projet

    Je souhaite réaliser un petir programme qui est capable de capter des informations midi d'un controlleur MIDI (example de table de mixage midi).


    Pour le moment je souhaite simplement afficher dans des labels:
    le channel utilisé,
    le numéro du controleur
    et la valeur de se controlleur.

    Dans un deuxieme temps
    Celon les valeurs recu j'aimerai envoyer des valeurs midi sur un autre channel.


    Le probleme est que je ne connait rien a la programmation midi.
    J'ai un bon niveau en programmation et j'ai des base dans la norme midi.

    Mais pour mon logiciel, je souhaite seulement capter des notes et leur intensité, j'ai pas besoin de capter les messages SysEx ou de program.


    Le but de mon appli est de connecter un logiciel de son (Live ou Reason) vers un logiciel de VJ (Video Jockey: Mixage de videos en temps réel) comme Resolume ou Arkaos.

    Si quelqu'un a des info ou des sites qui expliqueraient comment débuter.

    Comment connecter les port In et Out
    Comment capter des messages
    Comment en envoyer.

    Merci beaucoup

    car pour le moment je nage dans la doc MSDN

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Y'a rien pour ça dans DirectX ?
    Sinon regarde du côté de la multi media api:
    http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_musical_instrument_digital_interface_midi_.asp

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 189
    Points : 126
    Points
    126
    Par défaut
    Moi j'ai fait une applic avce MIDI et j'ai utilise midiInOpen, .... et le reste. Dans la msdn y a pleins de truc pour ca :-)

  4. #4
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut
    Je suis désolé mais je ne comprend pas grand chose à la doc MSDN.

    Je vois bien qu'il ya plein de truc, mais le probleme est quels sont les truc a utilisé.

    Déjà, je pensai que le MidiIn servait à capter les message d'entrée et le MidiOut a envoyer des message sur la sortie. En lisant la doc je ne comprend plus rien car on peut envoyer des messages sur le MidiIn et sur le MidiOut.

    Je vais essayer de lister brievement les fonctions que je pensai utilisé.


    Pour connaitre le l'entrée midi a utilisé:
    1 - MidiInGetNumDevs: donne le nombre d'entrées midi
    2 - MidiInGetDevCaps: donne les spécification de l'entrée choisi


    Pour capter les messages:
    1 - MidiInOpen: Pour ouvrir le port midi d'entrée
    2 - MidiInPrepareHeader: Prepare le buffer (comprend pas trop)
    3 - MidiInStart: Pour activer l'enregistrement des message
    4 - MidiInAddBuffer: Si je comprend bien les messages midi sont transmis au buffer

    Un message inscrit dans le buffer est de type MIDIHDR qui est la structure du messgae. La non plus je ne comprend pas très bien le type d'information que l'on dispose.

    Pourriez vous m'indiquez si je suis complètement a cote de la plaque ou si si je suis sur une piste.

    Et si oui ai-je a peu pres compris l'enchainement des fonctions.

    Merci

  5. #5
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut
    Est ce que quelqu'un aurait un example d'utilisation de la fonction midiInPrepareHeader.

    A chaque fois j'ai l'erreur MMSYSERR_INVALPARAM qui m'est retourné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    HMIDIIN oHandlePortMidiIn = myNoProject->GetHandlePortIn();
    LPMIDIHDR oStructureIn = myNoProject->GetStructureIn();
     
    MMRESULT Result = midiInPrepareHeader(oHandlePortMidiIn, oStructureIn, sizeof(*oStructureIn));
    Le port midi est bien ouvert.
    Mais je ne sais pas comment initialisé oStructureIn. J'ai déjà essayer pas mal de chose et a chaque fois j'ai la meme erreur

    voici un example d'initialisation de oStructureIn, qui ne marche pas bien sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LPSTR myData = "";
    oStructureIn->lpData = myData;
    oStructureIn->dwBufferLength = 1000;
    oStructureIn->dwBytesRecorded = 1000;
    oStructureIn->dwFlags = 0;
    Je m'arrache les cheveux.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 189
    Points : 126
    Points
    126
    Par défaut
    Moi je fais ceci et ca marche très bien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    mp_DonneeMidi = new MIDIHDR();
    	ret_val = midiInPrepareHeader(m_HandleMidi,mp_DonneeMidi,sizeof(*mp_DonneeMidi));
    	switch(ret_val)
    	{
    		case MMSYSERR_INVALHANDLE: TRACE("\nPrepareHeader MMSYSERR_INVALHANDLE The specified device handle is invalid.");
    									return false;
    		case MMSYSERR_INVALPARAM: TRACE("\nPrepareHeader MMSYSERR_INVALPARAM The specified address is invalid.");
    									return false;
    		case MMSYSERR_NOMEM: TRACE("\nPrepareHeader MMSYSERR_NOMEM The system is unable to allocate or lock memory.");
    									return false;
    		case MMSYSERR_NOERROR : break;				
    	}
    	return true;

  7. #7
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut
    Merci,
    oui ca marche très bien.

    Dans la doc MSDN, il disait de renseigné certain flag du HMIDIIN
    mais en fait des que change un des flag ca ne marche plus.

    Donc merci pour la réponse. J'avance tranquillement dans la prog de mon soft.

    J'ai eu quelques galere sur la fonction midiInProc, mais en fait c'est parceque je l'avais mis dans une de mes classes. Maintenant je capte bien les messages midi. Je n'ai plus qu'a les dechiffrer.

    Encore merci.

Discussions similaires

  1. Programmation MIDI sous Linux ?
    Par tintin72 dans le forum Linux
    Réponses: 4
    Dernier message: 06/06/2009, 10h18
  2. avancee des programmes wav -> midi
    Par acx01b dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/06/2007, 16h52
  3. [Debutant]jouer un son midi dans un programme Java
    Par Ghurdyl dans le forum Multimédia
    Réponses: 2
    Dernier message: 14/12/2006, 17h57
  4. Programmation MIDI en C?
    Par Dordi48 dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 16/08/2006, 19h46
  5. Gestion et programmation du MIDI ?
    Par tintin72 dans le forum Windows
    Réponses: 1
    Dernier message: 03/10/2005, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo