Étape 16 : Arduino MIDI dans
Enfin, vous pouvez envoyer le MIDI dans l’Arduino et il permet de contrôler les choses connectés aux sorties de l’Arduino. Voici un kit de batterie robotique, fabriquée par mon collègue, randofo.
Aussi un héros de guitare piraté qui tire des flammes :
Voici un exemple simple de comment vous pouvez analyser un MIDI entrante message avec Arduino et utiliser l’information pour contrôler la birghtness d’une LED. Dans mon exemple, je vais changer sur une LED quand note 60 (middle c) est déclenchée, et je vais mettre à l’échelle la luminosité de la LED selon la vélocité de la note entrante :
Il y a quelques nouvelles commandes utilisées ici :
Serial.available() retourne le nombre d’octets disponibles pour lire depuis le port série de l’Arduino.
Serial.Read() est le contraire de Serial.print(), elle retourne l’octet disponible suivant des données depuis le port série de l’Arduino.
Dans ce code, l’Arduino lit le premier octet disponible et vérifie si c’est un octet de commande (n’oubliez pas, commande octets sont toujours > 127)
Si (incomingByte > 127)
Alors, puisque nous regardons uniquement pour la Note sur les commandes, l’Arduino vérifie pour voir si la commande est une commande de Note sur :
Si (incomingByte == noteOn)
Puis l’Arduino lit dans les deux octets et les stocke comme noteByte et velocityByte :
noteByte octets = Serial.read() ;
velocityByte octets = Serial.read() ;
Puis l’Arduino vérifie si la note que nous avons est la note qui que nous intéresse, et si la vitesse est supérieure à 0 (note sur ou note off). Si l'on Note sur, l’Arduino utilise map() pour mesurer la vitesse (0-127) à une luminosité comprise entre 0 et 255 et envoie cette luminosité à analogWrite(). Si c’est un message Note Off, l’Arduino désactive la LED.
La seule chose sournoise, que j’ai ajouté à ce code est le delay(10) dans la loop(). J’ai trouvé que l’Arduino a pu lire dans les messages MIDI plus sûrement avec ce retard là-dedans. Vous pourriez aussi perdre son temps avec le débit en bauds pour s’assurer que vous ne manquez jamais un message MIDI.