From 17053719f1f78eed73be6b8a8fbe62365ba70222 Mon Sep 17 00:00:00 2001 From: Me Here Date: Thu, 28 May 2026 08:40:20 -0500 Subject: [PATCH] New Stage (foot-pedal) + Showcase (RGB pendulum); fix audio/visual sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sync: the visual playhead now advances on a latency-compensated clock (currentTime − outputLatency||baseLatency) so the on-screen pulse lands when the click is HEARD, not when it's queued — previously the visual could lead the audio by the output buffer / Bluetooth latency (up to ~a subdivision). Applied to editor, player, teacher, and the new pages; also bound the visual queue (vq trim). No data races: single-threaded; only the rAF draw touches vqPtr/currentStep, and each vq entry carries the exact scheduled time of its sound. stage.html — foot-pedal stompbox: two heavy footswitches (Tap=tempo / hold=start- stop, Next=item / hold=prev), 1/4" expression-pedal input → tempo sweep, big floor-readable RGB beat light + angled TFT, analog instrument pass-through. showcase.html — pyramid display piece: an RGB-light pendulum easing to each beat plus per-lane segment rows showing subdivisions/accents/mutes (canvas). Both: dual USB-C (data+power and power-thru) to daisy-chain off one source. Wired into embed.js (stage, showcase variants), build.sh, deploy.sh, the concepts gallery + landing cards, info-stage.html (~$52) + info-showcase.html (~$39) with BOMs, and the README. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 8 +- build.sh | 5 +- concepts.html | 16 +++ deploy.sh | 7 +- editor.html | 6 +- embed.js | 5 +- index.html | 16 +++ info-showcase.html | 111 ++++++++++++++++ info-stage.html | 121 +++++++++++++++++ info-teacher.html | 4 +- player.html | 4 +- showcase.html | 284 +++++++++++++++++++++++++++++++++++++++ stage.html | 324 +++++++++++++++++++++++++++++++++++++++++++++ teacher.html | 4 +- 14 files changed, 899 insertions(+), 16 deletions(-) create mode 100644 info-showcase.html create mode 100644 info-stage.html create mode 100644 showcase.html create mode 100644 stage.html diff --git a/README.md b/README.md index a9590e1..e6acc57 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,11 @@ State (set lists, the practice log, theme and UI preferences) lives in `localSto | `/concepts.html` | **PolyMeter Concepts** — the form‑factor gallery (cards → live page + info) | | `/player.html` | **PM‑1 Initial** — idealized concept device (full display + set‑list nav, theme, fullscreen "stage" view) | | `/teacher.html` | **PM‑1 Teacher** — studio / lesson console (colour TFT, arcade buttons, 1/4″ instrument pass‑through with analog click injection) | +| `/stage.html` | **PM‑1 Stage** — foot‑pedal stompbox (two footswitches, expression‑pedal in, RGB beat light, instrument pass‑through) | | `/micro.html` | **PM‑µ Micro** — inline practice bar (instrument in / out pass‑through, clickable thumb‑roller, 14‑segment display) | +| `/showcase.html` | **PM‑S Showcase** — pyramid display piece with an RGB‑light pendulum + per‑lane subdivision/accent light rows | | `/info-editor.html`, `/info-initial.html` | purpose pages (web app / concept — no BOM) | -| `/info-teacher.html`, `/info-micro.html` | purpose **+ priced BOM** (buildable hardware only) | +| `/info-teacher.html`, `/info-stage.html`, `/info-micro.html`, `/info-showcase.html` | purpose **+ priced BOM** (buildable hardware only) | | `/embed.html` · `/embed.js` | embed docs and the drop‑in loader | Each page carries the same VARASYS header (logo + tagline, nav, theme toggle). The editor @@ -151,7 +153,7 @@ container and the loader script — it builds an `