Commit graph

311 commits

Author SHA1 Message Date
Me Here
e048be390f Bump version to 0.0.39 2026-05-28 09:09:51 -05:00
Me Here
be00ebf097 Restructure (1/2): Concepts = landing with live embeds; shared chrome partials; Showcase redesign
- Concepts is now the landing (/): index.html is the form-factor gallery with the
  LIVE widget embedded in every box (editor/teacher/stage/micro/showcase/initial),
  on the shared header/footer. concepts.html retired; every "Concepts" link → /.
- New shared chrome partials src/header.html, src/footer.html, src/chrome.js
  (assembled by build.sh) + .site-foot / details.spec styles in base.css. Applied
  to the landing + showcase this pass.
- Showcase redesign per spec: the pendulum bar IS the display — each lane's
  subdivisions/accents ride along the rod as moving RGB light (all meters combined);
  transparent outside the body (no black window); a printed tempo scale on the
  vertical axis with a draggable weight to set tempo; start is an external button
  (the real unit starts when lifted from its holder).

Next pass: roll the shared header/footer onto the remaining pages (incl. the editor
header-above-toolbar), merge Open=Info into one page per form factor with the
expandable Info & BOM, and add teacher-style dimensioned views to Stage/Micro/Showcase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 09:09:51 -05:00
Me Here
fb55a84aa2 Bump version to 0.0.38 2026-05-28 08:40:20 -05:00
Me Here
17053719f1 New Stage (foot-pedal) + Showcase (RGB pendulum); fix audio/visual sync
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) <noreply@anthropic.com>
2026-05-28 08:40:20 -05:00
Me Here
e3031d9e80 Bump version to 0.0.37 2026-05-28 08:16:15 -05:00
Me Here
ce6166a721 Rename "Stage" -> "Teacher" (studio/lesson console); free the Stage name
The full-feature desktop console (big TFT, arcade buttons, instrument pass-through)
is repositioned as the "Teacher" for studio desks and lessons:
- stage.html -> teacher.html, info-stage.html -> info-teacher.html (git mv)
- all links/paths, the embed variant (stage -> teacher), nav, cards, embed docs,
  README, build.sh + deploy.sh updated; deploy cleans the stale live stage files
The "Stage" name is now free for a forthcoming foot-pedal stompbox (/stage.html).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:16:15 -05:00
Me Here
1186e61588 Add Wokwi (Pi Pico) simulation of the Micro metronome
MicroPython sim that runs on https://wokwi.com/pi-pico: KY-040 encoder stands in
for the thumb-roller (rotate=tempo, press=start/stop, hold+rotate=track), an
SSD1306 OLED for the display, and a piezo buzzer for the click. Files:
diagram.json, main.py, ssd1306.py + README with the (manual) setup steps.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:04:53 -05:00
Me Here
90b41ba21c Bump version to 0.0.36 2026-05-28 08:00:00 -05:00
Me Here
362e1fa968 USB-C power for all devices (no batteries); separate Micro end caps; landing Philosophy
Power: standardise the whole family on a single USB-C input — drop the Micro's
2×AA and the Stage's 9V DC pedal jack (+ buck/reverse-polarity). Bring a power
bank; nothing internal to wear out. BOMs updated (Micro ≈$35, Stage ≈$56) and
all copy/cards/READMEs follow.

Micro form: detach the two end caps from the body with a gap (set-back, darker
end faces) so the TRS/USB-C jacks read as being on the ENDS of the bar, not the
front panel.

Landing: add a Philosophy section — "program on the web, play on any device"
(author once → load the program string into whichever form factor fits) and
"USB-C power everywhere — no batteries" (future-proofing rationale).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:00:00 -05:00
Me Here
3fdabcc0bd Bump version to 0.0.35 2026-05-28 07:42:15 -05:00
Me Here
76a94b629b Redesign PM-µ Micro as an inline practice bar
Reworks the Micro per the new brief: a long, narrow extruded-aluminium bar you
patch into your signal instead of a little box.
- Better display: amber 4-char 14-segment (Adafruit font) that shows BPM *and*
  short track names, replacing the 3-digit 7-segment. Off-segments kept very dim
  so the lit digits read clearly.
