2009-12-26 9 views
0

Je suis musicien et programmeur et j'aimerais créer mon propre programme pour faire de la musique. Je vais commencer avec une application console en C++ avant de créer une interface graphique.Obtenir l'ID des périphériques MIDI en C++

Je ne connais pas le langage C/C++ et je sais comment créer une application de console de base et lire l'API Win32.

que je recherchais dans MSDN pour le multimédia dans les applications Win32 et j'ai trouvé beaucoup de fonctions pour le MIDI: http://msdn.microsoft.com/en-us/library/dd798495(VS.85).aspx

je peux recevoir combien sont branchés ainsi des appareils MIDI:

#include <windows.h> 
#include <iostream> 
using namespace std; 
int main() { 
    cout << midiInGetNumDevs(); 
    cout << " MIDI devices connected" << endl; 
    return 0; 
} 

Mais maintenant je veux savoir comment ces dispositifs sont appelés, avec la fonction midiInGetID je pense et une boucle while. Quelqu'un peut-il m'aider avec ça? La fonction nécessite un paramètre HMIDIIN et je ne sais pas comment l'obtenir car presque toutes les fonctions MIDI utilisent ce paramètre.

Je sais que ce n'est pas le sujet le plus évident, mais ce serait génial si quelqu'un pouvait m'aider.

Merci :)

Répondre

4

Pour obtenir des informations, vous en boucle appelant midiInGetDevCaps, avec un premier paramètre variant de 0 inclus le résultat de midiInGetNumDevs exclus. Chaque appel remplit une structure MIDIINCAPS (vous passez un pointeur sur la structure lorsque vous appelez la fonction) avec des informations sur le Nième périphérique. Pour ouvrir un périphérique, et remplir le HMIDIIN nécessaire pour d'autres appels, vous appelez midiInOpen avec le numéro de périphérique (encore une fois, 0 à N-1 inclus) comme deuxième paramètre.

Le même concept s'applique aux dispositifs de sortie, sauf que les noms ont Out au lieu de In (et pour les structures OUT au lieu de IN).

+0

Je vous ai répondu dans une nouvelle réponse, car je ne peux pas baliser mon code ici. – Midas

0

Ok, je l'ai compris. Je ne savais pas midiInGetDevCaps nécessite un appel aux propriétés spécifiques de celui-ci pour retourner le nom de l'appareil.

Voici mon code:

#include <windows.h> 
#include <iostream> 
using namespace std; 
int main() { 
    unsigned int devCount = midiInGetNumDevs(); 
    cout << devCount << " MIDI devices connected:" << endl; 
    MIDIINCAPS inputCapabilities; 
    for (unsigned int i = 0; i < devCount; i++) { 
     midiInGetDevCaps(i, &inputCapabilities, sizeof(inputCapabilities)); 
     cout << "[" << i << "] " << inputCapabilities.szPname << endl; 
    } 
} 

Et merci pour votre aide!

Questions connexes