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:)

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top