dimanche 27 décembre 2015

Pédalier d'orgue MIDI (Arduino)


Ce projet consiste à transformer un vieux pédalier d'orgue électronique en contrôleur MIDI.  De cette façon, on obtiendra quelque chose d'assez similaire au mythique pédalier Taurus de la compagnie Moog, sauf que notre instrument, plutôt que synthétiser ses propres sons, enverra des messages MIDI vers un autre instrument (ou vers un ordinateur exécutant un logiciel compatible MIDI).   Et tout ça ne nous coûtera vraiment pas cher (contrairement aux instruments professionnels du même genre, qui sont généralement hors de prix).


Le pédalier, avant transformation

Mon pédalier a été récupéré d'un vieil orgue Yamaha Elektone manufacturé à la fin des années 1970.  Dans ce genre d'instrument, l'organiste utilise son pied gauche pour jouer les notes de basse.  Une fois modifié, il pourra jouer n'importe quel timbre supporté par l'instrument hôte:  contrebasse, trompette, violon, banjo...

Le pédalier comporte 13 pédales formant un octave complet, de do jusqu'au do suivant.  Chaque pédale active un interrupteur:  circuit ouvert en temps normal, circuit fermé lorsque la pédale est enfoncée.

En cherchant un peu, vous pouvez probablement dénicher un orgue électronique de ce genre, en état de marche ou non, pour vraiment pas cher.  J'en ai même déjà vu un abandonné sur le trottoir, dans l'attente des éboueurs.  La principale difficulté, souvent, est de le transporter jusqu'à votre domicile (c'est beaucoup moins lourd qu'un piano, mais ça demeure assez volumineux).

Si vous n'avez pas accès à un vieux pédalier d'orgue, vous pouvez aussi en fabriquer un vous-mêmes en utilisant 13 gros interrupteur (par exemple, le genre d'interrupteurs utilisés dans les pédales d'effet pour guitare).  Ça pourrait donner quelque chose similaire à ce qui est illustré ci-contre.


Le circuit

Il s'agit d'un projet très similaire au clavier MIDI Arduino que j'avais réalisé auparavant:  l'Arduino est le cerveau de l'instrument.  Sa tâche consiste à détecter si une pédale a été enfoncée (ou relâcher), et à envoyer un message MIDI lorsqu'un tel événement a lieu.  Bien entendu, n'importe quel autre microcontrôleur pourrait faire l'affaire, mais l'Arduino est particulièrement facile d'utilisation, et il fonctionne déjà avec un niveau logique de 5 V, qui est la norme en MIDI.

Alors que mon clavier MIDI comportait 37 touches, mon pédalier n'en comporte que 13.  Plutôt que câbler mes 13 interrupteurs sous forme de matrice comme je l'avais fait pour le clavier (ce qui complique sensiblement le programme à exécuter par l'Arduino), j'ai choisi de câbler mes 13 interrupteurs de façon très classique, avec une résistance de tirage vers le haut.  Chaque pédale génère donc un signal de 5 V lorsqu'elle n'est pas enfoncée, et de 0 V lorsqu'elle est enfoncée.


Chaque pédale est reliée à sa propre résistance.  La valeur de la résistance n'a pas une très grande importance:  10 kΩ ou plus pour éviter une trop grande consommation. 

Pour ne pas accaparer 13 entrées de l'Arduino, j'ai utilisé deux registre à décalage hc165 (dont j'avais déjà exploré le fonctionnement dans cet article).  Chaque hc165 comporte 8 entrées, donc l'Arduino pourra vérifier l'état de mes 13 pédales au moyen de 3 de ses pins seulement (2, 3 et 4).


L'envoi des messages MIDI s'effectue par la pin 1 (TX) de l'Arduino.  Pour plus de détail, vous pouvez vous référer à cet article sur la transmission MIDI par l'Arduino.

J'ai aussi ajouté une paire de boutons poussoirs permettant de monter ou descendre d'un octave ou deux ("octave up", "octave down") et une paire de boutons poussoirs permettant de changer le timbre ("program up" et "program down").  J'ai utilisé un CD40106 (bascules de Schmitt) pour éviter les rebonds.




Sur mon prototype, il s'agit de petit boutons poussoirs mais pour un modèle plus professionnel, il serait logique d'utiliser des gros boutons sur lesquels on appuierait avec le pied.

De plus, le volume sonore (vélocité) est contrôlé  par un potentiomètre.

Finalement, toutes ces caractéristiques (numéro de programme, d'octave et volume sonore) s'affichent sur un LCD.





Le sketch Arduino

À chaque passage dans la boucle principale, l'Arduino vérifie l'état des pédales et, s'il y a eu un changement, il envoie un message MIDI de type "NoteOn" ou "NoteOff".




Il vérifie également si on a appuyé sur les boutons de contrôle, ou si le potentiomètre à changé de position, et il met à jour les données affichées par le LCD.


Yves Pelletier   (TwitterFacebook)

4 commentaires:

  1. Bonjour,
    Le projet est intéressant ! Y aura toujours il des évolutions ? Fzns l'immédiat, je pense au midi in pour accepter des CC (comme la sélection de la banque de sons) ou l'utilisation du port USB en temps que contrôleur midi (avec hiduino).
    A bientôt !

    RépondreSupprimer
  2. Bravo et merci pour cet article complet !! Votre solution est très économique en comparaison des solutions du commerce http://midiboutique.com/ ou http://pascal.leray.free.fr/web_org/orgue_composants.html
    J'aimerai fabriquer un pédalier autonome pour l'associer à mon piano. Je vais chercher des infos du côté des expandeurs.

    RépondreSupprimer
  3. bonjour
    je rencontre deux problèmes , les pédales et le nom des notes ne corresponde pas , et l'affichage du LCD est compliqué scintillements contraste nul j'ai pourtant corrigé le fait de l'alimentation merci de votre aide

    RépondreSupprimer
  4. Merci de ce tuto détaillé. Je suis en train de planifier le même genre de bricolage et j'ai un doute sur le fonctionnement des interrupteurs. Les résistances sont elles obligatoire avec ce câblage ? J'ai vu un autre tuto où l'auteur utilisait le même câblage pour les interrupteurs en disant que ça lui évitait justement d'avoir à ajouter des résistances... je suis perplexe :-)

    RépondreSupprimer