A la demande générale... (bon, en fait, il n'y a que 2 personnes qui ont réclamé ça...)
Pouf pouf,
A la demande quasi générale, voici l'un des bricolages sur lequel je suis en train de travailler.
Je crains que le sujet ne soit pas passionnant, donc si la technique vous laisse de marbre, n'hésitez pas à vous divertir dans d'autres recoins du forum. Je vais essayer de ne pas être aussi bavard que d'habitude, mais n'hésitez pas à poser des questions, j'y répondrai avec plaisir.
Construction d'une interface USB - MIDI
Mon fils s'est fait offrir ce clavier MIDI maitre pour noël :
Techniquement, c'est un super clavier, de bonne qualité, avec plusieurs controlleurs midi. Il est pourvu d'une interface USB, et il est donc prévu pour être branché sur un ordinateur.
Couplé avec un logiciel de composition musicale (genre Reaper ou FLStudio par exemple), c'est parfait. Il permet de controller le logiciel, d'entrer des lignes musicales, etc... Ca fait le taf.
Par ailleurs, il s'est fait plaisir il y a quelques mois en s'offrant un synthétiseur sonore : le Moog subharmonicon.
Cette petite merveille lui permet de travailler ses sons, d'inventer des compos, bref un bijou.
Comme tous les instruments de musique électronique, il est pilotable en MIDI.
Le problème, c'est que les interfaces USB et MIDI sont incompatibles.
Une prise norme MIDI par contre, c'est un simple protocole série bi-directionnel : donc rien de compliqué, mais les signaux envoyés et émis ne sont pas les mêmes.
Donc, l'idée, c'est de savoir comment faire communiquer ces deux équipements.
Ensuite, il faut installer les drivers sur l'ordinateur, et utiliser un logiciel qui lira d'un coté les données du clavier pour les envoyer sur le synthé.
Cette solution fonctionne, mais il y a plusieurs problèmes avec cette solution :
- C'est assez compliqué en pratique à mettre en place : il faut avoir un ordinateur, plusieurs cables, lancer un logiciel... Quand on est dans un concert, ou une régie, ou en live, on a pas toujours la place ni l'envie de se trimballer un ordinateur, avec le clavier, l'écran, la souris, etc...
- Tous les temps de traitement au niveau de l'ordinateur (driver USB, logiciel, etc...) vont ajouter une latence de plusieurs dizaines de millisecondes. Ca peut paraitre dérisoire, mais croyez moi, quand on joue un truc sur un clavier et qu'on entend le son arriver seulement 100ms ou 150ms plus tard, c'est vraiment déstabilisant.
Donc en gros, j'avais besoin de trouver une solution plus simple, plus pratique et plus rapide que tout ça.
L'idée c'est donc d'utiliser un Raspberry qui fera l'interface entre les 2 équipements.
Ce qui tombe très bien, c'est qu'il y a quelques années, j'avais bricolé un prototype de carte électronique permettant à un ordinateur de type Raspberry Pi de communiquer (en série, via ses ports GPIO) avec une interface MIDI, en entrée et en sortie. En effet, le montage type décrit par le standard est simplissime :
En gros, on peut brancher directement les prises MIDI sur un port série, à condition d'y ajouter un optocoupleur pour l'isolation électrique, quelques portes logiques (en TTL, c'est largement suffisant) pour pouvoir tirer assez de courant, et quelques résistances.
J'avais donc déjà réalisé une implémentation électronique, d'abord sur une breadboard, puis j'avais fait graver une carte chez un graveur low-cost en Chine pour quelques euros :
Or un Raspberry Pi, c'est un vrai ordinateur, qui permet donc de brancher un périphérique USB, et de réaliser un logiciel qui fera l'interface avec le port série sur lequel on a branché le synthé en MIDI. Et surtout, c'est pas plus gros qu'une carte de crédit !
(vous m'excuserez le montage bourrin du schéma)
La première étape est de vérifier que toutes mes hypothèses sont bonnes, et que je suis capable de faire fonctionner chaque partie de mon schéma logique.
Je me suis rendu compte que j'avais fait une erreur de cablage sur le premier jet de ma maquette. J'avais inversé les bornes de la prise midi (c'est toujours compliqué de savoir dans quel ordre on les compte, surtout quand on a le nez sur son schéma).
Après quelques tests, j'ai réussi à trouver le cablage correct.
Le Raspberry relié à l'interface MIDI
Le clavier directement reconnu en USB par le Raspberry
L'utilisation de l'utilitaire aseqdump est simplissime et permet de lire les évènements MIDI
Finalement, j'ai pu tester que tous les composants de la chaine fonctionne, et que donc le projet est viable. J'ai même réussi à monter tous les éléments, lancer un script tout simple, brancher le tout sur mon piano, et ça marche !! (je n'ai pas testé la sortie MIDI sur le synthétiseur, car la prise n'est pas standard, elle utilise un jack au lieu du din-5 classique. Mais je suis pas inquiet, il n'y a aucune raison pour que cette partie ne fonctionne pas)
Par contre, je n'ai pas pris de photo...
Tout ce qu'il me reste à faire, c'est passer à l'étape de la réalisation.
Pour cela, j'ai corrigé les erreurs de la première version de ma carte électronique, je l'ai améliorée pour qu'elle s'interface de façon plus pratique et compacte au Raspberry, et j'ai envoyé le design sur le site web du constructeur pour la commander.
Pour information, commander 5 exemplaires de cette carte, me coute moins de 10€, frais de port inclus !!!! On vit une époque formidable !
Bon, par contre, pour les délais, faut compter un bon mois (ca vient de Chine en pédalo faut croire...), donc j'en suis là...
Je mettrai à jour la suite du projet quand je pourrai avancer sur le sujet...
Utiliser un raspberry, c'est pratique, mais cela a quelques inconvénients :
- Il faut une carte additionnelle pour faire l'interface avec le midi
- Il faut compter une bonne minute pour une séquence complète de boot d'un raspberry. Ca veut dire que quand on branche le système, on ne peut pas jouer avant plusieurs dizaines de secondes.
Je pense que je pourrai donc faire mieux en utilisant un microcontrolleur, directement implanté sur une carte électronique dédiée. Comme je ne sais pas encore faire ce genre de choses, il y a une solution intermédiaire : je pourrai utiliser un microcontroller de type Arduino, qui combine les avantages du microcontrolleur, et la facilité d'utilisation.
En l'occurence, Raspberry a sorti l'an dernier des cartes de ce type : il s'agit de vrais microcontrolleurs programmables, dans un boitier très pratique, pour un prix très modique.
Comparaison entre un Raspberry 2 à gauche, et un microcontrolleur Raspberry Pico à droite
Par contre, ca veut dire qu'il faudra que je programme moi-même toute la partie "gestion de l'USB" ainsi que le routage logiciel MIDI. Ca ne sera pas forcément une partie de plaisir (en admettant même d'être capable d'y arriver)
Bref, je me lancerai peut-être là dedans... un jour. (je promets rien)
Voila, comme prévu, j'ai été très bavard, mais les balises spoiler vous permettront de zapper les parties pas intéressantes.