mercredi 17 décembre 2025

Transformation d'une batterie "guitar hero" en contrôleur MIDI

J'ai une batterie conçue pour le jeu vidéo "Guitar Hero 3 World Tour" (version Wii) . qui n'a pas été utilisée depuis quelques années (entres autre choses par manque d'intérêt, mais aussi parce que sa pédale a été égarée).

 

Malgré l'absence de la pédale, l'appareil comporte 3 tambours et 2 cymbales, chacun étant muni d'un capteur piézoélectrique...pourquoi ne pas en profiter pour transformer ce jouet en véritable instrument de musique? 

Cerise sur le gâteau: on trouve, à l'arrière de l'appareil, une mystérieuse entrée MIDI IN, que je transformerai en sortie MIDI OUT: en branchant la batterie à la prise MIDI IN de mon clavier MIDI, je pourrai produire des sons de mon choix en frappant sur les tambours­.  

 

Quelques mises en garde, avant d'aller plus loin:

  • Il ne s'agira pas d'un instrument autonome: pour que la batterie génère des sons, elle devra être branchée à un synthétiseur MIDI (clavier MIDI, logiciel MIDI sur un ordinateur...).
  • Puisque je n'ai plus la pédale de cette batterie, mon projet ne comportera pas de pédale.
  • Puisque le clavier MIDI que j'utilise pour générer les sons ne tient pas compte du paramètre "vélocité" des notes MIDI pour les sons de percussion, mon instrument génèrera des notes MIDI de vélocité égale, peu importe que le tambour ait été frappé doucement ou brusquement.
  • Je vais utiliser une carte Arduino. Les premiers tests seront effectués sur un Arduino Uno, mais dans le produit fini il sera remplacé par un vieux Arduino Nano qui traînait dans le fond d'un de mes tiroirs.

Exploration de la batterie, avant sa modification 

La photo ci-dessous montre l'intérieur de la batterie, vue d'en-dessous. On peut voir un petit disque piézoélectrique collé au centre de chacun des trois tambours.


 Chaque cymbale comporte aussi un disque piézoélectrique.

 

Je ne conserverai pas ce circuit imprimé, qui sert d'intermédiaire entre les 5 capteurs piézoélectriques et la "Wiimote" (que je n'ai aucune intention d'utiliser non plus). Vous pouvez distinguer sur la photo les 5 connecteurs blancs qui proviennent des capteurs piézoélectriques (la couleur des fils correspond à la couleur des tambours ou cymbales: ça aide à s'y retrouver).



Les disques piézoélectriques

On utilise souvent les piézos pour produire un son: le piézo transforme une oscillation électrique en oscillation mécanique.

Mais dans une batterie électronique, nous utilisons l'effet inverse: lorsqu'on frappe le piézo, il génère une tension électrique qui peut être détectée par un microcontrôleur.  

 

La méthode généralement recommandée pour brancher un disque piézo à un Arduino consiste à brancher l'électrode centrale à une entrée analogique, brancher l'autre électrode du piézo à la masse (GND), et d'ajouter une résistance de 1 MΩ (un million de ohms) en parallèle avec le piézo. C'est, par exemple, ce qui est décrit dans l'exemple "Knock" fourni avec l'IDE Arduino.

Mais en faisant des tests, j'ai constaté que, lorsqu'on les frappe, les piézos produisent une oscillation pendant laquelle l'oscillation électrique change de polarité: la tension devient négative.  De plus, la tension positive produite par le piézo peut largement dépasser 5 volts. Ces deux caractéristiques ne semblent pas tellement souhaitables si je veux que l'Arduino survive à des heures et des heures de solos de batterie endiablés.

En principe, les entrées de l'Arduino comportent un certain niveau de protection contre les surtensions et les tensions négatives, mais j'ai quand même préféré faire quelques ajouts au circuit. Tout d'abord, une diode schottky permet d'éliminer la partie négative de la tension produite par le piézo (la diode devient passante dès que la tension descend sous zéro). Ensuite, grâce à un diviseur de tension, l'entrée analogique de l'Arduino ne sera soumise qu'à une fraction de la tension générée par le piézo.

