るいもの戯れ言

Linux上でのMIDIは、今はjackを使うのが良さそうなので、ちょっと試してみることにする(Ubuntu 16.04)。使用したのはRolandのUM-1で、aplaymidiでは以下のように表示されて認識されていることが確認できる。


$ aplaymidi -l
 Port    Client name                      Port name
 14:0    Midi Through                     Midi Through Port-0
 16:0    UM-1                             UM-1 MIDI 1

jackのインストールは、


$ sudo apt install jack

インストールすると、qjackctlというアプリケーションがインストールされるので起動する。

接続というボタンを押してから、MIDIタブで、MIDIデバイス、アプリケーション同士を接続できるはずなのだが、ここにUM-1が表示されない。

かわりに、ALSAタブにUM-1が表示されている。

jackのドキュメント見ると、ALSAで認識されるデバイスは全て使えるよと書いてあって、なぜ認識されないのか散々悩んだのだが、どうもこれはMIDIには適用されないようだ。それでALSAで認識されたMIDIを、jack側にブリッジしてやる必要がある。といっても、単にa2jmididというブリッジアプリケーションを上げておけば良いようだ。インストールして


$ sudo apt install a2jmidid

あとは実行してやる(この時に-eオプションを付けないと、うまくいかない)。


$ a2jmidid -e
JACK MIDI <-> ALSA sequencer MIDI bridge, version 8 (7383d268c4bfe85df9f10df6351677659211d1ca) built on Thu Jan  1 09:00:00 1970
Copyright 2006,2007 Dmitry S. Baikov
Copyright 2007,2008,2009,2011,2012 Nedko Arnaudov

Bridge starting...
Using JACK server 'default'
Hardware ports will be exported.
Bridge started
Press ctrl-c to stop the bridge
port created: Midi Through [14] (capture): Midi Through Port-0
port created: Midi Through [14] (playback): Midi Through Port-0
port created: UM-1 [16] (capture): UM-1 MIDI 1
port created: UM-1 [16] (playback): UM-1 MIDI 1

再度Qjackctlで接続ボタンを押してみると...

UM-1には、INとOUT端子しかないのだが、どうも回路的にはMIDI throughもあるようで、これが一緒に認識されている。ここにつないでも意味が無いので注意が必要だ(起動オプションの-eを付けないと、このMIDI throughの方しかブリッジされなくて、これまたしばらく悩んだ)。

Update: 実際はブリッジ無しでも利用可能なことが分かった。