MIDI 1.0/2.0はどのくらい「現役」の規格なのか?

MIDI 2.0の同人誌を出して、ぼちぼち売れているのですが*1、この本にどういう意義があるのか説明しておいたほうがいいかなと思いました。

みんな「MIDIなんてもう使われていない古い規格じゃないの?」とか「新しいバージョンを出して何の意味があるんだ?」って思うじゃないですか。でも実際には全然使われていないなんてことはなくて、今でもバリバリ現役で使われているし、MIDI 2.0は懐古趣味で作られた規格じゃないし、この本も懐古趣味で書いたわけではないんですよ。2020年に出るに相応しい規格なのです。

MIDIってそもそも何なんだっけ?

MIDI」と一言でいっても実はいろいろな構成要素があります。皆さんが「MIDI」と聞いて思い浮かべるものは、実際にはどれでしょうか?

多くは相互に依存しないので、現代でも役に立つものとそうでないものがありますし、MIDI 2.0としてバージョンアップする価値があるものとそうでないものがあるわけです。そういうわけで、以下ではこれら「MIDI」として扱われている技術要素が今後も存続する価値があるのか、個別に判断・解説していきます。

MIDIキーボード(入力デバイス) : 現役

MIDI規格に基づいて接続できるデバイスMIDIバイスと呼びますが、いま音楽制作の場面でMIDIバイスって使われているんでしょうか? その答えは圧倒的にYESで、たとえば音楽制作のためにDAWを繋いで楽器パートを打ち込む場面ではMIDIキーボードを使う人が多数でしょう*2DAWMIDIキーボードを使わない制作場面があるとしたらこんな感じです:

  • 全部オーディオチャンネルで録音して加工している(打ち込みパートなし)
  • ピアノロールに直接打ち込んでいる(こっちのほうが効率が良い/キーボードを弾けない(!))

…2つしか思いつかなかった。他にもこんな状況が考えられる、というのを思いついた人はコメント欄なりはてぶなりTwitterなりで言及してもらえればと思います。

MIDI音源モジュール(出力デバイス): ほぼ死亡

MIDIキーボードはあくまでMIDI入力」デバイスです。20世紀頃に「MIDIファイル」(SMF)が流行っていた頃はMIDI「音源」というのもあって、これらはMIDI出力」デバイスとしてMIDIメッセージを受け取って音楽を再生できる楽器として機能していました。こちらは、今では日の目を見ない存在です。特にSMFを視聴目的で利用する機会はほぼなくなりました(MIDIファイルの節とGeneral MIDIの節でまた触れます)。MIDIファイルでBGMを鳴らすWebサイトがもう無いのと同じです。音楽を聴くならMP3やFLACなどのPCMデータ一択でしょう。

そういうわけで「MIDI 2.0対応の音源モジュール」が出るとはちょっと考えられないです*3

懐古趣味で古いMIDI楽器を使う場面も考えられなくはないですが*4、昔ポピュラーだったMIDI楽器はだいたいソフトウェア音源として復刻しているので、およそ出番は無くなったと言ってよいでしょう。

もちろんシンセサイザーとしてのキーボードなどでは生演奏のほかにMIDI入力を受け取って音を出す目的で使えますし、人間の演奏入力をパイプラインで通して片方はシンセに流しつつもう片方は映像のコントロールなどに使うこともできるので、用途が無いわけではないです。

MIDIケーブル : だいたい死亡(USB / BLEに置き換え)

2020年現在、PCとMIDIを接続するのにシリアルMIDIケーブルを使う人はいないでしょう*5MIDI楽器同士、あるいはMI.1やmidiglueのような製品を介して古いMIDIバイスをPCと接続する場合には現役です。他にも電子工作方面はMIDIのシリアル接続と親和性が高いので、今でも使う人はいます。ただ一般的とは言い難いでしょう。DTM用途でMIDI楽器とPCを物理的に接続するなら、現在はUSB MIDI一択です。MIDIケーブルは過去のバイスと繋ぐ以外の役割を終えています。MIDIケーブルの新しい規格がMIDI 2.0のために出ることはないでしょう。