- Roller instead of knob: a recessed, clickable horizontal thumb-roller —
  roll = tempo, press = start/stop, hold + roll = switch track.
- New form/I-O: 1/4" TRS in on one end; USB-C + 1/4" TRS out on the other;
  USB-C or 2×AA power (battery gauge on the face). Click is summed into the
  signal in the analog domain (+ a small monitor speaker).
info-micro, concepts and the landing card updated to match; BOM reworked
(analog path + 2 jacks + 2×AA + 14-seg) → ≈ $38.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 07:42:15 -05:00
Me Here
50c4e4da32 README: reflect the landing page at / and the editor at /editor.html
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 12:20:18 -05:00
Me Here
ce943761f3 Bump version to 0.0.34 2026-05-26 12:19:24 -05:00
Me Here
f0cc30f373 Dedicated landing page at /; move the editor to /editor.html
The site now opens on a proper front door: a hero (logo + tagline + pitch),
an "Open the Editor →" CTA, and form-factor cards (Editor, Stage, Micro, Embed)
linking out to each page + info. The PE-1 editor app moves from index.html to
editor.html; every "Editor"/"Open" link, the embed.js editor variant, and the
editor's own brand-logo (now → /) are repointed. build.sh + deploy.sh build and
publish both index.html (landing) and editor.html (app).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 12:19:24 -05:00
Me Here
5e5b274e4b README: document the multi-page site, page map, and embed widget
Rebrand the intro to the VARASYS PolyMeter site (PE-1 editor home + concepts +
hardware mockups + embeddable widget); add a Pages map, an Embedding section
with the drop-in snippet, the live program-string note, and refresh the Build
and Files sections for all pages + embed.js.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 12:09:45 -05:00
Me Here
6f4c1a9736 Bump version to 0.0.33 2026-05-26 12:08:11 -05:00
Me Here
884bbcb244 Editor: subtle live program-string bar (editable, copy, paste)
A faded one-line monospace bar under the app shows the current patch via
currentPatch(); it brightens on hover/focus. Press Enter or blur to apply it
(applyPatch) — paste a program string and it loads; the field renormalises to
the canonical string and flashes on apply, tints red on parse failure. A focus
guard keeps refreshUI from overwriting the field while you're typing in it.
Hidden in embed mode. Refreshed from the existing updateCtx() path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 12:08:11 -05:00
Me Here
1b5e430b2a Bump version to 0.0.32 2026-05-26 12:02:26 -05:00
Me Here
d78fb762e5 Per-version info pages; move Stage BOM out to info-stage; add Micro BOM
Each form factor now has an information page (purpose + live embedded widget),
with priced BOMs only on the buildable hardware (Stage ≈$59, Micro ≈$28):
- info-editor.html / info-initial.html — purpose only (web app / concept)
- info-stage.html — purpose + the priced BOM moved out of stage.html
- info-micro.html — purpose + a new ~$28 practice-unit BOM
stage.html drops the BOM panel (+ its .bom CSS) and gains a "Spec & BOM" link;
the shared .bom/.sub table CSS lives in src/base.css. "Info" added to every
page nav and to the concept cards. Wired into build.sh + deploy.sh.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 12:02:17 -05:00
Me Here
3e1ba98cb0 Bump version to 0.0.31 2026-05-26 11:46:26 -05:00
Me Here
fc05cfe4c7 Site phase 2: embeddable widget standard (?embed=1 + embed.js + embed.html)
- Every form factor supports ?embed=1: a head flag (set on <html>, no flash)
  strips the site chrome (base.css [data-embed]) + page-specific panels, leaving
  just the widget, and posts its height so the host can auto-size it.
- Config/settings string preloads via the existing #p=/#sl= hash. Added that
  hash handling to micro.html (it previously only loaded built-in tracks).
