HOWTO Use MIDI Sequencers With Softsynths

Frank Barknecht

barknech@ph-cip.uni-koeln.de

小林雅典 - 日本語訳

     zap03216@nifty.ne.jp
    

Revision History                                                       
Revision                      Apr 04 2002                              

この HOWTO では、MIDI 受信可能なソフトウェアシンセサイザを、 MIDI シー
ケンサから ALSA 0.9 の仮想的な MIDI 接続経由で制御する際に必要となる設
定を述べます。本文書は自由に翻訳や配布が可能です。 GNU Free
Documentation License で公開されています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Table of Contents
1. はじめに
2. デバイスの設定
3. MIDI イベントのルーティング
   
    3.1. aconnect
    3.2. ALSA MIDI Patch Bay
    3.3. aseqview
   
4. アプリケーション
   
    4.1. シーケンサ
    4.2. ソフトウェアシンセサイザ
   
5. おわりに
6. 謝辞
7. 日本語版あとがき

1. はじめに

Csound, PD, jMax, Spiral Synth Modular のようなソフトウェアシンセサイザ
は、既知や未知、尋常もしくは奇抜な音響体験を創造するほとんど無限の自由
を提供します。ソフトウェアシンセサイザは、高価なハードウェアシンセサイ
ザや、安価なサウンドカードの、音質が悪いことが多い MIDI シンセサイザ機
能 (いずれにしても Linux でサポートされていればですが) を置き換えること
もできます。一方、それらのソフトウェアシンセサイザを使って作曲するのは
退屈な作業になることもあります―たとえば Csound では、表計算ソフトのよ
うな作法で果てしない数列を記述しなくてはならないのです。これは、音楽を
作るのに快適なやりかたではありません。

MIDI シーケンサアプリケーションは、こういった作業により適しています。シ
ーケンサは、音符を挿入したりデータを制御したりするインタフェースを使い
やすいやりかたで―楽譜の音符、ピアノロールのマーク、MIDI イベントのリス
トといった好みに応じた表現方法で―提供します。他の種類の MIDI シーケン
サには、音符を入力するのにトラッカーのようなステップ入力方式を提供する
ものがあります。多くの人達が、このやりかたがシーンでの最先端だった古き
良き時代から慣れ親しんでいる方式です。最後に、忘れてはならない方式があ
ります。 MIDI シーケンサの中には、鍵盤や他の物理デバイスでの演奏を記録
できるものもあります。これは、多くのユーザにとって最も自然な作曲方法で
す。

ところで、MIDI シーケンサは、通常は音符を MIDI デバイスに出力します。普
通、MIDI イベントを世界の外側―すなわちハードウェアシンセやサンプラー―
に送信するということです。でも仮想 MIDI デバイスを使えば、MIDI データを
コンピュータの内側にキープし、同じマシンで実行している他のソフトウェア
を制御させることができます。この HOWTO では、この目的に達するために必要
なすべてを述べます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2. デバイスの設定

この HOWTO における設定では、 ALSA <http://www.alsa-project.org> のライ
ブラリとドライバモジュールを用います。なぜなら、ALSA は Linux で本格的
にオーディオや MIDI を使う上での標準的な手段 (あるいはそうなるべき) だ
からです。このチュートリアルでは、ALSA の 0.9.0 ブランチの使用を仮定し
ます。でも、仮想 MIDI のモジュールは ALSA 0.5.x にもあるので、以下に述
べるほとんどは ALSA 0.5.x でも同様に適応できるでしょう。 OSS/Free
(2.5.x 以前のカーネルにあるサウンドモジュール)や OSS/Linux <http://
www.opensound.com> サウンドアーキテクチャでは v_midi モジュールが使えま
すが、これは本文書の範疇ではありません。

ALSA の仮想 MIDI カードを使うには、snd-card-virmidi モジュールが存在し
ていなくてはなりません。最新バージョンの ALSA (や 2.5.x 開発版カーネル)
では snd-card-virmidi は '-card' 接中辞(ミドルフィックス)が取り除かれ、
snd-virmidi に名前を変えました。このモジュールをビルドしたことを確認し
てください。実際に使っているカードのモジュールをビルドするように ALSA
を configure しただけでは、おそらくこのモジュールはビルドされていないで
しょう。

