Kann ich unter Linux eine UART (serielle Schnittstelle) als MIDI-Gerät verwenden?

2072
XTL

Kann ich Linux (Kernel / ALSA / Jack) davon überzeugen, einen beliebigen UART- oder seriellen Port (normalerweise /dev/ttyS*oder /dev/ttyUSB*oder /dev/ttyACM*) zur Ausgabe der MIDI-Meldungen zu verwenden?

So wurde MIDI beispielsweise auf dem Amiga gemacht. Wenn die elektrische Seite richtig eingerichtet ist und der UART auf MIDI-Raten getaktet werden kann, sollte die Übertragung grundsätzlich funktionieren.

Ich würde gerne wissen, ob es eine fertige Software-Option, Konfiguration, Treiber oder einen Hack gibt, um dies zu tun.

1

2 Antworten auf die Frage

2
user2071836

Sie können ttymidi verwenden, um zwischen uart und alsa zu überbrücken.

Sie sollten in der Lage sein, dies mit dem RaspberryPi-Projekt zu erreichen, aber Sie müssen es selbst kompilieren.

Das sieht nach einem interessanten Workaround und ALSA-Side-Sample-Code aus, obwohl er ein Nicht-MIDI-Protokoll mit Nicht-MIDI-Raten über tty sendet. Vielen Dank. XTL vor 8 Jahren 0
0
jcoppens

Das ist sehr schwierig. Die serielle Schnittstelle kann bei bestimmten Baudraten programmiert werden, die normalerweise zwischen 300 Bauds (oder so) und 115200 (230400 und 460800 auf neueren Maschinen) variieren. Die meisten Geschwindigkeiten sind jedoch Vielfache: 300, 600, 1200, 2400, 4800 usw. MIDI ist jedoch 31250 Bauds, was schwer zu programmieren ist, da es keine "harmonische" Beziehung gibt. Da dies im PC behoben ist (und sich vom Atari unterscheidet), stellt dies ein ernstes Problem dar.

Ein weiteres Problem ist, dass MIDI eine Stromschleifenschaltung (mit Optokopplern) ist, während RS232 mit Spannungen arbeitet. Sie müssen eine externe Schnittstelle erstellen, um die Kompatibilität herzustellen.

Die letzte Hürde ist dann die Software: Die Verwaltung des UART ist relativ einfach, und es gibt viele Beispiele (siehe "Anleitung zur seriellen Programmierung". Das Problem hier scheint, dass Sie dem MIDI wahrscheinlich eine Standardschnittstelle präsentieren möchten -Management von Musikprogrammen da draußen: Ihr Treiber muss also die UART-Seite verwalten und der Software die richtige Schnittstelle präsentieren.

Die meisten modernen MIDI-Interfaces stellen dem Benutzerprogramm auch das Timing mit dem MIDI-Code zur Verfügung, was ein zusätzliches Problem darstellt.

Es ist also viel einfacher, eine billige USB-zu-MIDI-Schnittstelle zu kaufen!

Beide Probleme wurden (vielleicht nicht eloquent) in der Frage behandelt und können mit geeigneter Hardware gelöst werden. Die verbleibende Frage ist Software. XTL vor 8 Jahren 0
Versuchen Sie `rm / dev / midi_device`, falls es existiert, und dann` ln -s / dev / ttyUSB0 / dev_midi_device` - ersetzen Sie `/ dev / midi_device` durch ein geeignetes Gerät LawrenceC vor 8 Jahren 1