Dans l'espoir de devenir un meilleur musicien, j'ai mis au point un dispositif qui se branche dans un clavier MIDI. Une note s'affiche sur une portée, et je dois jouer cette note sur le clavier. Si j'appuie sur la bonne touche, je gagne un point, et une nouvelle note s'affiche.
Si j'appuie sur la mauvaise touche, un petit clavier apparaît à l'écran pour m'indiquer quelle touche il faut appuyer et, bien entendu, je ne récolte aucun point. Je dois quand même appuyer sur la bonne touche afin de passer à la question suivante. De plus, juste après avoir joué "ma" note, le clavier joue la note que j'aurais dû jouer, ce qui me permet de comparer les deux notes de façon auditive.
Ce dispositif est constitué d'une carte Arduino Uno, d'un écran LCD PCD8544 (Nokia 5110) et d'une interface MIDI de fabrication maison qui est essentiellement constituée d'un octocoupleur, d'une diode de quelques résistances et de connecteurs DIN.
Le circuit
Je reproduis ici le schéma de mon interface MIDI, fabriquée en 2012... La partie "MIDI IN" est essentielle pour détecter la note jouée sur le clavier. La partie "MIDI OUT" permet à l'Arduino de faire jouer, par l'entremise du clavier, la note qu'il fallait jouer, ce qui aide l'utilisateur à constater s'il a joué la bonne note ou non.
Vous pouvez également vous procurer un module MIDI prêt à l'emploi (recherchez "MIDI Shield Arduino").
En ce qui concerne l'afficheur LCD, le circuit est assez complexe puisque j'utilise un circuit intégré 4050 afin d'abaisser à 3,3 V les signaux logiques générés par l'Arduino Uno. Voici le schéma, mais vous trouverez beaucoup plus d'information en consultant cet article consacré à l'utilisation d'un écran Nokia 5110 avec un Arduino.
Installation de la bibliothèque MIDI
J'ai utilisé la bibliothèque MIDI afin de simplifier au maximum la gestion de la communication entre l'Arduino et le clavier MIDI.
Installation des bibliothèques pour l'afficheur LCD
Pour l'affichage sur l'écran Nokia 5150, j'ai utilisé la bibliothèque Adafruit-PCD8544-Nokia-5110-LCD ainsi que la bibliothèque Adafruit-GFX.
Le sketch
Une part importante du sketch concerne la gestion de l'écran LCD. Au moyen d'un logiciel de dessin, j'ai créé quatre minuscules fichiers .bmp: la portée avec une clé de sol, la portée avec une clé de fa, le symbole bémol, et le symbole dièse. J'ai ensuite chargé ces fichiers .bmp dans l'outil en ligne image2ccp afin de les transformer en information utilisable dans un sketch Arduino. Il s'agit des quatre constantes "cleDeSol", "cleDeFa", "bemol" et "diese" énoncées au début du programme.
Pour les autres éléments affichés sur l'écran, j'ai utilisé les outils de base de la bibliothèque GFX (rectangles pour dessiner le clavier, rectangle à coin arrondi pour les notes, etc.)
Comme son nom l'indique, la routine "nouvelleQuestion" est responsable de créer aléatoirement une nouvelle note à placer sur la portée. Cette nouvelle note est décrite au moyen de 3 variables: "clef" détermine si la portée est en clé de sol ou en clé de fa, "altération" détermine si la note est accompagnée d'un bémol ou d'une dièse, et "numéro" indique la position de la note sur la portée.
Lorsque l'utilisateur appuie sur une touche du clavier, il faut vérifier si la note qu'il a généré correspond à celle qui est affichée sur le portée; c'est fait dans la fonction "compareNotes", grâce à deux tableaux qui établissent une relation entre chaque position sur la portée et son numéro de note MIDI (ce sont les variables notes_fa et notes_sol).
-
-
À lire aussi:
- Communication MIDI (out) avec une carte Arduino
- MIDI par usb avec Arduino Leonardo
- Fabrication d'un module MIDI (in et out) pour Arduino
- MIDI sans fil avec Arduino
- Clavier MIDI à base d'Arduino
- Pédalier d'orgue MIDI à base d'Arduino
- Flûte à bec MIDI à base d'Arduino
- Arpégiateur MIDI à base d'Arduino
- Séquenceur MIDI à base d'Arduino
- Identificateur d'accords MIDI