Étape 6: Durée de Code ! Enfin, presque...
Arduino Uno
Pour l’ONU, vous aurez à flash la ATmega16U2 * sur la planche avec les custom firmware de Dimitri Diakopoulos . Il s’agit d’un fichier HEX que vous gravez sur la puce en utilisant le logiciel de Flip Atmel. Le microprogramme prend en entrée le microprocesseur principal de l’ONU (ATmega328P) et la convertit en le MIDI au travers du protocole USB.
(*) Le microprocesseur principal de l’ONU (ATmega328P) n’a aucuns capacités USB. Au lieu de cela, il dispose d’une connexion série sur la broche 0 et 1, avec un second microprocesseur (ATmega16U2, c’est le petit carré noir entre le connecteur USB TX et RX LEDs). Cette puce est programmée pour être un convertisseur USB-série et est reconnue par l’ordinateur comme un port série ou port COM. Téléchargez votre propre firmware sur la puce, il peut être pratiquement n’importe quel périphérique USB, y compris un périphérique MIDI.
Programmation du Uno et MIDI
Parce que le ATmega328P dépend de la connexion série établie par le ATmega16U2 pour le téléchargement de nouveaux croquis Arduino, vous ne pouvez changer votre programme lors de l’exécution du firmware de MIDI. C’est pourquoi nous allons écrire notre programme tout d’abord et graver le MIDI firmware après le téléchargement de notre programme à l’ATmega328.
Vous pouvez supprimer le firmware MIDI à tout moment et réinstaller l' original firmware serial Arduino Uno.
Arduino Leonardo
Leonardo n’a qu’une bibliothèque spéciale d’utiliser les fonctions MIDI Teensy sur Arduino.
Voici comment installer ceci :
Linux (Ubuntu)
- Télécharger l’officiel Arduino IDE 1.0.6 ici. Vous devez 1.0.6, d’autres versions seront ne fonctionnera pas .
- Créez un nouveau dossier dans votre répertoire de base appelé « Exécutables ».
- Extrayez le fichier arduino-1.0.6-linux64.tgz que vous venez de télécharger dans le nouveau dossier de fichiers exécutables.
- Télécharger l’installateur de Teensyduino de ici.
- Dans la section « autres fichiers » sur la même page, cliquez sur « Linux des règles udev » et appuyez sur CTRL + S pour enregistrer.
- Supprimer l’extension .txt dans l’enregistrement de dialogue et choisissez « tous les fichiers » au lieu de .txt avant des enregistrer (mais garder l’extension .rules). Puis enregistrez-le dans votre dossier « Téléchargements ».
- Ouvrez une fenêtre de terminal à l’aide de CTRL + ALT + T, ou via le menu de votre application.
- Exécutez cette commande pour copier les règles udev dans le bon dossier.
sudo cp teensy.rules/49-téléchargements /etc/udev/rules.d/ - Accédez à votre dossier de téléchargement à l’aide de votre navigateur de fichiers. Clic droit sur le fichier teensyduino.64bit téléchargé à l’étape 4, puis choisissez "Propriétés".
- Sous l’onglet « Autorisations », cochez la case « Autoriser l’exécution de fichier en tant que programme ». Ensuite, fermez cette fenêtre.
- Double-cliquez sur teensyduino.64bit pour exécuter le programme d’installation.
- Appuyez sur « suivant ».
- Puis, accédez à votre "arduino-1.0.6' votre dossier « Exécutables ». Une fois que vous faites cela, le bouton « suivant » devrait n’est plus grisé. Cliquez sur « suivant ».
- Cochez la case « MIDI » et autres bibliothèques, si nécessaire pour votre projet. (Vous pouvez également sélectionner « all » si vous le souhaitez). Puis cliquez sur « suivant » à nouveau.
- Puis cliquez sur « Installer ».
- Télécharger 'TeeOnArdu' de Fricklr-logiciel de GitHub. Sur le côté droit, il y a un bouton « Télécharger le ZIP ».
- Extrayez le fichier ZIP dans votre dossier téléchargements et l’ouvrir dans votre navigateur de fichiers.
- Il devrait y avoir un dossier appelé « TeeOnArdu-master ». Double cliquez dessus et copiez le répertoire « TeeOnArdu ».
- Allez dans votre dossier /home/Executables/arduino-1.0.6/hardware, puis passé le dossier de TeeOnArdu ici.
- Dans le terminal (CTRL + ALT + T), allez dans le répertoire de l’Arduino :
CD Executables/arduino-1.0.6/ - Exécutez le logiciel Arduino :
. / arduino - À l’intérieur du logiciel Arduino, sous « Outils », sélectionnez "TeeOnArdu (Leo sur TeensyCore)" comme votre planche.
- La valeur 'USB-Type' à « MIDI ».
- Vous êtes maintenant prêt à utiliser le MIDI avec votre Leonardo !
Les instructions pour Windows et Mac sont très similaires, ils se trouvent sur la page Adafruit. Notez que la version est différente. Le tutoriel Adafruit utilise Arduino 1.0.5, mais vous devez 1.0.6. Aussi, ne pas utiliser les liens de téléchargement Adafruit, mais utilisez les liens dans les étapes 1, 4 et 16 (mentionné ci-dessus).
Messages MIDI
Avant que nous commencions la programmation, nous allons tout d’abord essayer de comprendre ce qu’est le MIDI.
MIDI (Musical Instrument Digital Interface) a été développé en 1982 et est un standard pour la communication entre instruments de musique, comme son nom l’indique. Les signaux originaux ont été transférés sur un vieux DIN 41524 connecteur. De nos jours, la plupart des périphériques MIDI ont un connecteur USB, pour les relier à un ordinateur. Toutefois, le protocole lui-même n’a pas changé.
Un message MIDI est composé de 3 octets et comporte 4 parties :
- Octet d’État : dans notre cas, ce prix consiste en un « message de canal » et un « canal ».
- Octet de données 1: un numéro de 7 bits.
- Octet de données 2: un autre numéro de 7 bits.
Pour notre contrôleur MIDI, nous allons utiliser seulement 3 messages de canaux différents : noteOn, noteOff et ControlChange.
- NoteOn :
message de canal : 0b1001 * (0 x 9) **
canal : 0b0000-0b1111 (0 x 0-0xF) données 1: Notez le nombre: 0-127
données 2: Vitesse ***: 0-127 - NoteOff :
message de canal : 0b1000 (0 x 8)
canal : 0b0000-0b1111 (0 x 0-0xF)
données 1: Notez le numer: 0-127
données 2: Vitesse: 0-127 - ControlChange :
message de canal : 0b1011 (0xB)
canal : 0b0000-0b1111 (0 x 0-0xF)
données 1: numéro du contrôleur: 0-119 ***
données 2: valeur de contrôleur: 0-127
0 b (*) signifie notation binaire .
(*) 0 x signifie hexadécimal notation.
(***) La vitesse est qu’une clé est dur a frappé.
(****) Contrôleur de numéros 120-127 ne sont pas disponibles pour les contrôleurs normaux, mais sont réservés aux modes de fonctionnement.
Remarque : il y d’autres messages comme wel (voir liens en bas de cette étape). Par exemple, un pitch bend message a ses propres 4 premiers bits et n’est pas un message de changement de contrôle, il n’a aucun numéro de contrôleur, donc il peut stocker une valeur de 14 bits. Il est utilisé par les contrôleurs fin MIDI plus élevés, lorsqu’une résolution plus élevée est requise. Toutefois, il ne peut être un maximum de 16 cintreuses de pitch (1 pour chacun des 16 canaux).
N oteOn et noteOff sont utilisés pour les touches d’un piano numérique, par exemple. Ici sont les numéros de note avec leurs notes de musique correspondantes. Le milieu C (C4) est mappé à 60, et 440Hz (A4) est mappé à 69. Nous allons utiliser ces notes pour nos boutons et commutateurs : noteOn quand le bouton est enfoncé et noteOff quand le bouton est relâché. Je recommande d’utiliser le canal 1 (0b0000), mais quand vous avez plus de 128 boutons, vous aurez besoin évidemment un deuxième canal. Données 1 sera la note numéro, l’adresse si vous voulez, du bouton, et de données 2 (la vitesse) n’a aucune importance pour un bouton (même si elle le fait si vous voulez pads sensibles à la pression/vitesse par exemple). Nous allons juste faire il 127 (100 %).
La notation générale noteOn: 1001 cccc 0nnnnnnn 0vvvvvvv
où cccc est le canal, nnnnnnn est le numéro du bouton et Pascal la vitesse
Par exemple : Appuyez sur la touche 15 (0b00001111) serait envoyer ce message : 1001 0000 00001111 01111111
La notation générale noteOff: 1000 cccc 0nnnnnnn 0vvvvvvv
où cccc est le canal, nnnnnnn est le numéro du bouton et Pascal la vitesse
Par exemple : libérer le bouton 15 (0b00001111) serait envoyer ce message : 1000 0000 00001111 01111111
ControlChange messages sont utilisés pour les contrôleurs qui peuvent avoir un large éventail de valeurs, comme un potentiomètre ou un fader. Cette valeur a 7 bits, donc il a une plage de 0 à 127 (0 % - 100 %). Ici est une liste de tous les contrôleurs et les numéros correspondants.
Notation générale ControlChange: 1011 cccc 0nnnnnnn 0vvvvvvv
où cccc est le canal, nnnnnnn est le numéro du contrôleur et Pascal la valeur du contrôleur.
Par exemple : en tournant le volume (numéro de contrôleur 7 ou 0b00000111) du canal 8 (0b1000) au maximum (127 ou 0b01111111) enverra ce message : 1011 1000 00000111 01111111
On trouvera plus d’informations sur le protocole MIDI sur .org, dans ce PDFou sur Wikipedia.