« Web MIDI Browserが1.0.3へバージョンアップ、フルスクリーンブラウズが可能に | トップページ | Chrome 43 BetaでWeb MIDI APIがデフォルトでONになったのだけど »

2015年4月16日 (木曜日)

Web MIDI Browser 1.0.3でSysExが送れない問題

Webmidibrowser_sysexdialog

 iOSでWeb MIDI APIが使えるブラウザ「Web MIDI Browser」でSysExが送れないという話を前回した(Web MIDI Browserが1.0.3へバージョンアップ、フルスクリーンブラウズが可能に)。原因らしきものがわかったのでメモ。

 Web MIDI BrowserのSettingsでEnable Sysexというオプションがバージョン1.0.3でついた。これの挙動がちょっと想定外。

 基本的にOffにした状態で、SysExを使うWebアプリ(というかページ)を開くと、こんなメッセージが出る。

 SysEx access requested

 このメッセージが出たら、Onにした上で、ページをリロード。これでSysExの送信が可能になる。Onの状態だとメッセージは出ず、いつでも送信可能。ここまでは問題ない。

 しかし、SysExを使うやつでも、このメッセージが出ないページがある。だいぶ前に作ったやつは出る。最近作ったやつは出ない。これがSysEx送れない問題と関係あるのではないか? これはどうやって判断しているものか?

 こちらの環境でいろいろテスト。メッセージが出るやつと出ないやつの違いは、Polymerエレメントのx-webmidiを使用しているか否か、であった。

 HTMLファイルを走査(?)して、なんらかの処理をチェックしているのだろうと踏んで、x-webmidiのソース見る。

 x-webmidirequestaccess.html 内において、70行目にこんなのがある。

 navigator.requestMIDIAccess({sysex:sysex})

 sysexが2回出てくるのだけど、前者はプロパティで、後者はパラメータの変数(たぶん)。後者は、その上の行で中身が指定されている(ユーザーが使用時に指定する)。今回のプログラムでは常にtrueでOK(SysEx使えないとおもしろくない)。ということで、直接書き換える。

 navigator.requestMIDIAccess({sysex:true})

 これで、Web MIDI Browserで開く。

 ビンゴ! メッセージが出た。

 Onにして、ページをリロード。SysExの送信が可能になった。

 とりあえず、しばらくこれで続けようと思う。


|

« Web MIDI Browserが1.0.3へバージョンアップ、フルスクリーンブラウズが可能に | トップページ | Chrome 43 BetaでWeb MIDI APIがデフォルトでONになったのだけど »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/35726/61447109

この記事へのトラックバック一覧です: Web MIDI Browser 1.0.3でSysExが送れない問題:

« Web MIDI Browserが1.0.3へバージョンアップ、フルスクリーンブラウズが可能に | トップページ | Chrome 43 BetaでWeb MIDI APIがデフォルトでONになったのだけど »