Frage

Ich bin ein Musiker und ein Programmierer und möchte mein eigenes Programm erstellen, Musik zu machen. Ich werde mit einer Konsole-Anwendung in C ++ starten, bevor ich eine GUI zu machen.

Ich bin ruhig neu in C / C ++ und wissen, wie Sie eine einfache Konsolenanwendung zu machen und haben über die Win32-API lesen.

Ich war auf der Suche in MSDN für Multimedia in Win32-Anwendungen und ich eine Menge Funktionen für MIDI gefunden: http://msdn.microsoft.com/en-us/library/dd798495 (VS.85) aspx

Ich kann erhalten, wie viele MIDI-Geräte auf diese Weise eingesteckt werden:

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

Aber jetzt mag ich, um herauszufinden, wie diese Geräte genannt werden, mit der midiInGetID Funktion Ich denke, und eine while Schleife. Kann jemand mir helfen mit diesem? Die Funktion erfordert einen HMIDIIN Parameter und ich weiß nicht, wie ich einen bekommen kann die MIDI-Funktionen diese Parameter, da fast alle verwenden.

Ich weiß, das ist nicht das naheliegendste Thema, aber es wäre toll, wenn mir jemand helfen könnte.

Danke:)

War es hilfreich?

Lösung

Um Informationen zu erhalten, Sie Schleife calling midiInGetDevCaps , mit einem ersten Parameter variierend von 0 bis das Ergebnis der midiInGetNumDevs enthielt ausgeschlossen. Jeder Aufruf füllt ein MIDIINCAPS struct (Sie passieren ein Zeiger auf die Struktur, wenn Sie die Funktion) mit Informationen über die N-te Gerät aufrufen. open ein Gerät, und füllen Sie den HMIDIIN für andere Anrufe benötigt werden, rufen Sie midiInOpen mit der Gerätenummer (auch hier 0 bis N-1 enthielt) als zweiten Parameter.

Das gleiche Konzept gilt für Ausgabegeräte, mit der Ausnahme, dass die Namen haben Out statt In (und für die Strukturen OUT statt IN).

Andere Tipps

Ok ich es herausgefunden. Ich wusste nicht, midiInGetDevCaps einen Aufruf an die spezifischen Eigenschaften der es erfordert, den Gerätenamen zurückzukehren.

Hier ist mein 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;
    }
}

Und vielen Dank für Ihre Hilfe!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top