Partager via


Gestion de la thru MIDI

Vous pouvez connecter un périphérique d’entrée MIDI directement à un périphérique de sortie MIDI afin que lorsque le périphérique d’entrée reçoit un message MIM_DATA , le système envoie un message contenant les mêmes données d’événement MIDI au pilote de périphérique de sortie. Pour connecter un appareil de sortie MIDI à un périphérique d’entrée MIDI, utilisez la fonction midiConnect .

Pour obtenir les meilleures performances possibles avec plusieurs sorties, une application peut choisir de fournir une forme spéciale de pilote de sortie MIDI, appelée pilote de thru. Bien que le système autorise la connexion d’un seul périphérique de sortie MIDI à un périphérique d’entrée MIDI, plusieurs périphériques de sortie MIDI peuvent être connectés à un pilote de thru. Une application sur un tel système peut connecter l’appareil d’entrée MIDI à ce périphérique par l’intermédiaire et le connecter à autant d’appareils de sortie MIDI que nécessaire. Pour plus d’informations sur les pilotes d’utilisation, consultez la documentation sur les pilotes de périphérique Windows.

Utilisation de messages pour gérer l’enregistrement MIDI

Les messages suivants peuvent être envoyés à une procédure de rappel de fenêtre ou de thread pour gérer l’enregistrement MIDI.

Valeur Signification
MM_MIM_CLOSE Envoyé lorsqu’un appareil d’entrée MIDI est fermé à l’aide de la fonction midiInClose .
MM_MIM_DATA Envoyé lorsqu’un message MIDI complet est reçu. (Ce message est utilisé pour tous les messages MIDI à l’exception des messages exclusifs du système.)
MM_MIM_ERROR Envoyé lorsqu’un message MIDI non valide est reçu. (Ce message est utilisé pour tous les messages MIDI à l’exception des messages exclusifs du système.)
MM_MIM_LONGDATA Envoyé lors de la réception d’un message MIDI complet exclusif au système ou lorsqu’une mémoire tampon a été remplie avec des données exclusives du système.
MM_MIM_LONGERROR Envoyé lorsqu’un message MIDI exclusif au système est reçu.
MM_MIM_MOREDATA Envoyé lorsqu’une application ne traite pas MIM_DATA messages assez rapidement pour suivre le pilote de périphérique d’entrée.
MM_MIM_OPEN Envoyé lorsqu’un appareil d’entrée MIDI est ouvert à l’aide de la fonction midiInOpen .

 

Un paramètre wParam et un paramètre lParam sont associés à chacun de ces messages. Le paramètre wParam spécifie toujours le handle d’un appareil MIDI ouvert. Le paramètre lParam n’est pas utilisé pour les messages MM_MIM_CLOSE et MM_MIM_OPEN .

Pour le message MM_MIM_LONGDATA , lpMidiHdr spécifie une adresse d’une structure MIDIHDR qui identifie la mémoire tampon pour les messages exclusifs du système. La mémoire tampon peut ne pas être complètement remplie, car la taille des messages exclusifs au système n’est généralement pas connue avant d’être enregistrés et parce que les tampons dont la taille totale peut contenir le plus grand message attendu doivent être alloués. Pour déterminer la quantité de données valides présentes dans la mémoire tampon, utilisez le membre dwBytesRecorded de la structure MIDIHDR .

Utilisation d’une fonction de rappel pour gérer l’enregistrement MIDI

Vous pouvez définir votre propre fonction de rappel pour gérer l’enregistrement pour les appareils d’entrée MIDI. La fonction de rappel est documentée sous la forme MidiInProc.

Les messages suivants peuvent être envoyés au paramètre wMsg de la fonction de rappel MidiInProc .

Valeur Signification
MIM_CLOSE Envoyé lorsque l’appareil est fermé à l’aide de la fonction midiInClose .
MIM_DATA Envoyé lorsqu’un message MIDI complet est reçu (ce message est utilisé pour tous les messages MIDI à l’exception des messages exclusifs système).
MIM_ERROR Envoyé lorsqu’un message MIDI non valide est reçu (ce message est utilisé pour tous les messages MIDI à l’exception des messages exclusifs système).
MIM_LONGDATA Envoyé lors de la réception d’un message MIDI complet exclusif au système ou lorsqu’une mémoire tampon a été remplie avec des données exclusives du système.
MIM_LONGERROR Envoyé lorsqu’un message MIDI exclusif au système est reçu.
MIM_MOREDATA Envoyé lorsqu’une application ne traite pas MIM_DATA messages assez rapidement pour suivre le pilote de périphérique d’entrée.
MIM_OPEN Envoyé lorsque l’appareil d’entrée MIDI est ouvert à l’aide de la fonction midiInOpen .

 

Ces messages sont similaires à ceux envoyés aux fonctions de procédure de fenêtre, mais les paramètres sont différents. Un handle de l’appareil MIDI ouvert est passé en tant que paramètre à la fonction de rappel, ainsi que le double-mot de instance données passées à l’aide de midiInOpen.

Pour le message MIM_LONGDATA , lpMidiHdr spécifie une adresse d’une structure MIDIHDR qui identifie la mémoire tampon pour les messages exclusifs du système. La mémoire tampon n’est peut-être pas complètement remplie. Pour déterminer la quantité de données valides présentes dans la mémoire tampon, utilisez le membre dwBytesRecorded de la structure MIDIHDR .

Une fois le pilote de périphérique terminé avec un bloc de données, vous pouvez propre et libérer le bloc de données.

Enregistrement audio MIDI