USBは1996年に初めて規定されたもので、MIDI音源でサポートしているものはかなり末期のものです(Roland SC-88Proに無くてSC-8850にあるくらい)。USB MIDIの仕様はMIDI 1.0が成立した1983年からだいぶ経ってから成立したものです。USB-MIDIについては昨年末に書きましたが別の同人誌がおすすめです

物理的に接続しない選択肢としては、BLEがあります。MaciOSAndroidではサポートされていますが、LinuxのBLE MIDIはまだ立ち位置が不安定です(一時期Bluezでサポートされていましたが外された模様)。あとBluetooth接続は遅延が問題になるので、USB接続を置き換える存在にはなりません。とはいえ、iOSAndroidのように、物理的に接続用コネクタを持ちようがない端末でもMIDI接続が可能になるポテンシャルは大きいものです。

MIDIメッセージ : 現役

OSIでいうところの物理層からトランスポート層あたりまでの話は時代性もありますが、その上でやり取りされるMIDI 1.0メッセージは、2020年現在でも現役で使われています。ここでは、90h がノートオンで80hがノートオフ、E0hがピッチベンドでF0hF7hがシステムエクスクルーシブ…といった意味付けが規定されています。このMIDIメッセージ仕様は、MIDI楽器とPCの間でやり取りするプロトコルとして用いられているだけでなく、純粋にソフトウェアの世界であるDAWVST/AUなどのオーディオプラグインの間でやり取りする場面でも内部的に使われます。特に音階の表現はMIDIの7ビット128段階の数値が広く一般的に用いられます。

MIDIでやり取りするのはデバイスを楽器として制御するための演奏命令(演奏に関する各種の命令)です。命令には、わかりやすくいえば「鍵盤を押す」ノートオン命令、「鍵盤から指を離す」ノートオフ命令、「音色を切り替える」プログラムチェンジ命令、「音量を変える」「左右の定位置を変える」「リバーブをかけて強さを指定する」などを実現するコントロールチェンジ命令などがあります(もちろん楽器は鍵盤だけではないので、あくまで概念です)。

もう少し具体的にいうと、ノートオン命令には「どのキーを押したか」「どれくらいの強さ(ベロシティ)で押したか」という情報が渡されます。MIDI 1.0の場合はどちらも0〜127で表します。全てのMIDIメッセージの形式が標準化されているので、どのMIDIバイスも命令を正しく伝えることができます。MIDI入力デバイスが今でも使われ続けているのは、どんなDAWでもほぼMIDI入力をサポートしているからです。

現役だけど内容は古い

もっとも、MIDI 1.0で規定された内容だけでは、音楽制作の現場ではだんだん機能不十分であると考えられるようになってきました。たとえば、データ部分が0〜127しか無いメッセージが大半で、この程度では表現力が足りません*6

また、MIDIメッセージには「チャンネル」を指定する部分もあって、これは同時に演奏できる音色の数にもなるのですが、MIDI 1.0では16チャンネルしかありません。現代のDAWを使った音楽制作では100トラック以上使うことがあり*7、16チャンネルでは到底足りません。

他にも、PCとMIDIバイスの間で機能の有無の確認などができればもう少し拡張機能を用意しやすいのですが、MIDI 1.0は単方向のプロトコルなのでそれも不可能です。こういった各種の機能拡大要求が溜まってきたので、MIDI 2.0としてこれまでとは互換性のない仕様を規定する必要が出てきたというわけです。

ちなみにMIDI 1.0の機能がしょぼすぎるということで、SteinbergはVST2からVST3に切り替えるにあたって、「MIDIサポート」を廃止しました。廃止したのにMIDIコントロールから入力を受け付けることができるのは、VSTホスト(DAW)側がMIDI入力を受け取ってVSTAPIによろしく変換してくれているということです。VST3には結局MIDIのノートオンに相当するNoteOnEventなどがあって使われています。

