MIDI mit GrandOrgue senden

  • Hallo zusammen,

    GrandOrgue kann MIDI-Events senden. Allerdings will das bei mir (noch) nicht aktiv funktionieren.

    Folgender Aufbau: Computer mit GrandOrgue (Arch Linux), über MIDI (M-Audio 2x2, MIDI-Merge aktiviert) verbunden mit einem Raspberry Pi (soll die Steuerung weiterer Funktionen über ein Touchpanel ermöglichen). Hier ist es eben entscheidend, dass GrandOrgue MIDI-Daten an den Raspberry Pi schicken kann, um Anzeigen synchron zu halten.

    Was klappt: Ich kann mit mido (über python3) problemlos MIDI-Befehle zwischen den beiden Computern hin und her schicken und empfangen. Ich kann auch ohne Probleme dadurch Funktionen von GrandOrgue über das Raspberry Pi steuern. Wenn ich nun allerdings anders herum MIDI-Daten mit GrandOrgue wegschicken will, dann kommt beim Raspberry Pi nichts an. Mit dem Rechner, auf dem GrandOrgue läuft, kann ich aber wie gesagt schon MIDI-Daten an das Raspberry Pi schicken. In dem Fall blinkt auch jeweils die Kontrollleuchte des dazwischen geschalteten MIDI-Geräts. Wenn ich MIDI-Daten über GrandOrgue schicken will, blinkt gar nichts und am Raspberry Pi empfange ich wie gesagt kein MIDI-Signal.

    Irgendwo muss bei mir ein Denkfehler liegen. Ich habe Folgendes bei GrandOrgue gemacht, um MIDI-Befehle zu versenden: Rechtsklick auf ein Register, dort den Reiter "Senden" auswählen. Auswahl "Jedes Gerät", Ereignis "9x Note" beispielsweise. Mit "OK" bestätigen.

    Mein Denken: Wenn ich nun das entsprechende Register aktiviere oder deaktiviere (über GrandOrgue direkt oder über die Orgel bzw. das Raspberry Pi gesteuert), dann sollte ich mit dem Raspberry Pi ein MIDI-Signal erhalten.

    Allerdings ist das nicht der Fall.

    Ich hoffe sehr auf eine erhellende Antwort von euch, was ich hier falsch umgesetzt habe. Ich weiß nach stundenlangem Ausprobieren nicht mehr weiter. Vielen Dank schon mal im Voraus! :)
    Viele Grüße

    Heisenberg

  • Ich verstehe nicht, wofür der Raspberry PI gedacht ist. Sollten die Monitore nicht an den PC angeschlossen werden?

    Und dann, ja, GO sendet MIDI-Nachrichten, aber was müssen Sie uns befehlen?

    Ein Finger zeigt auf den Mond.

    Schade für den, der auf den Finger schaut.

  • Auf dem Raspberry Pi läuft ein eigenes Programm mit graphischer Oberfläche, über das ich GrandOrgue steuern kann. Also zum Beispiel Aufnahme aktivieren oder deaktivieren, Stimmungen der Orgel ändern et cetera. Da ich aber auch einige dieser Befehle haptischen LED-Schaltern zugeordnet habe, brauche ich von GrandOrgue eine Rückmeldung an den Pi falls eine Einstellung über die LED-Schalter geändert wird. Also falls sich etwas in GrandOrgue ändert. Damit auch das Programm des Raspberry Pi aktuell gehalten wird.

    Beispielsweise soll auch der aktuell ausgewählte Setzer an den Raspberry Pi übermittelt werden, um diesen (optional mit einem eigenen Namen codiert) über das Display auszugeben.

    Das eigene Programm auf dem Raspberry Pi ermöglicht mir, meine Oberfläche so zu gestalten, wie ich es will. Ich bin dann nicht auf das Layout von GrandOrgue angewiesen.

    Ein Programm auf dem Rechner, auf dem GrandOrgue läuft (statt auf dem Pi), scheint bezüglich Kommunikation schwieriger umsetzbar. Deshalb der Pi. Zudem ist es für meinen physischen Aufbau einfacher, wenn die Steuerung ein externer PC (der Pi) übernimmt.

    Es soll beispielsweise erst einmal eine Nachricht wie Note 1 an und aus gesendet werden, wenn ein Schalter bei GrandOrgue verändert, also aktiviert oder deaktiviert, wird.

    Der Pi lauscht auf diese Nachricht und setzt daraufhin entsprechend etwas um.

    Allerdings scheitere ich bislang, diesen Befehl Note 1 an und aus (und sämtliche andere Befehle) zu versenden. Wenn ich also einen Schalter bei GrandOrgue umlege und ihn davor mit dem Senden eines MIDI-Befehls beauftrage, wird trotzdem nichts versendet.

    Das haptische MIDI-Gerät registriert auch keine gesendete MIDI-Nachricht vom Rechner mit GrandOrgue. Es leuchtet keine Kontroll-LED. Anders verhält es sich, wenn ich mit mido über pyhton3 ein MIDI-Signal vom gleichen Rechner verschicke. Das kommt beim Pi an und hier leuchtet auch die Kontroll-LED am MIDI-Gerät.

    Also irgendwas muss ich im Handling mit GrandOrgue falsch machen.

  • Die Verkabelung musst du etwas detailierter erklären (USB, DIN5Pol). Ich habe auch das 2x2, allerdings in einem etwas komplexeren Szenario. Da kann ich ein Lied von singen, wenn man sich wundert, warum an der Gegenstelle nichts ankommt ;)

    Die Verkabelung beschreibe ich gleich an der Stelle, sobald ich wieder daheim bin.

    Nur als kurze Frage: Ich kann mit beiden PCs über MIDI (über mido mit pyhton3) über die Verkabelung problemlos kommunizieren (senden und empfangen). Dann kann es doch nicht daran liegen, oder?

  • Die Verkabelung beschreibe ich gleich an der Stelle, sobald ich wieder daheim bin.

    So, nun endlich zur Verkabelung, jetzt, da ich es vor mir habe:

    Ich habe das 2x2 per USB-Kabel über den USB-Anschluss des 2x2 an den Rechner mit GrandOrgue angeschlossen.

    Am Raspberry Pi hängt ein derartiges MIDI-USB-Kabel: MIDI 1x1

    Dieses Kabel ist per USB mit dem Raspberry Pi verbunden. Das "OUT"-Kabel ist dabei beim 2x2 bei "In B" eingesteckt, das "IN"-Kabel bei "Out B".

    Über "In A" und "Out A" beim 2x2 läuft dann normalerweise die Orgel. Im Moment aber nicht, da sich alles auf dem Schreibtisch befindet.

    Das 2x2 ist auf USB/Merge eingestellt.

  • Das ist wirklich ein sehr interessantes Projekt, das du da hast! Ich habe mich gerade im Lesen des Threads verloren, da muss ich unbedingt noch weiter lesen.

    Danke für die ausführliche Erklärung!

    Soweit ich das verstehe, liegt/lag dein Problem aber doch darin, dass von der physischen Orgel die Signale nur an eins der beiden 2x2 geschickt werden und du die dann an das andere 2x2 weiterschicken musst, oder?
    Mein Problem scheint wesentlich einfacher im Moment zu sein, weil ich gerade gar keine Orgel angeschlossen habe. Ich will die MIDI-Befehle nur mit dem USB-Kabel über das 2x2 und dann über das 1x1 Kabel zum Pi schicken. Das ist doch das gleiche Vorgehen wie bei dir, ich zitiere mal ganz frei:

    -der MidiNetRouter greift die Signale auf (1) ab und sendet die an GO/HW. Gleichzeitig routet er die Signale auf die Ausgänge von (1).

    -Dadurch kommen die Signalen auch bei (2) an und habe mein Ziel erreicht :)

    Bei mir soll halt GO die Signale an mein 2x2 schicken, von dort geht es weiter ans 1x1 und zum Pi. Da ist im Moment noch gar keine Orgel involviert.

    Möglicherweise verstehe ich dich gerade einfach komplett falsch. Ich skizziere deshalb noch einmal knapp mein Problem:

    GO-Rechner kann MIDI-Signale an den Pi senden (mit mido)

    Pi kann MIDI-Signale an den GO-Rechner senden (mit mido)

    Pi kann MIDI-Signale vom GO-Rechner empfangen (mit mido)

    GO-Rechner kann MIDI-Signale vom Pi empfangen (mit mido)

    Aber der GO-Rechner kann ÜBER GO kein MIDI-Signal versenden :/

  • Ich vermute mal, dass ist das exakt gleiche Problem, welches ich hatte. Durch den Merge-Modus werden die Signale beim 2x2 nicht auf das OUT-B gelegt. Das Merge besiegelt sozusagen die Endstation. Da musst Du mit einem Python-"Scriptelsche" dafür sorgen, dass die zu routenden 2x2-Signale auf das OUT-B gelegt werden.

    Das OUT vom 1x1 müsste aber beim IN-B des 2x2 ankommen, oder?

    Danke ein weiteres Mal für deine Antwort und Geduld! :)

    Genau, das OUT vom 1x1 kommt beim IN-B des 2x2 an, das funktioniert alles soweit :)

  • Perfekt. Also die Kommunikation funktioniert. Dann kannst du in GO nur das falsche Interface angehakt haben ;)

    Du müsstest dort als Ausgang den Port angehakt haben, mit dem Du mit mido Signale verschickst.

    Genau, die Kommunikation funktioniert einwandfrei - außer ich will etwas mit GO verschicken.

    Ich habe bei GO eingestellt, dass alle Signale an "Jedes Gerät" geschickt werden. Das habe ich im Manual nachgelesen, das sollte laut diesem wirklich überall die MIDI-Nachricht schicken, auch an den Pi.

    Ich habe das gestern aber auch speziell mit dem entsprechenden Port, den ich auch mit mido benutzt habe, versucht - auch nichts.

    Das ist gerade das Problem, was mich rätselnd zurück lässt

  • Wenn man das 1x1 weg lässt, kann mido die Signale auf dem PC empfangen, die GO sendet?

    Also das 1x1 brauche ich, weil das Raspberry Pi keinen MIDI-Eingang hat, nur USB. Ohne das kann ich keine physische Verbindung zwischen den beiden Geräten herstellen.

    Zum Senden von MIDI-Signalen mit GO wähle ich doch einfach einen Schalter aus, zum Beispiel ein Register. Rechtsklick, Senden, und dann zum Beispiel Note 9x und eine 1 als Note. Sobald ich das Register betätige, egal ob über GO oder über eine andere Software oder Schalter, sollte doch GO ein MIDI-Signal, also Note 1 an oder aus in dem Fall, senden. Stimmt da mein Informationsstand?

  • Ich werde das Gefühl nicht los, dass es ein identisches Problem ist. Wenn man das manuell wie Du mit mido ausprobiert, dann ist bei korrekter Verkabelung klar, dass es funktioniert. Wenn ich mit dem MidiNetRouter was auf den Ausgang OUT-B lege, dann funktioniert das ja auch.

    Aber eben nicht ohne diesen behelfsmäßigen Schritt, quasi ein softwaremäßiges Midi-Thru.

    Und das musst Du auch machen. Lies mal die Daten von GO mit mido und sende die mit mido auf Dein OUT-B des 2x2.

    Gut, ich werde das jetzt gleich mal ausprobieren. Also MIDI-Signal auf dem GO-Computer selber auslesen und mit mido weiterschicken an den 2x2 und zum Raspberry Pi, oder?

    Dann hoffe ich mal, dass das direkt so klappt. Den Raspberry Pi habe ich gerade deshalb, weil ich dann nicht auf dem selben Rechner mit MIDI kommunizieren muss, wovon so weit ich das recherchiert habe, abgeraten wird.

  • Das ist nicht gut. Aktiviere mal das Eventlog im GO und kontrolliere mal, ob das was raus geht.

    Was hast du für eine GO-Version?

    Ich konnte auch mit mido über alle möglichen Wege jetzt keine Signale von GO auf dem gleichen Rechner empfangen, war bislang erfolglos.

    Meinst du "Log MIDI events"? Ankommende Nachrichten werden problemlos von allen möglichen Ports und Geräten geloggt. Ich wusste nicht, dass das auch bei ausgehenden Nachrichten von GO funktioniert. Da wird mir allerdings gar nichts angezeigt. Ich hab testweise ein Registerschalter mit dem Senden der Note 1 beauftragt. Da kommt nichts an beim Loggen. Gar nichts. Sollte das auch bei ausgehenden Nachrichten funktionieren?

    Ich benutze die Version "grandorgue-svn r2338-1" (vgl. https://aur.archlinux.org/packages/grandorgue-svn). Das sollte die aktuelle Version sein, vom 30.01.2021.

  • Wäre halt gut gewesen, dann kann man wieder eine Fehlerquelle ausschließen. Unter Lx gibt es doch bestimmt eine Software, die einen virtuellen Midi-Port anbietet. An den muss GO senden. Wenn das funktioniert, dann ist GO nicht das Problem. Dann wird es langsam seltsam.

    Genau, ich hab es mit einem virtuellen Midi-Port versucht. Aber da kam auch nichts an.

  • Hast du eine Windows-PC, mit dem Du gleiches Szenario ausprobieren könntest?

    Vielleicht ist es nur ein Problem, dass unter Linux auftritt. Ich habe keine weiteren Ideen dazu.

    Ich baue mir grad ein Log-Fenster, damit ich dem Problem mit meinem MidiAnalyst auf die Spur komme ;)

    Ich habe es tatsächlich gerade mit einem Windows-Laptop probiert. Auch da kann ich mit GrandOrgue nichts senden. Beim 2x2 leuchtet auch hier nichts. Langsam glaube ich, dass ich es einfach nicht auf die Reihe bekomme, das bei GrandOrgue richtig einzurichten ......:/

    Allerdings habe ich da auch schon vermutlich alle Einstellungsmöglichkeiten durch. Aber so wie im Screenshot hier zu sehen, sollte es doch eigentlich passen

  • Danke für deinen Tipp und vor allem: Die Bilder! Vor allem das erste Bild, da hat es mir gedämmert.

    Fehler gefunden! Sitzt wie immer vor dem Bildschirm ....... :pinch: Und würde sich am liebsten vergraben ......

    Was war falsch? Ich konnte zwar beim Senden, wie in meinem Screenshot oder auch deinem zu sehen, "jedes Gerät" auswählen und auch den 2x2 explizit auswählen. Deshalb bin ich gar nicht auf die Idee gekommen, dass bei GO global eingestellt werden muss, dass da hin auch wirklich MIDI-Dateien gesendet werden.

    Also Folgendes:

    Audio/Midi

    -> Audio/Midi Einstellungen

    -> Reiter MIDI Geräte

    -> und dort bei MIDI Ausgabegeräte auch wirklich die beiden Punkte mit dem 2x2 auswählen.

    (so wie in deinem ersten Bild zu sehen, da hat's bei mir dann geklingelt)

    Beim Input hab ich das wohl vor Jahren ganz selbstverständlich bei den MIDI Eingabegeräten ausgewählt und das dann vergessen, dass das auch für die Ausgabegeräte notwendig ist.

    Ohje ......

    Jetzt klappt es prima, der 2x2 leuchtet munter vor sich hin, alles kommt beim Raspberry Pi an. 2 Tage später sind das Problem zwei winzige Häkchen :S

    Ich bedanke mich vielmals für deine Geduld und deine nimmermüde Hilfe, ganz ganz herzlichen Dank! :)

    Übrigens: Du hast doch berichtet, dass du mit GO nicht direkt an den zweiten Rechner senden kannst. Bei mir geht das nun ohne Probleme. Ich muss also auf meinem GO-Rechner nicht noch extra die MIDI-Signale aufgreifen und weiterleiten an den 2x2. Woran liegt das? Vielleicht an dem 1x1-Interface? Mit dem Windows-Rechner hat's auch geklappt. :/

  • Na das freut mich jetzt aber! Super. Aber ich kenne das. Man steht kurz vor der Lösung und man sieht's einfach nicht.

    Ich habe vorhin in HW auch eine Einstellung entdeckt, möglicherweise klappt damit das Senden an das zweite Interface. Werde ich morgen mal testen. Damit könnte ich dann nochmal den Installationsaufwand reduzieren.

    Für mein MusicScore (Notenanzeige mit automatischem Umblättern) ist es dann sehr einfach geworden:

    Ultrabook-Display in den Tablet-Modus drehen, Interface in USB einstöpseln - LÄUFT!

    Oh, bitte verzeihe, ich war die Kar- und Ostertage nicht am Rechner und habe nicht mitbekommen, dass du geantwortet hast! Gesegnete Ostern an der Stelle.

    Ja, bin sehr erfreut, dass jetzt alles klappt! Jetzt geht's ans Programmieren :)

    Ich hab bei GO unter den allgemeinen Einstellungen einfach beide Ports des 2x2 ausgewählt. Und dann wenn ich mit einem bestimmten Schalter, beispielsweise einem Register mit NoteON/NoteOFF, einen MIDI-Befehl senden will, hier nochmal "Jedes Gerät".

    Es blinken dann beide IN-Ports des 2x2, wenn ich das Register umschalte. Klappt also alles :/

    Ich weiß nicht, warum das bei mir klappt, bei dir aber nicht. Unsere Unterschiede sind zum einen das Betriebssystem und zum anderen die Hardware: Ich habe nur ein 2x2 und dann ein gewöhnliches 1x1-Interface. Es muss also an einem der beiden liegen (sofern alle Einstellungen gleich sind).

    Blinken bei deinem ersten 2x2 beide IN-Ports? Und blinkt dann auch der angeschlossene IN-Port des zweiten 2x2?