Hallo liebes Forum,
nachdem es eine ganze Weile ruhig um mich war, es war arbeitstechnisch einfach zuviel los, bin ich wieder intensiver am Start. Ganz untätig war ich zwischenzeitlich nicht, denn ich habe GO unter Verwendung eines fast schon historischen Edirol UA-25 zum Laufen bekommen und es spricht sogar mit meiner Dienstorgel. Dabei sind Viscount Orgeln und ihre Derivate (Benedikt) ja zuweilen als etwas zickick im Hinblick auf ihre MIDI-Konfiguration berüchtigt.
Aber ich erzähle die Geschichte gerne einmal von Anfang an:
Da ich es mit einem günstigen USB-Midi-Kabel nicht geschafft habe GO und meine Orgel zu verbinden, habe ich mich nach einem etwas solideren Interface umgesehen.
Um einfach nur mal rumzuprobieren waren mir die aktuellen Geräte allerdings etwas zu teuer und ich hatte auch kein Gerät im Umfeld, welches ich einfach mal hätte ausleihen können.
Gleichzeitig hätte ich es einem Händler gegenüber unfair gefunden, wenn ich nur auf Verdacht ein Gerät bestelle,
2 Tage probiere und es dann zurückschicke, mit dem Erfolg, dass der Händler die Versandkosten am Hacken hat und das Teil außerdem als B-Ware verkaufen muss.
Also habe ich angefangen die Kleinanzeigenportale abzugrasen und bin dann auf o.g. Interface gestoßen.
30€ erschienen mir als akzeptablen Einsatz für das Experiment und so habe den Kameraden dann gekauft.
Im Nachhinein muss ich dem Verkäufer für seinen preislichen Realismus sehr dankbar sein, denn wenn ich, mit inzwischen mehr Erfahrung und Durchblick sehe, welche Phantasiepreise teilweise für so einen Edirol-UA25 aufgerufen werden, obwohl nicht mehr in der Herstellung und mindestens mehrere Jahre alt ohne Win10 Treiberunterstützung), so freue ich mich an einen ehrenwerten Verkäufer geraten zu sein.
Nach einiger Recherche war es mir möglich den Edirol doch mit Treibern zu versorgen, die zwar eigentlich nicht für Win10 gedacht sind, aber dennoch akzeptiert werden und funktionieren.
Alles angekabelt, GO gestartet und das Midi-Setup mit Autodetect durchgeführt, und siehe da: Alles wurde anstandslos erkannt und funktioniert.
Bei großen Samplesets und vielen gezogenen Registern kommt es zwar irgendwann zu Latenzproblemen, aber das ist wohl eher den limitierenden 4 GB meine Lappis geschuldet, der inzwischen auch schon 7 Jahre alt ist.
Aber nun mal zu meinem eigentlichen Anliegen:
Ich habe feststellen müssen, dass die Bedienung von GrandOrgue mittels Lappi auf der Orgelbank nun nicht wirklich ergonomisch ist, und auch keine zügigen Registerwechsel zulässt.
Ein ausreichend großer Touchscreen steht aus Platz und Kostengründen nicht zur Disposition, und ich bin auch eher der haptische Typ, der gerne richtige Knöpfe und Züge zur Bedienung mag.
Also soll eine Steuerkonsole für GrandOrgue her. Natürlich selbst gebaut.
Da ich schon geraume Zeit auf dem Arduino-Sektor aktiv bin, habe ich mir natürlich einen Arduino als Arbeitsgrundlage herausgepickt. Hier gibt es inzwischen eine sehr gut dokumentierte Library, welche in der Lage ist Midi-Befehle direkt zu erzeugen, ohne zuvor den gewünschten Befehl händisch in binär dargestellte Bytes umwandeln zu müssen.
Hier sind z.B. Befehle wie
MIDI.sendNoteOn(42, 127, 1);
möglich, der einen NoteOn Befehl für die Note 42 mit einer Velocity von 127 auf Kanal 1 erzeugt und über die serielle Schnittstelle verschickt.
Hardwareseitig besteht jetzt nur noch das Problem dem PC und damit GrandOrgue mitzuteilen, was man von im möchte. Problematisch ist hier, dass der Arduino vom PC nicht als Midi-Device wahrgenommen wird. Es ist zwar ohne Probleme möglich über USB die seriellen Daten zu empfangen und in einem Terminalprogramm sichtbar zu machen, aber damit sind die Daten noch nicht in GrandOrgue angekommen bzw. GrandOrgue hat seine Aktionen auch noch nicht rückmelden können.
Hier muss also ein geeigenter Weg gefunden werden.
Ich sehe hier folgende Lösungsmöglichkeiten, die ich gerne mit euch diskutieren wollte, bevor ich mehr Zeit in die Entwicklung meiner Steuerbox stecke.
1. Softwarelösung
Hier gibt es Tools wie die Hairless Midi to Serial Bridge, die seriell empfangene Daten im Midiformat an die entsprechende Software weiterreichen, indem sie ein Midi-Gerät emulieren.
2. Hardwarelösung
a) Hacken eines billigen USB-to-Midi-Kabels
Die Idee hierbei ist die, ein günstiges USB/Midi-Kabel zu knacken, dessen Midi-In mit den erzeugten Midi-Daten zu füttern und den eingebauten HID-Chip zu nutzen, dass Windows ein an den USB-Port angeschlossenes USB-Midi-Gerät erkennt, welches dann hoffentlich in Grandorgue neben dem Edirol UA-25 auftaucht.
b) Dem Arduino eine Midibuchse-Verpassen und dann ein Midi-Signal an den Edirol schicken, der dieses Signal zusammen mit den Signalen vom Spieltisch über USB einspeist und an GO schickt. Da gibt es inzwischen günstige Shields, die auch mit einem Optokoppler galvanisch getrennt sind.
c) Verwendung eines Teensy, der von Haus aus ein Midi to USB Interface hat. PC-seitig würde dann auch ein 2. USB-Midi Gerät an einem der USB-Ports auftauchen und hoffentlich von GO erkannt und akzeptiert.
Die Hardwarelösungen erscheinen mir als am tragfähigsten, denn hiermit erspart man sich die Midi-Kette aus mehreren Geräten.
Lösung 1 würde sicherlich auch noch gehen, sie blockiert zwar den USB-Port des Arduino dauerhaft, müsste also für Programmierarbeiten immer wieder stillgelegt werden, allerdings wäre da ja kein wirklicher Nachteil, da man ja nicht gleichzeitig Orgelspielen und programmieren will.
Allerdings missfällt mir der Gedanke an eine weitere zwischengeschaltete Software mit möglichen Fehlerquellen, die ich nicht mit dem Multimeter diagnostizieren kann.
Daher hier jetzt meine Frage an unsere GO-Psychologen: Mit welcher Lösung käme denn GO am ehesten klar?
Aus dem Bauch heraus tendiere ich dazu eine Lösung zu wählen, welche die Midi-Daten über USB anliefert und als Midi-Device im Gerätemanager auftaucht. Nur müsste GO das eben handlen können.
Bei Verwendung eines Arduino Mega stehen für kleines Geld 54 digitale I/O Pins zur Verfügung, was immerhin etwas über 20 Registertaster mit Rückmelde-LED ermöglichen würde. Durch ein paar Tricks könnte man das bis in den 3-stelligen Bereich hochtreiben, aber das ist ja nicht Ziel der Übung.
Gerade wg. der o.g. Anforderungen.
Auf eure Beiträge und Anregungen freue ich mich
VG
Toothbruhs
Sollte aus dem Projekt etwas (hoffentlich) Brauchbares werden, würde ich das "Kochrezept", sowie die entstehende Software natürlich mit der Community teilen wollen. Ist doch klar. Aber erstmal gucken, ob das überhaupt was wird.