MIDI 2.0 UMPは、このMIDIメッセージ部分に相当する仕様です。今回同人誌としてUMPをターゲットにしたのは、ここがMIDI 2.0の新機能として一番わかりやすかったからでもあります。ちなみにプロトコルは主にMIDI-CIという別の仕様で規定されています。

楽器番号/音色セット(General MIDI): ほぼ死亡

MIDI楽器はプログラムチェンジという命令で「音色」を切り替えることができます。プログラムチェンジで指定できるのは0〜127の番号、あとせいぜい追加の「バンク指定」で0〜127の数字を2つ指定できるだけで、それ以上具体的な、たとえば波形データなどを指定することはできません。MIDI 1.0仕様が前提としているのは、その番号には既に楽器となるデジタル音源データが用意されていることです。これを用意していたのがMIDI音源モジュールであり、MIDI出力デバイスとして機能するキーボードシンセサイザーです。

この音色番号は、General MIDI (GM)という仕様によって、「1番はピアノ、16番はオルガン、24番はギター…」というように決まっていました。決まっていたのはあくまでざっくりとした音色名であり、そこにどんな音があるかは楽器のベンダー次第です。「ピアノ」と言ってもいろんな音があるのと同じです。MIDIデータとして制作し表現する音楽は、ここに限界がありました。

現代の音楽制作で使われているのは一般にはオーディオプラグインと呼ばれるもので、具体的にはSteinbergVSTAppleのAudioUnitといったAPIに基づいて作られたソフトウェアです(Linux方面でもLV2というISCライセンス前提の規格があって、今回技術書典9で同時に公開した「LV2オーディオプラグイン開発ガイド」はこのために書いたものです)。現代のDAWは、プログラムチェンジの音色番号を指定する代わりにこれらのプラグインのIDを指定して、プラグインインスタンスを生成し、そのプラグインのパラメーターを指定したり、よくstateと呼ばれる状態データの復元/保存によって標準的なパラメーターに収まらないデータを楽器のデータとして利用します。

こういう時代になると、音色番号を切り替えるだけで済む時代はおわりました。プログラムチェンジはおよそ死んだも同然です。もっとも、オーディオプラグインの中にはGMに相当する総合音源のようなものもあり*8、これらはプログラムチェンジを送るとプログラムチェンジとして機能することがあります。これらGM相当の総合音源も、単にGM互換だとGMを前提としたMIDIツールが使えるという以上のメリットは特にありません。

音色番号の代わりに楽器の情報を知る方法

オーディオプラグインが制作の中心になっている現在、DAWは複数オーディオプラグイン機構を同時にバラバラにサポートしなければならない状態になっています。楽器プラグインの詳細情報も、それぞれのプラグイン機構のやり方で取得しなければなりません。これを統一的に処理できるJUCEのようなフレームワークもありますが、あくまで私企業の実装であり、標準化されたデータ規約があれば、それに越したことはありません。

この方面では、MIDI 2.0にProperty ExchangeとProfile Configurationという仕様が策定されているのですが、まだ現在進行形です(器だけ決まっていて中身が規定されていない状態)。具体的な情報がまだ少ないので、今回の同人誌でも基本的に対象外のトピックとして、あまり触れていません。

MIDIファイル : ほぼ死亡

かつて音楽データを生のPCMデータでやり取りすることは、ネットワークの帯域の問題やPCの処理速度の問題で事実上不可能でした。MIDIファイルはそういう時代に音楽を表現する形式として有意義だったものです。しかし現在はそういう技術的な制約は消失し、作者が自らの手元で録音した音源をPCMのMP3やFLACなどの形式で配布できるようになりました。MIDIデータは音源次第で聞こえ方が大きく変わるので、細かくこだわって調整しても意味が無くなってしまい、芸術作品としてイマイチです。

そういうわけで、MIDIファイル形式としてのSMFは、もう楽曲の交換に使われることはほぼなくなりました。

データのエクスポート/インポート形式として今も使う場面がある

