MIDIについて


ファイルフォーマット / データフォーマット / 音源
/ 公開するファイル/ データの中継 / 録音 / リンク // もどる

詳しい話をする気はないが、ハマりがちなポイントなどをいくつか。


ファイルフォーマット

スタンダードMIDIファイル(SMF:拡張子は.midか、まれに.smf)と呼ばれるフォーマットが用いられるが、SMFにも「SMF format0」「SMF format1」「SMF format2」の3種類があって、多少面倒なことになっている。

SMFフォーマットの話をする前に「チャンネル」と「トラック」について説明しなければならない。MIDIを再生する際、データを入力>データを保存>データをシンセサイザーに送る>音声信号が得られる、という手順になる(ここでいうシンセサイザーは楽器の名前ではなく、記録された情報を音声信号に変える装置やソフトウェアのこと)が、MIDIチャンネルはシンセサイザーにデータを送るときに使う単位、トラックはデータを収納・再生するときの単位を示す。

SMF format0 では、すべてのチャンネルのデータを1つのトラックに保存して、再生時に各チャンネルに振り分ける。これに対しSMF format1 では複数のトラック(必ずしも1トラックに1チャンネル分のデータしか入れないとは限らないし、1つのチャンネルのデータを複数のトラックに分けてもよい)を使ってデータを保存する。引越しの荷物を1台のトラックで運ぶか、複数台のトラックで運ぶか、といったシーンを思い浮かべればイメージが近いだろうか。

format0だと、再生時のチャンネル振り分けでもとのチャンネル番号が無視される(チャンネル番号が入れ替わることがある)ので、MIDIデータを再度シーケンサーに読ませる予定がある場合はformat1を使いたいのだが、format0しか扱えない機器やソフトウェアもあるので注意が必要。SMF format2 はほぼ廃れてしまった模様。

ちなみにSMF以外のフォーマットとしてはRMID(RIFFのコンテナにSMFと同様のシーケンスデータを収納したもの:拡張子.rmi)が有名で、cherryでも読み込める(2009年現在Dominoでは読めない)。Winユーザーの人は、システムディレクトリ(C:\WINNTなど)にあるMediaというディレクトリを開いてみれば、いくつかサンプルが見つかるはず。


データフォーマット

MIDIで送受信するデータを総称して「MIDIメッセージ」という。そのうち特定のチャンネル宛てのものを「チャンネルメッセージ」、接続先デバイス自体に向けたものをシステムメッセージという。

チャンネルメッセージは、演奏内容に関連する「チャンネルボイスメッセージ」(ノートオンやノートオフのほか、コントロールチェンジやプログラムチェンジも含まれる)とチャンネルの状態(モード)を制御する「チャンネルモードメッセージ」(オールノートオフやリセットオールコントローラなど)に分かれる。

システムメッセージは、汎用の「システムコモンメッセージ」(ソングセレクトなど)と機種依存の「システムエクスクルーシブメッセージ」(GM System ONやMastarVolumeなど:全体の制御やマスターイフェクトとして使うのが本来の用途なのだと思う)、同期用の「システムリアルタイムメッセージ」に分かれる。


音源

多分これが一番やっかい。まず、GMという一番基本的な規格があって、世の中のMIDI規格はほとんどこれを満たしている(はず)。GMを拡張した規格(GMのスーパーセット)としてRolandのGS(高性能音源としてはもっとも人気が高い:歴史的には、GSのサブセットとしてGMができたらしい)とYAMAHAのXGが有名。そのほかにGMに代わる新しい規格としてGM2(それなり以上に高性能な音源でないとフル機能は使えない)というのもある。

同じGSやXGでも拡張の度合いによってさらに細かい区別があり、GSならSC-55・SC-88・SC-88Proなどにそれぞれ互換する(これは規格で決まっているものではないらしい)製品があり、XGではLevel 1〜3(こちらはきちんと規格化されており、これ以外にもliteなどがある)といった具合に分かれている。

ここで困るのは、たとえばGS音源用のデータをGM音源で再生しようとするとうまくいかないことがあるのはもちろん、GM音源用のデータをGM対応の音源で再生する場合であっても、音源が違うと同じ音は出ないということ。

ほとんどの音源がGMに対応しているとはいえ、たとえば音色番号1番に生ピアノが入っていることまでは確実に予想できても、どんな音色の生ピアノなのかは予想できない。とくに、音色番号29番のmuted guiter などは、音源によってミュートのかけ具合が大きく違い、とんでもない音が出る場合がある。そこまで極端な例ではなくても、使用する楽器が増えれば増えるほど、小さな差異が積み重なって大きな違和感になることがある(反対に、1チャンネルしか使っていないような場合だと、音色が多少変わっても違和感が少ないことがある)。

