diff --git a/README.md b/README.md index 240fd86..40e8186 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ goes in a share link, and you can hand‑write or edit it. ### Patch grammar ``` -v1 ; t [; vol] ; ; … [; tr/] [; rmp//] +v1 ; t [; vol] [; cd] [; b] ; … [; tr/] [; rmp//] ``` | Token | Meaning | Example | @@ -47,6 +47,8 @@ v1 ; t [; vol] ; ; … [; tr/] [; rmp | `v1` | format version (always first) | `v1` | | `t` | tempo | `t120` | | `vol` | master volume 0–100 | `vol70` | +| `cd` | time countdown, seconds (auto-advance with Continue) | `cd60` | +| `b` | segment length in bars (auto-advance with Continue) | `b16` | | `tr/` | gap trainer: play N bars, mute M | `tr2/2` | | `rmp//` | tempo ramp: start BPM, ±step, every N bars | `rmp80/5/4` | | `` | a meter lane (see below) | `kick:4` | @@ -115,15 +117,36 @@ In the set‑list panel's **⋯** menu: |-----|--------| | `Space` | play / stop (works everywhere except while typing in a text field) | | `T` | tap tempo | -| `↑` / `↓` | tempo ±1 (`Shift` = ±10) | +| `←` / `→` | tempo ±1 (`Shift` = ±10) | | `A` | add meter lane | -| `N` | load next set‑list item | -| `Alt`+`↑` / `Alt`+`↓` | reorder the selected set‑list item | +| `↑` / `↓` / `Home` / `End` | move the **cue** cursor (crosses set lists) | +| `PgUp` / `PgDn` | cue the previous / next set list | +| `Enter` | commit the cued item — switches on the next **bar** (smooth) | +| `Shift`+`Enter` | commit now — switches on the next **beat** (rude) | +| `N` / `P` | load next / previous immediately (rude quick‑step) | +| `Alt`+`↑` / `Alt`+`↓` | reorder the cued item | | `1`–`9` | enable / silence lane 1–9 | | `?` | shortcuts help | -| `Esc` | close the help / share dialog | +| `Esc` | close the help / share dialog · cancel an armed switch | -(Arrow keys are left alone while a slider or dropdown is focused, so they still adjust it.) +(Arrow / navigation keys are left alone while a slider or dropdown is focused, so they still adjust it.) + +## Live performance + +The set list is performance-ready: you can line up where you're going next without +disturbing what's playing, then commit on a musical boundary — no audible gap. + +- **Cue, then commit.** The arrows / `Home` / `End` / `PgUp` / `PgDn` move a *cue + cursor* (amber outline) through items — across set lists, without loading anything. + **`Enter`** commits the cued item with a **smooth** cutover at the next **bar**; + **`Shift`+`Enter`** is a **rude** cutover at the next **beat** ("wrong thing playing, + fix it now"). `N` / `P` are immediate rude quick‑steps. `Esc` cancels an armed switch. +- **Bar‑length segments.** Give an item a **bar** count (Timers box, or the `b` + patch token) and a bar countdown (▦) shows bars remaining. With **Continue** on, it + auto‑advances to the next item at the bar boundary — so a *song* is just a set list + of segments (each with its own tempo, ramp and bar length) that hand off seamlessly. +- All transitions — manual or auto, beat or bar — keep the clock continuous; the loaded + item can even live in a set list you're not currently viewing (the player names it). ## Versioning diff --git a/index.html b/index.html index f282b69..d155a8c 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,7 @@ Stackable Metronome — Mockup +