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)) {