GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでMIDI入力をコ​​ンピューターのキーストロークに変換しますか?

これは、何らかのプログラミングなしでは実行できません。

まず、MIDI イベントを検出する方法をテストします。ターミナルに行き、aseqdump -l を実行します MIDI ポートを一覧表示します。これは次のようなものを出力します:

$ 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

次に、クライアント名を指定して実行し、イベントが到着するかどうかを確認します:

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

次に、キーストロークをシミュレートするには、xdotool が必要です .まだインストールしていない場合は、sudo apt-get install xdotool を実行します . type を使用できます テキストを入力する、または key 特殊キーをシミュレートするには:

xdotool type Hello, World!
xdotool key ctrl+p

すべての特殊キーが xdotool によって正しく処理されるわけではないことに注意してください .そして、Ctrl+Alt+Del はカーネルによって非常に特別に処理され、シミュレートされたときにはおそらく機能しません。 sudo reset を実行してみてください xdotool の代わりに .

最後に、すべてをスクリプトで結び付けます。これをテキスト ファイルに入力します。たとえば、~/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

実行可能にする (chmod +x ~/bin/midi-to-keys )、それを実行します (~/bin/midi-to-keys ).これで、E-5 または C-4 を押すと何らかの効果が得られるはずです。

"Note on x" ) command ;; の形式の行を変更または追加します やりたいことは何でもする。


私も同様の問題を抱えていたので、自分の要件に合ったものをプログラムしました.

https://gitlab.com/enetheru/midi2input

Linux で実行され、キーボードとマウスの入力イベントに x Windows システムを使用します。

構成とマッピングに lua を使用し、ユーザーとして任意のアクションを実行できます。 X_CLASS 属性を使用してアクティブなウィンドウを検出するため、現在実行中のアプリケーションにさまざまなマッピングを作成できます。

構成を自動的に再読み込みするため、何度も閉じて再度開く必要はありません。

コントローラーを接続したときに MIDI 接続を作成するための簡単な udev ルールを作成しました。

archlinux 用の archlinux PKGBUILD もありますが、まだ aur に追加していません。

アイデアは、ミッド コントローラーから必要なものへのマッピングを作成する際の問題点をすべて取り除くことでした。

構築してから数年が経ち、毎日使用しています。レポジトリには注意を払っていますが、これについてメールをくれたのは 1 人か 2 人だけです。


Linux
  1. Linux/Unixでの入力/出力リダイレクト

  2. Linux:サービスへの処理

  3. Linux インストールを新しいコンピューターに移動する

  1. 古いコンピュータを再び便利にする方法

  2. Linux – Linuxインストールを新しいコンピューターに移動しますか?

  3. Linuxで2つの名前付きパイプを単一の入力ストリームに結合するにはどうすればよいですか

  1. Linux でのスケジューリング:コンピューターがアイドル状態のときにタスクを実行 (=ユーザー入力なし)

  2. LinuxでUSB入力ストリームを読み取る

  3. Linux 分割コマ​​ンドにパイプするにはどうすればよいですか?