仮想 MIDI ポートを利用可能にするには、virmidi モジュールをロードしなく
てはなりません。手動で試験的にロードできます:

$ modprobe snd-virmidi snd_index=1                                     
                                                                       

    訳注: alsa-driver 0.9.0rc4 以降、snd_index オプションは index に名
    称変更されました。最新の alsa をお使いの場合は、index=1 としてくだ
    さい。
   
snd_index の値を、空いているカード index のひとつ目になるように設定しま
す。 (カードがひとつだけなら、そのカードがすでに index 0 なので、
virmidi は index=1 に設定する) でも、仮想 MIDI カードが必要になった時に
、自動的に設定がなされるようにモジュールを設定すると、より便利です。そ
のためには、/etc/modules.conf (ディストリビューションによって、別の場所
にあることもあります) の ALSA に関する箇所に、次の項目を追加します:

 # OSS の /dev/sequencer と /dev/music (別名 /dev/sequencer2)          
 # をサポートするように設定する                                        
 # 岩井隆さんが、これらのサービスをひとつ目のカード、                  
 # すなわち card 0 以外にエイリアスする必要はないと                    
 # アドバイスしてくれました                                            
 alias sound-service-0-1 snd-seq-oss                                   
 alias sound-service-0-8 snd-seq-oss                                   
                                                                       
 # カード 1 (ふたつ目のカード) を仮想 MIDI カードに設定する            
 alias sound-slot-1 snd-card-1                                         
 alias snd-card-1 snd-virmidi                                          
                                                                       
                                                                       

ここでは、お使いのサウンドカードのハードウェアがひとつと仮定し、仮想
MIDI カードを index 1 であるふたつ目のカードとして設定しました (これは
とても有用だと思います)。もしあなたが筆者のようにふたつ目のサウンドカー
ドをすでにお持ちなら、以下を読んで上記設定を変更してください:

 # カード 2 (三つ目のカード) を仮想 MIDI カードに設定する              
 alias sound-slot-2 snd-card-2                                         
 alias snd-card-2 snd-virmidi                                          
                                                                       

もっと多くのカードをお使いでも、以上の説明を応用すれば何をやればいいか
はもうお分かりですよね…

設定したら、ALSA サウンドシステムを再起動する必要があります。その後、仮
想 MIDI カードが /proc/asound/cards で確認できるはずです:

$ cat /proc/asound/cards                                               
0 [card0          ]: ICE1712 - M Audio Audiophile 24/96                
                     M Audio Audiophile 24/96 at 0xb800, irq 5         
1 [card1          ]: EMU10K1 - Sound Blaster Live!                     
                     Sound Blaster Live! at 0xc800, irq 11             
2 [card2          ]: VirMIDI - VirMIDI                                 
                     Virtual MIDI Card 1                               
                                                                       

筆者のマシンの例では、VirMIDI カードが index 2 である三つ目のカードにな
っています。この構成は、/proc/asound/devices [MIDI デバイスのみ表示され
る]では、次の raw MIDI デバイス群として反映されます。

$ cat /proc/asound/devices                                             
  8: [0- 0]: raw midi                                                  
 41: [1- 1]: raw midi                                                  
 42: [1- 2]: raw midi                                                  
 75: [2- 3]: raw midi                                                  
 74: [2- 2]: raw midi                                                  
 73: [2- 1]: raw midi                                                  
 72: [2- 0]: raw midi                                                  
                                                                       

筆者の場合は、'2-' ではじまるデバイスが仮想 MIDI デバイスです。お使いの
システムにあるハードウェアのサウンドカードがひとつだけなら、 '1-' では
じまるデバイスが仮想 MIDI デバイスになるでしょう。