音色以外にも、バンクセレクト(音色数が128では足りないので、バンク0の音色50とか、バンク8の音色15とか、そういう指定の仕方をする:GMではもともと128種類しか音色がないので無視される)の手順が違ったり、最大同時発音数(GMは16)が違ったりする。また、GS音源ではドラムスのチャンネルを2つ設定でき、コントロールチェンジの180番(Use For Rhythm)を1か2にすることでドラムセットを2種類併用できる(デフォルトのドラムセットは1番を使っているはず:複数のトラックから1つのドラムチャンネルにデータを送ることも可能)。

ソフトウェア音源/ハードウェア音源ともに、本家であるローランドヤマハがやはり強いが、最近(Win98以降?)のWindowsだと、Microsoft GS Wavetable SW Synth というソフトウェアシンセサイザーがデフォルトで入っており、MIDI音源つきのサウンドカードを使っている場合を除き、Windowsユーザーはこれを使っている人が大半だと思われる。Macだと、恐らく、QuickTimeについてくるソフトウェア音源(Windows版にももちろん付属している)が一般的で、これもローランド製なのだが、SW Synthとまったく同じ音ではない(一応、同じファイルを再生・録音して波形も確認した:QuickTimeではWindowsのコントロールパネルで設定したMIDI出力先は無視される、というか使われない)。

このため、Win/Macでのシェアはローランドの圧勝になっている。ちなみに、環境によるのかもしれないが、SW Synth よりQuickTimeの方が再生が遅く16秒につき100msくらい遅れる(全般に重い)。また、QuickTimeは「サウンドセットを追加」することでGSに対応できるらしいが、筆者はこれがQuickTime Player の話なのかQuickTime Pro の話なのか知らない。


公開するファイル

上記を踏まえると、曲を鑑賞してもらう目的でMIDIファイルを公開する場合はSMF format0 を利用し、音源についてはMicrosoft GS Wavetable SW Synth とQuickTimeのソフトウェアシンセできちんと音が出るようにしておくのが無難だということになる(受け手がシーケンサーに読み込んで編集する前提ならformat1の方が便利)。

Windowsであれば(OSのバージョンが古くない限り)どちらの音源も簡単に入手できるので、シーケンサではSW Synth を使ってQuickTime音質チェックをすれば問題ない(Windows版のQuickTimeとMac版のQuickTimeで同じ音が出るとは限らないが)。MacでSW Synth を利用できるのかどうかはよくわからないが、WindowsにもQuickTimeはあるので、推奨音源としてそちらを指定しておけばよい。PCUnixで作業している場合はいったん録音してMP3などのファイルにしてから公開した方が無難かもしれない。

推奨音源としてSC-88あたりを指定しているケースをよく見かけるが、外部音源を持っている人自体100人に1人もいない(安物のセットパソコンはたいていオンボードサウンド)だろうし、ウェブブラウズ時に音源を立ち上げている人となるとさらに少ないだろうから、最低限SW Synth かQuickTimeのどちらかで再生チェックをしておかないと、意図せず酷い音で再生されてしまう可能性が非常に高い。

詳しくは後述するが、最近は音声圧縮技術・ストレージ環境・ネットワーク環境などがよくなっているので、MP3などの圧縮音声フォーマットによるファイル公開もかなり手軽に利用できる(192kbpsでも5分の演奏で7MB強)。MIDIファイルはプログラムのバイナリファイルに対するソースコードのような位置付けで公開するというのも一案だと思う。


データの中継

パソコンでMIDIを鳴らす場合、再生ソフトと音源との間に仲介ソフトを挟むことが多い。WindowsだとMIDI Mapper というソフトウェア(後述のMIDIマッピングをいじるソフトではない:紛らわしい名前だ)がこれを担当している(後述するが、設定の仕方が奇妙)。MIDIデータはポートとよばれる出入り口(のようなもの)を通って運ばれるが、ポートにはMIDI IN(入り口専用)とMIDI OUT(出口専用)の2種類があって、中継ソフトは入り口と出口を両方持った中継所のようなものにあたる(仮想MIDIケーブルという呼び方もあってわかりやすい喩えなのだが、1つのポートに複数のソフトを接続することも可能なので、単純にケーブルの代替をしているわけではない)。

たとえば、INポートが1つしかないソフトウェアシンセを使っていて、2つのソフト(シーケンサーとソフトウェアキーボードとか)から音源を利用したい場合、両方のソフトのOUTポートを中継ソフトのINポートにつないで、ミックスしてから音源に渡す、といったことができる(ソフトウェアシンセのINポートには1つのソフトからしか入力できないのが普通だが、上でも述べたように、中継ソフトは複数のソフトを同時に相手できるのが普通:昔のMIDIマッパーは1ポートにつき1ソフトだった気もするがよく覚えていない)。

