Update README: fix stale claims found in code review
- Drop the false "vendored QR library" line; state it's a single self-contained, zero-dependency file and document offline use. - Fix keyboard shortcuts to match the in-app help: remove the non-existent R toggle, add Alt+↑/↓ (reorder), 1–9 toggles a lane. - "GM drum voice" → synthesized; set-list items load on click (no ▶ auto-start); QR is an external service; clarify release.sh. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0142039b0e
commit
1f957b7630
1 changed files with 26 additions and 15 deletions
41
README.md
41
README.md
|
|
@ -7,21 +7,28 @@ pattern. Layering lanes produces polymeter and true ratio polyrhythm.
|
||||||
|
|
||||||
**Live:** https://metronome.varasys.io
|
**Live:** https://metronome.varasys.io
|
||||||
|
|
||||||
It's a single page (`index.html`) plus a vendored QR library — no build step,
|
It's a single, self‑contained `index.html` — **zero dependencies**: no framework,
|
||||||
no framework. State (presets, set lists, practice log, theme) lives in
|
no build step, no bundled or CDN libraries, and nothing fetched at runtime. State
|
||||||
`localStorage`.
|
(set lists, the practice log, theme and UI preferences) lives in `localStorage`.
|
||||||
|
|
||||||
|
Because nothing loads from the network, you can save the page (`Ctrl`/`⌘`+`S`) and
|
||||||
|
open it straight from disk to run fully offline. One catch from a local `file://`:
|
||||||
|
the browser may not persist `localStorage` between sessions, so use **Export all**
|
||||||
|
(set‑list **⋯** menu) to back up your work.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **Meter lanes** — grouping (odd meters), subdivision, GM drum voice, per‑beat
|
- **Meter lanes** — grouping (odd meters), subdivision, a synthesized drum/percussion voice, per‑beat
|
||||||
on/off pattern (rests), mute, live measure counter.
|
on/off pattern (rests), mute, live measure counter.
|
||||||
- **Polyrhythm** — a per‑lane *poly* toggle fits a lane's beats evenly into lane 1's
|
- **Polyrhythm** — a per‑lane *poly* toggle fits a lane's beats evenly into lane 1's
|
||||||
bar (e.g. 5‑over‑4, 3‑over‑2).
|
bar (e.g. 5‑over‑4, 3‑over‑2).
|
||||||
- **Practice** — gap/mute trainer (play N / mute M bars) and a tempo ramp with a
|
- **Practice** — gap/mute trainer (play N / mute M bars) and a tempo ramp with a
|
||||||
start BPM and signed step.
|
start BPM and signed step.
|
||||||
- **Set lists** — named, ordered lists of saved setups; ▶ loads + starts an item,
|
- **Set lists** — named, ordered lists of saved setups; click an item to load it
|
||||||
**N** advances; each play is logged for cross‑day comparison.
|
(it switches live if you're already playing), **N** loads the next; each play is
|
||||||
- **Sharing** — copy a link (with QR) to your current settings or a whole set list.
|
logged for cross‑day comparison.
|
||||||
|
- **Sharing** — copy a link to your current settings or a whole set list (with an
|
||||||
|
optional QR generated by an external service).
|
||||||
- **Theming** — System / Light / Dark.
|
- **Theming** — System / Light / Dark.
|
||||||
|
|
||||||
## The share language
|
## The share language
|
||||||
|
|
@ -99,21 +106,24 @@ In the set‑list panel's **⋯** menu:
|
||||||
- **QR ↗** opens a third‑party QR service (api.qrserver.com) with the link in its
|
- **QR ↗** opens a third‑party QR service (api.qrserver.com) with the link in its
|
||||||
URL so you can scan it on a phone. A banner warns you it's external — confirm the
|
URL so you can scan it on a phone. A banner warns you it's external — confirm the
|
||||||
QR decodes to the shown link before trusting it. (No QR is generated locally.)
|
QR decodes to the shown link before trusting it. (No QR is generated locally.)
|
||||||
- **Export all / Import file** back up presets + set lists + logs as a JSON file.
|
- **Export all / Import file** back up your set lists and practice log as a JSON
|
||||||
|
file (a legacy `presets` field is included for backward compatibility).
|
||||||
|
|
||||||
## Keyboard shortcuts
|
## Keyboard shortcuts
|
||||||
|
|
||||||
| Key | Action |
|
| Key | Action |
|
||||||
|-----|--------|
|
|-----|--------|
|
||||||
| `Space` | play / stop (except while typing in a text field) |
|
| `Space` | play / stop (works everywhere except while typing in a text field) |
|
||||||
| `T` | tap tempo |
|
| `T` | tap tempo |
|
||||||
| `↑` / `↓` | tempo ±1 (`Shift` = ±10) |
|
| `↑` / `↓` | tempo ±1 (`Shift` = ±10) |
|
||||||
| `A` | add meter lane |
|
| `A` | add meter lane |
|
||||||
| `1`–`9` | mute lane N |
|
| `N` | load next set‑list item |
|
||||||
| `R` | toggle the set‑list panel |
|
| `Alt`+`↑` / `Alt`+`↓` | reorder the selected set‑list item |
|
||||||
| `N` | next set‑list item |
|
| `1`–`9` | enable / silence lane 1–9 |
|
||||||
| `?` | shortcuts help |
|
| `?` | shortcuts help |
|
||||||
| `Esc` | close dialog / panel |
|
| `Esc` | close the help / share dialog |
|
||||||
|
|
||||||
|
(Arrow keys are left alone while a slider or dropdown is focused, so they still adjust it.)
|
||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
|
|
||||||
|
|
@ -122,8 +132,9 @@ In the set‑list panel's **⋯** menu:
|
||||||
- **Formal** — a clean commit tagged `v<VERSION>` → `X.Y.Z`.
|
- **Formal** — a clean commit tagged `v<VERSION>` → `X.Y.Z`.
|
||||||
- **Dev** — anything else → `X.Y.Z-dev.<utc-timestamp>.<short-sha>[.dirty]`.
|
- **Dev** — anything else → `X.Y.Z-dev.<utc-timestamp>.<short-sha>[.dirty]`.
|
||||||
|
|
||||||
Cut a release with `./release.sh [X.Y.Z]` (bumps `VERSION` + tags `v<VERSION>`),
|
Cut a release with `./release.sh [X.Y.Z]` — the optional arg bumps & commits
|
||||||
then push the tag and deploy.
|
`VERSION`; it then tags the current commit `v<VERSION>` (requires a clean tree).
|
||||||
|
Push the tag, then deploy.
|
||||||
|
|
||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue