Le protocole MIDI est une norme permettant de définir les messages
échangés entre instruments numériques.
Initialement le périphérique utilisé pour traiter ces messages était de type UART RS232 :
On appuie sur la touche d’un clavier maître :
Quand la touche est relachée :
Pour plus de détails : midi.org
Sur notre carte, le périphérique utilisé pour gérer les messages MIDI est le périphérique USB ( utilisé en USB host, avec la classe MIDI, de type AUDIO ).
L’analyse des messages reçus se fait dans le fonction processMidiPackets()
void processMidiPackets() {
static int i=0;
uint8_t *ptr = midiReceiveBuffer;
uint16_t numPackets = USBH_MIDI_GetLastReceivedDataSize(&hUSBHost)/4;
if (numPackets != 0)
{
while (numPackets--)
{
ptr++;
uint32_t type = *ptr++;
uint32_t subtype = *ptr++;
uint32_t vel = *ptr++;
tab_midi_log[i]=type;
i=(i+1)%100;
tab_midi_log[i]=subtype;
i=(i+1)%100;
tab_midi_log[i]=vel;
i=(i+1)%100;
type = type & 0xF0; // ignore channel
switch(type)
{
case 0x90 :
break;
case 0x80 :
break;
default : break;
}
}
}
}
}
Q1. Appuyer sur les 3 touches les plus graves du clavier maître et relever les valeurs présentes dans tab_midi_log
Q2. Relever également les messages correspondant au slider ‘volume’ et à la molette Pitchbend. Justifer ces valeurs à l’aide du tableau suivant : midi.org
REMARQUE : L’analyse des messages midi peut également se faire avec l’utilitaire kmidimon, en reliant directement le clavier maître sur le PC.