中継ソフトは前述のMIDIマッパー以外にもいろいろとあり、サウンドカードを買うと付属ソフトとしてついてきたり、MIDIプレイヤーの付属機能になっていたり、Windows用のMIDI YOKEトップページ)などオンラインソフトとして公開されているものもある。この手の中継ソフトを使う場合、同じMIDIソフトのMIDI INとMIDI OUTを同じポートに設定するとMIDI Feedbackというエラーが出る(たとえば、MIDIソフトのMIDI OUTから出た信号が中継ソフトの1番に入って、中継ソフトの1番に入った信号がMIDIソフトのMIDI INに入って、MIDIソフトのMIDI INに入った信号が中継ソフトの1番に入って、、、という無限ループになる)。もっと複雑なパターンでフィードバックが起きることもあるが、最低限上記のような設定になっていないことを確認しておこう。

MIDIマッパーは設定の仕方がWindowsのバージョンによって違う。詳しいことに関しては、もっと正確に説明しているサイトトップページ)があるのでそちらを参照して欲しいが、とりあえず「マルチメディア」とか「サウンド」と書いてある設定を選択して「MIDIの再生」を変更すると、MIDIマッパーが受け取ったMIDI信号の送り先を変えられる。なぜ設定項目の名称を「MIDIマッパーの出力先」にしないのか不思議でならない(ちなみに、オーディオの再生に関する設定は「waveマッパー」(単にWave out とかaudio driver と呼ばれる場合もある)のためのもの)。

古めのMIDIマッパーはINポートの番号を手動で指定していた気がする(あまりよく覚えていない)が、比較的新しいMIDIマッパーなら気にしなくても勝手にINポートを切り替えてくれる(はず)。また、NT系でのMIDIマッパーやWaveマッパーの設定はグローバルな設定ではない(ユーザーごとに別々の設定が使われる)ので、MIDIデバイスを使うユーザーで設定をしなければならない(管理者ユーザーで設定しても反映されない)。

ソフトウェア上に限らず、たとえばMIDI IN 端子が1つしかついていないサウンドカードに3台のキーボードを繋いで録音したい場合などは、MIDIミキサーと呼ばれる機材(ボリューム調整やイフェクトなど、より高度な機能がついている製品が多い)を通して、1つめの楽器はMIDIチャンネル1番に、2番目の楽器は5番に、などと振り分ける。MIDIマッピングを変更して、たとえばダンパペダルの信号(MIDIの用語ではプログラムという)しか出せないフットペダルをソステヌートペダルとして使えるようにできる製品もある(MIDIマッピングを変更できるソフトウェアももちろんあり、たとえばKDEのKmidがこの機能に対応している)。


MIDIの録音

ソフトウェア音源で鳴らすなら別ページで紹介するTiMidity++を使えばよい。音源から直接録音するのでシーケンサーやMIDIプレイヤーで鳴らしたときよりも高音質になる(貧弱な環境ではとくに)。TiMidity++以外のソフトウェア音源(前述のMicrosoft GS Wavetable SW Synth とか)やハードウェア音源を使う場合は、Kazuki Oikawa さんのAudioEncoderというソフトウェア(Lameのフロントエンドとしてはちょっと使いにくいが、MIDIの録音ソフトとしては非常に優秀)が便利。外部音源の専用機などは、たいてい自前でレコーディングソフトを持っている。ぴぃさんのぽけっとれこーだーなど、録音機能だけのソフトを使うのもアリだが、ファイル数が多いとちょっと面倒かもしれない。PCUnixなら、KDEを入れればとりあえず録音に必要なソフトは一通り入るはず(バージョン1.2.3現在ではまだ機能していないが、後述のaudacityでもMIDIの再生や録音が可能になる予定)。


参考リンク

MIDI初心者のための0からはじめるCherry講座

Direct Art Studio

b-sharp.com

始めようDTMトップ

What is MIDI -SEQUENCE SOFTWARE-トップ

独り言

MIDIに限らず、作者の「作った通りの音」というのは(厳密にいえば作者の手元でも「完全に同じ音」は2度と出ないが、そういうことを無視しても)作者の手元でしか出ない。たとえば自分で録音した音を同じ機材を使って再生しても、少しボリュームを上げただけで印象が変わることがあるし、ヘッドフォン再生とスピーカ再生を比べた場合などはもっと顕著な変化がある。

が、こういったことを悲観する必要はないように思う。もちろん、一部のCDで現にやっているように、極限のHi-Fi環境を前提にして音を作り込むのもアリだが、逆に、変化の中でも生き残れるような作り込みを目指す(感覚的な表現しかできないが)ことで、より生き生きとした音になるのではないかと思う。

極端な話をすれば、リハーモナイズされて完全に別の演奏になったとしてもよい曲はよい曲でありつづけるわけで、そういうよさを活かそうという意識を持つことで、演奏者やエンジニアの仕事も生きてくるのではないか、ということ。たとえ別の人がコピー演奏をして改めて録音をしても、オリジナルの演奏者やエンジニアがよい仕事をしていれば、何かの形で生き残るのものがあるのだと思う。



もどる

自滅への道トップページ