MIDI-Router auf Raspberry Pi

Ich möchte darüber sprechen, wie man ein Problem löst, das Fans von Hardware-Synthesizern wahrscheinlich vertraut ist.


Was soll ich tun, wenn ich einen MIDI-Controller und einen Synthesizer andocken möchte, aber einer von ihnen nur einen USB-Anschluss und kein MIDI hat? Außerdem möchte ich dies aus offensichtlichen Gründen ohne Computer tun.


Ich habe mehrmals im Internet nach einem Gerät gesucht, aber ich habe nichts gefunden, außer ein paar Links zu ein paar Geräten mit kleiner Auflage für viel Geld, die bereits eingestellt wurden.


Irgendwann wurde mir klar: Sie können den Raspberry Pi nehmen und alles darauf machen - dies ist ein echter Computer, und auf diesem sind solche Dinge einfach zu erledigen.


Es wird wahrscheinlich für die vollständige Klangverarbeitung schwach sein, aber der MIDI-Nachrichtenfluss sollte bereits gepumpt sein.


[Übrigens gibt es einen Soundeffektprozessor für Raspberry Pi , aber dafür ist das neueste Raspberry Pi-Modell erforderlich, das viel teurer ist, sowie ein zusätzliches Schild, das ebenfalls nicht billig ist, und ich habe beschlossen, mich nicht darum zu kümmern].


Kaum gesagt als getan. Raspberry Pi bekam das allererste Modell und baute an einigen Abenden einen funktionierenden Prototyp zusammen. Kurz gesagt, wie es funktioniert.


ALSA Midi


Zuerst wollte ich PureData nehmen und für ihn einen einfachen Patch schreiben, der MIDI-Nachrichten von einem Port zum anderen überträgt.


Aber als ich anfing, MIDI unter Linux zu installieren, fand ich einen viel einfacheren Ansatz.


Linux hat ein Standard-Sound-Ein- / Ausgabesystem - ALSA. Es unterstützt sowohl Audio-Streams als auch MIDI.


Damit ein Programm MIDI-Nachrichten über ALSA empfangen kann, müssen Sie es zuerst mit der Quelle dieser Nachrichten verbinden. Aber genau das brauchen wir, um dieses Problem zu lösen! Ohne nachzudenken, warf ich PureData raus und machte alles mit nativen ALSA-Tools.


Hier ist das Ergebnis.


eine Verbindung herstellen


Wenn Sie ein MIDI-Gerät an das System anschließen, wird es in ALSA-Geräten angezeigt und Sie können damit verschiedene Operationen mit Standardbefehlen ausführen. Wir interessieren uns für das aconnect Team, das nur das Trennen der Verbindung von Ports vornimmt. Eine ausführliche Dokumentation finden Sie hier .


In Wirklichkeit benötigen wir nur zwei Vorgänge: Anzeigen einer Liste verfügbarer Geräte und Verbinden eines Geräts mit einem anderen:


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

Ich habe diese Befehle mit Autostart-Systemd-Skripten umwickelt und sie so konfiguriert, dass sie ständig in einer Schleife gestartet werden. Sie können hier sehen, wie ich es gemacht habe .


Alternativen


Wenn Sie den MIDI-Stream noch irgendwie verarbeiten müssen, bevor Sie ihn an den Ausgang senden, können Sie verschiedene Optionen verwenden:



Wenn Sie weitere Optionen kennen - senden Sie.


Update: Zusammenfassung


Nach anderthalb Monaten Experimente fasse ich zusammen.


Infolgedessen hat die Praxis gezeigt, dass es für die Übertragung von Notizen nicht wichtig ist - die Notizen werden häufig verschoben und übersprungen.


Bei der Taktübertragung ist es mehr oder weniger normal - bei der Synchronisation des Arpeggiators des gesteuerten Synthesizers mit dem Master-Rhythmus der Pfosten kann ich es nicht hören.


Für die Übertragung von Controller-Nachrichten scheint dies jedoch ideal zu sein.
Jetzt können Sie Launch Control XL mit einer beliebigen Syntax verbinden.


Referenzen


Als ich diese Frage aus irgendeinem Grund das letzte Mal studierte, konnte ich nichts finden.


Dieses Mal gab es eine Menge Dinge, ich werde hier Links posten, damit Sie meinen Weg nicht wiederholen, wenn das gleiche Problem auftritt.


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


All Articles