Add a continuous ~4:00 demo song set list

New "🎵 Song" seed list (SEED_VERSION 3): 8 bar-length segments that
auto-advance through tempo ramps (92→120 build, 132→83 outro), a 2/4
samba, a half-time shuffle, a 909 four-on-the-floor and a 16th peak —
totalling ~4:00. Also gate bar-count auto-advance on the Continue toggle
(matches its "countdown / bars" label; only bar-length items are
affected, which previously didn't exist outside this song).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Me Here 2026-05-25 13:47:50 -05:00
parent 1b16a61930
commit 1e19cd4626

View file

@ -555,7 +555,7 @@ function advanceMaster(ahead) {
} }
} }
segBarCount = barIndex; // whole bars elapsed in this segment segBarCount = barIndex; // whole bars elapsed in this segment
if (segBars > 0 && barIndex >= segBars && !pendingSwitch && state.running) { // bar-count auto-advance if (segBars > 0 && barIndex >= segBars && !pendingSwitch && state.running && continueMode) { // bar-count auto-advance (Continue)
const nx = nextLoadedTarget(); const nx = nextLoadedTarget();
if (nx) { pendingSwitch = { sl: nx.sl, item: nx.item, atTime: masterBeatTime, reason: "auto" }; break; } // cut at this downbeat if (nx) { pendingSwitch = { sl: nx.sl, item: nx.item, atTime: masterBeatTime, reason: "auto" }; break; } // cut at this downbeat
} }
@ -1258,6 +1258,18 @@ const SEED_SETLISTS = [
["Tempo builder 80↑", "t80;woodblock:4;rmp80/4/4"], ["Tempo builder 80↑", "t80;woodblock:4;rmp80/4/4"],
["Gap trainer (play 2 / rest 2)", "t100;kick:4;hatClosed:4/2;tr2/2"], ["Gap trainer (play 2 / rest 2)", "t100;kick:4;hatClosed:4/2;tr2/2"],
] }, ] },
// A continuous ~4:00 song: each item has a bar length (b<n>) so it auto-advances (with
// Continue on) through tempo ramps and shifting styles. Durations ≈ bars × beats × 60/bpm.
{ title: "🎵 Song — continuous (~4:00)", description: "A full song: turn on Continue, press ▶ on “Intro”, and it plays straight through (~4 min) — segments auto-advance on their bar counts, through tempo ramps and shifting styles.", items: [
["Intro — hats & kick", "t88;b8;kick:4=X.x.;hatClosed:4/2=gggggggg"],
["Groove in — backbeat", "t88;b16;kick:4=X.x.;snare:4=.X.X;hatClosed:4/2"],
["Half-time shuffle", "t92;b12;kick:4/3=X....x...x..;snare:4/3=..gg.gX.gg.g;hatClosed:4/3=X.xX.xX.xX.x"],
["Build — ramp 92→120", "t92;b16;rmp92/4/2;kick:4;snare:4=.X.X;hatClosed:4/2"],
["Four-on-the-floor (909)", "t124;b18;kick909:4;clap909:4=.X.X;hat909:4/2=.X.X.X.X"],
["Samba break (2/4)", "t116;b24;tomLow:2/4=x...X...;hatClosed:2/4;woodblock:2/4=X.xx.xX."],
["Peak — 16ths", "t132;b16;kick:4=X..x;snare:4=.X.X;hatClosed:4/4"],
["Outro — ramp down", "t132;b8;rmp132/-7/1;kick:4=X..x;hatClosed:4/2=gggggggg"],
] },
]; ];
/* ========================================================================= /* =========================================================================
@ -1487,7 +1499,7 @@ window.addEventListener("keydown", (e) => {
// Seed the demo set lists. Versioned + additive: a newer SEED_VERSION adds any // Seed the demo set lists. Versioned + additive: a newer SEED_VERSION adds any
// seed list whose title isn't already present, without clobbering the user's lists // seed list whose title isn't already present, without clobbering the user's lists
// (and won't re-add one they've deleted at the same version). // (and won't re-add one they've deleted at the same version).
const SEED_VERSION = 2; const SEED_VERSION = 3;
if ((lsGet(LS.seeded, 0) | 0) < SEED_VERSION) { if ((lsGet(LS.seeded, 0) | 0) < SEED_VERSION) {
for (const s of SEED_SETLISTS) { for (const s of SEED_SETLISTS) {
if (!setlists.some((x) => x.title === s.title)) { if (!setlists.some((x) => x.title === s.title)) {