Linux版 REAPERでMIDIキーボードを認識させる

(2022.06.11執筆)


Linux端末とMIDIキーボードを繋いでも、初期状態のREAPERだと上手く認識できない、鳴らない。(bitwigだと普通に鳴った)
REAPERでMIDIキーボードを認識させるにはMIDIドライバ周りをうまく設定する必要があったので、メモとして残しておきます。

手順

  1. JACKオーディオ設定で、MIDIドライバをseqに
  2. a2jmididをインストールする
  3. REAPERを起動してMIDIキーボードを繋いだときに、a2jmididを立ち上げる
  4. JACKオーディオ設定でMIDIキーボード入力ポートから、REAPERのMIDI出力ポートへ接続
  5. (REAPERの楽器トラックを録音待機、MIDI入力状態にする)


この手順でキーボード入力から音が鳴ります。
一度設定してしまえば、MIDIキーボードを繋いで「a2jmidid」をONにするだけで音を鳴らせます。


前準備として⇒JACKサウンドサーバーのqjackctl設定を確認ください。

では、手順を詳しく見ていきます。

qjackctlで、MIDIドライバをseqに設定

まずはJACKオーディオ設定でドライバーをalsaに、MIDIドライバをseq(効かない時はraw)に設定し、終了します。

JACK MIDIドライバ

a2jmididをインストールする

インターネットに接続して、a2jmididをインストールします。
sudo apt install a2jmidid

これは、MIDIキーボードをalsaドライバからJACKオーディオに繋ぐための機能です。
インストールしたら以降オフライン作業でも大丈夫です。

REAPERを起動してMIDIキーボードを繋いだときに、a2jmididを立ち上げる

REAPERを起動してMIDIキーボードを繋いだときに、ターミナルからa2jmididを起動します。
a2jmidid -e &

上記のコマンドで、JACKオーディオサーバーにMIDIキーボードが認識されます。
もし認識されない場合は、JACKのMIDIドライバ設定のrawも試してみてください。

JACKオーディオ設定でMIDIキーボードから、REAPERのMIDI出力ポートへ接続

続いてqjackctlを立ち上げて、パッチベイを設定します。

JACK MIDIキーボード パッチベイ

出力ソケット/プラグに「追加」からMIDIのa2jにあるMIDIキーボード(名称)の項目を作成。
入力ソケット/プラグに「追加」からMIDIのREAPERにあるMIDI input(1)の項目を作成。

それぞれを選択して、「接続」をクリックします。

そして、上記のパッチベイを「保存」しておきます。

JACK パッチベイ有効化
パッチベイを保存したら、JACKの設定オプションから「持続的パッチベイ有効」にチェックを入れることで、以降は自動的にデバイスの接続が有効になります。


REAPER MIDIキーボード Linux
MIDIキーボードが、REAPER上のオプションにも表示されてると思います。

REAPER上で、楽器トラックを設定するとキーボードで鳴る

REAPER MIDI入力設定

後はREAPER上で、楽器トラックを録音待機にし、そのトラックでMIDI入力を選択するとキーボードで音が鳴ります。
無事に鳴ったらおめでとうございます。


ちょっと休憩入れますか(' '*)〜

MIDIキーボードを繋いだ後の手順を簡略化する

無事に鳴ったは良いものの、キーボードを繋ぐ度にターミナルから「a2jmidid -e &」続いて「qjackctl」を毎回入力していては面倒ですよね。MIDIキーボードを使わないときは、余計な動作を抑えられるメリットもありますが、なかなか。

なのでキーボードを繋いだ後、一クリックでキーボードが鳴るよう工夫をしたいと思います。

コマンドのシェルスクリプトを作ってみる

そこでコマンドのシェルスクリプトを作ってみる。シェルスクリプトとはなんぞや? 知らん。
まぁ必要なコマンド群をテキストエディタでメモしておけば、後から一発で呼び出せるような代物です。

シェルスクリプト
中身をみると、このような感じです。
ファイルの新規作成から、テキストエディタで必要なコマンドを入力し、.shの拡張子で保存しておきます。

#!/bin/bash

jack_control start
jack_control dps period 64
a2jmidid -e &
sleep 1
qjackctl &

今回使うコマンドは以上のような感じです。

基本的にはこの3行で足りますが。
a2jmidid -e &
sleep 1
qjackctl &


追加で、jack_control dps period 64を入れる理由は、MIDIキーボード入力時の入力遅延(レイテンシー)を少なくするため。
レイテンシーを少なくするとCPU消費が上がるのですが、必要な場面は鍵盤入力時に限られるので、このスクリプト実行時のみレイテンシーを下げる設定にしてる。理に叶った状態にカスタムできる。

(普段はjack_control dps period 1024と、やや多めの設定にしてます)

参考リンク ⇒ JACK Audio Connection Kit / archlinux.jp


後は、作成した.shファイルの右クリックからプロパティを選んで「プログラムとしての実行を許可する」にチェックを入れます。
シェルスクリプトの実行許可

これで、簡単なシェルスクリプトの作成は完了です。

シェルスクリプトを呼び出す

パネル部分を右クリックしてアイテム(ランチャー)を追加し、そのアイコンをクリックしたときに何をするか?を登録すれば、上記のシェルスクリプトに書かれたコマンドを起動できます。

パネル設定

アイテム設定から
パネルアイテム設定
→の編集画面で、名前と説明を分かりやすく書いて、コマンドの欄に先程作ったシェルスクリプトのファイルパスを入力します。homeディレクトリからのパスを入力してください。アイコン欄もクリックして合うものを選ぶと分かりやすいです。


OK.

以後REAPER上でMIDIキーボードを接続したら、今回のアイコンをクリックしてキーボード演奏できるようになります。 おつかれさまでした。

REAPER・カスタマイズ設定項目

  1. 全般の設定を見直す
  2. マウス操作を使いやすくする
  3. アクションリスト(ショートカットキー等)を設定する
  4. アーティキュレーション切り替えの独自設定
  5. REAPER日本語表示とフォント変更
  6. Linux版 REAPERでMIDIキーボードを認識させる