3. MIDI イベントのルーティング

3.1. aconnect

仮想 MIDI カードの作成と設定をした上で、さらなる準備をしないと、 MIDI イベントをシーケンサからソフトシンセに送信することはできません。 そのためには、最初にふたつのポートを―ご想像通り― aconnect ユーティリティで接続する必要があります。このツールはふたつ、 もしくはそれより多くのポートを接続します。-i と -o が 使用可能なポートを表示するオプションであることは、すでに以前説明した通りです。 簡単な構文で、これらのポートを一方向に接続することができます。

$ aconnect [送信ポート] [受信ポート]
$ aconnect 80:0 81:0
   

この例では、port 80:0 に送信されたすべての MIDI データを port 80:1 に向けてルーティングします。 本文書の構成だと、/dev/midi20 に入ってきたすべてのイベントは /dev/midi21 に送信されることになるので、/dev/midi21 から 他のアプリケーションはその MIDI イベントを読む(受信する) ことができます。

VirMIDI カードをカード index 1 であるふたつ目のカードとして設定した場合、 これらのポートが存在するはずです:

$ aconnect -lo
client 72: 'Virtual Raw MIDI 1-0' [type=kernel]
    0 'VirMIDI 1-0     '
client 73: 'Virtual Raw MIDI 1-1' [type=kernel]
    0 'VirMIDI 1-1     '
client 74: 'Virtual Raw MIDI 1-2' [type=kernel]
    0 'VirMIDI 1-2     '
client 75: 'Virtual Raw MIDI 1-3' [type=kernel]
    0 'VirMIDI 1-3   
   

この時点で、たとえばポート 72:0 (/dev/midi10) からポート 73:0 (/dev/midi11) に接続できます:

$ aconnect 72:0 73:0
   

aconnect で -lo や -li オプションを使うと、接続状況を 表示できます:

$ aconnect -lo
client 72: 'Virtual Raw MIDI 1-0' [type=kernel]
    0 'VirMIDI 1-0     '
        Connecting To: 73:0
client 73: 'Virtual Raw MIDI 1-1' [type=kernel]
    0 'VirMIDI 1-1     '
        Connected From: 72:0
client 74: 'Virtual Raw MIDI 1-2' [type=kernel]
    0 'VirMIDI 1-2     '                       
client 75: 'Virtual Raw MIDI 1-3' [type=kernel]
    0 'VirMIDI 1-3
   

'Virtual Raw MIDI 1-0' が現在 'Virtual Raw MIDI 1-1' に接続されている ことが分かります。この時点で、'Virtual Raw MIDI 1-0' に送信された MIDI データを 'Virtual Raw MIDI 1-1' から読み出すことができます。 OSS 互換デバイスだと、/dev/midi10 に送信された MIDI データは /dev/midi11 への経路をとり、/dev/midi11 から読み出すことができます。 どちらを使うかは、お使いのアプリケーションによります。

ふたつ以上のポートを、ひとつのポートに接続することもできます。 以下のように aconnect を二度実行すると:

$ aconnect 72:0 73:0
$ aconnect 72:0 74:0
   

/dev/midi10 に送信したのと同じデータを、/dev/midi11 と /dev/midi12 で同様に受信できます。当然、もっとたくさんの仮想 MIDI カードを作成し、 それらをでたらめに接続した場合は、本当にマシンを酷使することになります。 もうわたしたちを止めるものはなにもありません…

すべてのポートの接続を切るには:

$ aconnect -x 
   

接続をひとつだけ切るには:

$ aconnect -d 72:0 74:0
   

3.2. ALSA MIDI Patch Bay

Bob Ham 作の ALSA MIDI Patch Bay は、ALSA の MIDI 接続の設定をするのにとても有用なグラフィック フロントエンドです。使い方はとても簡単で直感的です: 左側は MIDI イベントを送信可能な MIDI ポート群で、もう一方の 右側には受信可能な MIDI ポート群があります。左側のポートを クリックすると、次にクリックする右側のポートへの新たな接続が できるようになります。右側のポートをクリックすると、その ポートが接続されている場合はそれを切ります。 本 HOWTO を余計なものにしてしまいかねないくらいクリーンで 簡単なツールです. ;)

3.3. aseqview

MIDI イベントをルーティングするためのもうひとつの有用なツールが、 ALSA 開発者岩井隆さん作の aseqview です。岩井さんのホームページ http://members.tripod.de/iwai/alsa.html でダウンロードできますが、多くのディストリビューションにも含まれています。 このグラフィカルなユーティリティは、コンピュータを 通過する MIDI イベントを眺めたり変更したりする目的で設計されましたが、 aconnect のように、 異なる MIDI ポートにイベントをルーティングすることもできます。 aconnect では時に操作できないこともある OSS シーケンサデバイスを使うアプリケーションを扱わなければならない時に、 aseqview は有用です。コマンドラインオプションなしで aseqview を 起動すると、きれいな GUI と新たな MIDI ポートが手に入ります。 デフォルトは port 128:0 です。このようになります:

client 128: 'MIDI Viewer' [type=user] 
   0 'Viewer Port 0 ' 
   

このポートを使って、これまで説明してきた aconnect の作業すべてが可能です。 でも、aseqview のポートを別のポートに接続することだけが必要なら、 -d オプションを使えば、aseqview だけで実現できます:

$ aseqview -d 73:0 &
   

ちょうど aseqview の起動時から、(使用可能であれば) port 128:0 から port 73:0 に接続がなされます。