M8 Headless mit Teensy 4.1 auf RG351V und Steam Deck
Der Dirtywave M8 Tracker steht schon seit einiger Zeit auf meiner Wunschliste. Leider habe ich immer das Pech, die seltenen und knappen Vorbestellungszeitfenster zu verpassen. So auch kürzlich wieder für das neue Model:02. Glücklicherweise gibt es die Möglichkeit, den M8 »headless« zu nutzen, also ohne die Original-Hardware.
Der M8 ist ein tragbarer Synthesizer und Tracker-basierter Sequenzer. Er sieht schick aus, klingt gut und ist definitiv etwas für Chiptune-Enthusiasten wie mich, die mit dem Commodore 64 und Amiga groß geworden sind.
Powered by the Teensy micro-controller and inspired with love from the renowned Gameboy tracker Little Sound DJ. (dirtywave.com)
Bei der Headless-Variante wird eben dieser Teensy-Mikrocontroller, der auch das Herz des originalen M8 ist, per USB-Kabel mit einem Host verbunden und von dort aus gesteuert.
Inhalt:
Vorbereitung
Den Informationen auf Reddit und Discord nach zu urteilen ist die Headless-Konstruktion mit einem RG351 die am besten erprobte. Wegen des Formfaktors habe ich mich für einen RG351V entschieden, sodass es optisch einem Game Boy mit LSDJ ähnelt. Für das Gerät spricht, dass die Audioqualität gut, die Latenz gering und die Einrichtung ausführlich dokumentiert ist – und man eigentlich nicht viel falsch machen kann.1
Ein Jahr nach der ersten Fassung dieses Artikels habe ich
die Linux-Version von m8c auf meinem Steam Deck
probiert: Die Einrichtung ist deutlich einfacher gewesen und
der große Bildschirm ist definitiv ein Plus.
In jedem Fall werden werden die folgenden Hard- und Software-Zutaten benötigt:
- Ein Teensy 4.1 Development Board
- Mindestens eine microSD-Karte für den Teensy; eine weitere ist für den RG351 nötig (im Steam Deck steckt ja schon eine)
- Ein kurzes USB-C-zu-Mikro-USB-Kabel, um den Teensy mit der Konsole zu verbinden
- M8 Headless Firmware für den Teensy 4.1
- TyTools zur Installation der Firmware auf dem Teensy
- optional 1x irgendeine Art Hülle als Schutz für das Teensy-Board
Für die RG351V-Variante wird natürlich eine ANBERNIC RG351V Handheld-Konsole benötigt. Sowie außerdem
- ArkOS für RG351,
- M8 Headless für RG351-Geräte
- und den balenaEtcher, um das ArkOS-Image auf die SD-Karte zu kopieren..
Für das Steam Deck benötigt man lediglich
- das Linux-AppImage (x86_64) aus Laamaas GitHub-Repository oder
- Roterodamus’ Installationsskript steamdeck-m8c auf GitHub.
Teensy einrichten
Die Einrichtung des Teensy ist wirklich das Einfachste an der ganzen Angelegenheit. Die Headless-Firmware wird mittels der TyTools an das Teensy-Board übertragen. Fertig. Alles Musikalische spielt sich dann auf dem Teensy ab. Von dort kommt der Sound, dort sind die Songs gespeichert, die Instrumente, Samples und einfach alles. Das bedeutet auch, dass derselbe Teensy nach Belieben abwechselnd am Steam Deck und RG351V verwendet werden kann, ohne Einstellungen oder Daten zu verlieren.
Der Einrichtungsprozess ist ausführlich in Dirtywave’s M8 Headless Setup beschrieben. Ein schneller Test, ob alles korrekt funktioniert, kann mit dem browserbasierten M8 Display2 durchgeführt werden.
Am Mac steht das Board dann fortan als Audio-Input-Device namens M8 zur Verfügung. Will man den Sound hören, der vom M8 kommt, so verwendet man entweder eine Audio-Routing-Software oder einfach den QuickTime Player:
- eine neue Audio-Aufnahme starten,
- für die Eingabe den M8 auswählen und
- den Lautstärkeregler verschieben3.
Eine Teensy-Hülle
Der Teensy wird erstens recht warm und ist zweitens ziemlich nackt. Damit man sich nicht verbrennt und das Board nicht so leicht beschädigt, empfiehlt es sich, eine Hülle zu verwenden.
In Ermangelung eines 3D-Druckers habe ich mir eine Hülle aus einem GBA-Cartridge-Case »geschnitzt«. Die Platine selbst passt exakt in die Hülle, sodass USB-Port und SD-Karte ein Stück herausgucken. Eventuell kommen noch ein paar Löcher für die Belüftung hinzu.
RG351V
Der RG351V wird mit mindestens einer SD-Karte ausgeliefert. Auf dieser befindet sich das OS. Ich habe sie gelassen wie sie ist und eine neue SD-Karte für die Einrichtung von ArkOS verwendet. Informationen zu ArkOS sowie zur Einrichtung etc. sind in der ArkOS Wiki zusammengefasst.
Die Anleitung von Jason Porritt – M8 Headless for RG351 devices – enthält fast alle Infos, die man braucht, um ein Gerät der RG351-Familie einzurichten. Dem ist wenig hinzuzufügen.
Außer: Die m8c-Release v0.1.5 vom 04.11.2022
ist nicht mit der Headless-Firmware v3.2.x kompatibel! Daher
sollte unbedingt gleich die neuere Version kopiert werden. –
Ob selbst kompilieren auf dem Gerät funktioniert, habe ich
nicht probiert.
Der M8-Ordner wird auf der mit ArkOS eingerichteten Karte
auf der EasyROMs-Partition im Verzeichnis ports
abgelegt.
Dann die SD-Karte in den RG351 einlegen und das Gerät einschalten.
Nun muss man sich den Konfigurations-Skripten widmen. Erst
die allgemeine Einrichtung mit dem setup-Skript
(das setup_pulse-Skript kann verwendet werden,
falls man das Pulse-Audio-System nutzen möchte).
Dann die Buttons mittels config_m8c_buttons.sh
einrichten. Sind die Buttons eingerichtet, aktiviert man am
besten den Remote-Zugriff und macht den Rest am Mac.
ssh ark@192.168.178.66 #password = ark
pico .local/share/m8c/config.iniDie konfigurierten Buttons können aus der Datei
m8c_config_snippet.txt herauskopiert werden.
Diese befindet sich unter ports/M8 im selben
Verzeichnis wie die Setup-Skripte. Die Standard-Codes für
Buttons können in der Dokumentation unter SDL
Game Controller Buttons nachgelesen werden.
Wer nicht über die Kommandozeile gehen möchte, verwendet z. B. Cyberduck. Neue Verbindung einrichten mit folgenden Daten:
- SFTP
- Server:
192.168.178.66 - Port:
22 - Username:
ark - Password:
ark
In den Einstellungen muss die Sichtbarkeit unsichtbarer Dateien aktiviert werden.
Wenn irgendwann alles eingerichtet ist, läuft es tadellos und sieht noch dazu hübsch nerdig aus!
Das offizielle M8 Tracker-Handbuch (siehe Resources) enthält die originalen Tastenbelegungen. Diese wird standardmäßig sehr ähnlich auf die Buttons des RG351V übertragen.
Steam Deck
…
Tastenbelegung
Ein paar gängige Button-Kombinationen inklusive der Kombination zum Beenden der M8 Headless-Software sind in der nachfolgenden Tabelle aufgelistet.
Bedienung auf dem RG351V
| Kombination | Function |
|---|---|
[F] + [SELECT] |
M8 Tracker beenden |
[SELECT] + [DPAD] |
Zwischen Screens wechseln |
[A] + [DPAD LEFT, RIGHT] |
Wert bearbeiten, fein |
[A] + [DPAD UP, DOWN] |
Wert bearbeiten, grob |
[A] + [B] |
Allgemein: Wert auf Standard zurücksetzen; Datei-Browser: ausgewählte Datei löschen |
[START] |
Song-Screen: Song ab Cursor-Position spielen; Chain- oder Phrase-Screen: Chain oder Phrase spielen; Instrument- und Sample-Browser: ausgewählte Datei anhören |
[SELECT] + [B] |
Schaltet Auswahlmodus um |
[B] |
Auswahlmodus: Kopiert die aktuelle Auswahl |
[SELECT] + [A] |
Fügt den kopierten Pufferinhalt ein |
[SELECT] + [B] |
Aktuellen Track stummschalten |
[START] + [B] |
Aktuellen Track solo hören |
[SELECT] + [START] + [B] |
Alle Stumm- und Soloschaltungen aufheben |
Bedienung auf dem Steam Deck
Folgt in Bälde.
Tipps und Tricks
ArkOS-Optionen sind nicht sichtbar: Wenn die
Options auf dem RG351 nicht sichtbar sind, dann ist
der Punkt wahrscheinlich bei Visible Systems
deaktiviert (zu finden unter UI Settings im Menü,
Aufruf mit [Select]-Taste)
ArkOS-Boot-Bild ändern: Das Boot-Bild im Stammverzeichnis der Boot-Partition kann einfach ersetzt werden. Es muss sich lediglich um eine 24-Bit-BMP-Datei mit 640x480 Pixeln handeln.
Audio-Glitches oder Verzögerungen: Die
Deaktivierung von Wi-Fi sowie die Verwendung von
M8_Performance unterbinden die ansonsten
möglichen Audio-Glitches.
Ressourcen
Awesome M8: Auf der Github-Liste gibt es viele Anleitungen, Tutorials und Demos für den M8 Tracker.
Laamaa’s m8c: m8c ist ein Client für den Headless-Mode des Dirtywave M8 Tracker.
Laamaa’s top sekrit M8 instrument file stash: Die Instrument-Dateien von Laamaa auf Github sind eine gute Quelle zum Lernen und Starten eigener Songs.
M8 Community SD-Card Starter Pack: Umfangreiches Paket mit Demo-Songs und Samples.
Dirtywave
Discord: Dort gibt es einen unter
#help-me versteckten
#Headless-Thread.
Nachdem es trotz Befolgens aller Schritte nicht funktioniert hat, habe ich mich tatsächlich wundgegoogelt, bis ich endlich herausgefunden habe, dass es einer neueren
m8c-Version bedarf, wenn man die aktuellste Headless-Firmware verwenden möchte.↩︎Funktioniert leider weder mit Safari noch mit Firefox. Chrome oder ein Chrome-basierter Browser ist Voraussetzung; z. B. Ungoogled Chromium für macOS.↩︎
Ich habe viel zu lange gebraucht, um zu sehen, dass der Lautsprecher standardmäßig stummgeschaltet ist…↩︎
Das Artikelbild wurde selbst fotografiert und mit folgendem ChatGPT-Prompt die Katze ergänzt: »Look, I have this device for making music. Do you think you can create a photographic image of a calico cat pawing at this device?«
Der
Lautstärkeregler des QuickTime Player – keine Ahnung, warum
ich den lange nicht als solchen erkannt habe.
Teensy 4.1 Entwickler-Board mit Hülle
RG351V mit ArkOS (und
eigenem Boot-Bild)