J'ai fait ce circuit pour chacun des 5 piézos, ce qui m'a donné la carte ci-dessous (les 5 piézos se branchent aux connecteurs du bas, alors que les 6 connecteurs du haut se branchent à l'Arduino (GND, A0, A1, A2, A3 et A4).

 

J'ai branché les piézos à l'Arduino de la façon suivante:

  • tambour rouge: entrée A0
  • tambour bleu: entrée A1 
  • tambour vert: entrée A2
  • cymbale jaune: entrée A3
  • cymbale orange: entrée A4 

 

Le connecteur MIDI

Pour utiliser le port MIDI déjà présent à l'arrière de la batterie, il faut le transformer en sortie MIDI. Heureusement, le circuit pour une sortie MIDI n'est pas compliqué. Seules les broches 5, 2 et 4 ont besoin d'être connectées.

 

La photo ci-dessous montre la numérotation des broches du connecteur DIN5 femelle.

  

Sur la photo ci-dessous, on peut voir où j'ai soudé les trois fils. Le fil vert est branché à une résistance de 220 Ω qui est elle-même branchée à la sortie UART TX (broche 1) de l'Arduino, le fil noir est branché au GND de l'Arduino, et le fil rouge est branché à une résistance de 220 Ω, qui est elle-même reliée à la sortie 5 V de l'Arduino.

 

Cette photographie montre l'intérieur de la batterie après le recâblage des piézos et du connecteur MIDI. On ne voit pas l'Arduino qui est situé à l'extérieur de la batterie (pour faciliter les améliorations ultérieures).


Le sketch

Puisque je n'ai pas à évaluer la force de frappe, le sketch de l'Arduino est relativement simple: il s'agit de surveiller la tension à chacune des 5 entrées analogiques. Lorsqu'une tension dépasse une valeur seuil pré-définie, on en déduit que le tambour correspondant a été frappé. La valeur seuil est déterminée empiriquement; on la veut la plus basse possible pour que toutes les frappes, même légères, soient prises en compte. Mais si la valeur est trop basse, on détecte des frappes fantômes comme, par exemple, la vibration causée par un choc sur un autre tambour). De plus, le seuil peut être légèrement différent d'un tambour à l'autre (les cymbales, par exemples, ont tendance à être moins sensibles que les tambours).

La tension électrique générée par une frappe sur le piézo dure un certain temps: pour cette raison, on s'abstient de prendre d'autres mesures pendant environ 20 millisecondes, pour éviter de détecter plusieurs frappes alors qu'il n'y en a eu qu'une seule.