- New embed.js loader: <div data-varasys-metronome="micro" data-patch="…"> + one
  <script> → an auto-sizing iframe to <page>?embed=1#p=…. New embed.html documents
  it and dogfoods a live embedded widget.
- "Embed" nav link added across pages; build.sh/deploy.sh build embed.html and
  serve embed.js.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 11:46:26 -05:00
Me Here
dd362530ab Bump version to 0.0.30 2026-05-26 11:38:50 -05:00
Me Here
6568076563 Site phase 1: standard VARASYS header + nav; editor → PE-1; Concepts library
- Shared site header in src/base.css (.site-head/.site-nav/.brand-logo + theme-
  aware logo + .tbtn). Applied to player/stage/micro (replacing their text
  topbars) so the VARASYS logo + tagline + Editor/Concepts nav is on every page.
- Rebrand the editor: "Stackable Metronome" → "PE-1 — PolyMeter Editor" (title +
  h1), with a Concepts link in its header.
- New concepts.html — the PolyMeter Concepts library: cards for the editor and
  each form factor (PM-1 Initial/Stage, PM-µ Micro) + a "more coming" card.
- build.sh + deploy.sh build/deploy concepts.html; deploy.sh now loops over pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 11:38:50 -05:00
Me Here
c1488c0d32 Bump version to 0.0.29 2026-05-26 11:10:20 -05:00
Me Here
31e472c17a Stage + micro: matte-black bead-blasted anodised finish (no stage glare)
Replace the shiny brushed-aluminium look with a bead-blasted matte-black
anodised finish on both the stage and micro mockups:
- flat dark graphite case + a fine bead-blast micro-texture, and the specular
  top highlight removed, so the case doesn't reflect stage lights;
- light laser-etched legend colour (--silk) and the light VARASYS logo variant
  on the dark case; lighter metallic rims on the top-edge connector openings so
  they read on black;
- stage BOM enclosure + comments updated to "die-cast aluminium, bead-blasted,
  matte-black Type II anodise, laser-etched legends".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 11:10:20 -05:00
Me Here
7798ae96c8 Bump version to 0.0.28 2026-05-26 09:47:34 -05:00
Me Here
758cf9c87b stage.html: relabel "idealized" → "initial" (link, comment, loader text)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 09:47:34 -05:00
Me Here
6e21ff9901 Bump version to 0.0.27 2026-05-26 09:45:58 -05:00
Me Here
9d48edf7e0 Rename as-built → stage.html; add micro.html (minimal home-practice unit)
- Rename player-asbuilt.html → stage.html (the pedalboard build). Update
  build.sh + deploy.sh (deploy now also removes the old player-asbuilt.html
  from the web root) and the cross-links in player.html / stage.html.
- New /micro.html — a stripped-down home-practice metronome on the same RP2040
  firmware. Hardware is just: ONE depressable scroll/rotary encoder, a red
  7-segment LED display, a speaker, and USB-C for power. The encoder does
  everything: spin = tempo, press = start/stop, hold + spin = switch track
  (the LED shows the track number, with BPM / TRACK / ▶ indicators). Tracks =
  the editor's seed grooves flattened (23). Shares src/engine.js, setlists.js,
  base.css; synth-only; steady practice loop (ramps/bars ignored).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 09:45:58 -05:00
Me Here
f71327fd41 Bump version to 0.0.26 2026-05-26 08:55:52 -05:00
Me Here
e8c613e3e4 As-built: drop back view; inch dims on front+top (same width); TFT shows all lanes
- Removed the PCB back view (BOM stays in the right column).
- Front and top views now share a left dimension gutter, so they're the same
  width and aligned, and carry inch dimensions: front 4.7 × 5.5 in (120 × 140 mm),
  top-edge thickness ≈ 1.8 in (45 mm), width 4.7 in below.
- Reworked the TFT to use the empty space: tempo with the item name beside it,
  bar/beat at the bottom, and — filling the middle — ALL meter lanes drawn as
  rows of step pads (subdivisions, accent/normal/ghost/mute, amber beat ticks,
  per-lane playhead). Replaces the single beat-dots row.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 08:55:52 -05:00
