追記(2007/12/04):Windows Vista に対応しました。
2005/11/06 執筆
最近はコンピュータで音楽といえば普通の人なら MP3 などの波形データを扱うことがほとんどだと思います。しかし、以前はマシンパワーが十分でなかったため、MIDI とよばれるものを使っていました。
これは、言ってしまえば楽譜データです。コンピュータはこの楽譜データを読んで演奏をするわけです。データとしては楽譜だけなのでとても小さいですから、コンピュータの処理は少なくてすみます。しかし、コンピュータに搭載された MIDI 再生機能が違うと微妙に音質が変わったりするという欠点があります(ちなみに、MIDI はこれに対応した外部楽器と連携をとることも出来ます)。その一方で、音楽の知識があって楽譜を書くことが出来る人なら、この MIDI データを自分で作ってコンピュータに演奏させることが出来ます。これはスゴイ利点です。本来なら、楽器を用意してその楽器を演奏できなければいけないところを、コンピュータが代わりにすべて演奏してくれるのです。ですから、オーケストラ級の演奏をさせることも、楽譜さえあれば簡単にできてしまいます。もちろん、そこに自分の個性的な表現(テンポや強弱など)を入れることも出来ます。これは、MIDI の曲を作っている人が(奏者ではなく)指揮者になれることを意味するのかもしれません。
一方で、この MIDI は年々技術が発達して今では手軽に聞くことが出来るようになっています。Web サイトに使われている BGM などはサイズが小さいという利点を生かして、現在のところ MIDI を使っているところが多いはずです。
そういう事情ですから、DTM(DeskTopMusic)と呼ばれる分野において作曲したり、アレンジ曲を作ったり、耳コピで曲を作るような人たちは MIDI を積極的に使っている(ハズな)わけです。ただし、そういうプロやセミプロの人たちは、もっともっと高価な MIDI 機器を使っているのですが・・・。
とはいえ、普通の人が何気なく使っている MIDI の再生機能はお世辞にも良い物とはいえません。聞ければいいか、のレベルです。その一方で、趣味で MIDI の曲を作った人などは積極的にそれを Web で公開しています。それならば、自分で MIDI の曲を作れないまでもそういった曲を「まともに」聞いてみたいとは思いませんか?
そのためには多少なりとも MIDI の仕組みを知らなければいけません。そして、近年では VST/VSTi や DX/DXi といった技術が積極的に使われるようになってきています。このコーナーでは、これらの技術を使って MIDI を楽しむにはどうしたらよいかを解説したいと思います(プロではないので必ずしも正しい解説ではないかもしれませんが、まぁ、こんな感じか、というのが伝われば幸いです)。
ただし、ここでは主に「パソコン上で」取り扱うことを考えます。また、ある種の MIDI を扱うソフトを「MIDI シーケンサ(あるいは単に「シーケンサ」)」などと言いますが、ここでは明確に切り分けて説明できないので、シーケンサという言葉は使用しません。
コンピュータに搭載されている拡張機器のことを一般に「デバイス(まれにモジュール)」といいます。デバイス自体は、コンピュータの中に内蔵されていたり、後から買ってきてコンピュータの外に付け足したりします。
Windows の場合、ソフトがデバイスを利用するには「デバイスドライバ(単にドライバともいいます)」を仲介して行うことになります。つまり、ソフトはドライバに対して命令やデータを送ることになるわけです。デバイスドライバは、実際のデバイスに処理を行わせ、出力結果が得られます.。ここでは、このようなドライバと実際のデバイスをセットにした処理系の枠組みを「~システム」と呼ぶことにします(ただし、実際にはこういう呼び方はなく、通常は単に「~デバイス」と言います)。
また、デバイスは必ずしも物理的な機器である必要はありません。つまり、コンピュータ上に仮想的に作られた機器でも良いわけです。例えば、あるドライバを作ったとき、実はそのドライバのために作られた専用のソフトが処理を行うような仕掛けであれば、そのソフトは仮想デバイスということになります。
そして、デバイスの処理結果は外部の AV 機器へ出力されたり、別のデバイス(ドライバ)へ送られたり、ドライバを介して処理命令を出したソフトへ送られることになります。
今後、すべての話に共通するものとして、サウンドシステムというものを考えます。サウンドシステムはデジタルサウンドデータ(いわゆる Wave)をスピーカーなどが出力できる形式(一般にはアナログ信号だけどこれからはデジタル信号も)に変換して、そういったスピーカーなどの外部機器へ音声信号を出力します。これがいわゆる「音源(デバイス)」というもので、普通のコンピュータでも大抵は初めから搭載されていて、やはりドライバを介して様々なソフトが利用します.。例えば、MP3 プレイヤは MP3 をデジタルサウンドデータに変換してサウンドシステムに渡すわけです。なお、サウンドデバイスの主要な役割はスピーカー等の機器へ出力することなので、特殊用途をのぞいて仮想デバイスではなく実デバイスになります。
では MIDI について見ていきましょう。MIDI の曲を鳴らすもっとも単純な考え方は、ソフトが MIDI ファイルの内容を解釈して、そのままソフト自身がデジタルサウンドデータに変換してしまう方法です.。これならば、ソフトがサウンドシステムにデジタルサウンドデータを渡すだけで話はすみます。
しかし、これだと他のソフトはその機能を使うことが出来ません。プレイヤ機能が不満なんだけど・・・、といってもそのソフトでしか MIDI は演奏できないということになってしまうわけです。
そこで、MIDI データからデジタルサウンドデータ(波形データ、音色)を作る部分を専門のシステム(以下「 MIDI システム」)に任せてしまうようにします。ソフトが提供するのはプレイヤ機能や、MIDI データに対する簡単なエフェクト(音量の調整やパンなど)等に限り、MIDI データを MIDI システムに送り、MIDI システムは生成したデジタルサウンドデータをサウンドシステムに送るわけです.。こうすることで、MIDI を扱うソフトの開発負担が減り、様々なバリエーションのプレイヤ等が登場しやすい状況になります。なお、MIDI デバイスはサウンドシステムへデータを送るので、仮想デバイスである場合が少なくありません(実デバイスの場合は、そのデバイスで処理された結果がもういちどコンピュータの中を通ってサウンドシステムへ送られるイメージです)。
なお、コンピュータ上に複数の MIDI システム(ドライバ)がインストールされている場合、ソフトウェアによっては MIDI データをどの MIDI システム(ドライバ)へ出力するか選択できるようになっており、この出力先を選択する機構のことを MIDI Mapper (MIDI マッパー)と呼びます。この MIDI Mapper は Windows 自体にも組み込まれていて、コントロールパネルから Windows が標準で使用する MIDI ドライバ(システム)を選択することができます(後述)。
しかし、まだ問題はあります。波形データをそのまま記録している Wave や MP3 と違い、MIDI の場合はこれだとどのような音が出るか、つまり MIDI データからどのような波形の音(音色)が出るかが MIDI デバイスに依存してしまいます。もちろん、MIDI の曲には「このパートはこの楽器」というような指定も書いてあるのですが、同じピアノでも音色が気に入らない場合はピアノの音色だけ別の MIDI デバイスの物を使いたいと思うかもしれません。しかし、残念ながら従来の枠組みはそういったことに向いていませんでした。
そこで登場したのが、楽器(どのような音色を出すかを決定し、デジタルサウンドデータを生成する仕組み)は別にしてしまおうという発想です。
これがドイツの Steinberg(スタインバーグ) という有名な会社が提案した VST(Virtual Sound Technology) という枠組みです。ただし、もともとはエフェクト機能についてのみ、そのように独立させようという発想だったそうで、単に VST というと、エフェクト機能を指すことが少なくありません。これに対して、楽器機能は VSTi(Virtual Sound Technology instulment) と言います。
この枠組みでは、「VST ホスト(VST 機能に対応したソフト、と言う意味)」に、VST/VSTi プラグイン(プラグインは後からソフトの機能を拡張するためのコンポーネントで、DLL と呼ばれる形式のプログラムが主)という形で楽器を登録していきます.。そして VST/VSTi は商用のもの、無料のもの、特定の楽器に特化したもの、いろんな楽器を同時に使えるものなど様々なものがあります。
ちなみに、DX/DXi もほぼ同様の代物ですが、こちらは Microsoft が DirextX という Windows 上での枠組みに合わせた企画で、ソフト開発者のためにちょっと書くと、これらのモジュールはフィルタとして登録できるので、DirectX(特に DirectShow) を通したソフト開発がやりやすくなっています(でも GraphEdit にフィルタ自体はあるんだけどうまく接続できない・・・)。とはいえ、現時点では VST/VSTi が圧倒的に優勢です。
さて、現在のところこの形式が主流なのですが、お気づきのとおりこれでは音色こそ自由に選べるようになったものの、他の MIDI ソフトを気軽に使うというわけにはいかなくなってしまいました。プロの方は高価なお気に入りの DTM 統合環境(そう言った物を「DAM(Digital Audio Workstation)」といって、必ずしも MIDI だけを扱うための物ではありませんが、VST ホストにもなっていて大変高機能である物が多いようです)を使って音楽(MIDI)を自由自在に操るのでしょうが、私のような聞くのがメインである人にとってはデバイスとして機能してほしいところです。
そこで、仮想 MIDI ドライバを使用します。このドライバは MIDI を扱うソフトからは通常の MIDI 入力を持つデバイスドライバとして見えますが、その一方で MIDI 出力をするデバイスであるかのようにも振る舞います。そして、大抵の VST ホストには MIDI 入力を受け付ける機能があります。つまり、MIDI ソフトがこの仮想ドライバにデータを送ると、VST ホストが仮想ドライバの出力からそのデータを受け取るという仕掛けになります.。こうすれば、MIDI を扱うソフトからは単に従来通りの MIDI システムがあるように見えるわけです(もちろん、VST ホストは常に起動しておかなければなりませんが)。
それでは、実際にこのような環境を作ってみましょう。その前に、今の環境で MIDI がどのような音色で演奏されるか聞いておくのも良いかもしれません。
なお、これまでの説明からもうおわかりかもしれませんが、以下のソフトの中で実際に音色に影響するのは VST インスツルメントだけです。
まずはじめに、VST ホストを用意します。今回は、MIDI デバイスの代わりにすることが主目的なので、そういったことに特化したものを用意します。定評があるのは.というものです。30日間試用出来るので試してみましょう(ライセンス登録料は\6,720)。基本的に、ダウンロードしたらインストールするだけです。(このソフトは特別な設定をしなくても Vista で動作します。
インストール出来たら、とりあえず起動し、画面右上にある「PLUG」ボタンと「FUNC」ボタン.を押してください。それぞれ使用可能なプラグインの一覧と使用可能なデバイス等が確認、選択できます。
続いて、現在使用できる MIDI を出力する機器を見てみます。画面左上の「SETUP」ツールバーから「MIDI」ボタン.を押します。すると「MIDI入力リスト」と「MIDI出力リスト」が現れます。それぞれ各ID欄の「デバイス名」をダブルクリックすると登録可能なデバイスのリストが現れ、選択できるようになっています。「MIDI出力リスト」は CONSOLE が MIDI データの処理を別のデバイスに任せる際に出力する先ですので、今回は無視します。一方「MIDI入力リスト」は CONSOLE に対して入力するデバイスの設定です。仮想ドライバを選択したいところですが、まだインストールしていないのでまだ選択しません。
確認が終わったらひとまず CONSOLE を終了しましょう。
ちなみに、「~IN」とか「~OUT」という表現は自分が主体となります。つまり、自分から見て出力する先のデバイスが「~OUT」、自分へ入力してくるデバイスが「~IN」です。例えばデジタルサウンドデータはサウンドデバイスの入力にデータを送るので「サウンド IN」というようなデバイスを選択したいところですが、これは「サウンド OUT」となるわけです。
次に、VSTi を用意します。CONSOLE にも最初からついているものがありますが、もっと音質の良いものを用意します。ここでは、国産かつ無料で定評のある.を使ってみましょう。ダウンロードしたらインストールしても良いのですが(多分それは DXi を DirectShow のフィルタとして登録するためなので)、VSTi 版プラグイン(Synth1 VST.dll)を CONSOLE のプラグインフォルダ([CONSOLE のフォルダ]\VST)へコピーしてください(この作業が、楽器を VST ホストに登録することに他なりません)。Synth1 は MIDI の標準的な楽器をすべて備えているので、楽器の登録はこれで完了です。ちなみに、CONSOLE のプラグイン用フォルダは自分で好きなところを選択することも出来ます。詳しくは CONSOLE のヘルプを見てください。
さらに仮想 MIDI ドライバをインストールします。定評があるのは.の「MIDI Yoke」です。これをインストールしてください。最近はインストーラの付いているバージョンが出ているようですので、特に難しいことは無いと思います。インストールが完了したら、再起動して、仮想 MIDI ドライバの用意は終わりです。
Vista に「MIDI Yoke」をインストールする場合は、Vista の UAC 機能を無効にするか、管理者としてインストールしなければいけません。UAC を無効にする方法は別に譲ります。管理者としてインストールする場合は、スタートメニューから「アクセサリ」にある「コマンド プロンプト」をたどり、右クリックして「管理者として実行」からコマンドプロンプトを起動し、MIDI Yoke のインストールプログラム(MidiYokeSetup.msi)を実行します。具体的には、たとえば「MidiYokeSetup.msi」が
D:\Soft\Free\MidiYoke
C:\Windows\system32>D:\Soft\Free\MidiYoke\MidiYokeSetup.msi
Windows 自体に MIDI を出力する際は MIDI Yoke に出力しなさい、ということを指示します。「コントロールパネル」から「サウンドとオーディオデバイス」を開き、「オーディオ」タブの「MIDI 音楽の再生」にある「既定のデバイス」を「MIDI Yoke NT: 1」に設定(これが Windows の MIDI Mapper).し(Windows が NT 系でない場合は別の表記かもしれません)、設定ウィンドウを閉じます。
改悪だらけのヘッポコ Vista では、Windows 標準の MIDI Mapper が削除されてしまいました。しかし、MIDI Mapper の考え方自体は残っており、レジストリをいじれば設定できるようです。ということで、この設定を簡単にやってくれる MIDI Mapper を作ってくださった方がいます。ここでは作者の方に心から感謝し、腹の底から Microsoft をののしりつつ、これを使って設定しましょう。
Putzlowitscher Zeitung. というサイト内のブログから2007年8月7日.を開き、
Download (putzlowitsch.de): Putzlowitschs Vista MIDI-Mapper Control-Panel Version 0.92
ダウンロードした ZIP を解答すると「PLWMidiMap.cpl」というファイルが現れます。このファイルは、ダブルクリックでそのまま実行できるので実行すると、XPまであったような設定部分がウィンドウとなって現れる.ので、これで設定します。
ちなみに「PLWMidiMap.cpl」ファイルを、Windows のシステムディレクトリ下にある「system32」にコピーするとコントロールパネルから設定できるようになるようです。
最後に CONSOLE の設定を行います。
再び CONSOLE を起動し、まずは先ほどの「MIDIの設定」ウィンドウで「MIDI入力リスト」の ID が 1 のデバイスに「MIDI Yoke NT: 1」を割り当てて.、OK ボタンを押してウィンドウを閉じます。
続いて、FUNCTION ウィンドウの MIDI を開くと DRIVER 名が「MIDI Yoke NT: 1」となっているデバイス.が増えているので、これをドラッグ&ドロップでワークスペースへ配置します(これが MIDI Yoke からの MIDI データの入力を表すコンポーネントになります)。同様に FUNCTION ウィンドウの AUDIO からデジタルサウンドデータを出力するデバイス(私の場合は TYPE が「Wave Out」で DRIVER が文字化けしていました.)をワークスペースへ配置します.。あとは、この間に楽器(Synth1)を配置すれば完了です。
それでは楽器を配置しましょう。PLUGINS ウィンドウの VSTi を開くと PLUGIN に「Synth1 VST」というのが増えている.はずですので、先ほどと同様にワークスペースへ配置してください。
一通りの配置が終わったら、結線します。それぞれのコンポーネントの白い四角マークがデータの入出力ポート(左側が入力、右側が出力)になっています。MIDI の曲は最大16のパートを持つことができ、MIDI Yoke を見ると分かるとおりそれぞれのポートごとに出力することも出来ますが、一番上の「om」というポートからはすべてのパートが出力されます。ここではひとまず、MIDI Yoke の「om」から Synty1 VST の「in」へ結線します(これもドラッグ&ドロップの要領です)。続いて、Synth1 VST の出力「1」「2」をそれぞれサウンドデバイスの「1」「2」につなげます(多分、それぞれ右チャンネルと左チャンネル).。
これで一通りの設定が終わったので、CONSOLE のスイッチを入れます。画面左上のツールバー「PLAY」の横にある四角いボタンを押すとオレンジ色に光ります.。以上ですべての準備が整いましたので、何か MIDI の曲を聴いてみてください。
さて、上図のままだとまだ問題があります。一部のソフトでは停止ボタンを押しても音が鳴り続けてしまうかもしれません。大抵の MIDI デバイスはソフトから「CC(Control Change)」という命令を受け付けるようになっていて、それを使って再生や停止を制御するソフトが少なくありません。これを行うために、まずは MIDI Yoke の「om」から synth1 の「cc」にも結線を行ってください.。さらに、synth1 のピアノマークを押して synth1 の設定ウィンドウを開いたら、右上にある赤い右矢印.を押します。すると CC の設定画面が現れるので、右上の「CC」ボタンを押して赤く光った状態にすれば、CC が有効になります。
さらに曲を聴いてみて違和感を持ったかもしれません。実は、synth1 は標準的な MIDI の楽器(音色)をすべて備えていると言っても、一度に作れる音色は一つだけです。直感的には、CONSOLE 上に置かれた一つの楽器コンポーネントは、一つの楽器であるととらえることができます。従って、このコンポーネント(synth1)にはピアノの音を出させよう、と決めたら、ピアノの音しか出ません。ですから、すべてのパートが同じ音色で演奏されてしまっているのです。
これを解消するには、MIDI Yoke の「om」をのぞくすべてのポートに対して synth1 をつなげてあげる必要があります。MIDI の個々のポートからは、旋律のほかにそのポート(パート)がどの楽器を使用しているかなどの情報も送出されるので、synth1 のようにコンポーネントがその情報を利用できる場合は、自動的にそのポート(パート)用の楽器を選んでくれます。ですから、ちょっと面倒ですが.のような形にしてあげると、うまく演奏されるようになるわけです(すべての synth1 に対して CC を有効にしていかないといけないので意外と面倒なんですが・・・)。
実は、この辺の楽器の扱いは私も詳しくありません。もしかするともっとスマートなやり方があるかもしれません。その辺の解説は別に譲ります。
synth1 のように一つのコンポーネント(機器)が一つの楽器の役割を担うものに対して、一つのコンポーネント(機器)が複数の楽器の役割を担うものもあります。このようなコンポーネント(機器)の機能を「マルチティンバー(multi timbre)」機能と呼び、そのような機能を持つ機器は「om」ポートから出された全ポートのデータを一つのコンポーネントで処理して複数の楽器で演奏することができます。
マルチティンバー対応の安価なものとして、ROLAND の.があります。これには以前通りのソフトウェアシンセサイザの他に VSTi と DXi のプラグインが入っており、これらを使用すると GS や GM2 規格に準拠した音色で演奏させることが出来ますし、Synth1 のように16パート分設定しなくても大丈夫です。
Vista で VSC-MP1 を使用する方法が公式ページ.に記載されています。ただし、使用できるのは VSTi と DXi のみとなっており、また、x64 版の Vista ではそれも使用できません。
技術が進歩していくと多機能でより専門的で高度なことが出来るようになりますが、裏を返せば複雑で素人には分かりにくいものになりがちです。このコーナーで最近の MIDI 事情を多少なりとも分かっていただければ幸いです。