ALSA に含まれている aconnect ユーティリティを使うと、もっと分かりやすい
一覧表が見られます。aconnect は以後様々な用途で必要になるでしょう。-o
(もしくは -lo) オプション付きで実行すると、MIDI 出力が可能な MIDI デバ
イスを表示します。また、-i オプション付きで実行すると、MIDI 入力が可能
な MIDI デバイスを表示します:

$ aconnect -o                                                          
[...]                                                                  
client 80: 'Virtual Raw MIDI 2-0' [type=kernel]                        
    0 'VirMIDI 2-0     '                                               
client 81: 'Virtual Raw MIDI 2-1' [type=kernel]                        
    0 'VirMIDI 2-1     '                                               
client 82: 'Virtual Raw MIDI 2-2' [type=kernel]                        
    0 'VirMIDI 2-2     '                                               
client 83: 'Virtual Raw MIDI 2-3' [type=kernel]                        
    0 'VirMIDI 2-3     '                                               
$ aconnect -i                                                          
[...]                                                                  
client 80: 'Virtual Raw MIDI 2-0' [type=kernel]                        
    0 'VirMIDI 2-0     '                                               
client 81: 'Virtual Raw MIDI 2-1' [type=kernel]                        
    0 'VirMIDI 2-1     '                                               
client 82: 'Virtual Raw MIDI 2-2' [type=kernel]                        
    0 'VirMIDI 2-2     '                                               
client 83: 'Virtual Raw MIDI 2-3' [type=kernel]                        
    0 'VirMIDI 2-3     '                                               
                                                                       

表示されたデバイス群は、/proc/asound/dev ディレクトリツリーにある、
ALSA が提供する OSS 互換の raw MIDI デバイス群と一致します。一例を示す
と、/proc/asound/dev/midiC2D0 は、index 2 の仮想 MIDI カードにあるひと
つ目の MIDI デバイスです。これは aconnect では Virtual Raw MIDI 2-0 と
表示されます。 Debian では、これらのデバイスファイルは /dev/snd/ ディレ
クトリにもあり、旧来の OSS デバイスの場所である /dev/midiXX へ内部的に
リンクされています。シンボリックリンクを張った /dev/midiXX から ALSA の
raw MIDI ポートにアクセスできるのを確認するには:

$ ln -s /dev/snd/midiC2D0 /dev/midi20                                  
$ ln -s /dev/snd/midiC2D1 /dev/midi21                                  
[...]                                                                  
                                                                       

でも、これは必要不可欠ではありません。お父さんのマシンでやってはいけま
せんよ!

    訳注: 最近の alsa では /proc/asound/dev が廃止され、/dev/snd 以下が
    正式のデバイスファイルになりました。
   
ここまでで仮想 MIDI カードの作成と設定が完了しましたので、他の MIDI デ
バイスと全く同様に、お使いのアプリケーションで使用することができます。
好みのシーケンサやシンセサイザのアプリケーションのきちんとした設定箇所
に、 OSS 互換なら /dev/midi20 のような形式、ALSA MIDI ポートなら 80:0
のような形式で、必要なデバイス名を記入するだけです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

Figure 1. ALSA Midi Patch Bay

[alsa-patch]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.3. aseqview

 

Figure 2. aseqview

[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 に接続がなされます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4. アプリケーション

最後のこの節では、様々なアプリケーションでの仮想 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) で読めていること
を意味しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.1. シーケンサ

4.1.1. MusE

MusE は、Werner Schweerによって作られた完全な MIDI シーケンサです。 
http://muse.seh.de で入手できます。 “Config->Midi Ports” セクションで
、仮想 MIDI ポートを出力ポートとして設定する必要があります。 MusE では
、指定するポートは ALSA での名前 'VirMIDI X-X' です:

Figure 3. MusE - MIDI Device Configuration

[muse-01]

ここで、出力ポートに正しいポートを選んでいるか確認してください。つまり
その MIDI イベントを受信・演奏させたいソフトウェアシンセサイザが待ち受
けているチャンネルです。

Figure 4. MusE - Trackview

[muse-02]

