Strudelify

Streetlife

Crusaders

KeyF minorTempo110 bpm
0:00/0:00
// Streetlife — Crusaders
// 110 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 220 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A B C B D B E F G H I J K L M N O P Q R S B E F G H I J K L M N O T U V W X Y Z AA AB AC AD AE ~@6 AF AG@2 AH@2 AI AJ
  AK AL@3 AM@2 AN AO AP AQ@2 AR AS AT@4 AU AV AW AX AY AZ BA BB BC ~@7 A ~@16 B E F G H I J K B E F G H I J K L M N O P
  Q R S B E F G H I J K L M N O T U V W X Y Z AA AB AC AD AE ~@6 AF AG@2 AH@2 AI AJ AK BD@2 BE BF@3 BG BH@2 BI@2 AH@2 AI
  AJ AK BD@2 BE BJ@5 BK BL AW AX AY BM BN BO BP BQ AW AX AY BM BN BO BP BQ AW AX AY BM BN BO BP BR
>`.pickRestart({
  A: "[bb3,c4,f4]@3 ~ [b3,db4,gb4]@3 ~ [db4,eb4,ab4]@3 ~ [b3,db4,gb4]@4", B: "[c4,eb4,f4,ab4]@11 ~ [c4,eb4,f4,ab4] ~@3",
  C: "[ab3,bb3,db4,f4]@11 ~ [ab3,bb3,db4,f4] ~@3", D: "[ab3,bb3,db4,f4]@9 ~ [eb4,ab4,c5] ~@2 [d4,g4,bb4] ~@2",
  E: "~@3 bb3@6 ~@2 bb3 [db4,f4,ab4] ~ [ab3,db4,f4] ~, [ab3,db4,f4]@9 ~@7", // Db
  F: "[bb3,c4,eb4,g4]@11 ~ [bb3,c4,eb4,g4] ~@3", G: "[ab3,c4,eb4,f4]@8 ~@2 [eb4,ab4,c5] ~@2 [d4,g4,bb4] ~@2",
  H: "[c4,eb4,f4,ab4]@8 ~@2 [bb3,c4,eb4,f4] ~@2 [ab3,c4,eb4,f4] ~@2", I: "[ab3,db4,f4]@9 ~@2 bb3 [db4,f4,ab4]!2 ~@2",
  J: "[bb3,c4,eb4,g4]@8 ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2", K: "[ab3,c4,eb4,f4]@15 ~",
  L: "[bb3,db4,f4,ab4,c5]@8 [db4,f4,ab4,c5]@3 ~ [db4,f4,ab4,c5]@3 ~, ~@8 eb3@7 ~", // Bbm7 Dbmaj7
  M: "[c4,eb4,g4,bb4]@4 ~@3 eb5, ~ [f3,eb4,f4,ab4,c5]", // Cm7 Fm7
  N: "[bb3,db4]@7 ~@5 [db4,f4,ab4]@3 ~, c5, [f4,ab4]@11 ~@5, ~@8 eb3@7 ~", // Bbm Db Fm
  O: "[g4,c5,f5]@8 ~@2 [g4,bb4,c5,eb5] ~@3 [g4,bb4,c5,eb5]@2, ab3", P: "[ab3,eb4,gb4,ab4,b4]@2 b4 bb4, ~ [db3,eb4,gb4]",
  Q: "[gb3,bb3,db4,f4,ab4]@4 ~@3 eb5, ~ [g3,db4,f4,bb4]", // Gbmaj7 Gm7b5
  R: "[bb3,db4,f4,ab4,c5]@7 [db4,ab4,db5] ~@2 [ab4,db5,f5]@5 ~, ~@7 f4@7 ~@2, ~@8 eb3@7 ~", // Bbm7 Db5 Db
  S: "[g4,c5,f5]@2 ~ [g4,c5,f5] ~ [g4,c5,f5] ~ ab3 [g4,c5,f5] ~@3 [eb4,g4,bb4]@4, ab3@5 ~@11", // Csus4 Eb
  T: "[db4,e4,ab4,b4]@5 [gb3,e4,ab4,b4] ~ [b3,eb4,gb4,bb4]@8 ~", // Dbm7 E Bmaj7
  U: "[b3,d4,gb4,a4]@5 [e3,d4,gb4,a4] ~ [a3,db4,e4,ab4]@8 ~", // Bm7 D Amaj7
  V: "[bb3,db4,f4,ab4,c5]@7 [db4,f4,ab4,db5] ~@2 [ab4,db5,f5]@5 ~, ~@8 eb3@7 ~", // Bbm7 Db
  W: "[g4,c5,f5]@2 ~ [g4,c5,f5] ~ [g4,c5,f5] ~ ab3 [g4,c5,f5]@4 ~@4, ab3@5 ~@11", // Csus4
  X: "[e3,b3,e4,gb4,ab4] [eb3,b3,db4,eb4,gb4]", Y: "[db3,ab3,b3,e4] [b2,gb3,b3,db4,eb4], eb4 ~@15",
  Z: "[e3,b3,e4,gb4,ab4] [eb3,b3,eb4,gb4], c4 ~@15", // E B
  AA: "[db3,b3,e4]@6 ab3 db3 [b2,gb3]@4 gb3@2 b2@2, ab3@5 ~@3 [b3,eb4]@6 ~@2", // Dbm7 B5 B
  AB: "[f3,c4,f4,g4,a4]@7 f3 [e3,c4,e4,g4]@7 e3", // F C
  AC: "[d3,a3,c4,d4,f4]@7 d3 [c3,c4,d4]@4 g3@2 c4 c3, ~@8 e4@7 ~, ~@8 g3@3 ~@5", // Dm7 Csus2
  AD: "[f3,a3,c4,f4]@6 f3 ~ [e3,c4,e4,g4]@6 e3 ~", AE: "[d3,a3,c4,d4,f4]@7 ~@9",
  AF: "~@8 [bb3,c4,f4]@3 ~ [b3,db4,gb4]@3 ~", // Bbsus2 Bsus2
  AG: "[[db4,eb4,ab4]@3 ~ [b3,db4,gb4]@4 [c4,eb4,f4,ab4]@11 ~ [c4,eb4,f4,ab4] ~@6 bb3@5, ~@3 [ab3,db4,f4]]/2", // Dbsus2 Bsus2 Fm7 Db
  AH: "[~@3 bb3 [db4,f4,ab4] ~ [ab3,db4,f4] ~ [bb3,c4,eb4,g4]@11 ~ [bb3,c4,eb4,g4] ~@3 [ab3,c4,eb4,f4]@8]/2", // Db Cm7 Fm7
  AI: "~@2 [eb4,ab4,c5] ~@2 [d4,g4,bb4] ~@2 [c4,eb4,f4,ab4]@8", // Ab Gm Fm7
  AJ: "~@2 [bb3,c4,eb4,f4] ~@2 [ab3,c4,eb4,f4] ~@2 [ab3,db4,f4]@8", AK: "~@3 bb3 [db4,f4,ab4]!2 ~@2 [bb3,c4,eb4,g4]@8",
  AL: "[~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [ab3,c4,eb4,f4]@15 ~@6 c5 f5 ~ g5 ~ ab5 ~ [c4,eb4,f4,ab4,g5] f5 eb5 b4 ~@2 ab4 ~@2 bb4 c5 ~, ~@24 [c4,eb4,f4,ab4]@11 ~@4 bb4@3 ~ bb3@5, ~@5 [ab3,db4,f4]]/3", // Cm Fm7 Db
  AM: "[~@3 [bb3,bb4] [db4,f4,ab4,c5] ~ [ab3,db4,f4,eb5] ~ f5 g5 f5 eb5 c5 bb4 ab4 f4 c5 ~ bb4 ~ [bb3,c4,eb4,g4,c5] ~ eb5 ~@2 c5 ~@3 c5 ab5 ~, ~@8 [bb3,c4,eb4,g4]@11 ~@4 c5@2 ~@7, ~@3 [ab3,c4,eb4,f4]]/2", // Bb Dbmaj7 Db Cm7 Fm7
  AN: "[c5,c6] ~ [eb4,ab4,c5,eb5,eb6] ~ [f5,f6] [d4,g4,bb4] [ab5,ab6] [f5,f6] ~@5 c6 bb5 f6, ~ [c4,eb4,f4,ab4]", // C Ab F Gm Ab F Fm7
  AO: "~ eb6 [bb3,c4,eb4,f4,b5] bb5 ab5 [ab3,c4,eb4,f4] f5 ~ ab5 ~ f5 bb5 ~ ab5 c5 b4, ~ [ab3,db4,f4]", // Bbsus4 Fm7 Db
  AP: "bb4 ~@2 bb3 [db4,f4,ab4]!2 ~@3 c5 ab4 bb4 c5 db5 eb5 f5, ~ [bb3,c4,eb4,g4]", // Db Cm7
  AQ: "[gb5 g5 [c4,eb4,g4,ab5] a5 bb5 [c4,eb4,g4] ab5 ~ c6 ~ ab5 bb5 ~ ab5 g5 [g5,ab5] f5 ~@9 c6 ~ ab5 ~ f5 ~, ~@8 [ab3,c4,eb4,f4]@15 ~ [bb3,db4,f4,ab4,c5]@8]/2", // Abmaj7 Cm Abmaj7 Fm7 Bbm7
  AR: "[db4,f4,ab4,c5]@2 ab5 f5 ~ c6 ~ ab5 g5 ~@2 c5 c6 ~ ab5 f5, eb3@7 ~@9, c6 ~@3 [db4,f4,ab4,c5]@3 ~ [c4,eb4,g4,bb4]@8", // Dbmaj7 Cm7
  AS: "c5 ~@2 c6 ab5 g5 f5 db5 c5 bb4 ~ ab4 ~ bb4 c5 eb5, [f3,eb4,f4,ab4]@8 [bb3,db4]@7 ~", // Fm7 Bbm
  AT: "[eb6 ~ db6 ~ [db4,f4,ab4,c6]@2 eb6 eb5 ~ c6 ~ g5 eb5 c5 bb4 ab4 bb4 ab4 [g4,bb4,c5,eb5] ab4 [c5,eb5] [g5,bb5] [c5,eb5] ab4 b4@3 b4@2 [gb3,e4,ab4,b4,e5] ~ db5 eb5 e5 gb5 ab5 bb5 ab5 gb5 e5 ~ db6 ~ gb5 ~ [e3,d4,gb4,a4,e5] ~ b5 ab5 e5 db5 a4 ab4 a4 ab4 gb4 ~@2 [e5,f5] ~@2 g5 ab5 [db4,f4,ab4,db5,db6], eb3@7 ~ ab3@16 [db4,e4,ab4]@5 ~@2 [b3,eb4,gb4,bb4]@8 ~ [b3,d4,gb4,a4]@5 ~@2 [a3,db4,e4]@8 ~ [bb3,db4,f4,ab4,c5]@7 ~, ~@8 [g4,f5]@8 ~@31 ab4@5 ~@12, ~@8 c5@4 ~@15 b5 ~@36]/4", // Dbmaj7 Cm7 Cm Gm Cm E D Fmaj7 …
  AU: "eb6 ~ db6 c6 ~ bb5 ~ ab5 ~ bb5 b5 [g4,c5,f5,c6] ab5 [g4,c5,db5,f5] c5 [ab3,bb4], eb3@7 ~ ab3@5 ~@3, ~@2 [ab4,db5,f5]@5 ~ [g4,c5,f5]@2 ~@6", // Csus4 Absus2 Db Csus4
  AV: "c5 db5 [c5,db5] c5 ~@4 [e3,b3,e4,gb4,ab4]@8, [g4,f5] ~@3", // Dbmaj7 E G7
  AW: "[eb3,b3,db4,eb4,gb4] [db3,ab3,b3,e4], ~@8 eb4 ~@7", AX: "[b2,gb3,b3,db4,eb4] [e3,b3,e4,gb4,ab4], ~@8 c4 ~@7",
  AY: "[eb3,b3,eb4,gb4]@8 [db3,b3,e4]@6 ab3 db3, ~@8 ab3@5 ~@3", // B Dbm7
  AZ: "[b2,gb3]@4 gb3@2 b2@2 [f3,c4,f4,g4,a4]@7 f3, [b3,eb4]@3 ~@5", BA: "[e3,c4,e4,g4]@7 e3 [d3,a3,c4,d4,f4]@7 d3",
  BB: "[c3,c4,d4]@4 g3@2 c4 c3 [f3,a3,c4,f4]@6 f3 ~, e4@7 ~@9, g3@3 ~@13", // Csus2 F
  BC: "[e3,c4,e4,g4]@6 e3 ~ [d3,a3,c4,d4,f4]@7 ~", // C Dm7
  BD: "[~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [ab3,c4,eb4,f4]@15 ~ [bb3,db4,f4,ab4,c5]@8]/2", // Cm Fm7 Bbm7
  BE: "[db4,f4,ab4,c5]@3 ~ [db4,f4,ab4,c5]@3 ~ [c4,eb4,g4,bb4]@8, eb3@7 ~@9", // Dbmaj7 Cm7
  BF: "[~@6 eb5@2 [bb3,db4]@7 ~@5 [db4,f4,ab4]@3 ~ [g4,c5,f5]@8 ~@2 [g4,bb4,c5,eb5] ~@3 [g4,bb4,c5,eb5]@2 [ab3,eb4,gb4,ab4,b4]@8, [f3,eb4,f4,ab4,c5] c5@2 ~@3, ~@8 [f4,ab4]@11 ~@29, ~@16 eb3@7 ~ ab3@16 ~@8]/3", // Bbm Db Csus4 Cm7 Abm7 Fm7 Fm
  BG: "b4 bb4 [gb3,bb3,db4,f4,ab4]@2, [db3,eb4,gb4] ~", // Gbmaj7 Ebm7
  BH: "[~@6 eb5@2 [bb3,db4,f4,ab4,c5]@7 [db4,ab4,db5] ~@2 [ab4,db5,f5]@5 ~ [g4,c5,f5]@2 ~ [g4,c5,f5] ~ [g4,c5,f5] ~ ab3, [g3,db4,f4,bb4]@8 ~@7 f4@7 ~@10, ~@16 eb3@7 ~ ab3@5 ~@3]/2", // Bbm7 Db5 Db Csus4 Gm7b5
  BI: "[[g4,c5,f5] ~@3 [eb4,g4,bb4]@4 [c4,eb4,f4,ab4]@11 ~ [c4,eb4,f4,ab4] ~@6 bb3@5, ~@3 [ab3,db4,f4]]/2", // Csus4 Eb Fm7 Db
  BJ: "[~@6 eb5@2 [bb3,db4]@7 ~@5 [db4,f4,ab4]@3 ~ [g4,c5,f5]@8 ~@2 [g4,bb4,c5,eb5] ~@3 [g4,bb4,c5,eb5]@2 [db4,e4,ab4,b4]@5 [gb3,e4,ab4,b4] ~ [b3,eb4,gb4,bb4]@8 ~ [b3,d4,gb4,a4]@5 [e3,d4,gb4,a4] ~ [a3,db4,e4,ab4]@8 ~ [bb3,db4,f4,ab4,c5]@7 [db4,f4,ab4,db5], [f3,eb4,f4,ab4,c5] c5@2 ~@7, ~@8 [f4,ab4]@11 ~@61, ~@16 eb3@7 ~ ab3@16 ~@40]/5", // Bbm Db Csus4 Cm7 Dbm7 E Bmaj7 Bm7 …
  BK: "~@2 [ab4,db5,f5]@5 ~ [g4,c5,f5]@2 ~ [g4,c5,f5] ~ [g4,c5,f5] ~ ab3, eb3@7 ~ ab3@5 ~@3", // Db Csus4
  BL: "[g4,c5,f5] ~ [e3,b3,e4,gb4,ab4]@2", BM: "[b2,gb3]@2 gb3 b2 [f3,c4,f4,g4,a4]@4, [b3,eb4]@3 ~@5",
  BN: "[e3,c4,d4,e4,g4] [d3,a3,c4,f4], ~@8 e4 ~@7", BO: "[c3,g3,c4,d4,e4] [f3,c4,f4,g4,a4], ~@8 db4 ~@7",
  BP: "[e3,c4,e4,g4]@8 [d3,c4,f4]@6 a3 d3, ~@8 a3@5 ~@3", BQ: "[c3,g3]@2 g3 c3 [e3,b3,e4,gb4,ab4]@4, [c4,e4]@3 ~@5",
  BR: "[c3,g3]@2 g3 c3 ~@4, [c4,e4]@7 ~@9", // C5 C
})).s("gm_epiano1").gain(0.48)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B@2 C D C E F G C E F G H I J K L M N O C E F G C E F G H I J P Q R N S T U T V W X W Y Z@6 AA AB AC AD AE AF AC AD
  AE AF AC AD AE AF AC AD AE AG AH AI AJ AK AL AM AN AO AP AQ AP AR AS AT AU@8 A C E F G C E F G C E F G C E F G C E F G
  C E F G C E F G C E F G H I J K L M N O C E F G C E F G H I J P Q R N S T U T V W X W Y Z@6 AA AB AC AD AE AF AC AD AE
  AG AH AI AJ AV AW AX AN AY AC AD AE AF AC AD AE AG AH AI AJ AK AL AM AN AO AP AQ AP AR AS AT AS AZ AP AQ AP AR AS AT
  AS AZ AP AQ AP AR AS AT AS BA
>`.pickRestart({
  A: "c2@3 ~ db2@3 ~ eb2@3 ~ e2@3 ~", B: "[f1@4 ~ eb2 e2@2 f2 ~@6 a1 bb1@4 bb1 ab2 a2@2 bb2 ~@6 e1, ~ f1@2 f1@2 ~@3]/2",
  C: "f1@3 f1 ~ eb2 e2@2 f2 ~@6 a1", D: "bb1@3 bb1 ~ ab2 a2@2 bb2 ~@3 bb1@4", E: "bb1@3 bb1 ~ ab2 a2@2 bb2 ~@5 bb1 b1",
  F: "c2@3 c2 ~ bb2 b2@2 c3 ~@4 f2@2 f2", G: "f1@3 f1 ~ eb2 e2@2 f2 ~@2 f1 bb1 ab1@2 eb1",
  H: "bb1@2 ~ bb1 ~ f2 e2@2 eb2 ~@2 bb1 eb2 ~ bb1 b1", I: "c2@2 ~ c2 ~ g2 gb2@2 f2 ~@2 c2 f2 c2@2 b1",
  J: "bb1@2 ~ bb1 ~ f2 e2@2 eb2 ~@2 bb1 eb2 ~ bb1 g1", K: "ab1@2 ~ ab1 ~ ab1 eb2@2 ab1 ~@2 eb2 ab2@2 eb2 ~",
  L: "ab1@2 ~ ab1 ~ eb2 d2@2 db2 ~@3 ab1@3 f1", M: "gb1@2 ~ gb1 ~ db2 gb1 ~ g1 ~@3 g2 ~ g1 ab1",
  N: "bb1@2 ~ bb1 ~ f2 e2@2 eb2 ~@5 eb2 g1", O: "ab1@2 ~ ab1 ~ ab2 ~ g1 ab1 ~@2 b1 c2@4",
  P: "ab1@2 ~ ab1 ~ ab1 eb2@2 ab1 ~@2 ab1 eb2@2 d2@2", Q: "db2@4 gb1@4 b1@4 gb2@3 bb1", R: "b1@4 e2@3 ~ a1@4 a2@3 a1",
  S: "ab1@2 ~ ab1 ~ ab2 ~ g1 ab1@8", T: "e2@5 b1 e2@2 eb2@6 b1 c2", U: "db2@5 ab1 db2@2 b1@3 db2 eb2@3 gb2",
  V: "db2@5 ab1 db2@2 b1@3 db2 eb2@3 b1", W: "f2@5 c2 f2@2 e2@6 c2 db2", X: "d2@5 a1 d2@2 c2@3 d2 e2@3 g2",
  Y: "d2@3 ab1 d2 c2 b1 bb1@9", Z: "[ab1@7 bb1@15 ~ bb1@9]/2", AA: "ab1@7 ~ c2@3 ~ db2@3 ~",
  AB: "eb2@3 ~ e2@3 ~ f1@3 f1 ~ eb2 e2@2", AC: "f2 ~@6 a1 bb1@3 bb1 ~ ab2 a2@2",
  AD: "bb2 ~@5 bb1 b1 c2@3 c2 ~ bb2 b2@2", AE: "c3 ~@4 f2@2 f2 f1@3 f1 ~ eb2 e2@2",
  AF: "f2 ~@2 f1 bb1 ab1@2 eb1 f1@3 f1 ~ eb2 e2@2", AG: "f2 ~@2 f1 bb1 ab1@2 eb1 bb1@2 ~ bb1 ~ f2 e2@2",
  AH: "eb2 ~@2 bb1 eb2 ~ bb1 b1 c2@2 ~ c2 ~ g2 gb2@2", AI: "f2 ~@2 c2 f2 c2@2 b1 bb1@2 ~ bb1 ~ f2 e2@2",
  AJ: "eb2 ~@2 bb1 eb2 ~ bb1 g1 ab1@2 ~ ab1 ~ ab1 eb2@2", AK: "ab1 ~@2 ab1 eb2@2 d2@2 db2@4 gb1@4",
  AL: "b1@4 gb2@3 bb1 b1@4 e2@3 ~", AM: "a1@4 a2@3 a1 bb1@2 ~ bb1 ~ f2 e2@2",
  AN: "eb2 ~@5 eb2 g1 ab1@2 ~ ab1 ~ ab2 ~ g1", AO: "ab1@8 e2@5 b1 e2@2", AP: "eb2@6 b1 c2 db2@5 ab1 db2@2",
  AQ: "b1@3 db2 eb2@3 gb2 e2@5 b1 e2@2", AR: "b1@3 db2 eb2@3 b1 f2@5 c2 f2@2", AS: "e2@6 c2 db2 d2@5 a1 d2@2",
  AT: "c2@3 d2 e2@3 g2 f2@5 c2 f2@2",
  AU: "[e2@6 c2 db2 d2@3 ab1 d2 c2 b1 bb1@9 ab1@7 bb1@15 ~ bb1@9 ab1@7 bb1@15 ~ bb1@9 ab1@7 bb1@15 ~ bb1@9 ab1@7 ~]/8",
  AV: "ab1 ~@2 eb2 ab2@2 eb2 ~ ab1@2 ~ ab1 ~ eb2 d2@2", AW: "db2 ~@3 ab1@3 f1 gb1@2 ~ gb1 ~ db2 gb1 ~",
  AX: "g1 ~@3 g2 ~ g1 ab1 bb1@2 ~ bb1 ~ f2 e2@2", AY: "ab1 ~@2 b1 c2@4 f1@3 f1 ~ eb2 e2@2",
  AZ: "c2@3 d2 e2@3 c2 e2@5 b1 e2@2", BA: "c2@3 d2 e2@3 c2 ~@8",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B A B A B C A D B C A E F G H I J E K A B C A D B C A E F G H L M E K N O N O P Q P R@2 ~@6 S T U V W T U V X T U
  V W T U V Y Z AA AB AC@3 AD AE AF AG AF AH AI AJ AK@3 ~@22 A B C A D B C A@2 B C A D B C A E F G H I J E K A B C A D B
  C A E F G H L M E K N O N O P Q P R@2 ~@6 S T U V W T U V Y Z AA AB AL AM AN AD AO T U V W T U V Y Z AA AB AC@3 AD AE
  AF AG AF AH AI AJ AI AP AF AG AF AH AI AJ AI AP AF AG AF AH AI AJ AI AQ
>`.pickRestart({
  A: "[f2,eb3,ab3,c4,f4] c4 [f2,eb3,ab3,c4,f4]!2 ~@8 [ab3,c4,f4]!2 ~ [f2,eb3,ab3,c4,f4]", // Fm7 Fm Fm7
  B: "[bb2,f3,ab3,c4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@8 [bb2,f3,ab3,db4] [ab3,db4,f4] ~ [bb2,f3,ab3,db4,f4]", // Fm Bbm7 Db Bbm7
  C: "[c3,g3,bb3,d4,g4] eb4 [c3,g3,bb3,eb4,g4]!2 ~@8 [c3,g3,bb3,eb4] [bb3,eb4,g4] ~ [c3,g3,bb3,eb4,g4]", // Gm Cm7 Eb Cm7
  D: "[f2,bb2,eb3,f3,ab3,c4,f4] c4 [f2,eb3,ab3,c4,f4]!2 ~@8 [ab3,c4,f4]!2 ~ [f2,eb3,ab3,c4,f4]", // Fm7 Fm Fm7
  E: "[bb2,f3,ab3,db4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@8 [ab3,db4,f4]!2 ~ [eb3,f3,ab3,db4,f4]", // Bbm7 Db
  F: "[c3,g3,c4,eb4] eb4 [c3,g3,c4,eb4]!2 ~@8 [f3,ab3,c4] [ab3,c4,f4] ~ [f3,ab3,c4,f4]", // Cm Fm
  G: "[bb2,f3,ab3,db4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@6 [bb2,f3,ab3,db4,f4] ~ [ab3,db4,f4]!2 ~ [eb3,f3,ab3,db4,f4]", // Bbm7 Db
  H: "[c3,g3,c4,eb4] eb4 [c3,g3,c4,eb4]!2 ~@8 [ab3,c4] [ab3,c4,eb4] ~ [ab3,c4,eb4]", // Cm Ab
  I: "[ab2,eb3,gb3,b3,eb4] b3 [ab2,eb3,gb3,b3,eb4]!2 ~@6 [eb3,gb3,b3,eb4] ~ [gb3,b3,eb4]!2 ~ [db3,eb3,gb3,b3,eb4]", // Abm7 B
  J: "[gb2,bb3,db4,f4] db4 [gb2,bb3,db4,f4]!2 ~@6 [bb3,db4,f4] ~ [bb3,db4,f4]!2 ~ [bb3,db4,f4]", // Gbmaj7 Bbm
  K: "[c3,g3,c4,eb4] eb4 [c3,g3,c4,eb4]!2 ~ [c3,g3,c4,eb4] ~ eb4 [c3,g3,c4,eb4] ~@3 c4@4, ~@9 bb4@7, ~@5 g4@3, ~@11 eb4@5", // Cm
  L: "[db3,ab3,b3,e4,ab4] e4 [db3,ab3,b3,e4,ab4] [gb3,ab3,b3,e4,ab4] ~ [gb3,ab3,b3,e4,ab4] ~ [b2,gb3,bb3,eb4,gb4]@4 ~ [bb3,eb4,gb4]!2 ~ [b2,gb3,bb3,eb4,gb4]", // Dbm7 E Bmaj7 Ebm Bmaj7
  M: "[b2,gb3,a3,d4,gb4] d4 [b2,gb3,a3,d4,gb4] [e3,gb3,a3,d4,gb4] ~ [e3,gb3,a3,d4,gb4] ~ [a2,e3,ab3,db4,e4]@4 ~ [ab3,db4,e4]!2 ~ [a2,e3,ab3,db4,e4]", // Bm7 D Amaj7 Dbm Amaj7
  N: "[b3,e4,gb4,ab4,b4] ab4 [b3,e4,gb4,ab4,b4]!2 ~@8 [gb4,ab4,b4]!2 ~ [b3,eb4,gb4,ab4,b4]", // E Abm7
  O: "[db4,e4,ab4,db5] db5 [db4,e4,ab4,db5]!2 ~ [db4,e4,ab4,db5] ~ [b3,eb4,gb4,b4] ~@5 ab4 [gb4,b4] ~, ~@6 [gb4,b4] ~", // Dbm B B5
  P: "[c4,f4,g4,a4,c5] a4 [c4,f4,g4,a4,c5]!2 ~@8 [g4,a4,c5]!2 ~ [c4,e4,g4,a4,c5]", // F Am7
  Q: "[d4,f4,a4,d5] d5 [d4,f4,a4,d5]!2 ~ [d4,f4,a4,d5] ~ [c4,e4,g4,c5] ~@5 a4 [g4,c5] ~, ~@6 [g4,c5] ~", // Dm C C5
  R: "[[d4,f4,a4,d5] c5 [d4,f4,a4,c5] g4 ab4 c5 eb5 bb5@19 ~@6]/2", // Dm Dm7
  S: "~@8 [f2,eb3,ab3,c4,f4] c4 [f2,eb3,ab3,c4,f4]!2 ~@4", // Fm7
  T: "~@4 [ab3,c4,f4]!2 ~ [f2,eb3,ab3,c4,f4] [bb2,f3,ab3,c4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@4", // Fm Fm7 Fm Bbm7
  U: "~@4 [bb2,f3,ab3,db4] [ab3,db4,f4] ~ [bb2,f3,ab3,db4,f4] [c3,g3,bb3,d4,g4] eb4 [c3,g3,bb3,eb4,g4]!2 ~@4", // Bbm7 Db Bbm7 Gm Cm7
  V: "~@4 [c3,g3,bb3,eb4] [bb3,eb4,g4] ~ [c3,g3,bb3,eb4,g4] [f2,eb3,ab3,c4,f4] c4 [f2,eb3,ab3,c4,f4]!2 ~@4", // Cm7 Eb Cm7 Fm7
  W: "~@4 [ab3,c4,f4]!2 ~ [f2,eb3,ab3,c4,f4] [f2,bb2,eb3,f3,ab3,c4,f4] c4 [f2,eb3,ab3,c4,f4]!2 ~@4", // Fm Fm7
  X: "~@4 [ab3,c4,f4]!2 ~ [f2,eb3,ab3,c4,f4]!2 c4 [f2,eb3,ab3,c4,f4]!2 ~@4", // Fm Fm7
  Y: "~@4 [ab3,c4,f4]!2 ~ [f2,eb3,ab3,c4,f4] [bb2,f3,ab3,db4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@4", // Fm Fm7 Bbm7
  Z: "~@4 [ab3,db4,f4]!2 ~ [eb3,f3,ab3,db4,f4] [c3,g3,c4,eb4] eb4 [c3,g3,c4,eb4]!2 ~@4", // Db Cm
  AA: "~@4 [f3,ab3,c4] [ab3,c4,f4] ~ [f3,ab3,c4,f4] [bb2,f3,ab3,db4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@4", // Fm Bbm7
  AB: "~@2 [bb2,f3,ab3,db4,f4] ~ [ab3,db4,f4]!2 ~ [eb3,f3,ab3,db4,f4] [c3,g3,c4,eb4] eb4 [c3,g3,c4,eb4]!2 ~@4", // Bbm7 Db Cm
  AC: "[~@4 [ab3,c4] [ab3,c4,eb4] ~ [ab3,c4,eb4] [db3,ab3,b3,e4,ab4] e4 [db3,ab3,b3,e4,ab4] [gb3,ab3,b3,e4,ab4] ~ [gb3,ab3,b3,e4,ab4] ~ [b2,gb3,bb3,eb4,gb4]@4 ~ [bb3,eb4,gb4]!2 ~ [b2,gb3,bb3,eb4,gb4] [b2,gb3,a3,d4,gb4] d4 [b2,gb3,a3,d4,gb4] [e3,gb3,a3,d4,gb4] ~ [e3,gb3,a3,d4,gb4] ~ [a2,e3,ab3,db4,e4]@4 ~ [ab3,db4,e4]!2 ~ [a2,e3,ab3,db4,e4] [bb2,f3,ab3,db4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@4]/3", // Ab Dbm7 E Bmaj7 Ebm Bmaj7 Bm7 D …
  AD: "~@4 [ab3,db4,f4]!2 ~ [eb3,f3,ab3,db4,f4] [c3,g3,c4,eb4] eb4 [c3,g3,c4,eb4]!2 ~ [c3,g3,c4,eb4] ~ eb4", // Db Cm
  AE: "[c3,g3,c4,eb4] ~@3 c4@4 [b3,e4,gb4,ab4,b4] ab4 [b3,e4,gb4,ab4,b4]!2 ~@4, ~ bb4@7 ~@8, ~ g4@3 ~@4, ~@3 eb4@5 ~@8", // Cm E
  AF: "~@4 [gb4,ab4,b4]!2 ~ [b3,eb4,gb4,ab4,b4] [db4,e4,ab4,db5] db5 [db4,e4,ab4,db5]!2 ~ [db4,e4,ab4,db5] ~ [b3,eb4,gb4,b4]", // Abm7 Dbm B
  AG: "~@5 ab4 [gb4,b4] ~ [b3,e4,gb4,ab4,b4] ab4 [b3,e4,gb4,ab4,b4]!2 ~@4, ~@2 [gb4,b4] ~@5", // B5 E B5
  AH: "~@5 ab4 [gb4,b4] ~ [c4,f4,g4,a4,c5] a4 [c4,f4,g4,a4,c5]!2 ~@4, ~@2 [gb4,b4] ~@5", // B5 F B5
  AI: "~@4 [g4,a4,c5]!2 ~ [c4,e4,g4,a4,c5] [d4,f4,a4,d5] d5 [d4,f4,a4,d5]!2 ~ [d4,f4,a4,d5] ~ [c4,e4,g4,c5]", // Am7 Dm C
  AJ: "~@5 a4 [g4,c5] ~ [c4,f4,g4,a4,c5] a4 [c4,f4,g4,a4,c5]!2 ~@4, ~@2 [g4,c5] ~@5", // C5 F C5
  AK: "[~@4 [g4,a4,c5]!2 ~ [c4,e4,g4,a4,c5] [d4,f4,a4,d5] c5 [d4,f4,a4,c5] g4 ab4 c5 eb5 bb5@19 ~@14]/3", // Am7 Dm Dm7
  AL: "~@4 [ab3,c4] [ab3,c4,eb4] ~ [ab3,c4,eb4] [ab2,eb3,gb3,b3,eb4] b3 [ab2,eb3,gb3,b3,eb4]!2 ~@4", // Ab Abm7
  AM: "~@2 [eb3,gb3,b3,eb4] ~ [gb3,b3,eb4]!2 ~ [db3,eb3,gb3,b3,eb4] [gb2,bb3,db4,f4] db4 [gb2,bb3,db4,f4]!2 ~@4", // B Gbmaj7
  AN: "~@2 [bb3,db4,f4] ~ [bb3,db4,f4]!2 ~ [bb3,db4,f4] [bb2,f3,ab3,db4,f4] db4 [bb2,f3,ab3,db4,f4]!2 ~@4", // Bbm Bbm7
  AO: "[c3,g3,c4,eb4] ~@3 c4@4 [f2,eb3,ab3,c4,f4] c4 [f2,eb3,ab3,c4,f4]!2 ~@4, ~ bb4@7 ~@8, ~ g4@3 ~@4, ~@3 eb4@5 ~@8", // Cm Fm7
  AP: "~@5 a4 [g4,c5] ~ [b3,e4,gb4,ab4,b4] ab4 [b3,e4,gb4,ab4,b4]!2 ~@4, ~@2 [g4,c5] ~@5", // C5 E C5
  AQ: "~@5 a4 [g4,c5]@3 ~@7, ~@2 [g4,c5] ~@5", // C5
})).s("gm_electric_guitar_clean").gain(0.18).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A B A B A B C A@2 B C A D E D F G H D I A B C A@2 B C A D E D F J K D I L M L M N O N P ~@7 Q R S T U R S T U R S T
  U R S T R V W V X Y Z AA AB AC AD AC AE AF AG AF ~@24 A B C A@2 B C A@2 B C A@2 B C A D E D F G H D I A B C A@2 B C A
  D E D F J K D I L M L M N O N P ~@7 Q R S T U R S T R V W V AH AI AJ AA Q R S T U R S T R V W V X Y Z AA AB AC AD AC
  AE AF AG AF AK AC AD AC AE AF AG AF AK AC AD AC AE AF AG AF AL
>`.pickRestart({
  A: "~ [f2,eb3,ab3,f4] ~@10 [f2,eb3]!2 ~@2", B: "~ [bb2,f3,ab3,f4] ~@10 f4 [bb2,f3] ~@2",
  C: "~ [c3,g3,bb3,g4] ~@10 g4 [c3,g3] ~@2", D: "~ [bb2,f3,ab3,f4] ~@10 [eb3,f3]!2 ~@2",
  E: "~ [c3,g3,c4] ~@10 f4 f3 ~@2", F: "~ [c3,g3,c4] ~@10 eb4 ~@3", G: "~ [ab2,eb3,gb3,eb4] ~@10 [db3,eb3]!2 ~@2",
  H: "~ [gb2,bb3,f4] ~@14", I: "~ [c3,g3,c4] ~@5 [c3,g3,c4] ~@8", J: "~ [db3,ab3,b3,ab4] ~@10 [b2,gb3]!2 ~@2",
  K: "~ [b2,gb3,a3,gb4] ~@10 [a2,e3]!2 ~@2", L: "~ [b3,e4,gb4,b4] ~@10 [b3,eb4]!2 ~@2",
  M: "~ [db4,e4,ab4] ~@10 [b3,eb4]@2 [b3,eb4] ~", N: "~ [c4,f4,g4,c5] ~@10 [c4,e4]!2 ~@2",
  O: "~ [d4,f4,a4] ~@10 [c4,e4]@2 [c4,e4] ~", P: "~ [d4,f4,a4] ~@14", Q: "~@9 [f2,eb3,ab3,f4] ~@6",
  R: "~@4 [f2,eb3]!2 ~@3 [bb2,f3,ab3,f4] ~@6", S: "~@4 f4 [bb2,f3] ~@3 [c3,g3,bb3,g4] ~@6",
  T: "~@4 g4 [c3,g3] ~@3 [f2,eb3,ab3,f4] ~@6", U: "~@4 [f2,eb3]!2 ~@3 [f2,eb3,ab3,f4] ~@6",
  V: "~@4 [eb3,f3]!2 ~@3 [c3,g3,c4] ~@6", W: "~@4 f4 f3 ~@3 [bb2,f3,ab3,f4] ~@6", X: "~@4 eb4 ~@4 [db3,ab3,b3,ab4] ~@6",
  Y: "~@4 [b2,gb3]!2 ~@3 [b2,gb3,a3,gb4] ~@6", Z: "~@4 [a2,e3]!2 ~@3 [bb2,f3,ab3,f4] ~@6",
  AA: "~@4 [eb3,f3]!2 ~@3 [c3,g3,c4] ~@5 [c3,g3,c4]", AB: "~@9 [b3,e4,gb4,b4] ~@6",
  AC: "~@4 [b3,eb4]!2 ~@3 [db4,e4,ab4] ~@6", AD: "~@4 [b3,eb4]@2 [b3,eb4] ~@2 [b3,e4,gb4,b4] ~@6",
  AE: "~@4 [b3,eb4]@2 [b3,eb4] ~@2 [c4,f4,g4,c5] ~@6", AF: "~@4 [c4,e4]!2 ~@3 [d4,f4,a4] ~@6",
  AG: "~@4 [c4,e4]@2 [c4,e4] ~@2 [c4,f4,g4,c5] ~@6", AH: "~@4 eb4 ~@4 [ab2,eb3,gb3,eb4] ~@6",
  AI: "~@4 [db3,eb3]!2 ~@3 [gb2,bb3,f4] ~@6", AJ: "~@9 [bb2,f3,ab3,f4] ~@6",
  AK: "~@4 [c4,e4]@2 [c4,e4] ~@2 [b3,e4,gb4,b4] ~@6", AL: "~@4 [c4,e4]@2 [c4,e4] ~@9",
})).s("gm_electric_guitar_clean").gain(0.11).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B ~@11 C D E F G H I J ~@8 C D E F K L I J M N O P Q R S T U ~@2 V W ~ X Y@2 ~@14 Z AA AB@3 AC AD@3 AE AF AG AH AI
  AJ AK AL AM ~@2 AN AM ~ A ~@32 C D E F G H I J ~@8 AO AP AQ AR K L AS AT M N O P Q R S T U ~@2 V W ~ X AU ~@7 AV AW AX
  AY AZ BA BB BC BD ~@7 AV AW AX AY BE AC BF BC BG AE AF AG AH AI AJ BH BI AE AF AG AH AI AJ BH BI AE AF AG AH AI AJ BH
  BJ
>`.pickRestart({
  A: "[c4,c5,f5,bb5] ~@3 [db4,db5,gb5,b5] ~@3 [eb4,eb5,ab5,db6] ~@3 [e4,e5,a5,d6] ~@3", // Fsus4 Gbsus4 Dbsus2 Dsus2
  B: "[f4,f5] [f5,bb5]@11 ~@4, eb6@11 ~@5", C: "[f4,f5]@2 f6 [eb5,eb6], ~ f5", D: "[g4,g5] [ab4,ab5] [ab5,ab6]@2",
  E: "[f4,f5]@2 [f5,f6] [eb5,eb6]", F: "[g4,g5]@3 [ab4,ab5] [g5,g6]@4", G: "[bb4,bb5] [b4,b5] [bb5,bb6] [ab5,ab6]",
  H: "[f5,f6]@3 [gb5,gb6] [ab5,ab6]@4", I: "[c5,c6]@2 [f5,f6] [eb5,eb6]", J: "[g4,g5]@4 [ab4,ab5]@4 [ab5,ab6]@7 ~",
  K: "[e5,e6] [gb5,gb6] [ab5,ab6] [b5,b6] [bb5,bb6]@4", L: "[d5,d6]@2 [e5,e6]@2 [gb5,gb6]@2 [a5,a6]@2 [ab5,ab6]@7 ~",
  M: "[e5,ab5,b5]@7 ~ [eb5,gb5,b5]@7 ~", N: "[db5,e5,ab5,b5]@8 [b4,eb5,gb5,ab5,b5]@7 ~",
// … 324 more lines