OK - besser geht's nicht. Anbei nochmal Skripte, cfg, howto mit allen Links - deine Arbeit zusammengefasst. Vielen Dank zum nten Mal!
MIDI Befehle auf Tastatur-Shortcodes mappen
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
|
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
Jetzt ist da doch noch eine Frage aufgetaucht: Auf einem "AV-Linux"-Rechner - einer xcfe-Installation auf debian - lassen sich alle python3-Pakete einwandfrei installieren:
aber die Ausführung des Scripts gibt dann folgende Fehlermeldung aus: milan@mibass:~/nexhow/Bass/üpen/MIDI/MIDI-key2key$ MIDO_DEFAULT_INPUT='MPD218:MPD218 MIDI 1 20:0' ./midi-xkeys.py -c keymap.cfg File "<fstring>", line 1 (action=) ^ SyntaxError: invalid syntax Ist das etwas leicht zu erklärendes, oder führt es in's Nirvana tieferer Recherchen... |
||||
Anmeldungsdatum: Beiträge: 11233 Wohnort: München |
Dann hast du auf dem System eine Python3 Version kleiner als 3.8. - da müsste man das so umformen:
|
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
Hallo seahawk Danke! - Jetzt wäre der Fehler weg, dafür wird die pyautogui nicht gefunden
obwohl die Installation ohne Fehler durchgelaufen ist
@seahawk - Du musst mir sagen, wenn du keinen Bock mehr hast, dich damit zu befassen. Wenn du mal nach Freiburg kommst, hast du auf jeden Fall einen Kaffee: https://ogy.de/cafesowiehier bei mir gut. |
||||
Anmeldungsdatum: Beiträge: 11233 Wohnort: München |
Wenn du das Modul in das Home-Verzeichnis des Users root installierst, kann es dein User nicht finden. Lass den pip Befehl einfach unter dem Nutzer laufen, mit dem du das Programm nutzen willst oder installiere pyautogui systemweit (als root), indem du das |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
🤓 klar! jetzt gehts. ☺ |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
@seahawk Funktioniert alles tadellos. Im Anhang der aktualisierte Ordner mit Skripten. Jetzt juckt es mich, dich zu fragen, ob die MIDI-Control-Knöpfe über die pyautogui auch auf Programmeingaben gemappt werden können, wie zB horizontales / vertikales scrollen, Lautstärke Regeln, Mausrad... Die MIDI-Ausgabe sieht so aus, wie schon am Anfang des Threads ausgelesen:
Wenn du Lust hast? |
||||
Anmeldungsdatum: Beiträge: 11233 Wohnort: München |
pyautogui unterstützt auch Maus-Events: https://pyautogui.readthedocs.io/en/latest/mouse.html Die Lautstärke könnte man über pactl regeln. Wie verhalten sich die Drehknöpfe genau (endlose dreh-Events oder eine begrenzte Drehung mit Anschlag) - welchen Wertebereich decken die ab? Lautstärke auf einen Drehregler mit einem Wertebereich wie 0 - 100 zu mappen sollte kein Problem sein, für den Rest schau dir am besten mal die Dokumentation zu pyautogui an und sag mir, ob du die Maus-Events auch auch Buttons mappen können willst bzw. wie du dir das bei den Drehreglern genau vorstellst. |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
@seahawk Die Drehregler sind endlos drehbar und regeln von 0 nach 127, der Wert bleibt dann stehen und es gibt keine neue Ausgabe bis man wieder zurückdreht, das Gleiche dann bei 0 (Wert bleibt stehen und keine neue Ausgabe). Die Regler setzen bei unterschiedlichen Werten ein, die eher nicht im Controller gespeichert bleiben. Ich kann durch mehrmaliges Ab-/Anstöpseln des Controllers und Neustarten des readout-scripts keine Systematik erkennen. Wenn ich alle Regler auf 127 hochdrehe, alles auseinandernehme, wieder anstecke und das readout-script neu starte setzen die Regler bei 1 oder 15, oder 20 ein, fast immer mit niedrigen Werten, ohne erkennbares System. Über die Konfigurationssoftware lassen sich noch andere Reglertypen definieren (aftertouch, inc/dec1oder2), aber deren Ausgaben wirken nicht sinnvoll. Der übliche Typ scheint CC zu sein (continuous control). Die erste Verwendung wäre, in den Musikwiedergabeprogrammen (Clementine,vlc) die Lautstärke zu regeln oder im Stück Vor- und zurückzuspulen wie mit dem Mausrad. Allerdings gibt es ein Problem mit dem Fokus, das Mausrad wirkt ja unterschiedlich je nachdem Bereich, in dem der Mauszeiger ist - ist er auf dem Lautstärkeschieber, verändert das Rad die Lautstärke, ist er auf dem Wiedergabeschieber, spult es vor/zurück, ist er zB in einer Liste, scrollt es... Dh es müsste über die cfg-Datei noch ein Bereich in den pygui-Fokus gebracht werden. Ist das möglich? Ich finde allerdings keine Nicht-Maus-Funktion wie Tastatur- oder Menubefehle, die diese Regelungen ansprechen, also in den Fokus bringen könnten. Was auf jeden Fall geht, ist in hydrogen, wo ja direkte Zuweisung von MIDI-Signalen auf Programmaktionen konfigurierbar sind, das Drehreglersignal mit Lautstärke Master_Volume_ABSOLUTE zu belegen und er regelt dann die Lautstärke hoch und runter. Bei Master_Volume_RELATIVE wird nur heruntergeregelt. Vielleicht scheitert eine sinnvolles Regler-to-Wheel-Mapping an der Fokusfrage? |
||||
Anmeldungsdatum: Beiträge: 11233 Wohnort: München |
Bei Mediaplayern würde ich eher über DBus und mpris2 gehen (https://specifications.freedesktop.org/mpris-spec/2.2/Player_Interface.html), dann kann man sich das mit dem Fokus und Maus-Events sparen. |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
Ok, ich sehe... Sind diese Befehle dann kompatibel mit dem python-Skript, oder muss man da wieder anders dran gehen? Die dem Midi-Controller zugewiesene Steuerung von Schiebereglern könnte auch noch in der Bildbearbeitung nützlich sein, zB Deckkraft, Pinselgröße, scrollen, verschiedene Werte regeln... Das erspart dann beim Arbeiten viele Maushinundherbewegungen. Programme haben ja uU auch eigene Schnittstellen für Skripte... Macht es überhaupt Sinn drüber nachzudenken? Wenn ja, so ein eierlegenderwollmilchsaucontroller wäre schon sehr cool und viele könnten auf den Geschmack kommen. Leider hab ich zwar eine Vorstellung vom Programmieren, aber nicht wirklich Kenntnisse. Du kannst mir ja schreiben, was du für einen Sinn in weiterer Entwicklung siehst und wieviel Lust du dazu hast, ich bin auf jeden Fall dabei. |
||||
Anmeldungsdatum: Beiträge: 11233 Wohnort: München |
Ich würde dafür playerctl aus dem gleichnamigen Paket nutzen, dann muss man sich nicht groß mit der DBus-API herumschlagen. Das Programm kann bei Bedarf von dem Python-Skript als Subprozess aufgerufen werden.
Deckkraft und Pinselgröße sollte eigentlich gut über Hotkeys bzw. Tastendrücke abbildbar sein, oder? Fürs Scrollen ist der Endlos-Modus der Drehimpulsgeber vermutlich besser geeignet (dürfte vermutlich der Increment/Decrement Modus sein), wobei ich da keinen großen Vorteil gegenüber Scrollbewegungen mit gedrückt gehaltener mittlerer Maustaste in GIMP sehe. Wie sehen denn die Ausgaben für die Drehregler aus, wenn sie so konfiguriert sind, dass sie die Drehimpulssignale mit Richtung ausgeben? |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 50 Wohnort: Freiburg |
@seahawk Ich komme gerade gar nicht mehr dazu, hier weiter nachzudenken, sorry. Das Topic ist mit deiner Hilfe auf jeden Fall mehr als gelöst, vielleicht stelle ich später noch mal eine neue Frage wegen MIDI-Drehregler-Mappings... Grüße an alle, die hier vorbeischneien! |