Ayant investi dans un soft de modélisation d’amplis et d’effets sur mon mac pour ma guitare (Bias FX2 <- que je recommande vivement), je me suis vite confronté à un problème… comment, sans me faire greffer une troisième main, pour activer un effet ou interagir avec (comme avec une wahwah par exemple) ? Avec un pédalier d’effet, on ne se pose pas la question, puisque l’on se sert des ses pieds!!
Et bien, c’est simple, une seule réponse le protocole MIDI ! Ce protocole inventé au mitan des années 80 a permis de décorréler l’instrument sur lequel on joue, du son qui est produit (Cf clavier/séquenceur). Pour les pédaliers des guitares le même principe s’applique. Celui-ci devient une sorte l’élément passif qui envoie des commandes d’activation/désactivation ou de modulation à l’équipement qui peut les traiter (ampli à modélisation avec entrée midi, soft).
Après avoir fait le tour des produits du marché j’ai considéré que le cout d’un pédalier MIDI était plutôt disproportionné par rapport au prix de mon soft (plus de 300 euros le pédalier contre un peu moins de 100 pour mon soft….). Et puis, j’avais dans mes cartons une pédale wahwah Jim Dunlop JH-1 dont j’avais fait l’acquisition vers 1994 (hum hum cela ne me rajeuni pas) et dont le son (même après changement du potentiomètre interne) était un peu cracra (trop de souffle et crachoteuse -> bof). Donc pourquoi ne pas tenter l’aventure avec un arduino, en partant du postulat qu’il y avait bien un fêlé quelque part sur cette terre qui avait eu l’idée de créer un bibliothèque midi pour cette plateforme (j’y reviendrai après). La réponse est oui, c’est possible !!!
J’ai donc désossé le contenu de la wah pour ne garder que le potentiomètre et interrupteur on/off.
Et puis quitte à faire un truc sympa, j’ai voulu accoupler à la pédale un boitier pour y accueillir des boutons poussoirs robustes (j’ai des gros pieds) et quelques leds. Le tout m’est revenu à moins de 40 euros en comptant l’arduino (un vrai pas une copie). Comme la place à l’intérieur de la pédale est relativement comptée, j’ai choisi de placer l’arduino dans le boitier alu.
fixation à l’allemande ! 🙂
comme ça je peu appuyer bien fort avec les pieds !
Oh le beau paquet de nouilles 🙂
bon ok, j’aurai pu faire plus esthétique. Mais au final c’est fonctionnel et robuste
De manière schématique, voila ce que cela donne
Sur le fond, la programmation est plutôt simple. On capte chaque appui sur un bouton poussoir pour changer l’état d’une variable de 0 vers 1 ou de 1 vers 0. En fonction de l’état de cette variable on allume ou non la led correspondante. Dans la pratique : j’appuie sur un bouton poussoir, la led s’allume, je ré-appuie, la led s’éteint. Du point de vue du potentiomètre, le principe est simple également. On l’utilise comme pont diviseur de tension et on capte la valeur de la tension correspondant à la position de celui-ci.
Dans la foulée, on envoie un signal midi sur le port usb pour indiquer le changement d’état.
Du point de vue du protocole midi, il y a en gros deux grandes catégories: les notes et les commandes (control change). Dans le cas d’un pédalier pour guitare, le plus logique est d’envoyer une commande. Celle-ci fait référence à un canal (un par appareil midi pour faire très simple), un contrôleur (un bouton, un switch, un potentiomètre) et une valeur (0=off, 127=on ou toute valeur entre 0 et 127 pour moduler la valeur -> volume, pitch, wah, etc).
Pour ce pédalier il y a donc 6 contrôleurs (4 boutons poussoirs mais vu comme des inters -> Cf plus haut, 1 inter-> celui d’origine de la wah et le potentiomètre de position de pédale).
Pour la bibliothèque midi, le mieux est d’utiliser celle-ci qui est plutôt récente.
Jusque là tout va bien…. mais c’était trop beau 🙂
Sorti de l’ombre, arrive le problème du port USB….
Et oui sur un arduino Uno récent, le port USB se comporte comme une émulation de port série grâce au chip annexe fourni par ATMEL -> microcontroleur atmega16u2. Les plus vieux modèles, équipés de ftdi ou les copies chinois sur base CH340G, ne peuvent d’ailleurs pas faire autre chose que du serie sur USB hardware, alors que le 16u2 possède un firmware (donc reflashable) pour faire le job. Sur les Arduino micro et le léonardo, c’est different, mais le principe reste le même : c’est le microcontroleur principal (ATmega32u4) qui gère le port USB.
Bref, tout cela pour dire qu’il faut sortir du mode « port série » sur l’USB pour passer en mode HID (human inerface device) pour faire de l’USB-MIDI.
Si sur le micro ou leonardo, il n’y a rien à faire que d’utiliser la bibliothèque USB-MIDI qui va bien. Pour le Uno l’opération est un peu plus compliquée….. il va falloir flasher le 16u2 avec un firmware qui permet ce mode.
Dans les faits ce n’est pas très compliqué, il suffit sur le port ISCP2 du Uno de mettre le pin RST à la masse puis d’utiliser un programme comme dfu-programmer pour pousser le nouveau firmware (d’abord erase puis ensuite flash).
Le firmware HIDUINO est le plus connu, mais il à un gros défaut… il ne sait gérer que le mode HID et ne possède pas de double boot pour passer en mode série. Résultat des courses : s’il l’on souhaite modifier son code sur l’arduino, il faut reseter le16u2, effacer le firmware, reflasher le firmware port série, pousser le programme corrigé avec l’IDE, reseter le 16u2, refsher le firmware HIDUINO et finalement tester les modifs…. de quoi devenir fou rapidement…….
Le plus simple a été de compiler un firmware avec double boot via le site « pimp my mocoLUFA » (le firmware est dispo sur mon espace github). Avec ce firmware, il suffit de mettre le pin4 de l’ISCP2 à la masse pour que le 16u2 boot en mode série et d’enlever cette mise à la masse pour qu’il boot en mode HID 🙂
Le code Arduino est dispo comme toujours sur github, il est très compact et tient en moins de 180 lignes:
https://github.com/Chnalex/arduino/blob/master/pedalboard_alex.ino
Voila ce que la donne dans la vraie vie (bon avec les mains pour la video, mais en principe c’est aux pieds…)