Konvertieren von MIDI-Eingaben in Computertastaturen unter Linux?

2278
RobotUnderscore

Ich habe einen MIDI-Controller (Launchkey Mini), den ich nicht mehr wirklich für die Musikproduktion benutze, aber ich möchte die Drum-Pad-Tasten oder Pianotasten verwenden, um Tastaturkombinationen des Computers auszuführen, z. B. Strg + Alt + Entf. mit einer einzigen Presse.

Wann immer ich versuche, diese Frage zu recherchieren, werde ich entweder auf Bomes MIDI Translator hingewiesen, der Geld kostet und nicht für Linux, ein schrecklich veraltetes Plug-In / eine Anwendung oder eine zufällige Bibliothek zum Codieren selbst ist, von der ich keine Ahnung habe Wie mache ich das? Ich habe praktisch keine Kenntnisse in der Programmierung von Audio-Themen.

Ich habe Wind von etwas namens VMPK bekommen, aber nachdem ich die Dokumentation gelesen habe, sieht es so aus, als würde das nur Tastatureingaben des Computers in MIDI-Signale umwandeln, nicht umgekehrt.

Gibt es eine Möglichkeit, dies zu tun? Ich bin auf Xubuntu 16.04.

5
Ich frage mich, ob dies ein Schritt in die richtige Richtung sein könnte. Ich habe es bisher nur zum Ansteuern von MIDI-Geräten von z. B. meinem iPhone über einen regulären Sequenzer verwendet, aber es ist möglicherweise erweiterbar für Ihre Anforderungen - https://en.wikipedia.org/wiki/Open_Sound_Control Tetsujin vor 7 Jahren 0
Ich kenne keine fertige Software, aber das hört sich nach einem lustigen Projekt an. Würden Ihre Programmierfähigkeiten mit Beispielprogrammen, wie Sie MIDI-Events erhalten und wie Sie Input-Tastenanschläge erstellen, ausreichen, um es selbst zu erstellen? Und verwenden Sie Alsa oder Jack für Ihren MIDI-Controller? dirkt vor 7 Jahren 0

2 Antworten auf die Frage

8
CL.

Dies ist nicht ohne Programmierung möglich.

Testen Sie zunächst, wie Sie MIDI-Ereignisse erkennen. Gehen Sie zu einem Terminal und führen Sie aseqdump -ldie Liste der MIDI-Ports aus. Dies gibt etwas wie das aus:

$ aseqdump -l Port Client-Name Port-Name 0: 0 Systemtimer 0: 1 Systemankündigung 14: 0 Midi durch Midi durch Port-0 24: 0 Xonar D2 Xonar D2 MIDI 32: 0 Yamaha DS-1E (YMF754) Yamaha DS-1E (YMF754) MIDI 

Führen Sie dann den Clientnamen aus, um zu prüfen, ob Ereignisse eintreffen:

$ aseqdump -p "Xonar D2" Warten auf Daten Drücken Sie zum Beenden Strg + C. Quellereignis-Ch-Daten 24: 0 Note zu 0, Note 64, Geschwindigkeit 86 24: 0 Note zu 0, Note 48, Geschwindigkeit 80 24: 0 Hinweis aus 0, Hinweis 48 24: 0 Anmerkung zu 0, Anmerkung 68, Geschwindigkeit 84 24: 0 Note zu 0, Note 52, Geschwindigkeit 88 24: 0 Hinweis aus 0, Hinweis 64 24: 0 Hinweis aus 0, Hinweis 52 24: 0 Hinweis aus 0, Hinweis 68 ... 

Zweitens, um die Tastenanschläge zu simulieren, müssen Sie dies tun xdotool. Wenn Sie es noch nicht installiert haben, führen Sie es aus sudo apt-get install xdotool. Sie können typeText keyeingeben oder Sondertasten simulieren:

xdotool type Hallo, Welt! xdotool key Strg + p 

Bitte beachten Sie, dass nicht alle Sondertasten korrekt von behandelt werden xdotool. Und Strg + Alt + Entf wird vom Kernel sehr speziell behandelt und funktioniert wahrscheinlich nicht, wenn es simuliert wird. versuchen Sie, sudo resetstatt xdotool.

Binden Sie schließlich alles mit einem Skript zusammen. Fügen Sie dies in eine Textdatei ein, zum Beispiel ~/bin/midi-to-keys:

#!/bin/bash aseqdump -p "Xonar D2" | \ while IFS=" ," read src ev1 ev2 ch label1 data1 label2 data2 rest; do case "$ev1 $ev2 $data1" in "Note on 64" ) xdotool type hello ;; "Note on 48" ) xdotool key ctrl+j ;; esac done 

Machen Sie es ausführbar ( chmod +x ~/bin/midi-to-keys) und führen Sie es aus ( ~/bin/midi-to-keys). Wenn Sie nun E-5 oder C-4 drücken, sollte dies Auswirkungen haben.

Ändern oder fügen Sie Zeilen des Formulars hinzu, um das "Note on x" ) command ;;zu tun, was Sie möchten.

Oh, das ist nicht so schlimm! Ich machte mir Sorgen, dass es noch viel mehr geben würde. Vielen Dank! RobotUnderscore vor 7 Jahren 0
Gute Antwort! Es ist erstaunlich, was Sie auf Linux- / Unix-Systemen sehr einfach tun können, indem Sie einige Befehlszeilen-Tools kombinieren. Ich werde dieses Beispiel im Hinterkopf behalten, wenn Leute mich fragen, warum ich Linux benutze. Ich werde jetzt endlich meine praktischen MIDI-Controller einsetzen! LaVache vor 6 Jahren 1
7
Enetheru

Ich hatte eine ähnliche Situation, also habe ich ein kleines Programm erstellt, das es für mich https://gitlab.com/enetheru/midi2input macht

Link-only-Antworten sind nicht so nützlich. Toto vor 6 Jahren 0
@Toto, Dies ist, da es das Problem von OP direkt anspricht und der Link gültig ist Art Gertner vor 6 Jahren 2