Création d'un accordéon MIDI

image principale Création d'un accordéon MIDI

Difficulté:

Jouant moi même du concertina, j'ai rapidement pris conscience du fait que je ne pourrais plus jouer chez moi à partir de 22h. Jaloux des pianistes qui peuvent jouer au casque, il m'a fallu développer ma propre solution à base d'arduino. Travaillant dans l'informatique, mon objectif n’était pas de réinventer la roue mais d'utiliser un maximum de software Open sources existants L'objectif de ce Tutorial est de regrouper les recherches effectuer pour fabriquer mon accordéon MIDI afin de vous permettre d'avoir du recul et de la documentation pour la création de votre modèle. Il ne s'agit pas de vous indiquer comment refaire le mien à l'identique mais de vous inspirer du travail réalisé et documenté pour l'adapter à vos besoins Ce projet est en partie terminé mais des extensions et quelques ajustements sont en cours, c'est pourquoi nous vous laisserons libre d'adapter et nous justifierons les choix réalisés tout au long du tutoriel.

Matériel :

Budget : Non défini

Fichiers :

Etape 1 : De l'accordéon à l'accordéon MIDI

L'accordéon est un instrument à vent. On y trouve des boutons qui permettent d'activer très rapidement l'arrivée  d'air à travers une anche libre.

En poussant sur le soufflet, on active la première lame (note A) et en tirant aàl'inverse on active une deuxième lame (note B). Dans notre cas il arrivera que A soit différent de B.

Pour plus d'informations sur l'objet a reproduire : 

https://fr.wikipedia.org/wiki/Accordéon

De nombreux projets de ce genre existent mais aucun ne regroupais tous mes critères.

Voici le cahier des charges du projet.

Objectifs : 

- Jouer au casque sans bruit

- Avoir des touches réactives et confortables

- recréer le confort de jeu de l'instrument

On pourrait réutiliser un instrument existant et transformer les mécaniques en interrupteurs, cependant le prix des concertinas est assez élevé en général et la gestion de l'air peut être compliquée. De plus il faut pouvoir supprimer à volontés le son de l'instrument.

Décisions de conception :

- Utiliser des boutons "électroniques"

- Créer une boite main gauche et une boite main droite

- Remplacer la gestion du soufflet par une alternative Electronique (Bouton Arcade, bouton fin de course)

- Utiliser le protocole MIDI



Etape 2 : Choix des boutons

Le choix des boutons est primordiale pour un confort de jeu et une réactivité maximale.

Après avoir testé des boutons standards (Photo 1) ceux ci ce sont avérés assez peus réactifs et malheureusement peu customisables.

La question est donc simple quels sont les switchs qui permettent le plus de modularité ?

Cahier des charges : 

- des boutons utilisés par la communauté et dont l'efficacité est avérée

- facilement adaptable au niveau du placement

- Impression du dessus de la touche possible 

Après plusieurs semaines de recherche et de nombreuses discussion le choix s'est porté sur une trentaine de boutons Cherry MX black (photo 2)

On peux en effet trouver des exemples d'impression de touches pour les Cherry MX black

http://www.thingiverse.com/thing:1003357


à noter : je ne regrette en aucun cas ce choix et ces switchs sont parfait en terme de réactivité et de modularité




Etape 3 : Choix de votre / vos Arduinos

Pour choisir l'Arduino de nos rêves on doit dabord répondre à cette question : avec ou sans clavier matriciel ?

On pourrait utiliser un clavier matriciel mais même si on économise des ports on veux pouvoir appuyer sur autant de touches que l'on souhaite simultanément

Pour bien comprendre on peux faire un petit jeu : 

- Ouvrez un bloc note

- Appuyez sur les touches A, Z, E, R en même temps

voila ce que j'obtiens sur un clavier standard :

arzeeeeeeeeeeeeeeeee

zareeeeeeeeeeeeeeee

razeeeeeeeeeee

Ok mais pour l'accordéon c'est quoi le rapport ?

mais lorsque nos doigts diront fait l'accord AZER et tiens le longtemps avec les exemples plus haut on risque de jouer seulement la note E

Si vous voulez en savoir plus sur les claviers matriciels : Sources

Exit donc le matriciel il nous faut une entré de l'Arduino par touche d'accordéon.


à partir de la je vous laisse compter le nombre de boutons dont vous aurez besoin et le nombre de ports USB disponibles sur votre Ordinateur


Pour recréer un accordéon, je conseil soit : 

un seul Arduino  pour tout l'instrument


Avantages : 

- Un seul code a maintenir 

- économie de place et de ports USB sur votre PC

- Un seul port MIDI a simuler

Inconvénients :

- Câblage entre les deux mains peut être compliqué (utilisation de nappes de câbles recommandé)


Plusieurs Arduino pour tout l'instrument (choix personnel)


Avantages

- Plus modulables qu'un seul Arduino

- Cablage plus simple

- Moins de touches par Arduino => Amélioration de la vitesse de lecture des touches

Inconvénients

- Plusieurs sketch a maintenir

- Prends plus de ports USB

Etape 4 : Dispositions des touches

