Freigeben über


Verwalten von MIDI-Thru

Sie können ein MIDI-Eingabegerät direkt mit einem MIDI-Ausgabegerät verbinden, sodass das System eine Nachricht mit den gleichen MIDI-Ereignisdaten an den Ausgabegerätetreiber sendet, wenn das Eingabegerät eine MIM_DATA Nachricht empfängt. Um ein MIDI-Ausgabegerät mit einem MIDI-Eingabegerät zu verbinden, verwenden Sie die MidiConnect-Funktion .

Um die bestmögliche Leistung mit mehreren Ausgaben zu erzielen, kann eine Anwendung eine spezielle Form des MIDI-Ausgabetreibers bereitstellen, den sogenannten Thru-Treiber. Obwohl das System erlaubt, dass nur ein MIDI-Ausgabegerät mit einem MIDI-Eingabegerät verbunden werden kann, können mehrere MIDI-Ausgabegeräte mit einem Thru-Treiber verbunden werden. Eine Anwendung auf einem solchen System könnte das MIDI-Eingabegerät mit diesem Thru-Gerät verbinden und das MIDI-Thru-Gerät mit so vielen MIDI-Ausgabegeräten wie nötig verbinden. Weitere Informationen zu Thru-Treibern finden Sie in der Dokumentation zu Windows-Gerätetreibern.

Verwenden von Nachrichten zum Verwalten der MIDI-Aufzeichnung

Die folgenden Meldungen können zum Verwalten der MIDI-Aufzeichnung an eine Fenster- oder Threadrückrufprozedur gesendet werden.

Wert Bedeutung
MM_MIM_CLOSE Wird gesendet, wenn ein MIDI-Eingabegerät mit der midiInClose-Funktion geschlossen wird.
MM_MIM_DATA Wird gesendet, wenn eine vollständige MIDI-Nachricht empfangen wird. (Diese Nachricht wird für alle MIDI-Nachrichten mit Ausnahme von systemspezifischen Nachrichten verwendet.)
MM_MIM_ERROR Wird gesendet, wenn eine ungültige MIDI-Nachricht empfangen wird. (Diese Nachricht wird für alle MIDI-Nachrichten mit Ausnahme von systemspezifischen Nachrichten verwendet.)
MM_MIM_LONGDATA Wird gesendet, wenn entweder eine vollständige MIDI-System-exklusive Nachricht empfangen wird oder wenn ein Puffer mit systemspezifischen Daten gefüllt wurde.
MM_MIM_LONGERROR Wird gesendet, wenn eine ungültige MIDI-System-exklusive Nachricht empfangen wird.
MM_MIM_MOREDATA Wird gesendet, wenn eine Anwendung MIM_DATA Nachrichten nicht schnell genug verarbeitet, um mit dem Eingabegerätetreiber Schritt zu halten.
MM_MIM_OPEN Wird gesendet, wenn ein MIDI-Eingabegerät mithilfe der midiInOpen-Funktion geöffnet wird.

 

Jeder dieser Nachrichten sind ein wParam-Parameter und ein lParam-Parameter zugeordnet. Der wParam-Parameter gibt immer das Handle eines geöffneten MIDI-Geräts an. Der lParam-Parameter wird für die MM_MIM_CLOSE - und MM_MIM_OPEN-Nachrichten nicht verwendet.

Für die MM_MIM_LONGDATA Nachricht gibt lpMidiHdr eine Adresse einer MIDIHDR-Struktur an, die den Puffer für systemspezifische Nachrichten identifiziert. Der Puffer ist möglicherweise nicht vollständig gefüllt, da die Größe der systemspezifischen Nachrichten vor der Aufzeichnung in der Regel nicht bekannt ist und weil Puffer, deren Gesamtgröße die größte erwartete Nachricht enthalten kann, zugeordnet werden müssen. Um die Menge der im Puffer vorhandenen gültigen Daten zu bestimmen, verwenden Sie das dwBytesRecorded-Element der MIDIHDR-Struktur .

Verwenden einer Rückruffunktion zum Verwalten der MIDI-Aufzeichnung

Sie können Ihre eigene Rückruffunktion definieren, um die Aufzeichnung für MIDI-Eingabegeräte zu verwalten. Die Rückruffunktion ist als MidiInProc dokumentiert.

Die folgenden Meldungen können an den wMsg-Parameter der MidiInProc-Rückruffunktion gesendet werden.

Wert Bedeutung
MIM_CLOSE Wird gesendet, wenn das Gerät geschlossen wird, indem die midiInClose-Funktion verwendet wird.
MIM_DATA Wird gesendet, wenn eine vollständige MIDI-Nachricht empfangen wird (diese Nachricht wird für alle MIDI-Nachrichten mit Ausnahme von systemspezifischen Nachrichten verwendet).
MIM_ERROR Wird gesendet, wenn eine ungültige MIDI-Nachricht empfangen wird (diese Nachricht wird für alle MIDI-Nachrichten mit Ausnahme von systemspezifischen Nachrichten verwendet).
MIM_LONGDATA Wird gesendet, wenn entweder eine vollständige MIDI-System-exklusive Nachricht empfangen wird oder wenn ein Puffer mit systemspezifischen Daten gefüllt wurde.
MIM_LONGERROR Wird gesendet, wenn eine ungültige MIDI-System-exklusive Nachricht empfangen wird.
MIM_MOREDATA Wird gesendet, wenn eine Anwendung MIM_DATA Nachrichten nicht schnell genug verarbeitet, um mit dem Eingabegerätetreiber Schritt zu halten.
MIM_OPEN Wird gesendet, wenn das MIDI-Eingabegerät mithilfe der midiInOpen-Funktion geöffnet wird.

 

Diese Nachrichten ähneln denen, die an Fensterprozedurfunktionen gesendet werden, aber die Parameter unterscheiden sich. Ein Handle des geöffneten MIDI-Geräts wird als Parameter an die Rückruffunktion übergeben, zusammen mit dem Doppelwort instance Daten, die mithilfe von midiInOpen übergeben wurden.

Für die MIM_LONGDATA Nachricht gibt lpMidiHdr eine Adresse einer MIDIHDR-Struktur an, die den Puffer für system exklusive Nachrichten identifiziert. Der Puffer ist möglicherweise nicht vollständig gefüllt. Um die Menge der im Puffer vorhandenen gültigen Daten zu bestimmen, verwenden Sie das dwBytesRecorded-Element der MIDIHDR-Struktur .

Nachdem der Gerätetreiber mit einem Datenblock fertig ist, können Sie den Datenblock sauber und freigeben.

MIDI-Audio aufzeichnen