✅ 完了
▶ 着手中/次やる
⏳ 待ち(依存あり)
最終更新時点:受信 R1–R7・R9 / 送信 F1–F6 / S1 完了。受信の入口をマイク → ピエゾに変更。
データの流れ(1回の送信で何が起きるか)
※ 事前準備として「URL登録 → id発行」が上流にある(共通 S1 + 送信 F9)。
※ 内蔵マイクでは弱い振動を拾えなかったため、受信はピエゾ(接触振動センサー)に切替。空気の騒音に強く、弱い振動も接触で拾える。
誰が・どの順で作るか
Aさん
振動担当/ロジック
(震わせる下回り)
Flutter
✓F1振動の基盤
→
✓F2パターン生成
(プリアンブル+短長)
→
✓F6自動演奏
→
F8実機録音
→ R8の材料(ピエゾ検証後)
→
F9Supabase登録
(URL→id発行)
Bさん
画面担当/UI
(見せて演奏させる)
Flutter
✓F3encoder
(id→ビット列)
→
✓F4楽譜表示 ★
→
✓F5手動演奏ボタン ★
→
次F7id入力(テスト用)
→
演出楽譜・演奏の見栄え磨き
+発表スライド
✓R1起動確認
→
✓R2dsp:音→ON/OFF
→
✓R3チャンネル+偽センサー
→
✓R4マイク入力
(→拾えず・教訓)
→
✓R5デバッグ可視化(目)
→
✓R6結合・受信ループ
→
✓R7ターミナル演出
→
✓R9Supabase逆引き
(offline保険付き)
→
次E1ピエゾ受信
★物理問題の解決鍵
→
R8ピエゾ向けチューニング
← ピエゾ+F8待ち
→
R10通し(受信側完成)
✓S1Supabase用意
⇒
J1通し結合
(自動→手動)
→
J2本番機チューニング
→
J3デモ・リハ
いまの山場・待ち合わせ
★ いま最大の山場:ピエゾで拾えるか
内蔵マイクでは弱い振動を拾えないと判明。ピエゾ(接触センサー)で拾えるかの検証(E1)が、全体の分岐点。拾えれば一気にR8→R10→J1へ。ダメなら送信を強くする等の再検討。
① ピエゾ+F8 ⟶ R8
ピエゾで拾える前提で、本番送信機の録音(F8)を使ってチューニング。F6まで出来てるので録音はすぐ録れる。
② S1 ✓ ⟶ F9 / R9
Supabaseは構築済み。受信R9は完了。残るは送信側F9(URL登録→id発行)。
③ F5 + F6 + R10 ⟶ J1
送信(手動・自動は完了)と受信完成(R10)が揃えば、実機で end-to-end 結合。ここがプロダクト完成の瞬間。
手が空いたら:2人の次タスク
Aさん(ロジック)
F8の録音準備(自動演奏で正確に鳴らす)→ F9(Supabase登録ロジック)→ 結合J1の技術担当として自分と組む → stretch: QR方式(X1)。
Bさん(UI)
F7(id入力)→ 楽譜・演奏UIの見栄え磨き(音ゲー風・演出)→ 発表スライド/デモ画面/デモ用URLの準備。発表の見栄えを主導。
拡張(本線 J1 が通ってから)
E2 机越し受信
E3 IMU受信
E4 複数センサーAND判定
X1 直接符号化・送信(QR方式)
X2 直接符号化・受信
+ 対戦モード(早打ち対決)
読み方:上=1回の送信で起きること / 中=担当ごとの作業順(左→右・✅完了/▶次/⏳待ち)/ 下=いまの山場と2人の次タスク。★=体験のコア。
※ E1(ピエゾ)は物理問題の解決策として stretch から本線に格上げ。