2013/12/02 (2013年12月 のアーカイブ)
Web MIDI API に関する補足
さて、数日前にWeb MIDI API の日本語訳を公開しましたが、このAPIはまさに今開発途上ですので仕様と実装の間でまだ不一致があったりしますので、気を付けるべき点について補足しておきます。なお、そもそも動作させるには今の所、Mac版Chrome上でflagを有効にするか、JazzPluginを入れてWebMIDIAPIShimを使う必要があります。(ついでに近々Windows版Chrome(Canary)にもWeb MIDI APIが入るという話が某所で流れてました。期待したいです)
動きは結構速いので、あくまでも「今のところ」です。
MIDIAccessからMIDIポートを得る部分
例えばMIDI入力ポートの名前をそれぞれconsole.logに出そうとする場合:
現在、実際のChromeおよびpolyfillの実装では次のようになります。
var inputs=midiAccess.inputs();
for(var i = 0;i < inputs.length; ++i) {
console.log(inputs[i].name);
}
これに対して、現在の仕様書上では次のような動作になります。
midiAccess.inputs.values( function( port ) {
console.log(port.name);
});
ところがこの仕様書上の動作は何かおかしいだろ? inputs/outputsがiterableなオブジェクトで for-in / for-of ループが使えればそれでいいじゃないか、という意見も出ているようです。つまりこんな感じになると思われます:
for(port of inputs) {
console.log(port.name);
}
https://rawgithub.com/WebAudio/web-midi-api/35c89e62a77051afd8df3636b9c1dcf52eeb40d1/index.html
(ReSpecの関係で日付が現在の日付で表示されますが、6月末くらいのスペックです)
ちなみにこれも完全ではなくてサンプルコード内で使っている関数名が違っていたりしますので、あくまで参考に。
Posted by g200kg : 2013/12/02 02:48:22