Problem
Ich habe einen Radias und einen Octatrack und würde gerne mal echte MIDI-Noten spielen. Aber die beiden Spielzeugkeyboards (AKAI LMK24 und LPD8) die ich hier habe haben nur USB-Ausgänge, kein echtes MIDI.
Einfache Lösung
100€ für ein Keyboard mit MIDI Out ausgeben. In den Rechner routen und über MIDI-OX an ein MID-Interface ausgeben. Langweilig.
Komplizierte Lösung
Ich habe hier von ner Schulung noch ein Fujitsu FM3 Evaluationsboard rumliegen. Das besondere an dem Prozessor ist, daß er USB auch als Host kann. Ne kurze Erläuterung:
Viele Mikrocontroller haben inzwischen USB eingebaut, beherrschen aber nur die Slave/Function/Device Seite. Das ist alles ein Wort für "Ich bin ein Sklave an einem USB Host". Beispiel ist eine Maus, eine Tastatur, ein Audiointerface, ein Raketenwerfer. Dieser Prozessor kann USB auch als Host, d.h. man kann an diesen Prozessor Mäuse, Keyboards etc. anstecken und der Prozessor kann es auswerten.
Ich werde also die vom Formfaktor ziemlich schicken USB-Keyboards anschließen, die MIDI-Daten aus dem USB Datenstrom extrahieren und auf eine externe MIDI-Buchse routen. Letztere muß ich noch dranbauen.
Was geht denn schon?
Die Demoapplikation erlaubt den Anschluß von drei Gerätetypen:
- Mass Storage, also USB Stick. Das Evalboard gibt dann die vorhandenen Files aus.
- Tastatur. Das Evalboard gibt die gedrückten Tasten aus
- Maus. Das Evalboard gibt die XY-Position aus.
Wenn ich das AKAI-Keyboard anschließe reagiert das Board mit "Kein Treiber gefunden.". Inzwischen habe ich die Erkennung so eingestellt, dass auch Geräte der USB-Klasse "Audiogerät" Subklasse "MIDI Streaming" erkannt werden. Er meldet sich jetzt mit "Hurra, ein Keyboard"
Was kommt als nächstes?
Ich muß durch das USB Datenpolling durchsteigen, mit dem die Daten vom AKAI periodisch abgefragt werden. Glücklicherweise sind das normale MIDI-Daten, die einfach in USB-Pakete umgepackt sind. Diese möchte ich rausfiltern und auf dem 7-Segment auf der Front anzeigen, so dass ich erst mal sehe, welche Note ich gedrückt habe.
Wenn das funktioniert werden die MIDI-Daten an eine kleine MIDI-Hardware geschickt und ausgegeben. Dazu muß ich vorher durch die UARTs durchsteigen (das Monster hat 8 Stück!) und sie konfigurieren.
Danach möchte ich einstellen können, auf welchem MIDI-Kanal die eingegebenen Daten ausgegeben werden. Der RADIAS verarbeitet Daten z.B. auf allen 16 Kanälen. Um den Ausgangskanal am LPK zu verstellen muß ich jedes Mal in die Software rein und das Preset ändern. Das nervt. Endgültig soll ein sympathisches Rasterpoti dran. Am Evalboard werde ich die zwei Taster auf der Front für + und - nutzen, das 7-Segment wird den Kanal anzeigen.
In gewissen Grenzen verkraftet der Prozessor auch mehrere USB-Slaves gleichzeitig. Hier wäre rauszukriegen, ob man einen USB-Hub-Chip davor schaltet. Dann könnte ich das LPD8 noch dazu anschließen und hätte Keyboard, Drumpads und Drehregler.
Projektname ist noch
Das Mergel
Christian