Condividi tramite


Gestione di MIDI Thru

È possibile connettere un dispositivo di input MIDI direttamente a un dispositivo di output MIDI in modo che quando il dispositivo di input riceve un messaggio di MIM_DATA , il sistema invia un messaggio con gli stessi dati dell'evento MIDI al driver di dispositivo di output. Per connettere un dispositivo di output MIDI a un dispositivo di input MIDI, utilizzare la funzione midiConnect .

Per ottenere le migliori prestazioni possibili con più output, un'applicazione può scegliere di fornire una forma speciale di driver di output MIDI, chiamato driver thru. Anche se il sistema consente di collegare un solo dispositivo di output MIDI a un dispositivo di input MIDI, più dispositivi di output MIDI possono essere connessi a un driver thru. Un'applicazione in un sistema di questo tipo potrebbe connettere il dispositivo di input MIDI a questo dispositivo thru e connettere il dispositivo MIDI thru a tutti i dispositivi di output MIDI necessari. Per altre informazioni sui driver thru, vedere la documentazione di Windows device-driver.

Utilizzo dei messaggi per gestire la registrazione MIDI

I messaggi seguenti possono essere inviati a una finestra o a una procedura di callback thread per la gestione della registrazione MIDI.

Valore Significato
MM_MIM_CLOSE Inviato quando un dispositivo di input MIDI viene chiuso usando la funzione midiInClose .
MM_MIM_DATA Inviato quando viene ricevuto un messaggio MIDI completo. Questo messaggio viene utilizzato per tutti i messaggi MIDI ad eccezione dei messaggi esclusivi del sistema.
MM_MIM_ERROR Inviato quando viene ricevuto un messaggio MIDI non valido. Questo messaggio viene utilizzato per tutti i messaggi MIDI ad eccezione dei messaggi esclusivi del sistema.
MM_MIM_LONGDATA Inviato quando viene ricevuto un messaggio completo esclusivo dal sistema MIDI o quando un buffer è stato riempito con dati esclusivi del sistema.
MM_MIM_LONGERROR Inviato quando viene ricevuto un messaggio esclusivo del sistema MIDI non valido.
MM_MIM_MOREDATA Inviato quando un'applicazione non elabora MIM_DATA messaggi abbastanza velocemente per mantenere il passo con il driver di dispositivo di input.
MM_MIM_OPEN Inviato quando un dispositivo di input MIDI viene aperto utilizzando la funzione midiInOpen .

 

Un parametro wParam e un parametro lParam sono associati a ognuno di questi messaggi. Il parametro wParam specifica sempre l'handle di un dispositivo MIDI aperto. Il parametro lParam non è usato per i messaggi MM_MIM_CLOSE e MM_MIM_OPEN .

Per il messaggio MM_MIM_LONGDATA, lpMidiHdr specifica un indirizzo di una struttura MIDIHDR che identifica il buffer per i messaggi esclusivi del sistema. Il buffer potrebbe non essere completamente riempito, perché le dimensioni dei messaggi esclusivi del sistema non sono in genere note prima della registrazione e perché è necessario allocare i buffer le cui dimensioni totali possono contenere il messaggio previsto più grande. Per determinare la quantità di dati validi presenti nel buffer, utilizzare il membro dwBytesRecorded della struttura MIDIHDR .

Uso di una funzione di callback per gestire la registrazione MIDI

È possibile definire una funzione di callback personalizzata per gestire la registrazione per i dispositivi di input MIDI. La funzione di callback è documentata come MidiInProc.

I messaggi seguenti possono essere inviati al parametro wMsg della funzione di callback MidiInProc .

Valore Significato
MIM_CLOSE Inviato quando il dispositivo viene chiuso usando la funzione midiInClose .
MIM_DATA Inviato quando viene ricevuto un messaggio MIDI completo (questo messaggio viene utilizzato per tutti i messaggi MIDI tranne i messaggi esclusivi del sistema).
MIM_ERROR Inviato quando viene ricevuto un messaggio MIDI non valido (questo messaggio viene utilizzato per tutti i messaggi MIDI tranne i messaggi esclusivi del sistema).
MIM_LONGDATA Inviato quando viene ricevuto un messaggio completo esclusivo dal sistema MIDI o quando un buffer è stato riempito con dati esclusivi del sistema.
MIM_LONGERROR Inviato quando viene ricevuto un messaggio esclusivo del sistema MIDI non valido.
MIM_MOREDATA Inviato quando un'applicazione non elabora MIM_DATA messaggi abbastanza velocemente per mantenere il passo con il driver di dispositivo di input.
MIM_OPEN Inviato quando il dispositivo di input MIDI viene aperto utilizzando la funzione midiInOpen .

 

Questi messaggi sono simili a quelli inviati alle funzioni di routine della finestra, ma i parametri sono diversi. Un handle del dispositivo MIDI aperto viene passato come parametro alla funzione di callback, insieme alla doppia parola chiave dei dati dell'istanza passati tramite midiInOpen.

Per il messaggio MIM_LONGDATA, lpMidiHdr specifica un indirizzo di una struttura MIDIHDR che identifica il buffer per i messaggi esclusivi del sistema. Il buffer potrebbe non essere completamente riempito. Per determinare la quantità di dati validi presenti nel buffer, utilizzare il membro dwBytesRecorded della struttura MIDIHDR .

Al termine del driver di dispositivo, è possibile pulire e liberare il blocco di dati.

Registrazione dell'audio MIDI