GNU/Linux >> Belajar Linux >  >> Linux

Menerjemahkan input MIDI ke penekanan tombol komputer di Linux?

Ini tidak dapat dilakukan tanpa beberapa pemrograman.

Pertama, uji cara mendeteksi peristiwa MIDI. Buka terminal, dan jalankan aseqdump -l untuk membuat daftar port MIDI; ini menghasilkan sesuatu seperti ini:

$ 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

Kemudian jalankan dengan nama klien untuk memeriksa apakah acara tiba:

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

Kedua, untuk mensimulasikan penekanan tombol, Anda memerlukan xdotool . Jika Anda belum menginstalnya, jalankan sudo apt-get install xdotool .Anda dapat menggunakan type untuk mengetik teks, atau key untuk mensimulasikan kunci khusus:

xdotool type Hello, World!
xdotool key ctrl+p

Perhatikan bahwa tidak semua kunci khusus ditangani dengan benar oleh xdotool .Dan Ctrl+Alt+Del ditangani dengan sangat khusus oleh kernel dan mungkin tidak berfungsi saat disimulasikan; coba jalankan sudo reset bukannya xdotool .

Terakhir, ikat semuanya dengan skrip. Masukkan ini ke dalam file teks, misalnya, ~/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

Jadikan itu dapat dieksekusi (chmod +x ~/bin/midi-to-keys ), dan jalankan (~/bin/midi-to-keys ).Sekarang, menekan E-5 atau C-4 seharusnya memiliki beberapa efek.

Ubah atau tambahkan baris dalam bentuk "Note on x" ) command ;; untuk melakukan apa pun yang Anda inginkan.


Saya memiliki masalah serupa jadi saya memprogram sesuatu yang sesuai dengan kebutuhan saya.

https://gitlab.com/enetheru/midi2input

Berjalan di linux dan menggunakan sistem x windows untuk kejadian input keyboard dan mouse.

Ini menggunakan lua untuk konfigurasi dan pemetaan, dapat melakukan tindakan apa pun sebagai pengguna Anda. memiliki deteksi pada jendela apa yang aktif menggunakan atribut X_CLASS sehingga Anda dapat membuat pemetaan yang berbeda untuk aplikasi apa pun yang sedang berjalan.

Memuat ulang konfigurasi secara otomatis sehingga Anda tidak perlu menutup dan membukanya kembali setiap saat.

saya telah menulis aturan udev sederhana untuk membuat koneksi midi saat saya menyambungkan pengontrol saya.

Bahkan ada PKGBUILD archlinux untuk archlinux, saya hanya belum menambahkannya ke aur.

Idenya adalah untuk menghilangkan semua masalah dalam membuat pemetaan dari pengontrol tengah ke apa pun yang saya inginkan.

Sudah beberapa tahun sejak saya membuatnya, dan saya menggunakannya setiap hari, saya memperhatikan repo, tetapi hanya ada satu atau dua orang yang pernah mengirimi saya email tentangnya.


Linux
  1. Cara membuat komputer lama menjadi berguna kembali

  2. Termux mengubah Android menjadi lingkungan pengembangan Linux

  3. Pengalihan Input/Output di Linux/Unix

  1. Linux – Memindahkan Instal Linux ke Komputer Baru?

  2. Penjadwalan di Linux:jalankan tugas saat komputer dalam keadaan diam (=tidak ada input pengguna)

  3. Linux:proses menjadi layanan

  1. Pembuat komputer Linux untuk memindahkan manufaktur ke AS

  2. Memindahkan instalasi linux ke komputer baru

  3. Bagaimana cara menggabungkan dua pipa bernama ke aliran input tunggal di linux