◆概要
- MIDI楽器の演奏を受けてScratch 3 MIDI Extensionで解析処理し結果をtoioDoに送信
- toioDoで、その他アクションの読み取り、'ネコロボ'の動作や反応を制御します。
- 息子向けプログラミングパートは分かりやすくtoioDoで完結
- アプリ間通信はWS(WebStack)ローカルサーバを活用
- 直接外部通信機能ないtoioDoやScratchのため、ブラウザのコンソールへJS流し込みで通信実現
- 電波影響を受けにくいようUSB接続基本、無線必要なところはWifiでなくBLEを使用
- 持ち運び用にChromeBook使用、家デスクトップPC(WIN)でも同じ環境構築、2人同時開発!
※MakerFaireTokyo2024応募作品です(落選)
◆息子:プログラミング
◇ネコロボ
- toioを安定動作させるためtoioDoを選択、鋭意製作中!
- toioプレイマットで位置情報楽々取得、かまってやると、いろいろアクションを行います。
- 他との通信機能はWSで、文字列変数一つブロードキャストと、受信文字列をキー入力に変換と、簡単実装
- のせたM5Stackから画像や音がでます
◇ゲーム部分
- 鋭意製作中!
◆父:プログラミング
◇MIDI受信・解析
- Scratch+MIDI:USB-MIDIを受けて、コマンド送信(基本機能完成)
- MIDIはScratch 3 MIDI Extension(機能拡張)つかってます
- キーボードやフィンガードラム、ウィンドシンセの演奏を受け、BPM解析したりして、なんかいい感じにコマンドを送信(BPMそれらしい解析完成/その他開発中)
◇ネコロボに載せて、画面と音を出すM5stack
- UIFlow+M5stack(BLE接続):コマンド送受信、画面切り替えやボタン操作に(通信機能完成/その他作成中)
◇各プログラムを繋げるローカルサーバ
- ws: a Node.js WebSocket library 等々使ってローカルサーバを構築_参考(基本機能完成)
- BLEはWebBluetoothAPIつかってます ※1分で切断するときはOS設定のファストペアリングOFF!
◆開発環境
- 息子がVisualプログラミングしかできないので、彼のプログラミングパートをtoioDoだけで完結しました。
- 父もコードあまり書きたくないので、Visualプログラミング多め(Scratch3/UIFlow)です。
- ローカルサーバは、ws: a Node.js WebSocket library等Javascript。VisualCode とGithubでコード作成環境構築しました。
◇PC
- 各種デモで持ち運びしやすいよう、家で一番性能良いモバイル、ChromeBook(Core i3)をメインに構成しました
- 家のデスクトップPCでも、同じ環境を構築したので2台体制(父&息子)で開発ができて便利です。
◇無線通信
- 電波影響を受けにくいよう極力有線(USB)、無線必要箇所をBLEにし、トラブルが予想されるWifiをつかわない構成にしました
◇アプリ間通信
- WebStackを活用(参考)。それぞれが4文字ブロードキャストして、受信側でデコード
- "T000"=MIDI楽器の演奏状態(BPM)を送信、"T000"だと演奏停止
- "M000"=M5stackへのコマンドを送信、百の位:予約、十の位:鳴らす音の番号、一の位:表示する画像の番号、0は変更なし
- "B000"=M5stackで押されたボタン番号を送信、B001-B003で左から順
- toioDo&Scratchは外部通信機能ないですが、コンソールからJavascriptコードを流し込んで実行で、WebStack機能実現 ※ブラウザのメモリ消費が早いので定期的な再起動お勧め
- M5stackは無線化するため、WebStackの内容をBLEで送受信してます