Salut,
Il te faut faire une machine d'état. ça ressemble à ça:
void loop(){
static int state = 0;
static byte note;
byte b = Serial.read();
if(b==0xF8) {
// ignorer ou mesurer le temps pour synchroniser qqch
}
else {
switch(state) {
case 1:
if(b==NOTE_ON) state = 2;
// if(b==NOTE_OFF) state = ...;
// ...
break;
case 2: // Attend la note
note = b;
state = 3;
break;
case 3: // Attend la vélocité
byte velocity = b;
// faire qqch
state = 1; // retour à l'état initial
}
}
}
L'avantage avec le protocol midi (si mes souvenir sont bon) c'est que les commandes ont le msb à 1. Ce qui te permettrait
de simplifier cet exemple et de te resynchroniser sur une commande en cas de perte de donnée.