4月16日とかに出た。Chrome 43のベータ版。Windows、Mac、Linux版がリリース。Android版はまだっぽい。
“Web MIDI API”をサポートした「Google Chrome 43」のベータ版が公開 – 窓の杜
Chrome 43(ベータ)は外付けMIDIキーボードをサポート、新たなパーミッションAPIも | TechCrunch Japan
メディアの記事を読むと、そういう方向で注目するのかあ、と思ったり。
で、chrome://flags を見てみると、Web MIDI APIの項目は確かになくなっている。「chrome://flags/#enable-web-midi」なんていうURLをブックマークに登録していたのだけど、不要になるのだな。
で、デフォルトでONになるのはうれしいのだけど、不安材料が。というか、意味ねー、と思いはじめてきた。
ローカルのXAMPP環境でテスト中のプログラムをレンタルサーバーにアップロードしたら、動かなくなってる。
URL欄にこんなのが出る。
「MIDIの設定を管理」をクリックすると、「chrome://settings/contentExceptions#midi-sysex」が開かれる。Chromeの設定画面みたいなやつ。
「MIDI device full control」というタイトルのダイアログが出てきて、「ホスト名のパターン」と「動作」を対とした一覧が出る。動作欄には許可とある。設定変更はできず。項目の削除だけができる。上の画面が出たページは「許可」とある。
一番下に「詳しく見る」というリンクが出るのだけど、それで見られるChromeのヘルプページ「例外を管理する」はいまいちなんのことかわからない。例外を指定するドメインの名前を入力できるとあるが、そんなことはできない。ほかの設定項目ではできるので、Web MIDI API以外のことを指しているのだろうか。
別の設定項目を探す。「コンテンツの設定」(chrome://settings/content)の一番下に「MIDI device full control」というのがある。
「システム エクスクルーシブ メッセージを使用して MIDIデバイスにアクセスすることをすべてのサイトに許可する」
にしてもだめ。その下の推奨設定(アクセスする際に確認)もだめ。ローカルだと、確認メッセージが出るが、外部サーバーにアップすると、それすらも出ない。もう無視している状態。
どっかでこういう情報があったのをだいぶ前に見たはず。探す。ここにあった。
今日の変更でChrome Web MIDI APIのsysex permissionはnon-secure origin(httpなど)に対して問答無用でrejectするようになりました。インターネットをベースとして考えるとsysexは特権としては強力すぎるんですね。音色編集とか比較的安全な操作を区別して扱うためのなんらかの標準化がMIDI仕様レベルで必要なのかも。
3月にこれを読んだ時はなんのことかわからなかったのだけども。
ということで、httpなサイトではシステムエクスクルーシブが使えないということなのだろうか?
許可する設定があるのかと、いろいろ探したのだけど見つからず。
ということだと。ポケット・ミクの公式サイトのWebアプリも使えなくなるってことですよね、これ。
というか、現在、Chrome Betaでこれを使う方法が見つかってない。こんなことになるのだったら、42のままでいいのではないかと。この仕様がBetaじゃなくて正式版にこのまま降りてきたらいろいろ面倒。例によって、なんらかの勘違い、見逃しとかだといいんだけどなあ。
SysExを駆使して、MIDI音源のコントローラーとか作りたいんだけどなあ。やっといろいろできるようになったので楽しさがわかってきたところだったのだけど。出鼻をくじかれた感じ。作っても自分のサイトで公開できないんじゃなあ、とか。
とりあえず、現時点での状況をここに記録。
あと、わかんないことだらけなので、いろいろ調べます。
(追記:4月20日)
Chromeの開発をやっている方の記事が出てた。
とよしま語録: Chrome 43 beta with Web MIDI
リジェクトの話は書かれておらず。
そんなこんなで、今作っているWebアプリなMIDIシーケンサーは、デスクトップ版Chrome 42までとiOSのWeb MIDI Browserでしか動かないものになっている。
Chrome 43 Beta , Web MIDI API / NSX-39
あと、x-webmidiを使っているのだけど、レンタルサーバーにアップロードした状態で動かすと、こんなエラーが出ている。
[ERROR] DOMException: An attempt was made to break through the security policy of the user agent.
ローカルではエラーは出ない。
Chrome 43で動かしたいなあ。
(さらに追記)
ついでにもう1つ。Chrome 43で導入されたPermissions APIも試したのだけど、これもhttpsじゃないとだめなのか。わからないことだらけ。しばらく様子見。
コメント
>> httpなサイトではシステムエクスクルーシブが使えないということなのだろうか?
既に解決されているかもしれませんが、正しいです。SysExを使う場合はHTTPSなサーバからDocumentをサーブすることが必須になります。SSL証明書を買う以外の方法法で公開される場合HTTPSでサーブできるGoogle App Engine、github pages、DropboxのPublicを利用する等の方法がありますよ^^
コメントありがとうございます。
>SysExを使う場合はHTTPSなサーバからDocumentをサーブすることが必須になります。
やっぱりそういうことなのですね。残念な感じですが、わかったことですっきりしました。
とりあえず、Google App Engineでしばらくはやってみようと思います。情報ありがとうざいました。