Obtener ID de dispositivos MIDI en C ++

Soy músico y progtwigdor y me gustaría crear mi propio progtwig para hacer música. Comenzaré con una aplicación de consola en C ++ antes de crear una GUI.

Soy nuevo en C / C ++, sé cómo hacer una aplicación de consola básica y he leído sobre la API de Win32.

Estaba buscando en MSDN multimedia en aplicaciones Win32 y encontré muchas funciones para MIDI: http://msdn.microsoft.com/en-us/library/dd798495(VS.85).aspx

Puedo recibir la cantidad de dispositivos MIDI conectados de esta manera:

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

Pero ahora quiero saber cómo se llaman estos dispositivos, con la función midiInGetID y un bucle while. puede alguien ayudarme con esto? La función requiere un parámetro HMIDIIN y no sé cómo puedo obtener uno, ya que casi todas las funciones MIDI usan este parámetro.

Sé que este no es el tema más obvio, pero sería genial si alguien pudiera ayudarme.

Gracias 🙂

Para obtener información, realiza un bucle de llamadas a midiInGetDevCaps , con un primer parámetro que varía de 0 incluido al resultado de midiInGetNumDevs excluido. Cada llamada llena una estructura MIDIINCAPS (usted pasa un puntero a la estructura cuando llama a la función) con información sobre el dispositivo Nth. Para abrir un dispositivo y completar el HMIDIIN necesario para otras llamadas, debe llamar a midiInOpen con el número del dispositivo (nuevamente, 0 a N-1 incluido) como segundo parámetro.

El mismo concepto se aplica a los dispositivos de salida, excepto que los nombres tienen Out lugar de In (y para las estructuras OUT lugar de IN ).

Ok, lo he descubierto. No sabía que midiInGetDevCaps requiere una llamada a sus propiedades específicas para devolver el nombre del dispositivo.

Aquí está mi código:

 #include  #include  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; } } 

¡Y gracias por tu ayuda!