Pregunta

Soy un músico y un programador y me gustaría crear mi propio programa para hacer música. Voy a empezar con una aplicación de consola en C ++ antes de tomar una interfaz gráfica de usuario.

Estoy tranquila nuevo en C / C ++ y sé cómo hacer que una aplicación básica de la consola y han leído acerca de la API de Win32.

Yo estaba buscando en MSDN para multimedia en aplicaciones Win32 y me encontré con una gran cantidad de funciones para MIDI: http://msdn.microsoft.com/en-us/library/dd798495 (VS.85) .aspx

Puedo recibir el número de dispositivos MIDI están conectados de esta manera:

#include <windows.h>
#include <iostream>
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 que pienso y un bucle while. puede alguien ayudarme con esto? La función requiere un parámetro HMIDIIN y no sabe cómo puedo conseguir uno, ya que casi todas las funciones MIDI utilizan este parámetro.

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

Gracias:)

¿Fue útil?

Solución

Para obtener información, se recorre llamar midiInGetDevCaps , con un primer parámetro que varía de 0 incluido para el resultado de midiInGetNumDevs excluidos. Cada llamada llena un MIDIINCAPS estructura (pasas un puntero a la estructura cuando se llama a la función) con información sobre el dispositivo N-ésimo. Para Abrir un dispositivo, y llenar el HMIDIIN necesario para otras llamadas, se llama midiInOpen con el número de dispositivo (de nuevo, 0 a N-1 incluido) como el segundo parámetro.

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

Otros consejos

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

Aquí está mi código:

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

Y gracias por su ayuda!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top