ふと気づくと、以前作った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データが送信されない。
さらに調べる。
こんなのがあった。
互換性で問題出そうな修正はA/Bテストしつつ徐々に出しますね。僕も今別機能(Background Tab Throttling)を66でゆっくり出荷中です。まだStable 1%(とはいえ、8桁ユーザー数)。あとWeb MIDIのtimestamp付きsendを66で壊しました、ごめんなさいorz
— とよしま (@toyoshim) 2018年4月25日
これっぽい。
テストしてみると、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。
コメント