From dce51866d268dfa4d35d598feda5675bcf7d2570 Mon Sep 17 00:00:00 2001 From: Me Here Date: Wed, 3 Jun 2026 16:08:29 -0500 Subject: [PATCH] docs(rust-port): mark MIDI clock in done --- docs/rust-port.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/rust-port.md b/docs/rust-port.md index a4f82d3..b3f0e38 100644 --- a/docs/rust-port.md +++ b/docs/rust-port.md @@ -202,10 +202,15 @@ cycles the end-action fires — `end=stop` stops, `end=next`/`end=+N` advances. Start/Stop on play/stop (button or live-sync), so a DAW can slave its tempo to the Grid. Queued on `tx_q` like everything else (CIN `0xF` single-byte packets). +**MIDI clock in — ✅ DONE** (default on): `feed_midi` handles `0xF8` (EMA of the inter-tick interval → +derived BPM, 5–300 clamp + jitter reject), `0xFA`/`0xFB` start, `0xFC` stop. While slaved, the ramp +and our own clock-out are suppressed (no feedback); the lock drops after a >1 s gap. Only engages +when a host actually sends clock (the editor doesn't), so it's inert in normal editor use. + **Still deferred** (these need persistent storage the Rust build doesn't have yet — there's no `CIRCUITPY` drive; would need a flash KV layer, a separate milestone): on-device practice log, -`settings.json`, SLSYNC/LOGSYNC (`0x44`/`0x45` set-list + log merge). Also: **MIDI clock in** (slaving -the Grid to an external clock), firmware push (intended: UF2-flashed now), optional piezo. +`settings.json`, SLSYNC/LOGSYNC (`0x44`/`0x45` set-list + log merge). Also: firmware push (intended: +UF2-flashed now), optional piezo. ### Stage 4 — native A/B + secure boot Replace the `.mpy`-level A/B hack (`code.py` loads `app.mpy`, rolls back to `app.bak`) with the