shield midi

Bonjour, j'ai acheté un shield midi pour mon arduino http://www.lextronic.fr/P18769-platine-midi-shield.html, J'ai un programme qui permet d'allumer différente led en fonction des notes joué.

Ce programme fonctionne lorsque je branche un piano midi à mon pc et que j’envoie ce signal à l'arduino via le port serial "programming port" par l’intermediairede hairless midi serial. Mais j'ai justement acheté ce shield pour pouvoir me passer du pc et de relier directement mon synthé qui a un prise midi à l'arduino mais l'arduino ne réagit pas.

Voici le programme

int pompe1 =53;
int pompe2 =51;
int pompe3 =49;
int pompe4 =47;
int pompe5 =45;
int pompe6 =43;
int pompe7 =41;
int pompe8 =39;

byte commandByte;
byte noteByte;
byte velocityByte;

byte noteOn = 144;


void setup(){
  Serial.begin(9600);
  pinMode(pompe1,OUTPUT);
  pinMode(pompe2,OUTPUT);
  pinMode(pompe3,OUTPUT);
  pinMode(pompe4,OUTPUT);
  pinMode(pompe5,OUTPUT);
  pinMode(pompe6,OUTPUT);
  pinMode(pompe7,OUTPUT);
  pinMode(pompe8,OUTPUT);

  
  digitalWrite(pompe1,LOW);
  digitalWrite(pompe2,LOW);
  digitalWrite(pompe3,LOW);
  digitalWrite(pompe4,LOW);
  digitalWrite(pompe5,LOW);
  digitalWrite(pompe6,LOW);
  digitalWrite(pompe7,LOW);
  digitalWrite(pompe8,LOW);

  
}

void checkMIDI(){
  do{
    if (Serial.available()){
      commandByte = Serial.read();//read first byte
      noteByte = Serial.read();//read next byte
      velocityByte = Serial.read();//read final byte
      if (commandByte == noteOn){//if note on message
        if (noteByte == 60 && velocityByte > 0) {digitalWrite(pompe1,HIGH);}else;
        if (noteByte == 61 && velocityByte > 0) {digitalWrite(pompe2,HIGH);}else;
        if (noteByte == 62 && velocityByte > 0) {digitalWrite(pompe3,HIGH);}else;
        if (noteByte == 63 && velocityByte > 0) {digitalWrite(pompe4,HIGH);}else;
        if (noteByte == 64 && velocityByte > 0) {digitalWrite(pompe5,HIGH);}else;
        if (noteByte == 65 && velocityByte > 0) {digitalWrite(pompe6,HIGH);}else;
        if (noteByte == 66 && velocityByte > 0) {digitalWrite(pompe7,HIGH);}else;
        if (noteByte == 67 && velocityByte > 0) {digitalWrite(pompe8,HIGH);}else;
       
      }
    }
  }
  while (Serial.available() > 2);//when at least three bytes available
}
    

void loop(){
  checkMIDI();
  delay(1000);
  digitalWrite(pompe1,LOW);
  digitalWrite(pompe2,LOW);
  digitalWrite(pompe3,LOW);
  digitalWrite(pompe4,LOW);
  digitalWrite(pompe5,LOW);
  digitalWrite(pompe6,LOW);
  digitalWrite(pompe7,LOW);
  digitalWrite(pompe8,LOW);
}

Merci de votre aide :wink:

le protocole MIDI ne fonctionne pas à 9600 bauds mais à 31250

Merci pour votre reponse mais j'ai essayé de changer le baud rate à 31250 mais cela ne fonctionne toujours pas :frowning:

Il vaut mieux utiliser cette librairie concernant le midi in, Ce sera plus simple