Et bien sûr, suite à la détection d'une frappe, on envoie un message MIDI "note on", immédiatement suivi d'un message "note off" (qui est en fait un "note on" avec une vélocité nulle sur le canal MIDI numéro 10 qui est, par convention, réservé aux percussions.

-

 

Et ensuite?

J'ai volontairement laissé l'Arduino à l'extérieur de la batterie afin de pouvoir plus facilement apporter des améliorations à l'instrument. Par exemple, ce serait chouette de pouvoir modifier l'instrument associé à chaque tambour sans être obligé de reprogrammer l'Arduino. On pourrait aussi ajouter un mode "séquenceur" qui permettrait à l'utilisateur de programmer un motif rythmique qui serait ensuite reproduit en boucle avec le tempo désiré.

 

Yves Pelletier

 

dimanche 21 septembre 2025

Mini-Piano Arduino

Dans cet article, je présente la réalisation d'un mini-clavier musical réalisé au moyen d'un Arduino Uno, d'un shield TFT (écran tactile) et d'un haut-parleur.


Un clavier de piano s'affiche sur l'écran. Lorsqu'on appuie sur une touche, elle se met en rouge et la note appropriée est émise par le haut-parleur (nous utiliserons la fonction tone).

 

 

Réaliser le projet a été clairement plus amusant qu'utiliser le produit fini: cet instrument de musique n'est pas très ergonomique! En plus d'être limité à une seule note à la fois, il faut être très précis pour ne pas toucher à côté des bonnes notes.

L'écran tactile

J'ai encore une fois utilisé le shield TFT 2.8 pouces (240 X 320 pixels) pour Arduino, conçu par la compagnie Adafruit, dont je vous avais parlé dans cet article il y a quelques semaines. Cet écran utilise le circuit intégré ILI9341 pour l'affichage et TSC2007 pour la détection tactile. Il est possible d'adapter ce projet à un autre écran tactile, mais vous devrez possiblement faire quelques modifications dans le sketch.

Connexion du haut-parleur

Puisqu'un haut-parleur a une très faible résistance (typiquement 2 Ω à 8 Ω), il est hors de question de le connecter directement à une sortie de l'Arduino. J'ai utilisé le circuit illustré ci-dessous, qui implique l'utilisation d'un transistor NPN.


Si vous préférez, vous pouvez remplacer le haut-parleur par un buzzer piézoélectrique, dont la résistance est beaucoup plus élevée. L'avantage, c'est que le buzzer peut être branché directement à la sortie de l'Arduino sans qu'il soit nécessaire d'ajouter un transistor.

 

Bibliothèques utilisées

Le sketh ci-dessous nécessite l'installation de trois bibliothèques conçues par Adafruit: Adafruit ILI9341, Adafruit GFX Library et Adafruit TSC2007

 

Le sketch

Après les obligatoires initialisations, le sketch s'occupe essentiellement:

  • de dessiner un clavier d'un octave à l'écran (lignes 60 à 64)
  • de détecter si on a touché une des touches du clavier (lignes 74 à 120)

Si une des touches du clavier a été touchée, il faut:

  • la redessiner en rouge (lignes 124 à 141)
  • écrire le nom de la note à l'écran (lignes 162 à 174)
  • émettre la note avec le haut-parleur  (lignes 176 à 180)

Si une des touches a été relâchée, il faut

  • la redessiner dans son état initial (lignes 143 à 159)
  • effacer le nom de la note précédemment jouée (ligne 165)
  • interrompre la note émise par le haut-parleur (ligne 179)

 

Voici le sketch complet:

---

---

Yves Pelletier

 

À lire également:

dimanche 17 août 2025

Programmer une carte TI Launchpad avec l'IDE Arduino

Les Launchpads sont des cartes de développement, assez similaires au cartes Arduino, commercialisées par la compagnie américaine Texas Instruments. Dans cet article, je présente l'installation des fichiers qui permettent de programmer les Launchpads à même l'IDE Arduino.

 

Mise en garde 

Avant d'aller plus loin, je tiens à préciser je ne recommande pas l'utilisation de ces cartes de Texas Instruments avec l'IDE Arduino. Ces cartes sont très peu utilisées par les amateurs qui font de l'électronique de façon récréative. En cas de problèmes il est difficile de trouver quelqu'un qui peut répondre à nos questions. De plus, rien ne garantit qu'Andreas Taylor, qui a adapté les fichiers dont je vous parle aujourd'hui, aura le temps et la motivation de les maintenir à jour indéfiniment.

Le MSP430 Launchpad et moi... 

Quelqu'un pourrait alors se demander pourquoi je me donne la peine d'utiliser des cartes dont je ne recommande pas l'utilisation. La raison est simple: je possède 3 cartes TI Launchpad que j'ai acquises entre 2012 et 2017, pour la simple raison que TI les vendait à un prix de lancement ridiculement bas ($4,30, livraison incluse).

Au départ, j'avais tenté de programmer mon premier Launchpad en utilisant Code Composer Studio, qui est encore de nos jours le logiciel de développement recommandé par TI. C'est un environnement de développement professionnel, très complet...que j'avais profondément détesté. 

Quelques mois plus tard, Robert Wessels lançait un logiciel nommé Energia, qui permettait de programmer les MSP430 Launchpad en utilisant la syntaxe Arduino. En fait, Energia était une copie exacte de l'IDE Arduino de l'époque (la version pré-1.0). Au moment où j'écris ces lignes, Energia est encore disponible, mais n'est plus supporté depuis 2019. De toute façon, si on désire utiliser la syntaxe Arduino, c'est plus pratique d'utiliser le véritable IDE Arduino (ce qui était impossible lors de la création d'Energia, puisque la fonction "Gestionnaire de cartes" n'existait pas encore). 

Installation des cartes TI Launchpad dans l'IDE Arduino

J'ai testé l'installation sur une version récente d'Arduino (2.3.6) dans Windows 11. Vous pouvez trouver d'autres information utiles sur la page gitHub d'Andy4495.

Pour que les cartes de Texas Instruments deviennent disponible via le gestionnaires de cartes de l'IDE Arduino, il faut d'abord aller dans le menu Fichier - Préférences.

 


Complètement en bas de la boîte de dialogue, vous trouverez le champ intitulé "URL de gestionnaire de cartes supplémentaires". 


Vous devez y copier l'adresse suivante:

https://raw.githubusercontent.com/Andy4495/TI_Platform_Cores_For_Arduino/main/json/package_energia_optimized_index.json 

(si d'autres adresses sont déjà présentes dans ce champ, vous pouvez les séparer par des virgules)

Lorsque c'est fait, on ferme le dialogue de préférences (bouton OK), et on va dans le menu "Outils -  Carte - Gestionnaire de cartes...".


Dans la liste des cartes disponibles, il devrait maintenant y avoir quelques cartes dont le nom débute par "Energia". 

Pour les cartes Energia MSP430, deux options sont offertes: 

  • "Energia MSP430 boards" : elle utilise le vieux compilateur GCC 4.6 qui était utilisé dans la dernière version d'Energia, en 2012. 
  • "Energia MSP430 boards (GCCv9)" : elle utilise une version plus récente du compilateur (2020), qui n'a pas été beaucoup testé en combinaison avec Arduino.

J'ai installé "Energia MSP430 boards (GCCv9)". Rien n'empêche d'installer les deux versions, ou d'installer l'autre plus tard en cas de problèmes. L'installation des fichiers peut prendre plusieurs minutes.

Puisque qu'une de mes cartes est un Stellaris Launchpad, j'ai aussi installé "Energia TivaC boards".

À partir de là, un tas de nouvelles cartes devraient s'afficher dans le menu "Outils - Carte - Energia MSP430 boards (GCCv9)". Évidemment, vous choisissez celle qui vous désirez programmer. 

 

Les pilotes USB (Windows)

Si vous êtes sous Windows, il faut installer des pilotes USB. J'ai trouvé les miens sur cette page du site de Texas Instruments. Pour les télécharger, j'ai été obligé d'ouvrir un compte gratuit "MyTI", de jurer que je ne vis pas à Cuba et que je n'utiliserai pas ces fichiers à des fins militaires, etc. 

J'ai démarré le logiciel d'installation, et ça c'est fait rapidement, sans problèmes. 

À noter toutefois que ces pilotes ne fonctionnent pas pour ma carte Stellaris, qui n'est pas basée sur le microcontrôleur msp430. Dans ses instructions, Andy4495 fournit un lien vers les pilotes qui étaient fournis avec Energia, tout en précisant qu'ils ne sont plus supportés depuis longtemps. Il indique également qu'une façon efficace d'avoir les pilotes à jour consiste à installer Code Composer Studio.

Sachez aussi que si  vous travaillez sur Linux, aucun pilote usb n'est nécessaire, mais vous devez éditer des règles udev­. Les informations détaillées peuvent être consultées sur la page gitHub d'Andy4495.

 

Test: clignotement des LEDs de la carte

Comme test rapide, j'ai fait clignoter les deux LEDs de la carte Launchpad (il y en a deux: une rouge et une verte).  Le sketch ci-dessous est inspiré des exemples fournis avec l'IDE Energia.

-

-

Ce test très simple a fonctionné (les deux LEDs de la carte s'allument et s'éteignent par alternance). Toutefois, je sais par expérience que des problèmes risquent de survenir lors de l'utilisation de bibliothèques. On peut présumer que certaines bibliothèques fonctionneront correctement avec le Launchpad, alors que d'autres ne fonctionneront pas. 

Yves Pelletier

 

Voici d'autres articles concernant l'ajout de cartes supplémentaires grâce au gestionnaire de cartes de l'IDE Arduino:

 Aussi, voici une liste de toutes les cartes qui peuvent être ajoutées à l'IDE Arduino.