どういうわけか、筆者は MuSE 0.4.9 で、'VirMIDI 2-0' を出力デバイスとし
て使うことができませんでした。'VirMIDI 2-1' で受信したい時、 'VirMIDI
2-0' デバイスに送信したかったのですが、そのふたつを逆にして使わなくては
ならなかったのです。多分筆者がまぬけなせいなのでしょうが、筆者には原因
が分からないので、あなたはちょっと実験をしなくてはならないかもしれませ
ん。 midi02 や midi2 形式のデバイスを使うことも可能でしょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.1.2. ttrk

Billy Biggs 作の ttrk <http://div8.net/ttrk/> は、シンプルで軽く安定し
た MIDI シーケンサで、トラッカーのようなステップ入力のインタフェースを
備えています。このシーケンサは、MIDI データを $HOME/.ttrkrc ファイルで
設定された MIDI ポートに送信することができます。

ttrk が /dev/snd/midiC2D0 に送信するようにするには、次の行を $HOME
/.ttrkrc ファイルに書いてください。

mididev = /dev/snd/midiC2D0                                            
                                                                       

これで設定完了です...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.1.3. Shaketracker

Juan Linietsky 作の Shaketracker <http://reduz.com.ar/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'
として表示されます:

Figure 5. Shaketracker - User Device Selection

[shaketrack]

このユーザデバイスに、'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                                                           
                                                                       

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.2. ソフトウェアシンセサイザ

4.2.1. Pure Data

Miller Puckette は、オープンソースのソフトウェアシンセかつマルチメディ
ア開発環境の Pure Data <http://crca.ucsd.edu/~msp/software.html> (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 デバイスを確認する上で、とても重宝します。

Figure 6. PD - MIDI Test Patch

[pd]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.2.2. Csound

Csound <http://www.csounds.com> は、いまどきのソフトウェアシンセサイザ
ほとんどの祖母にあたります。そして、MIDI にも対応がなされています。
'csound --help' を実行すると、MIDI 入力デバイスの設定が必要な箇所を表示
します:

-M dnam or --midieventdev=dnam ........ Read MIDI realtime events from device 
                                                                              

よって本書の例では、Csound を以下のように起動する必要があります:

$ csound -M /dev/midi21 -o devaudio midi.csd                           
                                                                       

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5. おわりに

ここまでの説明で、MIDI シーケンサで作曲・再生した音楽を、ソフトウェアシ
ンセサイザの音で演奏する方法がお分かりになったと思います。もちろん、
aconnect や aseqview のようなツールは、必ずしも MIDI ソフトウェアシーケ
ンサといっしょに使う必要がある訳ではありません。外部のシーケンサや外部
の MIDI キーボードからマシンに入ってきたイベントを、MIDI シーケンサを通
さずに直接ソフトウェアシンセにリダイレクトすることもできます。外部の
MIDI デバイスを、お使いのソフトシンセや、サウンドカードのオンボードシン
セに 'aconnect' するだけでよいのです。振り返っておさらい: PD, Csound,
あるいは KeyKit <http://www.nosuch.com/keykit/index.html> のような環境
では、アルゴリズミックなやりかたで MIDI イベントを作成することができま
す。アルゴリズミックな作曲は、古典的な Cubase ライクな MIDI シーケンサ
ではほとんど不可能です。aconnect を使うと、生成された MIDI イベントを、
お使いの MIDI 受信可能なサウンドモジュールならどのようなものにでもルー
ティングできます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

6. 謝辞

筆者は、岩井隆さんに、この記事を準備するにあたっての技術的な援助と、日
本語に関する貴重なアドバイスをいただいたことを感謝します。隆さん、あり
がとう!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

7. 日本語版あとがき

原文の最新版は http://linux-sound.org/quick-toots/
4-sequencers_and_softsynths/quick-toot-midisynth_howto.html に、ありま
す。

翻訳にあたり貴重なアドバイスをいただいた、中野武雄さん、濱崎健さんに感
謝します。 (2003/08/09)

