Obtenez ID de périphériques MIDI en C ++
Question
Je suis un musicien et un programmeur et je voudrais créer mon propre programme pour faire de la musique. Je vais commencer par une application console en C ++ avant de faire une interface graphique.
Je suis calme nouveau pour C / C ++ et de savoir comment faire une application console de base et avoir lu sur l'API Win32.
Je cherchais dans MSDN pour le multimédia dans les applications Win32 et j'ai trouvé beaucoup de fonctions pour MIDI: http://msdn.microsoft.com/en-us/library/dd798495 (VS.85) .aspx
Je peux recevoir le nombre d'appareils MIDI sont branchés ainsi:
#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 de while
. Quelqu'un peut-il m'aider avec ça? La fonction nécessite un paramètre HMIDIIN
et je ne sais pas comment je peux obtenir un car utiliser ce paramètre presque toutes les fonctions MIDI.
Je sais que ce n'est pas le sujet le plus évident, mais ce serait bien si quelqu'un pouvait me aider.
Merci:)
La solution
Pour obtenir des informations, vous bouclez appeler midiInGetDevCaps , avec un premier paramètre variant de 0 inclus à la suite de midiInGetNumDevs
exclus. Chaque appel remplit un MIDIINCAPS struct (vous passez un pointeur vers la struct lorsque vous appelez la fonction) avec des informations sur l'appareil Nième. Ouvrir un dispositif, et remplir le HMIDIIN nécessaire pour d'autres appels, vous appelez midiInOpen avec le numéro de dispositif (encore une fois, de 0 à N-1 inclus) en tant que second 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
).
Autres conseils
Ok je compris. Je ne savais pas midiInGetDevCaps
exige un appel aux propriétés spécifiques de celui-ci pour renvoyer le nom du périphérique.
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!