Me Here
9b5dfd63c5 Bump version to 0.0.25 2026-05-26 08:40:09 -05:00
Me Here
e016682f73 As-built: add a back view (PCB + mounted components); dimensions in inches
- New back view in a right-hand column above the BOM: a green PCB schematic
  with the mounted parts placed roughly as on the front — top-edge jacks,
  ST7789 TFT, RP2040, 9V→5V buck, the PLAY/PREV/ENC/TAP/NEXT footprints, the
  analog-audio block (PCM5102 · NE5532 · DRV134 · PAM8302), speaker, and corner
  mounting holes.
- Dimensions in inches: back view labelled 4.7 in × 5.5 in (120 × 140 mm); the
  top-edge view's thickness now reads ≈ 1.8 in (45 mm).
- Layout: front view (+ top-edge view, loader) on the left; back view + BOM on
  the right.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 08:40:09 -05:00
Me Here
53c5bc1a82 Bump version to 0.0.24 2026-05-26 08:25:04 -05:00
Me Here
02523f4f7a As-built: top-edge connector view + thickness; VARASYS logo; PLAY/roller swap
- Connectors: all jacks move to a separate "top edge" view above the device
  (a brushed-metal edge strip with Trig In / Inst In / Out TRS / 9V DC / USB-C
  and a ↕ ≈ 45 mm total-thickness dimension), since they're top-mounted for
  pedalboard cabling. Removed them from the faceplate.
- Removed the fake corner screws/rivets.
- Swapped PLAY and the tempo roller: a big PLAY now sits up top (centred); the
  roller sits in the button row with TAP, between PREV (far left) and NEXT (far
  right).
- PLAY is static hardware now — it no longer changes colour/icon while playing
  (the screen shows transport state). An illuminated/RGB arcade button could
  reflect it; noted in the comment.
- Use the real VARASYS logo (logo-light, inlined at build) on the metal
  faceplate instead of the text wordmark.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 08:25:04 -05:00
Me Here
810d67d071 Bump version to 0.0.23 2026-05-26 08:10:56 -05:00
Me Here
831e74a584 As-built: brushed-aluminium/stainless case + 9V DC pedal jack (pedalboard-ready)
- Case: reskin the enclosure as a brushed-aluminium / stainless faceplate
  (metal sheen + brushed grain, chrome corner screws, dark engraved legends)
  instead of 3D-printed matte. The on-faceplate captions switch to the dark
  legend colour for contrast; I/O-strip labels stay light (they're on the dark
  recessed bay). BOM enclosure → die-cast aluminium (Hammond 1590-style) /
  folded stainless.
- Power: add a standard 9 V DC pedal jack (2.1 mm centre-negative) so it drops
  straight onto a pedalboard, alongside USB-C (which still powers it on a desk
  and carries config). BOM adds the jack + 9 V→5 V buck + reverse-polarity
  protection. Total ≈ $59.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 08:10:56 -05:00
Me Here
504ea14dba Bump version to 0.0.22 2026-05-26 08:03:15 -05:00
Me Here
a40ff04fd1 As-built: recessed thumb-roller for tempo (no protruding knob); USB-C bus power
- Tempo control: replace the protruding knob with a recessed side-mount
  thumb-roller — a detented encoder (EC11/PEC12) with a ribbed wheel exposed
  only at the edge through a slot, like a mouse scroll wheel, so there's
  nothing to snap off. Scroll/drag tempo interaction is unchanged; the ribs
  scroll for roll feedback (--rib) instead of a knob pointer.
- Power: no battery — the device is USB-C bus-powered from the same port that
  carries config. Dropped the LiPo + TP4056 charger + 5 V boost from the BOM
  (total ≈ $49) and marked USB-C as 5 V in + config.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 08:03:15 -05:00
