M5Stack Core 2でBluetooth MIDIキーボードその2

M5Stack

 そんなわけで前回の続き。Core 2でワイヤレスなMIDIキーボードというかコントローラーを作る話その2。

 いろいろわかってきたので、プログラムを少々ブラッシュアップ。省けるところは省いたり、今後の拡張を考えて決め打ちの値を変数にしたり、ボタンのラベルをプログラムで変えたりとか、いろいろ。

 左上のコードボタンのラベルが変わってるのがわかると思う。

 しかし、文字列をスクリーンに出力したやつを上書きすると、前の文字列が残るのがわからない。背景色を指定したら消えるんじゃなかったのか? 前もそれで悩んで結局黒い四角で塗りつぶしてたんだけど、今回もそれで。そこに時間をとっててもしょうがないので。動画では、右上のBLEの接続状態を表示してるところがそれ。

 それからスクリーンボタンというか仮想ボタンの反応が悪いと書いたんだけど、その後、ボタンを押したら触覚フィードバックとして内蔵振動モーターを動かしたりしてたらだいぶ反応がよくなった。理由がわからない。それを消しても反応速度は変わらないのだもの。

 で、ある程度よくなったんだけど、それでも演奏にはついてこない感じ。M5Stack Fireのハードウェアボタンとかだったらもっと反応は速い。それともBLE関連の問題なのか? なんて悩んでたのだけど、じゃあ、外部になんかつないでBLEの問題かそうではないかを判断しようということに。

 やってみたのは、以前作ったWaveshare Mini Piano Module for micro:bitをつなぐというテスト方法。このモジュールはnicro:bit用の製品で接続はI2C。そのままではM5につなげる端子もないし、電源電圧も3Vなので、自作変換アダプターを使って接続することにする。この自作変換アダプターは3端子レギュレーターを使って、M5のGrove端子(I2C)の5V電源を3Vに変換する(信号線は3Vなのでそのまま)というもの。

 Mini Piano Moduleの下に敷いたハンカチは固定用。裏面が平らじゃないので。段差があるだけでなく、ヘッダーピンなんか裏面にはみ出しててひどくガタガタする。

 で、つないでみたら上の動画みたいな感じ。I2C接続のMini Piano Moduleのほうがスクリーンボタンよりぜんぜん反応がいい。M5Stack Fireでやってたのと同じレスポンスのよさ。やっぱり問題はBLEまわりじゃなくて、スクリーンボタンということに。

 まあ、標準ライブラリがこなれてないとかそういう問題かもしれず。もっと速くする方法があるかもなあ。調べなきゃなあ。という感じです。ちなみに、スクリーン下の3つのボタンはBasicとかFireと同様、M5.BtnA.wasPressed()で拾えるんですけど、それも同じようなレスポンスなり。

 いろいろ書いてきましたが、演奏用じゃなくて、音確認とかエフェクト切り替えとかDAWのコントロールとかなら、十分なレスポンスではあると思う。小さいMIDIコンとしては十分使える感じ。続く。かも。

コメント