Gestion des Messages MIDI
Le Protocole MIDI
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 :
- NOTE ON : [ 0x90] [ 0x30 ] [ 0x40 ] : [ Type = Note_on + Channel = 1 ] [ note = C5 ] [ Velocity = 0x40 ]
Quand la touche est relachée :
- NOTE OFF : [ 0x80] [ 0x30 ] [ 0x61 ] : [ Type = Note_off + Channel = 1 ] [ note = C5 ] [ Velocity = 0x61 ]
Pour plus de détails : midi.org
Test du MIDI sur la carte
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.