最後のこの節では、様々なアプリケーションでの仮想 MIDI 接続の使いかたを、いくつかの 実例で説明します。システムの中で、仮想 MIDI カードが三つ目のカードになっていて、 ALSA MIDI ポートの 80:0 から 83:0 までが、raw OSS MIDI デバイスの /dev/midi20 から /dev/midi23 や、ALSA raw MIDI デバイスの /dev/snd/midiC2D0 から /dev/snd/midiC2D3 と一致する環境を仮定します。 これらのうち、最初のふたつが 'aconnect' されています:
$ aconnect 80:0 81:0 |
これまで説明してきたとおり、これはつまり /dev/midi20 (もしくは port 80:0 もしくは /dev/snd/midiC2D0) に送られたすべての MIDI データは、/dev/midi21 (もしくは port 80:1 もしくは /dev/snd/midiC2D1) で読めていることを意味しています。
MusE は、Werner Schweerによって作られた完全な MIDI シーケンサです。 http://muse.seh.de で入手できます。 “Config->Midi Ports” セクションで、 仮想 MIDI ポートを出力ポートとして設定する必要があります。 MusE では、指定するポートは ALSA での名前 'VirMIDI X-X' です:
ここで、出力ポートに正しいポートを選んでいるか確認してください。 つまりその MIDI イベントを受信・演奏させたい ソフトウェアシンセサイザが待ち受けているチャンネルです。
どういうわけか、筆者は MuSE 0.4.9 で、'VirMIDI 2-0' を出力デバイスとして 使うことができませんでした。'VirMIDI 2-1' で受信したい時、 'VirMIDI 2-0' デバイスに送信したかったのですが、そのふたつを 逆にして使わなくてはならなかったのです。 多分筆者がまぬけなせいなのでしょうが、筆者には原因が分からないので、 あなたはちょっと実験をしなくてはならないかもしれません。 midi02 や midi2 形式のデバイスを使うことも可能でしょう。
Billy Biggs 作の ttrk は、シンプルで軽く安定した MIDI シーケンサで、 トラッカーのようなステップ入力のインタフェースを備えています。 このシーケンサは、MIDI データを $HOME/.ttrkrc ファイルで設定された MIDI ポートに送信することができます。
ttrk が /dev/snd/midiC2D0 に送信するようにするには、次の行を $HOME/.ttrkrc ファイルに書いてください。
mididev = /dev/snd/midiC2D0 |
これで設定完了です...
Juan Linietsky 作の Shaketracker は、MIDI 上でトラッカーのインタフェースを復活させました。 その点は ttrk 同様ですが、Shaketracker は、古典的なトラッカーの エフェクトを MIDI データに、より完璧に変換します。 あいにく、MIDI 出力には raw MIDI デバイスではなく OSS シーケンサデバイス (/dev/sequencer) が使われるので、筆者は aconnect を用いて動作させることが できませんでした。でも aseqview を使うなどすれば回避は可能です。 Shaketracker を起動する前に aseqview を起動すれば、 Shaketracker は aseqview のポートを認識し、それを使います。 必要な作業は、Shaketracker の 'User Devices' セクションで そのポートを選ぶだけです。'User Devices' セクションでは ALSA での名前 'Viewer Port 0' として表示されます:
このユーザデバイスに、'Null Output' のかわりに分かりやすい名前をつけると便利です。
aseqview を、コマンドラインオプションなしで起動した場合、 aseqview のポートをソフトシンセのポートと aconnect する必要が あります。でも、以前説明したように、接続先ポートの指定つきで直接 aseqview を起動することもできます。ソフトシンセに送信する各トラックごとに、 この新たなユーザデバイスを使用するのを忘れないでください。 筆者はいつも小さなシェルスクリプトを用いて Shaketracker を起動します。これは aseqview を起動し、ポートが作られる時間を 待ち、それから Shaketracker を起動します:
#!/bin/sh aseqview -d 81:0 & # sleep 2 seconds to let aseqview do its work: sleep 2 shaketracker |
Miller Puckette は、オープンソースのソフトウェアシンセかつマルチメディア 開発環境の Pure Data (PD) を生んだ天才です。PD は MAX から発展し、それが逆に MAX の拡張である MSP の基礎となりました。PD では MIDI イベントを読むのに raw MIDI デバイスを使うことができます。raw MIDI デバイスは '-midiindev <デバイスの番号>' オプションで指定します。 しかし、使用するデバイスを指定するやりかたにはいらいらさせられます。 次のような形式です: /dev/midi0 を使うには、PD を '-midiindev 1' オプションで起動します。/dev/midi1 を使うには '-midiindev 2' で、以下同様です。理解できましたか? このオプションでは、 実際のデバイス番号に 1 を足した数字を指定しなくてはならないのです。 別の例です: /dev/midi21 を使うには、'-midiindev 22' オプションで PD を起動します。
PD には 'Test audio and MIDI' という名のヘルプパッチが用意されています。 正しい MIDI デバイスを確認する上で、とても重宝します。
Csound は、いまどきのソフトウェアシンセサイザほとんどの祖母にあたります。 そして、MIDI にも対応がなされています。 'csound --help' を実行すると、MIDI 入力デバイスの設定が必要な箇所を表示します:
-M dnam or --midieventdev=dnam ........ Read MIDI realtime events from device |
よって本書の例では、Csound を以下のように起動する必要があります:
$ csound -M /dev/midi21 -o devaudio midi.csd |