Étape 4: Écriture du Code
Lorsque vous appuyez sur une pédale, la commande est envoyée pour mettre en marche la note à une certaine vitesse. Le potentiomètre (pédale de volume) est utilisé pour déterminer qui. Il donne des valeurs de 0-1023. La fonction map est utilisée pour mapper proportionnellement ce numéro vers un autre numéro entre 0-127. Pour mettre une note off quand la pédale n’est pas enfoncée, la même commande pour cette note est envoyée, sauf que la vitesse est 0.
Avoir l’arduinos envoyer que commande lorsqu’une pédale est poussée à l’aide d’une instruction « if » dans la boucle pourrait fonctionner sauf qu’il enverrait cette commande chaque fois que la boucle se répète lorsque la pédale est hors service. Si l’instruction « else » est également utilisée pour envoyer la commande pour arrêter la note (vitesse, 0), puis l’arduinos enverrait cette commande pour chaque pédale qui n’est pas enfoncé chaque fois que la boucle se répète. L’arduinos et synthétiseur ne pouvait pas gérer les envoyer ou de recevoir tout ce que les données.
Pour résoudre ce problème, l’arduinos doit envoyer la commande à jouer une note une fois après que la pédale est enfoncée. Ils doivent également faire la même chose pour quand la pédale est relâchée. Pour ce faire, l’arduinos doit "se souvenir" le dernier État (pressé ou non pressée) les pédales étaient dans la dernière fois que la boucle répétée.
Pour ajouter cette fonctionnalité, j’ai fait une variable « dernier État ». La première chose que les arduinos faire après détection quand une pédale a été pressée, c’est comparer le dernier État qu'ils devaient dans l’État qu’ils sont maintenant. Cela les rend possible pour les arduinos pour envoyer la commande pour une note une fois quand il a été activé et une fois quand il a été libéré.
Parce qu’il y a deux Arduinos, il y a deux programmes qui sont écrites. Il est simplement copier le premierà et coller dans un nouveau projet et en changeant toutes les notes. N’oubliez pas qu’un seul programme utilisera une note de plus que l’autre !
Les deux Arduinos besoin d’envoyer des commandes sur le canal du MIDI même . J’ai utilisé le canal MIDI 1.
Pour obtenir l’arduinos pour envoyer des données MIDI relire ce guide : http://arduino.cc/en/Tutorial/Midi. Je ne pas envoyer des notes ou la vitesse en hexadécimal. Decimales fonctionne parfaitement car le Serial.write() ; commande envoie un octet.
Il existe deux programmes fixés dans le fichier zip ; un pour un ATmega, un autre pour l’autre.