< Tech-Blog
Midirouter mit Weboberfläche auf Raspberry PI 3
Der Bedarf / Das Problem
Ich habe den Computer aus meinem Musiksystem-Setup entfernt. Tschüss Bluecreen of Death, Midi-Latenz, Treibersucherei, Windowsupdates und all das andere nervige Gedöns. Da der Rechner und Ableton das zentrale Midi-Schaltwerk waren brauchte ich einen STANDALONE MIDIROUTER. Es gibt zwar ein paar Anbieter und Produkte, aber meist sind die Geräte dann "etwas unflexibel", ünverschämt teuer (in Relation zum Leistungsvermögen) oder einfach BEIDES.
Der nächste Ansatz war dann nach Opensource-Freak-Projekten zu suchen. Da gibt es mächtig viele Ansätze, aber auch keine passende Lösung. Oh oh... Bastelprojekt ich hör dir trampeln....
Die Idee
Ein günstiger und flexibler Universal-Midirouter auf einem Raspberry Pi mit Python (Midi), PHP und Apache (UI), der USB-Midi und DIN-Midi unterstützt, als Midi-Host agiert und via Mobiltelefon über Wifi konfigurierbar ist. Im Heimnetz soll sich die Kiste als Client einbuchen, ohne Heimwifi soll der Raspberry Pi einen Hotspot "aufspannen" um per Wifi konfigurierbar zu bleiben.
Die Lösung
1x Raspberry Pi 3, 16-Port USB-Hub (powered), 4 Drucktaster (für: Reboot, Reload, Shutdown usw...), bisschen Kabelei, versch. Python Libraries, Notepad++ und eine freie Nacht.
- Raspberry PI OS auf SD-Karte installieren (Link)
- Python Installation, PHP und Apache
Python übernimmt Midirouting und Konfigurationsmanagement, Bash-Scripts verarbeiten die Buttons und PHP und Apache liefern die Oberfläche.
Mit Python MIDO wird der ganze Midi-Gerätepark initialisiert und befeuert. Das Script übernimmt das Routing, Filtering, gibt Clockdaten aus und sendet bei Bedarf "PANIK" (all CCs und Notes OFF) auf allen Kanälen und an alle verbundenen Geräte.
PHP und Apache liefern die Konfig- und Bedienoberfläche inkl. System- und Performancedaten (ich will den kleinen Raspi ja nicht überfordern). PHP liest und schreibt Konfigurationsdaten.
Bash-Scripte überwachen die Druckschalter an den I/O-Pins des Raspberry und führen je nach Klick, Doppelklick, Long Klick, Tripple Klick entsprechende Befehle aus. Auf diese Weise habe ich ohne grossen Aufwand und Tastenkombinationen 16 verschiedene Schaltmöglichkeiten: Reboot, Shutdown, Start, Konfig-Reload, Apache Reload, Wifi Reconnect, Hotsport Start usw...
Nach vielen Experimenten mit der Abfolge der Loop-Verarbeitung der Mididaten (wegen massiver Speedprobleme) und unzählbaren Reboots kann das Script jetzt 30 komplexe Routings ausführen ohne zu stolpern. Filtern, Umleiten, Duplizieren, Invertieren von CC-Werten
Die Oberfläche und aktuelle Funktionen:

Midimonitor

Midi Routes

Der kleine Kerl werkelt jetzt seit Wochen zuverlässig und ohne Abstürze in meinem Analog- und Modular-Maschinenpark und gibt der vielstimmigen Meute den Takt und die gefilterten Daten vor.
Zwischenzeitlich habe ich ihm noch einen analogen Clock-Out und einen "Audio-to-Clock-Eingang" verpasst um mich "tiefenentspannt" mit sämtlichen Sourcen (DJs, Drummer, Bands...) zu syncen und dadurch Kopf und Hände frei habe fürs Klangformen.