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 :

[MFC] midi


Sujet :

MFC

  1. #1
    Membre confirmé
    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
    Par défaut [MFC] midi
    Bonjour tout le monde.

    J'ai un problème avec certaines méthodes MIDI de Visual. En effet je dois faire un programme:
    1) recoit un note MIDI.
    2) effectue quelques trucs.
    3) renvoi une note MIDI sur le midi out. Cette derniere note doit etre lue par un autre logiciel. C'est ici que j'ai un probleme.:
    J'ai ouvert le midiOut et je l'ai connecte sur le MidiIn. La fonction de connection me dit que tout c'est bien passé. MAIS quand j'envoi un message sur le midi out, l'autre logiciel ne recoit rien sur son midi in.

    Que dois je faire pour qu'il recoive????
    Qu'elle methode utilise pour envoye une note midi (pour l'instant j'utilise midiOutShortMsg).

    Enfin j'espere que vous saurez m'aider

    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu as testé le retour de ta fonction ?
    elle retourne MMSYSERR_NOERROR ?

  3. #3
    Membre confirmé
    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
    Par défaut
    Oui j'ai testé le retour du connect et de l'envoi du message et tt 2 me disent que ca c'est bien passé.
    Mais helas ca ne marche po :-(

  4. #4
    Membre confirmé
    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
    Par défaut
    voici le code du connect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ret_val = midiConnect((HMIDI)m_HandleMidiIn,m_HandleMidiOut,0);
    switch(ret_val)
    {
    case MMSYSERR_INVALHANDLE: TRACE("\nConnect MMSYSERR_INVALHANDLE Specified device handle is invalid. ");
    break;
     
    case MIDIERR_NOTREADY: TRACE("\nConnect MIDIERR_NOTREADY Specified input device is already connected to an output device.  ");
    break;
     
    case MMSYSERR_NOERROR : TRACE("\nConnect OK");
    break;
    }
    return true;
    Voici le code pour l'envoi d'un message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    ret_val = midiOutShortMsg(m_HandleMidiOut,0x7F6090);	
    switch(ret_val)
    {
    case MIDIERR_BADOPENMODE: TRACE("\n Out Envoi MIDIERR_BADOPENMODE The application sent a message without a status byte to a stream handle."); 
    break;
     
    case MIDIERR_NOTREADY: TRACE("\n Out Envoi MIDIERR_NOTREADY The hardware is busy with other data. "); 
    break;
     
    case MMSYSERR_INVALHANDLE: TRACE("\n Out Envoi MMSYSERR_INVALHANDLE The specified device handle is invalid. "); 
    break;
     
    case MMSYSERR_NOERROR: TRACE("\n Out OK. "); 
    break;
    }
    Y a t'il une erreur???

    Mon MidiIn est le Midiin de ma carte son et le midiout est le midiout de ma carte son.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re,
    essaye ça: (note j'ai pas essayé ! )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    //MOD_MIDIPORT : port hardware matérialisant une voie de communication avec des instruments extérieurs
    //MOD_SQSYNTH  : synthétiseur interne de signaux carrés
    //MOD_FMSYNTH  : synthétiseur FM interne. Permet de simuler des instruments de musique
    //MOD_MAPPER   : Microsoft MIDI mapper
     
    int wDeviceID ;
    MIDIOUTCAPS OutCaps ; 
    for(wDeviceID=0 ; wDeviceID<NbreDevs ; wDeviceID++)
    {
     
     midiOutGetDevCaps(wDeviceID, &OutCaps, sizeof(OutCaps) ) ;
     if( OutCaps.wTechnology==MOD_MIDIPORT)  break ;
     
    }
    HMIDIOUT hMidiOut ; 
    midiOutOpen( &hMidiOut, wDeviceID, NULL, NULL, NULL ) ;
     
    int ret_val = midiOutShortMsg(hMidiOut,0x7F6090);  
    // ton code de test...
     
    /* Son Off: 0x0000nn8c*/
    midiOutShortMsg(hMidiOut,0x0000nn8c) ;
     
    midiOutClose(hMidiOut) ;
    pense aussi a voir du coté de midiOutSetVolume on sait jamais...

  6. #6
    Membre confirmé
    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
    Par défaut
    Merci pour le code je l'ai testé mais helas ca ne va quand meme po.
    Ce qui est encore plus bizar c'est que quand je ne fais pas le connect et que je branche mon midiout a mon midiin avec un cable (donc de façon hardware) ca ne marche pas non plus, pourtant je ne fais que envoye sur le port out et le logiciel qui est de l'autre cote n'a qu'a lire le in.

    C'est assez bizar????

  7. #7
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut
    Est ce que ton code renvoie reellement "Trace OK" et "Out OK" ?

    Si c'est le cas, je ne sais pas quoi te dire.

    Si ce n'est pas le cas, c'est que tu as une erreur, mais que tu n'as pas géré dans ton switch (tu n'as pas mis de default).

    Sinon, je ne sais pas si ca va marcher, mais as tu essaye de recuperer l'erreur par ou par Bon courage

  8. #8
    Membre confirmé
    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
    Par défaut
    La est tt le probleme g gere tt les erreurs enumerees par msdn. Et mes 2 méthodes me renvoie ttes les 2 que je n'ai pas d'erreur.

    Quelqu'un connait un petit logiciel qui permet de voir ce qui passe comme trame MIDI sur un port???

    Et je suis ouvert a ttes les idees possibles et imaginables

  9. #9
    Membre confirmé
    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
    Par défaut
    Pour ouvrir le port c'est bien comme ceci qu'il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    midiOutOpen(&m_HandleMidi,m_DeviceID,NULL,0,CALLBACK_NULL);
    En tt cas quand je teste la valeur de retour c OK puis alors je connect cette sortie a une entree (la MIDI IN de la carte son) et puis j'envoi. Le probleme viendrait peut etre de l'envoi.

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re,
    tu peux pas essaye le meme test sur MOD_FMSYNTH pour voir si ça fonctionne.
    apres c'est clair qu'il faut voir si tu n'as pas un pb materiel .
    si le port midi est bien actif au niveau xp etc....

  11. #11
    Membre confirmé
    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
    Par défaut
    Quand je lance un diagnostique via le test de ma carte il me dit que tt fonctionne. Ce qui serait bien c'est de voir ce qui passe sur le port, existe t'il un logiciel qui permet de regarder ce qui passe sur le port????

  12. #12
    Membre confirmé
    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
    Par défaut
    Il y a du changement, le son sort bien sur la carte car je l'entend (c'est quand je dis que mon midi out doit etre un synthetiseur).
    Il reste juste un probleme c'est que ce qui arrive sur mon midi out ne revient pas sur le midi in(un probleme de connect?????)

  13. #13
    Membre confirmé
    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
    Par défaut
    Personne ne sait m'aider pour au niveau du midiConnect?????

  14. #14
    Membre confirmé
    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
    Par défaut
    Pourquoi quand je recois une note sur mon in, elle se fait correctement sur le out(synthe). Mais quand j'envoi sur le out elle ne vient pas sur le in( il faut envoyer une commande avant??????)

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. [MFC] Acquisition du port midi avec visual c++ 6.0
    Par spirit_1999 dans le forum MFC
    Réponses: 2
    Dernier message: 16/05/2005, 19h26
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Réponses: 2
    Dernier message: 10/06/2002, 11h03
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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