Windows 10のMIDI over Bluetooth LE(BLE-MIDI)でSysExのバルクダンプが正常に行われない件を米マイクロソフトの中の人にツイッターで伝えたら、テストのために日本国内で人気の高いQuicco Sound mi.1を実際に入手して試してくれて、Windowsのバグを認識したっぽい、という話。
7月頭の話。久々にWindows 10のBluetooth MIDI/UWP MIDI APIなプログラムをいろいろ。SysExのやりとりがうまくいかないので、改めてテストしてみたら、確実におかしい。
いや、だいぶ前におかしいなとは思っていたのだが、自分のプログラムがしょぼいからだろうな、テストもどうやったらいいかわかんないしな、そこまでやらなくてもいいよな、とか思っていた。
しかし、今回はもう少しちゃんとやった。機材やソフトや信号経路を取り替えつついろいろ。どうやってもBluetooth MIDIの時だけおかしい。最初はうまくいってるっぽいのに、途中からおかしくなる。タイムスタンプまわりじゃないかなあ。と思って検索してみると、気になる記事が。SysExの最初と最後に使われるF0/F7が、BLEのタイムスタンプに入った時の処理が間違えやすいとか(確かAndroidの話だったか)。BLEのタイムスタンプまでは調べられなかったのだけど、それっぽいなあ、とか思いつつ。
とりあえずおかしいってことを伝えたいが、WIndows 10のフィードバックHUBだと、話が伝わりにくいんだよなあ。というのも。日本のスタッフが本国にちゃんと伝えてないっぽいというのは経験していた。アメリカのマイクロソフトのスタッフとツイッターでやりとりしていた時に、「フィードバックHUBにレポートしろ」「日本語ですでにレポートしてある。それとも、あらためて英語でもレポートしたほうがいいのか?」というのがあったからだ。
そんなわけで、今回は最初からツイッターでマイクロソフトでBLE-MIDI周りをやってるっぽい人(それ関連の発言がある、イベントでもデモをやってる人)が、「Windows 10のBLE-MIDIは正常、現在も取り組んでる」みたいな寝ぼけたことを自慢げに言っていたところに、「SysExのバルクダンプが正常にできない。データが欠落する。タイムスタンプがおかしいのではないかと思ってる」というリツイートをぶらさげてみた。ありがたいことに反応があったので、いくつかやりとり(英語はできないので、ほぼGoogle翻訳頼り)。
彼自身がBLE-MIDI対応のSysEx送信アプリを作ってMicrosoft Storeで配信してるので、それを試しくれという。しかし、これがまたBLE-MIDIではうごかない。エラーが出る。自慢げに言った割にはそんな結果か。と再び思ったが、画面をつけて状況を説明。
そこからなんやかんやあって、彼は状況を把握するために、私が使っているのと同じデバイス「Quicco Sound mi.1」を入手したという。でもって、こちらが報告した状態を把握した。それが7月13日。
彼が言っている英語を理解するのが難しいが、Google翻訳によればこんな感じだ。
2 つの問題が見つかりました。最初の(私のアプリがヒット)は、複数のチャンクにサイセックスメッセージを分割した場合、BLE MIDI APIはF0/F7ペアがないためにそれを拒否することです。私はバグとしてそれを提出しました。
第二に、デバイス バッファフラッディングの可能性があります。私はモニターにBLEインターフェイスをループすると、全体のsysexが転送されるのを見ることができます。しかし、私のデジロンのようなデバイスは、起こっているとして任意の転送を認めません。また、バグで提出されました。
とにかくSysExまわりがおかしいことをマイクロソフトが認識し、ある程度原因わしきものがわかったということは理解した。今まではちゃんんとテストする人がいなかっただけなのだろう(と、思いたい)。ここまでわかってれば、なんとかなるんじゃないかなあ、と思いつつも、けっこうな頻度でBLE-MIDIまわりがおかしくなるマイクロソフトのことなので、まだ予断を許さない感じだ。
ツイッターでの流れはこちらでどうぞ。起点じゃないけど、ここから辿ればもれなくやりとりが見られると思う。
コメント