WebMidiLinkがわずか40行でなしとげたとてつもないブレイクスルー

3日前にg200kgさんが提案したWebMidiLinkという規格がすごすぎていまだに興奮がさめやらない感じ。DTMとWebの世界はいったいこれからどうなってしまうんだろうという気持ちです。
 
WebMidiLinkは、ひとことで言うと「MIDI over window.postMessage」というようなもので、とてもシンプルなアイデアながら、これまで多くの人が夢想してしかし誰もできなかったWeb楽器のアプリ間接続を実現してしまいました。
けっして複雑な手法ではなく、マスター側約20行、スレーブ側約20行の合計40行程度で誰でも実現できてしまいます。ブレイクスルーはすぐ目の前にあったのです。みんなが模索している中、とてもクレバーでクールな解決方法を提示しました。
 
Web楽器はまだ新しい技術です。これまでFlashベースやJava Appletベースの楽器アプリがそれなりの数ありましたが、去年くらいからJavaScriptだけで本格的な楽器が作れるようにブラウザが進化して新しい波が来ています。僕も含めてJavaScriptで楽器を作る人が何人か出てきて、これらの楽器をMIDIコントロールしたり同期演奏させたりしたいね、という流れがありました。
 
インターネット経由で音楽情報を送る場合、遅延問題が必ずついてまわります。100msec程度でも音楽の世界では誰もが違和感を感じる遅延となります。そのためネット経由での正確な同期演奏は難しいというイメージがありました。
しかし、よく考えてみるとリッチクライアントとしてウェブブラウザ上に実現された楽器はインターネットの向こう側にあるわけではなく、ローカルPCのメモリ上にあります。ということはTCP/IPではなく、表示されているウィンドウに対してHTML5のpostMessageを送ればいいのでは?それもフルスペックのMIDI規格を送るのは大変だからNoteOn、NoteOff、AllNoteOffくらいサポートすればとりあえずの用は足りるのでは?というのがWebMidiLinkの考え方です。
 
しかもこれのすごいところはクロスドメインでメッセージを送れるところで、別々の人が作った別々のWeb楽器を同期して演奏させることができます。これはこれまでそれぞれスタンドアロンで動いていたPCが一気にネットワーク化されたような衝撃です。
下の動画はg200kgさんが作ったWebModularと僕の作ったWebAudioSynthとで同期演奏しているところです。


 
さらに、これもちょっと前に開発されたローレベルのMIDIバイス入力とJavaScriptを接続するJazz-Pluginという技術があり、これと組み合わせるとWeb楽器が本当に本格的な楽器プラグインになります。
下の動画は、Web楽器をMIDIキーボードやDAWから制御しているところです。繰り返しますが楽器側は20行程度のメッセージハンドラを追加するだけでこのようなことが実現できてしまいます。


 
つまり、これまで別々の世界で進化してきたWebとDTMがついに接続されたということで、これからはじまるなにかとても大きな潮流の入り口にいるようなそんな気持ちでわくわくしています。
 


入門 HTML5

入門 HTML5