L'objectif ici est de parler du côté adaptable du design que j'ai crée.

Jouant du concertina j'ai adapté le clavier de mon instrument sur ce site.

Voici le site sur lequel j'ai pu créer mon clavier

http://www.keyboard-layout-editor.com/#/

et un lien vers l'exemple en photo  

Exemple 1 : Concertina en une seul plaque

Exemple 2 : Accordéon 3 rangs 18 basses


Cependant si vous jouez d'un autre genre d'accordéon ou si vous désirez creer un nouveau genre de clavier vous pouvez redessiner complètement votre clavier .

Une fois que vous êtes satisfait du clavier créé, il faudra sauvegarder dans un fichier la partie Raw Data de votre création

Etape 5 : Du Raw Data au CAD


Alors maintenant qu'on a notre layout il nous faut l'importer dans la partie rouge de la capture d'écran.

Voici le site sur lequel j'ai crée les fichiers SVG, DXF ou EPF du layout.

Ces formats sont utilisables par la plupart des machines outils.

http://builder.swillkb.com/

Pour les différents paramètres, je vous ai laissé la version définitive de mon Layout mais j'ai utilisé le troisième type de switch t_3. De plus si vous avez des doutes n'hesitez pas à consulter les forums spécialisés.

par exemple : https://geekhack.org/index.php?topic=65189.0

IMPORTANT : j'ai pu faire découper deux plaques d'inox par un ami, cependant ce genre de découpe est a mon avis disponible a l'achat sur Internet

IMPORTANT 2 : je vous conseille d'ajouter des trous pour de la visserie dans le design afin de fixer la plaque à une structure (personnellement j'en ai fait une en bois)


Etape 6 : La gestion du soufflet : simuler la sensation de jeu

L'objectif de cette partie est fondamentale : recréer la sensation d'un soufflet d'accordéon de façon électronique 


Sur ce sujet, plusieurs écoles s'affrontent : 

- Ceux qui bricolent diront : "Je construis un soufflet en carton et je met un capteur de pression"

- Ceux qui veulent une solution High Tech mesureront un delta de distance a base de laser/ultrason etc...

- Les gens comme moi qui voit une solution temporaire en utilisant un bouton ( ON = on pousse / OFF = on tire )


Cette solution est pratique puisqu'elle permet en ajoutant un seul bouton (une entrée sur votre arduino) de simuler le comportement de l'accordéon, cependant elle est voué à être remplacée par une des solutions évoqués plus haut car celles ci permettront de récupérer l'intensité du jeu (Appuie fort, appuie léger)

Concernant le choix du bouton : j'ai en premier lieu essayer avec un foot switch (bouton des pédales de guitare) avant d'opter pour un bouton d'arcade.

Le foot switch est vraiment dur à actionner ce qui ne rendais pas le jeu fluide et faisait mal a la main.

Le bouton d'arcade est bien plus agréable à utiliser

(Vous pouvez également prévoir un emplacement de Cherry MX sur votre design qui servira de sens de soufflet)



Etape 7 : L'electronique : branchements simples et optimisés

J'ai utilisé un Arduino pro pour chaque main de l'accordéon mais on peux imaginer l'utilisation d'un arduino méga si on désire plus de touches ou si on veux regrouper les deux mains sur le même arduino.

Le plan est simple, on relie une borne de chaque bouton a la masse et l'autre borne à une entrée de l'arduino

(analogique ou numérique)

Cependant on doit raccorder le bouton qui sert de simulation de soufflet au deux Arduinos on aura donc une pin connectée à la masse et deux cables sur l'autre pin relié chacun à une entrée des deux Arduinos.

Cette version du schéma nous oblige a avoir les deux parties de l'accordéon raccordées par un câble, cependant c'est une solution efficace qui ne nous force pas à avoir deux boutons différents pour une seule information.

On peut imaginer un système ou on pourrais avec deux boutons choisir de chaque côté de linstrument le sens du soufflet mais cette idée ne semble pas rendre le jeu plus intuitif.

