一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

WebMIDIとWebAudioの最新動向

GraphicalWeb (CSS, SVG, WebGL etc) Advent Calendar 2012の17日目を担当します。よろしくお願いします。Graphical Webと題しつつも、WebAudioなんかも取り扱ってもいいらしいので、たまには趣向を変えて音声関連のネタを書きたいと思います。

12月13日にWebMIDIとWebAudioのWorking Draftがアップデートされました。ちょうどいいタイミングでこの事を知ったので、12月16日以降の書き手が居ないGraphicalWeb (CSS, SVG, WebGL etc) Advent Calendar 2012を継続させる為のネタにしようと思い、17日の書き手として立候補しました。その矢先、Web Music Developers JP Advent Calendar 2012の12月15日分を担当されたRyoya KAWAIさんが同じネタでAdvent Calendarを書かれている事を知りました。

完全にネタかぶりですが、あまり気にせずに書きたいと思います。

WebAudio

WebAudioは、8月2日版から以下の事が変更になっています。

OfflineAudioContextを規定

8月2日版では名前がひょっこり出てきていただけでしたが、具体的に規定されました。再生速度に合わせた音楽出力をするのではなく、とにかく出来る限り速いスピードで出力をします。ミックス作業などのように、とにかく素早く出力できた方がいい場合にこちらを使います。

startRendering()という名前のAPIが定義されていますが、まだ名前だけで具体的にどのような事をするのかは規定されていません。

AudioPannerNodeがPannerNodeに

AudioPannerNodeがPannerNodeという名前になっています。下にも紹介しますが、APIの名前にも変更があります。

諸々のデフォルト値を既定

デフォルト値が未定義だった物について、デフォルト値が定義されています。

属性やAPIの名前変更

いくつかの属性やAPIの改廃や名前の変更がありました。いくつかの定数がenumになりました。詳細は20. Deprecation Notesにまとめられています。

noteOn()など、割とよく用いられるAPIの名前が変わっていたりするので、注意が必要です。

WebMIDI

WebMIDIの10月25日版との差分は、以下の通りです。いかんせんほとんど何も決まっていないというのが現状なので、APIの名前がいくつか変更になった程度の事しかありません。

MIDIPort

MIDIPortのonconnectとondisconnectが無くなりました。

MIDIOutput

sendMIDIMessage()とsendMessage()が、send()に一本化されました。

MIDIEvent

MIDIMessageがMIDIEventに内包されました。今までMIDIEventはMIDIMessageの配列を持つインターフェースでしたが、単にMIDIEventだけになりました。

9. Examples of Web MIDI API Usage in JavaScriptという章が追加され、WebMIDIの使い方の簡単なサンプルが5つ追加されました。

まとめ

以上、簡単にWorking Draftの差分を見てきました。WebAudioもWebMIDIもまだまだWorking Draft策定段階ということで、結構劇的にAPIの名前変更があったりします。今のところは少し試してみたり仕様を眺めてみる分には面白いのかもしれませんが、さすがに実用しようとするのはかなり難しいのではないかと思います。