Domanda

Sono un musicista e un programmatore e vorrei creare il mio programma per fare musica. Comincerò con un'applicazione console in C ++ prima di fare una GUI.

Sono tranquillo nuovo C / C ++ e so come fare un'applicazione console di base e hanno letto sulle API Win32.

che cercavo in MSDN per il multimedia nelle applicazioni Win32 e ho trovato un sacco di funzioni per MIDI: http://msdn.microsoft.com/en-us/library/dd798495 (VS.85) aspx

posso ricevere quanti dispositivi MIDI siano collegati in questo modo:

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

Ma ora voglio scoprire come questi dispositivi sono chiamati, con la funzione di midiInGetID credo e un ciclo while. Qualcuno può aiutarmi con questo? La funzione richiede un parametro HMIDIIN e non so come posso ottenere uno dal momento che quasi tutte le funzioni MIDI utilizzare questo parametro.

So che questo non è l'argomento più ovvio, ma sarebbe bello se qualcuno mi potrebbe aiutare.

Grazie:)

È stato utile?

Soluzione

Per ottenere informazioni, si esegue un ciclo chiamando midiInGetDevCaps , con un primo parametro che varia da 0 incluso per il risultato di midiInGetNumDevs esclusi. Ogni chiamata colma una MIDIINCAPS struct (si passa un puntatore alla struttura quando si chiama la funzione) con informazioni sul dispositivo ennesimo. Per Apri di un dispositivo, e riempire il HMIDIIN necessaria per altre chiamate, si chiama midiInOpen con il numero del dispositivo (di nuovo, da 0 a N-1 incluso) come secondo parametro.

Lo stesso concetto si applica a dispositivi di uscita, salvo che i nomi sono Out anziché In (e per le strutture OUT anziché IN).

Altri suggerimenti

Ok ho capito. Non sapevo midiInGetDevCaps richiede una chiamata alle proprietà specifiche di esso per restituire il nome del dispositivo.

Qui è il mio codice:

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

E grazie per il vostro aiuto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top