Je conseille de réaliser un premier montage de deux ou trois boutons sur une devboard (l'appui sur un bouton peut par exemple déclencher une LED afin de faciliter les tests et le montage)





Etape 8 : Impression 3D et découpe laser

Comme vous le voyez sur l'image les Cherry MX permettent d'imprimer des pieces en 3d qui viendront se clipser au dessus du switch

Un gentil collègue m'a imprimé des touches de la forme de celle de mon concertina mais celle-ci ce sont avérés trop petites et pas assez glissantes. cependant j'essaie de vous trouver le STL rapidement.

Pour l'instant j'ai donc sauvagement arraché 30 touches de mon clavier mécanique de gamer (surtout enlevé les macros et le pavé numérique)

Cependant je suis en train de travailler sur un adaptateur afin de pouvoir de mettre des vrais boutons d'accordéons diatonique au dessus

j'imprimerais dans ce cas un adaptateur entre les cherry MX et les boutons d'accordéons


De plus j'ai utilisé de la découpe laser pour les deux boitiers de l'accordéon j'ai ensuite creusé afin d'insérer le bouton d'arcade et les deux plaques métalliques


Partir sur un premier prototype dans une boite en plastique ou en bois est une bonne idée car ça permet d'adapter l'instrument selon vos besoins.


Etape 9 : Partie logiciel ou comment transmettre les données

Notre code va utiliser la librairie MIDI arduino 

http://playground.arduino.cc/Main/MIDILibrary

mais nous parlerons du code à l'étape d'après, notons juste qu'il sagit d'envoyer des message MIDI via la liaison Serie (USB) entre l'ordinateur et le ou les arduinos

Alors c'est l'étape ou on va devoir installer deux trois choses.

Pour tester votre code je vous conseille d'installer d'abord Hairless-midiserial qui est disponible sur linux, Max et windows

http://projectgus.github.io/hairless-midiserial/

Ce programme récupère les entrées d'un port série et les envoie a un port MIDI de votre ordinateur.

Il permet également d'afficher les message MIDI envoyés par votre Arduino et donc de valider votre placement des notes ainsi que la validité des messages.

QUOI ??? mais tu nous as pas dit d'acheter un port MIDI ???!!!!!

En effet on peux en simuler un sur notre machine :

Pour Windows :

http://www.tobias-erichsen.de/software/loopmidi.html

Sous Linux (pas testé) 

https://ubuntuforums.org/showthread.php?t=1445186

Sous Mac (pas testé)

http://www.johanlooijenga.com/tools/12-virtual-ports.html

Ces solutions créent sur votre machine des ports MIDI a votre convenance, j'en utilise deux un pour la main droite un pour la main gauche.

Une fois les ports MIDI crées Hairless-midiserial devrait les détecter et vous pourrez relier vos arduinos a vos ports MIDI virtuelles.


Ensuite vous pourrez lancer votre logiciel de MAO préféré et il devrait détecter plus ou moins automatiquement votre équipement. 

(Personnellement j'ai testé avec Fruity Loops et Ableton Live et les deux fonctionnent plutôt bien même si j'ai une préférence pour Ableton qui a l'air d'avoir une meilleure gestion du MIDI) 

Et voila le travail maintenant allons mettre les mains dans le code



Etape 10 : Le code !

Le code est assez simple,


L'Arduino va passer son temps à lire l'état des touches et enverra les données via le port série grâce a la bibliothèque MIDI d'Arduino 

- On doit garder l'état précédent des touches :

   Prenons un exemple :

   Si j'appuie sur le bouton A en pressant le soufflet => Note A

   Ensuite si j'appuie toujours sur le bouton A en tirant le soufflet => Note B et fin de la note A


Le code Github fournis a cette adresse  https://github.com/PierreBanwarth/MIDI-concertina est celui que j'utilise pour mes deux arduinos, 

Plusieurs choses importantes : 

Ce projet github est paramétré pour utiliser PlatformIO que je vous recommande chaudement, je le trouve plus complet que l'editeur Arduino officiel et il utilise l'interface d'Atom qui me conviens.

Si vous n'utilisez pas PlatformIO vous pouvez prendre le code du fichier Main.cpp et le copier dans votre éditeur arduino préféré, il vous faudra juste ajouter la librairie qui se trouve ici :

http://playground.arduino.cc/Main/MIDILibrary

 

Dans main.cpp nous avons les trois lignes suivantes :

uint8_t pousser[] = {23,26,31,25,38,12,19,24,28,31,16,21,25,33,32};

uint8_t tirer[] = {26,30,33,36,40,19,23,26,29,33,17,22,27,31,34};

uint8_t pinButton[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, A0, A1, A3};


ce tableau indique que : 

 - la note a l'indice 0 en pousser est 23 (code MIDI)

 - la note a l'indice 0 en tirer est 26 (code MIDI)

 - le boutton connecté a la pin 2 de l'arduino est la note d'indice 0

on a également une instruction du type :

uint8_t poussertirer = digitalRead(A4); 

cette instruction indique que sur cet Arduino le bouton du soufflet est brancher sur le port A4

 Il faudra ajuster ces tableaux a vos variantes dans le câblage de vos touches.



Etape 11 : Enjoy !

Voici un exemple de ce que cela donne !

Etape 12 : Le titre de votre étape ici

Sources :

https://github.com/PierreBanwarth/MIDI-concertina


Bonjour,

Je n'y connais rien en électronique mais je me lancerais bien dans la transformation d'un accordéon diatonique acoustique en accordéon midi pour l'alléger (supprimer les sommiers) et profiter du soufflet pour ne pas perdre de temps à apprendre une autre technique. Arduino me parait sympa.

Est-ce que je pourrai avoir des tuyaux pour faire ce boulot ?

Merci...


Ces tutoriels devraient vous plaire

vignette Écran Tactile et Raspberry Pi
Écran Tactile et Raspberry Pi
vignette Connecter un  écran LCD en I2C
Connecter un écran LCD en I2C
vignette Arduino Uno - Capteur d'humidité au sol.
Arduino Uno - Capteur d'humidité au sol.
avaatar PierreBanwarth

PierreBanwarth

Suivre

Vues: 1877
Mis en favoris: 27

Découvrez d'autres tutoriels de

PierreBanwarth

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers