GNU/Linux >> Znalost Linux >  >> Linux

Překlad MIDI vstupu do počítačových kláves na Linuxu?

To nelze provést bez určitého programování.

Nejprve vyzkoušejte, jak detekovat MIDI události. Přejděte na terminál a spusťte aseqdump -l zobrazit seznam MIDI portů; výsledkem je něco takového:

$ 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

Poté jej spusťte se jménem klienta a zkontrolujte, zda události přicházejí:

$ 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
...

Za druhé, k simulaci úhozů kláves potřebujete xdotool . Pokud jej ještě nemáte nainstalovaný, spusťte sudo apt-get install xdotool .Můžete použít type zadejte text nebo key pro simulaci speciálních kláves:

xdotool type Hello, World!
xdotool key ctrl+p

Upozorňujeme, že xdotool nezpracovává správně všechny speciální klíče .A Ctrl+Alt+Del jádro zpracovává velmi speciálně a pravděpodobně při simulaci nefunguje; zkuste spustit sudo reset místo xdotool .

Nakonec vše svažte scénářem. Vložte to do textového souboru, například ~/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

Udělejte jej spustitelným (chmod +x ~/bin/midi-to-keys ) a spusťte jej (~/bin/midi-to-keys ).Nyní by mělo mít stisknutí E-5 nebo C-4 nějaký efekt.

Změňte nebo přidejte řádky ve tvaru "Note on x" ) command ;; dělat, co chcete.


Měl jsem podobný problém, takže jsem naprogramoval něco, co vyhovuje mým požadavkům.

https://gitlab.com/enetheru/midi2input

Běží v linuxu a používá systém x windows pro vstupní události klávesnice a myši.

Používá lua pro konfiguraci a mapování, může provádět jakoukoli akci jako váš uživatel. má zjišťování, které okno je aktivní, pomocí atributu X_CLASS, takže můžete provádět různá mapování pro jakoukoli aktuálně spuštěnou aplikaci.

Automaticky znovu načte konfiguraci, takže ji nemusíte neustále zavírat a znovu otevírat.

Napsal jsem jednoduché pravidlo udev pro vytvoření připojení midi, když zapojím ovladač.

Existuje dokonce archlinux PKGBUILD pro archlinux, jen jsem ho nepřidal do aur.

Cílem bylo odstranit všechny problematické body při vytváření mapování ze středního ovladače na cokoli, co chci.

Už je to pár let, co jsem to postavil, a používám to každý den, věnuji pozornost repo, ale e-mail mi o tom poslal pouze jeden nebo dva lidé.


Linux
  1. Jak učinit starý počítač opět užitečným

  2. Termux mění Android na vývojové prostředí Linuxu

  3. Plánování v Linuxu:spusťte úlohu, když je počítač nečinný (=žádný vstup uživatele)

  1. Výrobce počítačů Linux přesune výrobu do USA

  2. Přesměrování vstupu/výstupu v Linuxu/Unixu

  3. Přesun instalace linuxu na nový počítač

  1. Linux – přesun instalace Linuxu na nový počítač?

  2. Čtení vstupního USB datového proudu na linuxu

  3. Linux:proces do služby