GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Übersetzen von MIDI-Eingaben in Computertastenanschläge unter Linux?

Ohne Programmierung geht das nicht.

Testen Sie zunächst, wie MIDI-Events erkannt werden. Gehen Sie zu einem Terminal und führen Sie aseqdump -l aus um die MIDI-Ports aufzulisten; das gibt so etwas aus:

$ aseqdump -l
 Port    Client name                      Port name
  0:0    System                           Timer
  0:1    System                           Announce
 14:0    Midi Through                     Midi Through Port-0
 24:0    Xonar D2                         Xonar D2 MIDI
 32:0    Yamaha DS-1E (YMF754)            Yamaha DS-1E (YMF754) MIDI

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

$ aseqdump -p "Xonar D2"
Waiting for data. Press Ctrl+C to end.
Source  Event                  Ch  Data
 24:0   Note on                 0, note 64, velocity 86
 24:0   Note on                 0, note 48, velocity 80
 24:0   Note off                0, note 48
 24:0   Note on                 0, note 68, velocity 84
 24:0   Note on                 0, note 52, velocity 88
 24:0   Note off                0, note 64
 24:0   Note off                0, note 52
 24:0   Note off                0, note 68
...

Zweitens benötigen Sie zum Simulieren von Tastenanschlägen xdotool . Wenn Sie es noch nicht installiert haben, führen Sie sudo apt-get install xdotool aus .Sie können type verwenden um Text einzugeben, oder key Sondertasten simulieren:

xdotool type Hello, World!
xdotool key ctrl+p

Bitte beachten Sie, dass nicht alle Sondertasten korrekt von xdotool behandelt werden .Und Strg+Alt+Entf wird vom Kernel sehr speziell gehandhabt und funktioniert wahrscheinlich nicht, wenn es simuliert wird; Versuchen Sie, sudo reset auszuführen statt 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 ).Jetzt sollte das Drücken von E-5 oder C-4 etwas bewirken.

Ändern oder ergänzen Sie Zeilen der Form "Note on x" ) command ;; zu tun, was du willst.


Ich hatte ein ähnliches Problem, also habe ich etwas programmiert, das meinen Anforderungen entspricht.

https://gitlab.com/enetheru/midi2input

Läuft unter Linux und verwendet das X-Windows-System für Tastatur- und Mauseingabeereignisse.

Es verwendet lua für die Konfiguration und Zuordnung, kann jede Aktion als Ihr Benutzer ausführen. erkennt, welches Fenster aktiv ist, indem das X_CLASS-Attribut verwendet wird, sodass Sie verschiedene Zuordnungen für jede Anwendung vornehmen können, die gerade ausgeführt wird.

Lädt die Konfiguration automatisch neu, sodass Sie sie nicht ständig schließen und erneut öffnen müssen.

Ich habe eine einfache udev-Regel geschrieben, um die Midi-Verbindungen herzustellen, wenn ich meinen Controller anschließe.

Es gibt sogar ein Archlinux PKGBUILD für Archlinux, ich habe es nur nicht zum Aur hinzugefügt.

Die Idee war, alle Schmerzpunkte beim Erstellen von Mappings vom mittleren Controller zu allem, was ich will, zu beseitigen.

Es ist ein paar Jahre her, seit ich es erstellt habe, und ich benutze es jeden Tag, ich achte auf das Repo, aber es gab nur ein oder zwei Leute, die mir jemals eine E-Mail darüber geschrieben haben.


Linux
  1. Wie man einen alten Computer wieder brauchbar macht

  2. Termux verwandelt Android in eine Linux-Entwicklungsumgebung

  3. Eingabe-/Ausgabeumleitung in Linux/Unix

  4. Lesen des USB-Eingangsstroms unter Linux

  5. Linux:in einen Dienst verarbeiten

Patchen Sie in The Matrix über die Linux-Befehlszeile

Linux dd-Befehl für Anfänger erklärt (8 Beispiele)

So booten Sie in die Linux-Befehlszeile

GSConnect Integrieren Sie ein Android-Telefon in einen Linux-Computer

Eingabe-Ausgabe-Umleitung unter Linux erklärt

Linux-Pipe-Audiodatei zum Mikrofoneingang