Routeur MIDI sur Raspberry Pi

Je veux parler de la façon de résoudre un problème qui est probablement familier aux fans de synthétiseurs matériels.


Que dois-je faire si je veux ancrer un contrôleur MIDI et un synthétiseur, mais l'un d'eux n'a qu'un connecteur USB et pas de MIDI? De plus, pour des raisons évidentes, je veux faire tout cela sans utiliser d'ordinateur.


J'ai cherché sur Internet plusieurs fois à la recherche d'un appareil pour cela, mais je n'ai rien trouvé à part quelques liens vers quelques appareils à petite circulation pour beaucoup d'argent, qui ont déjà été abandonnés.


À un moment donné, cela m'est venu à l'esprit: vous pouvez prendre le Raspberry Pi et tout faire dessus - c'est un vrai ordinateur, et de telles choses se font facilement.


Il sera probablement faible pour un traitement sonore complet, mais le flux de messages MIDI devrait déjà être pompé.


[Soit dit en passant, il existe un processeur d' effets sonores pour Raspberry Pi , mais il nécessite le dernier modèle de Raspberry Pi, qui est beaucoup plus cher, plus un bouclier supplémentaire, qui n'est pas non plus bon marché, et j'ai décidé de ne pas déranger].


Aussitôt dit, aussitôt fait. Raspberry Pi a obtenu le tout premier modèle et assemblé un prototype fonctionnel en quelques soirées. En bref, comment cela fonctionne.


ALSA Midi


Au début, j'avais prévu de prendre PureData et d'y écrire un simple patch qui transférera les messages midi d'un port à un autre.


Mais quand j'ai commencé à utiliser le MIDI sur Linux, j'ai trouvé une approche beaucoup plus simple.


Linux a un système d'entrée / sortie audio standard - ALSA. Il prend en charge les flux audio et MIDI.


Pour qu'un programme reçoive des messages MIDI via ALSA, vous devez d'abord le connecter à la source de ces messages. Mais c'est exactement ce dont nous avons besoin pour résoudre ce problème! Sans réfléchir à deux fois, j'ai jeté PureData et j'ai tout fait avec les outils natifs ALSA.


Voici le résultat.


aconnect


Lorsque vous connectez un périphérique MIDI au système, il apparaît dans les périphériques ALSA et vous pouvez effectuer diverses opérations avec des commandes standard avec lui. Nous sommes intéressés par l'équipe aconnect , qui ne fait que la connexion-déconnexion des ports. Une documentation détaillée peut être trouvée ici .


En réalité, nous n'avons besoin que de deux opérations: afficher une liste des appareils disponibles et connecter un appareil à un autre:


 #   MIDI-,    aconnect -l #     Arturia Keystep  Xio aconnect 'Arturia KeyStep 32' 'Xio' 

J'ai enveloppé ces commandes avec des scripts systemd à démarrage automatique et les ai configurées pour démarrer constamment en boucle, vous pouvez voir comment je l'ai fait ici .


Alternatives


Si vous devez toujours traiter le flux MIDI d'une manière ou d'une autre avant de l'envoyer à la sortie, vous pouvez utiliser plusieurs options:



Si vous connaissez plus d'options - envoyez.


Upd: Résumé


Après un mois et demi d'expériences, je résume.


En conséquence, la pratique a montré que cela n'a pas d'importance pour le transfert de notes - les notes se déplacent souvent et sautent.


Pour la transmission d'horloge, c'est plus ou moins normal - je n'entends pas les jambages dans la synchronisation de l'arpégiateur du synthé contrôlé avec le rythme maître des jambages.


Mais pour le transfert des messages du contrôleur, cela semble idéal.
Vous pouvez maintenant connecter Launch Control XL à n'importe quelle syntaxe.


Les références


La dernière fois que j'ai étudié cette question pour une raison quelconque, je n'ai rien trouvé.


Cette fois il y a eu pas mal de choses, je vais poster ici des liens pour que vous ne répétiez pas mon chemin si le même problème se pose.


Source: https://habr.com/ru/post/fr440294/


All Articles