もっとも、SMFを「使う」場面が無くなったわけではありません。たとえばDAWを乗り換える場合や、細かい打ち込みの詳細情報が無い状態にして、複数環境でやり取りする必要がある場合、SMFでエクスポートしてそれを別の環境でインポートする、といったことは現代でも行われています。楽譜データを配信したり購入者特典にしたりする場合*9も、一般的とは言い難いスコアデータよりは、広く認知されておりツールサポートも一般的で活用しやすいSMFのほうが向いています。

DAWで表現できる音楽の互換性には一定のラインで限界があるので、エクスポート/インポートはあくまで可能な範囲でのみ行われます。SMFにエクスポートするということは、オーディオプラグインに関するデータは全て切り捨てられることになるので、それはインポートしてから制作者が頑張って復元するということになるわけです。アレンジ版の楽曲データを制作するような場合は、これで十分ともいえます。

MIDI 2.0は何が「新しい」のか?

MIDI 2.0 UMPは、MIDI 1.0でいうところのMIDIメッセージの仕様をモダンにしたものです。たとえば…

  • チャンネルが16から256まで拡大されている。ただし単純に4ビットから8ビットにするのではなく「グループ」の概念を導入している(そうしないとMIDI 1.0互換機能が崩壊する)
  • 7ビットの数値が32ビットビットになったりしている
  • ノート別に作用するパラメーターが新設されている
  • ノート命令にアーティキュレーションが追加されている
  • データの可変長要素が全て廃止され32/64/128ビット整数のみになった(sysexと7bit-encoded length, running status)

MIDIのプログラムを組んだことがある人なら、最後の変更点のインパクトが割と大きいことがわかるかもしれません。メッセージの種類に依存した動的なメモリ確保が不要になるのです! リアルタイムオーディオで使われることも多いMIDIメッセージの処理で、動的なメモリの心配をする場面が減るというのは、割と現代的で「わかっている」感じがしませんか??

もちろん新しい仕様には、うれしい新機能だけではなくて、難しい課題が出てくることもあります。先日書いたUMPにおけるノート命令についての解説は今回の同人誌の一部として書いたものですが、だいぶ難しい話題を取り上げています。

あと、SMFの更新はまだ出ていないけど仕様策定中らしいです。

Summary

今後MIDI標準に関連してアップデートされる価値があるやつとないやつを、以下のようなふいんきで一つ一つ解説していきました。

  • MIDIキーボード
  • MIDI音源モジュール
  • MIDIケーブル(電子工作を除く)
  • MIDIメッセージ ← MIDI 2.0 UMPはココ
  • General MIDI
  • MIDIファイル(演奏目的のやつ)

こうやってまとめると「やばい」「炎上要素しか無い」という感じですが、本文に足りない視点があったり有意義な用途を無視している点があったら、コメントなりはてぶなりSNSなりで指摘してもらえればと思います。

*1:お買い上げいただいた皆さんありがとうございます

*2:キーボード以外にもギターや管楽器などがあるんですが、話がややこしくなるのでキーボードとまとめちゃいます

*3:ハードウェア音源は数年に一度くらいごくまれに出る印象がありますが、RolandのSD-50が2010年に「8年ぶりに」出たと考えると、さすがにもう無いかな…と思います

*4:FM音源などはハードウェアのオリジナルに強くこだわるユーザーがちらほらいます

*5:昔はRS-232Cケーブルをモデムと同じ口に繋いだりしていましたが、最近は電話回線に繋ぐことも無いですね…

*6:DAWではMIDIキーボードは人間が演奏したベロシティの値を0〜127で受け取りますが、内部的にはもっと精細な数値(たとえば0〜65535とか、0.0〜1.0とか)で保存することが多いようです

*7:トラックとチャンネルは別々の概念ですが、ここではあいまいにしておきます

*8:たとえばCubaseに付属するHALionやRolandのSound Canvas VAなどがそうです

*9:わたしはPixiv FANBOXで支援しているアーティストが配布しているのをよく見かけます