web-dev-qa-db-ja.com

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

MIDIコントローラー(Launchkey Mini)はもう音楽制作には使用していませんが、ドラムパッドボタンまたはピアノキーを使用してコンピューターのキーボードの組み合わせを実行したいと思います。 、Ctrl + Alt + Deleteなどを1回押すだけで実行できます。

この質問を調べようとすると、BomeのMIDI Translatorはお金がかかり、Linuxにはない、ひどく時代遅れのプラグイン/アプリケーション、または自分でコーディングしますが、オーディオに関連するものをプログラミングするスキルがほとんどないので、どうすればよいかわかりません。

VMPKと呼ばれるものの風に巻き込まれましたが、そのドキュメントを読んだ後、コンピューターのキーストロークをMIDI信号に変換するだけで、その逆ではないようです。

これを行う方法はありますか?私はXubuntu16.04を使用しています。

5
RobotUnderscore

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

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

 $ aseqdump -l 
ポートクライアント名ポート名
 0:0システムタイマー
 0:1システムアナウンス
 14:0MidiからMidiポート0経由
 24:0 Xonar D2 Xonar D2 MIDI 
 32:0 Yamaha DS-1E(YMF754)Yamaha DS-1E(YMF754)MIDI 

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

 $ aseqdump -p "Xonar D2" 
データを待機しています。 Ctrl + Cを押して終了します。
ソースイベントChデータ
 24:0 0、ノート64、ベロシティ86に注意[.____] 24:0 0、ノート48、ベロシティ80に注意
 24:0ノートオフ0、ノート48 
 24:0ノートオン0、ノート68、ベロシティ84 
 24:0ノートオン0、ノート52、ベロシティ88 
 24:0ノートオフ0、ノート64 
 24:0ノートオフ0、ノート52 
 24:0ノートオフ0、ノート68 
 ... 

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

 xdotool type Hello、World!
 xdotool key ctrl + p 

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

最後に、すべてをスクリプトで結びます。これをテキストファイルに入れます(例:~/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 ;;の形式の行を変更または追加して、必要な操作を実行します。

9
CL.

同様の問題が発生したため、要件に合ったものをプログラムしました。

https://gitlab.com/enetheru/midi2input

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

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

構成を自動的に再ロードするため、常に構成を閉じて再度開く必要はありません。

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

Archlinux用のarchlinuxPKGBUILDもありますが、私はそれをaurに追加していません。

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

構築してから数年が経ち、毎日使っており、レポジトリに注目していますが、メールでの連絡は1、2人しかいません。

9
Enetheru