2014年6月14日土曜日

続・ChromeにおけるWeb MIDI APIの実装状況

昨年末にWeb MIDIの実装状況について書かせて頂きました。その後の更新状況についてまとめたいと思います。

Chrome 34
  • Linuxサポート(ALSAをサポートするシステムのみ)
  • Androidは出力のみ対応(ただし、初期化手順の問題で最初の呼び出しは失敗する)
  • リアルタイムメッセージのサポート
  • システムメッセージ(sysexではない)はパーミッションなしで送信できるように修正
  • 送信メッセージにエラーがある場合、詳細情報がエラーメッセージとして書き出されるようになった
  • パーミッション許可を求めるinfobarが file://... に対しても表示されるようになった。ただし、セキュリティの都合上、許可・不許可は記憶されない。
  • Windowsでtimestampが間違っていたのが修正された
Chrome 35
  • PromiseがWeb MIDI向けの機能限定版から、フル機能版に差し替えられた
  • Chrome OSサポート
  • Androidの入力サポート(初期化手順の問題は未修正)
  • OS Xにおいて送信されるMIDIメッセージにCore MIDIのtimestampが正しく付加されておらず、Chromeから送信されるデータをDAWで受信すると、正しいタイミングで録音できない問題が修正された
  • MIDIAccess.sysexEnabledアトリビュートが追加された
Chrome 36
  • Androidの初期化手順の問題が修正された
Chrome 37(予定)
  • LinuxとChrome OS向けの実装が改善された(ALSA sequencer APIに対応)
  • Android向けのUI実装完了(infobarと設定画面)
追記:Chromeで実装しているAPIは最新版と若干異なります。最新の使用に合わせて近々更新する見通しですが、それまではこちらの旧APIを参照願います。またMIDIConnectionEventの実装も新APIになるまで見合わせています。

For English readers;
I'd summarize Web MIDI implementation status on Chrome. I also did it at the end of the last year, but in Japanese. So, I'd mention also previous status together.

Chrome 30
  • chrome://flags#enablr-web-midi appeared on OS X
  • Input ports were available on OS X, but there was a bug on sysex until Chrome 32
Chrome 31
  • Output ports were also available on OS X
  • Infobar and settings UI were implemented as a part of content settings
Chrome 32
  • IAC driver was available
Chrome 33
  • Web MIDI worked on Windows, but had wrong timestamp values
Chrome 34
  • Web MIDI worked on Linux (but only ALSA supporting systems)
  • Also, worked on Android, but only output ports are available
  • There was a problem on initialization process, so the first API call didn't work on Android
  • Real-time messages were available from this version
  • System messages were available without a sysex permission from this version (previous versions required a sysex permission even for system messages)
  • Error provided detailed messages on invalid send messages
  • Infobar appeared even on local files, but browser could not remember the permission because of security reason
  • Wrong timestamp was fixed on Windows
Chrome 35
  • Now, Promise is not limited version Promise, MIDIAccessPromise, but fully featured proper Promise
  • Now the API is available on Chrome OS
  • Input ports are available on Android, but the initialization issue is not fixed yet
  • Fix a bug that sending messages had wrong CoreMIDI timestamp and caused a problem that DAW could not record Chrome sending messages with correct timestamp
  • MIDIAccess.sysexEnabled attribute is added
Chrome 36
  • Android initialization issue will be fixed
Chrome 37 (planned)
  • Linux and Chrome OS supports will be improved so to support ALSA sequencer API
  • Infobar and settings UI for Android will be implemented
Note: The implemented API is slightly different from the latest W3C spec. You can see the old specification here. Also, MIDIConnectionEvent is not implemented yet. It will be available once new API is ready.