mardi 14 janvier 2014

Fabrication d'un arpégiateur MIDI à base d'Arduino

Après avoir transformé mon Arduino en séquenceur MIDI, voici un projet où l'Arduino servira plutôt d'arpégiateur MIDI.

Lorsque cet arpégiateur est branché à un clavier MIDI, il s'agit d'enfoncer quelques touches du clavier de façon à former un accord:  votre clavier se met instantanément à jouer les notes qui correspondent aux touches enfoncées, mais de façon séquentielle (arpège).  Cet arpège est jouée en boucle, à une vitesse réglable par un potentiomètre, même après que les touches du clavier aient été relâchées.  Vous formez un autre accord sur le clavier et le nouvel arpège est joué en boucle...vous voilà transformé en virtuose de la musique nouvel-âge!  L'intérêt de ce dispositif, c'est que vous pouvez obtenir des effets très intéressants en exécutant l'arpège beaucoup plus rapidement que vous ne pourriez le faire vous-mêmes, et vous pouvez utiliser vos mains pour jouer autre chose pendant que les arpèges sont répétés.


Le circuit

C'est exactement la même chose que pour mon séquenceur, mais avec un bouton et une LED en moins: donc un Arduino Uno auquel on branchera un circuit de communication MIDI, un interrupteur, une LED  indicatrice et deux potentiomètres.

Je présente donc pour la troisième fois le schéma du circuit de communication MIDI, pour plus de détails je vous invite à consulter l'article complet.  Il existe des shields tout faits, le plus connu est probablement celui conçu par Sparkfun
Sans surprises l'interrupteur "on-off" servira à mettre l'arpégiateur en fonction, et à l'arrêter (sinon, vos arpèges continueraient de jouer jusqu'à ce que vous débranchiez l'Arduino...).  Remarquez qu'il s'agit d'un interrupteur à deux positions (on-off) et non d'un bouton-poussoir momentané.  Cet interrupteur est placé entre l'entrée 7 de l'Arduino et la masse (GND).   Nul besoin d'ajouter une résistance, puisque le sketch utilise la résistance pull-up interne de cette pin.

La LED s'allumera pour indiquer que l'arpégiateur est en fonction:  on la branche entre la pin 9 de l'Arduino et la masse (GND), en n'oubliant pas de lui associer une résistance protectrice de 220 Ω.

Finalement, un premier potentiomètre (de 10 kΩ ou plus) est branché à l'entrée analogique A0 de façon à contrôler la vitesse à laquelle les arpèges seront exécutés.  J'ai aussi ajouté un deuxième potentiomètre (branché à A1) qui permet de modifier le programme MIDI, c'est à dire la sonorité utilisée par votre clavier pour jouer les sons (onde carrée, piano, cornemuse, etc.).  Ce potentiomètre n'est pas essentiel, mais il peut permettre des effets intéressants.



Le dessin ci-dessous illustre toutes les connexions autres que la liaison MIDI qui avait déjà été illustrée plus haut.



Le sketch

Il faut d'abord savoir quelles touches du clavier sont enfoncées.  Puisque le protocole MIDI fonctionne à base de messages "note on" (lorsqu'une nouvelle touche est enfoncée) et "note off" (lorsqu'une touche est relâchée), le sketch utilise ces messages pour tenir à jour un registre des touches enfoncées (c'est l'array touchesActives[]).  Mon clavier MIDI envoi des messages "note on" avec une vélocité nulle plutôt que des messages "note off":  vous aurez peut-être à modifier un peu le sketch si votre clavier agit différemment.

La première version de mon sketch se contentait de jouer en arpèges les touches enfoncées, et les arpèges s'interrompaient aussitôt qu'on relâchait les notes.   Cette interruption engendrait un effet sonore plutôt désagréable chaque fois qu'on changeait d'accord sur le clavier, c'est pourquoi j'ai modifié mon sketch pour que les arpèges continuent d'être joués après que les touches aient été relâchées.

Ça complique les choses, car il est impossible pour le musicien de relâcher toutes les touches exactement au même moment:  on attend donc qu'un même accord soit maintenu pendant  au moins 50 millisecondes avant de le copier dans l'array notesActives[], qui contient les notes qui doivent être jouées en arpège.

Voilà!  Bien entendu, il serait relativement facile de fusionner ce sketch avec celui du séquenceur pour qu'un même appareil puisse remplir n'importe laquelle de ces deux fonctions.

La bibliothèque MIDI est disponible ici.


Yves Pelletier (Twitter:  @ElectroAmateur)


Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...