From 1e19cd4626b4f4bfa4f17e557e0cc847d31eea30 Mon Sep 17 00:00:00 2001 From: Me Here Date: Mon, 25 May 2026 13:47:50 -0500 Subject: [PATCH] Add a continuous ~4:00 demo song set list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- index.html | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index b2dac24..d002e20 100644 --- a/index.html +++ b/index.html @@ -555,7 +555,7 @@ function advanceMaster(ahead) { } } 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(); 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"], ["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) 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 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). -const SEED_VERSION = 2; +const SEED_VERSION = 3; if ((lsGet(LS.seeded, 0) | 0) < SEED_VERSION) { for (const s of SEED_SETLISTS) { if (!setlists.some((x) => x.title === s.title)) {