Chrome 66でWeb MIDI APIがおかしくなってる timestamp問題再び

 ふと気づくと、以前作ったWebアプリが動いてない。Web MIDI APIを使っているのだけど、MIDIデータがぜんぜん送信できない。Windows版Chrome 66の話。
 そう言えば、AudioContext周りで変更があったとか。
 Autoplay Policy Changes  |  Web  |  Google Developers
 でもって、これも。
 Chrome 66 自動再生無効化の影響 | g200kg Music & Software
 とりあえずこれで対処。自分が作ってるやつはWeb MIDI APIがメインなんだけど、時間管理を正確にするために、Web Audio APIのAudioContextを使っていたのだった。上記記事にあるようにユーザーの操作でトリガーするようなコードを追加してみる。
 結果は変わらず。時間は進んでるが、MIDIデータが送信されない。
 さらに調べる。


 こんなのがあった。


 これっぽい。
 テストしてみると、timestampを指定してるとまったく送られてない。なしなら送信できてる。
 修正はかなり面倒な気がする。x-webmidiを使っているというのもあり、ライブラリに手を入れないと解決しなさそうだし、その作業自体もかなり困難。どうせ、Chromeがバージョンアップしたら問題は解消するんだろうし。
 ということで、とりあえずは待ちの状態ということに。
 ここで言ってるWebアプリはこのへん。
 Web MIDI Lab.
 VOCACID
 ポケット・ミクにテキストを送信するやつだけは修正した。ただし、これでAndroidとかでまた問題が出るかもしれないけど。
 Text Input 39 – ポケミク対応改造版テキスト入力アプリ
 そういえば、その昔、Android版のChromeがWeb MIDI APIに対応した当初、timestampが動作しないという状態が続いていた。その時はtimestampで時間を指定しても無視され、即時データが送信されてしまうという状態だったはず。という話は以下。
 AndroidのChromeのWeb MIDI APIでsendのtimestampが無視されているっぽい
 今回のはそれとは違って、まったくデータが送られない。
 ちなみにtimestampを使ってないやつは問題ない。
 棒読み+ シーケンサー
 ポケミクに棒読みさせる - ブラウザで動くシーケンサー作った Web MIDI API
 そんなこんなで、現状を記録に残す。
 早く修正されるといいなあ。
 
(追記 2018/05/11)
 66.0.3359.170へのアップデートで修正を確認。
 「Google Chrome 66」に4件の脆弱性、修正版のv66.0.3359.170が公開 – 窓の杜
 この記事で、脆弱性のアップデートがあったという記事を見て、もしやと思ったらビンゴ。ありがとう、Google。

コメント