/*@BUILD:include:src/header.html@*/

# PolyMeter

Polymetric grooves — one engine, one program string, every form factor.

Stack independent meter lanes — each with its own subdivision, drum voice and per‑step accents — to build true polymeter and ratio polyrhythm. Design a groove once; it saves to a compact program string that plays back identically on the web editor, the hardware concepts, or an embedded widget. The editor is open below — or pick any form factor to load and play the same groove on it.

Philosophy

### 🛠️ Program on the web, play on any device

The website is the workbench: design in the editor, and the same program string loads into whichever form factor fits the moment. One engine, one language.

### 🔌 USB‑C power everywhere — no batteries

Every device runs over a single USB‑C port (the larger ones add a pass‑through to daisy‑chain). No internal battery to wear out; bring a power bank. One connector keeps it all future‑proof.

Pick a form factor — it loads live below
PM_E‑2 Editor Specs & info ⓘ · Open full page ↗
program
The current program, decoded (not base64). Paste a patch or a base64 set‑list code; it's checked, then loaded. Conventions: GM names or numbers (`kick` / `36`), `=X.x-` steps, `/2` subdivision, `(3,8)` euclidean, `@-3` dB, `~` polymeter.
Firmware · Rust (developer · alpha)

### 🦀 Native‑Rust firmware — PM_K‑1 (RP2350 / Pico 2)

An experimental native‑Rust build of the Kit firmware: one `no_std` core (track codec + scheduler, validated against the same golden vectors as the web and CircuitPython builds) plus per‑board drivers. It now runs as a working metronome — boots, drives the ST7796 display, plays built‑in grooves with audio clicks, and has a drum‑notation view. Controls: A = play/stop, B = grid/notation, joystick = tempo & groove. (Alpha; built and reviewed in a host simulator.)

Download pm‑kit.uf2 ↓

Flash: hold BOOTSEL on the Pico 2, plug in USB, and drag the `.uf2` onto the RP2350 drive. Recover anytime with BOOTSEL + a CircuitPython `.uf2`. Source & staged plan live in `rust/` and `docs/rust-port.md`.

/*@BUILD:include:src/footer.html@*/