Me Here
8c94749e4f Bump version to 0.0.21 2026-05-26 07:56:17 -05:00
Me Here
984b71a07d As-built: drop orphaned WS2812 CSS comment after the matrix removal
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:56:17 -05:00
Me Here
b7e12ec49f Bump version to 0.0.20 2026-05-26 07:55:17 -05:00
Me Here
43495777c9 As-built: side-by-side player + BOM; move the beat display onto the TFT
- Layout: wrap the device + loader in a left column and the BOM in a right
  column (flex row, wraps to stacked on narrow screens) so you can see the
  player and the parts list at once. Top bar widened to span both.
- Display: the colour TFT now draws the beat indicator itself — a centred row
  of beat dots (current beat bright, group-starts amber) with the current
  beat's subdivisions as pips below — so the separate 4×16 WS2812 matrix is
  gone. Subdivisions still come from the finest lane sharing lane 1's grid.
- BOM: dropped the WS2812 beat-bar line (−$6 → ≈ $55) — fewer parts, and one
  fewer thing to drive in firmware.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:55:17 -05:00
Me Here
7b14f861a8 Bump version to 0.0.19 2026-05-26 07:42:38 -05:00
Me Here
3e70eadea7 As-built: add on-page bill of materials; confirm analog click-injection
- Add a costed BOM panel below the loader, grouped by subsystem (brain &
  display, beat bar, controls, audio—analog click injection, connectors &
  power, build) with quantities and ballpark prices (~$61 one-off).
- Reflect the confirmed analog mixing in the audio path / comment: PCM5102A
  click DAC → summing op-amp (NE5532/OPA2134) with a hi-Z instrument buffer →
  balanced line driver (DRV134) to the shared 1/4" TRS out, plus a PAM8302A
  monitor amp + speaker — the instrument is never re-digitised (no latency).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:42:38 -05:00
Me Here
5f18629c05 Bump version to 0.0.18 2026-05-26 07:34:40 -05:00
Me Here
4f76783af4 As-built: arcade buttons, use-driven control layout, rear I/O, compact case
Reworked the as-built panel around how it's actually used:

- Buttons: replaced the tactile/keycap ("rubber key") buttons with glossy
  arcade pushbuttons, colour-keyed — cyan PREV/NEXT, a big green/red PLAY,
  amber TAP.
- Layout for use: the rotary encoder sits BELOW the screen (so turning it
  never hides the readout) with the buttons spread edge-to-edge underneath —
  PREV far left, NEXT far right, a bigger central PLAY (+ TAP) — so you're
  far less likely to hit the wrong one mid-performance.
- Rear I/O: external trigger in (footswitch), a 1/4" instrument pass-through
  with the click injected, and a shared 1/4" balanced-TRS main out; plus the
  monitor speaker and USB-C, each a labelled jack with a tooltip.
- Size: shrank the case to hug its content (max-width 560→380, trimmed
  padding and inter-section margins) — the dead margin is gone.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:34:40 -05:00
Me Here
4340f1838e Bump version to 0.0.17 2026-05-26 07:11:48 -05:00
Me Here
b434520505 As-built: upgrade the mono OLED to a 320×240 colour IPS TFT (ST7789)
The 128×64 mono OLED was too pixelated, so step up to the realistic next
tier: a 2.0″ 320×240 colour IPS TFT (ST7789 — e.g. Pimoroni Pico Display 2.0),
~5× the resolution and full colour.

- Drop the 1-bit threshold + image-rendering:pixelated; render on a hi-DPI
  canvas (backing = 320×240 × devicePixelRatio) with smooth anti-aliased type.
- Richer colour layout: dim header (position + green ▶ PLAY / grey ■ STOP),
  a big cyan tempo with "BPM ♩ <grouping>", the centred item name (ellipsised),
  and a bottom strip with bar·beat + an amber bars countdown.

The screen stays a fixed dark UI (a TFT shows whatever firmware draws); the page
chrome still follows light/dark/system. Beat matrix, encoder, buttons unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 07:11:48 -05:00
Me Here
00cb245331 Bump version to 0.0.16 2026-05-26 07:06:28 -05:00