引きつづき、BLE-Midiを刷新作業しました。
また、大きな不具合の修正も含まれています。
お手数をおかけしますが、更新のダウンロードをお願いいたします。
不具合レポート
MIDIファイルの整合性
・SMFをレコーディングして、保存して次回ひらくと、スピードが変化してしまっていました。修正すみです。メタデータが含まれていた場合、うまく保存できていなかったためです。
BleMIDIのつかいはじめ
・BleMIDIの接続のシーケンスがわかりにくかったので、ボタン2つにおさまるように、ユーザーシナリオを考慮しました。
BleMIDIを安定させました
・ひとつ前のバージョンでは、古いAndoridと新しいAndroidでは、Bluetoothで相互通信する際、100%失敗していました。iOSを通信相手とした場合も、数十%くらい失敗していました。
・iOSが相手の場合、どちらをセントラルとしてもつながるようになりました。
・Android10とAndroid14の通信では、14の側をアダバタイズすると、10側と接続したさいすぐ切断されます。この場合、Android10側をアダパタイズ=<Be Ble>する必要があります。
・iOSとAndroidの場合、どちらかをアダパタイズ側とすると、ペアリングを要求されます。
この場合、一回は接続できますが、ペアリングしているのに、Macアドレスが匿名化されているため、次回そのままではつながりません。一度システムのBluetoothの設定で、ペアリングを解除する必要があるようです。
また、iOSとMIXandCCをつなげる場合でしたら、アダパタイズとセントラルを、逆にすると、ペアリングを要求されませんので、次回はまたおなじ手順で繋げられます。
BleMIDIのパケットの管理を全書き換え
・BleMIDIで、メタデータを送信する際、おおくの通信相手が混乱を起こしていました。また、長いSysEXが送信されていませんでした。これは、20バイトにパケットをわけて、パケットごとに、0.01秒のWAITをはさむことで対処しています。YAMAHA V50とMD-BT01を通信相手として、SysEXダンプの送受信ともに成功しました。(Andorid10,14)。
・また、BLEの処理を単一スレッドから実行して、応答が必要な場合、応答を待つまでそのスレッドを、最大1秒ですが、待機することにして、接続はほとんど壊れなくなりました。
・これらを考慮した結果、メタデータがヘッダー含めて20バイトを超える場合、BleMIDIの送信ではスキップしています。
・うまくいかない場合、再接続をしていますが、再接続がなんども失敗する場合、端末自体の再起動でつながるようになるケースもありました。うまくいっているかどうかは、デバイス一覧のデバイス項目の、右下に、エラー回数を表示するようにしていますので参考にしてください。こちらのエラー回数については、接続が10回以上のときや、送信が100回以上の場合、そのセッションでは繰り返してもダメという意味になりますので、アプリの再起動をお試しいただけると、修正されるかもしれません。(だいたい1~4でうまくいくのが、BLEのセオリーみたいです。)、アプリも再起動を2~3回行ってもうまくいかない場合、端末の再起動でつながることもありました。
また、前述のように、端末(とそのOSや制御プログラム)との相性もあるみたいです。
独自ドライバーで、USBと通信することをやめました。
プログラムが小さくなるので、問題も発生しにくくなります。また、Android対応をうたっていなくても表示してしまっていたので、メーカーさんはどきどきしていたかもしれません。
今後は、Android対応USB機器をご利用ください。Roland UM-OneMK2、TASCAM Series102i、KORG microKey37など、USBとして認識することを確認しています。ほかにいろいろあるかと思います。
USBとの接続には、USB CとAの変換アダプタが必要となること、ご了承ください。
引き続きよろしくお願いします。
ここまでこられたのも、皆さま方のおかげでございます。まだまだ不具合修正の日々が続くと思いますが、こりずに、お相手いただけると幸いです。
広告を表示しています。
コメント