Strudelify
Sunshine Superman cover art

1966 · Sunshine Superman

Sunshine Superman

Donovan

KeyD♭ majorTempo128 bpm
0:00/0:00
// Sunshine Superman — Donovan
// 128 bpm, 4/4, key Db major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 156 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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.

// bass · acoustic bass
const bass = note(`<
  A@4 B@2 C@3 D E F G H I J K@2 L@2 M N O P Q R@4 E S T U V W X Y H I J K@2 L@2 Z AA AB@2 AC AD@4 AA AB@2 AC AE@4 AF O
  AG AH AI@4 AJ AK AL AM@2 AN@2 AO E AH E@2 G W@3 X AP@2 AQ@2 AR AS AO AT AU AL AV AW E AX E AY AZ BA BB BC@2 BD@2 AG@2
  BE@2 BF AG BG AG BH BI BJ BK@2 AG O AG BL BM@2 BN@3 E BO@2 BP BQ@3 BR BS@2 BT BG BU BV BW H BX G BY BZ CA CB CC@3
>`.pickRestart({
  A: "[c3@5 ~ c3@5 ~ g2@2 ~ bb2@4 ~@2 eb3@11 ~ g2@2 ~ bb2@2 ~ c3 ~ c3@2 ~ bb2@2 ~ c3@4 ~@3 c3@5 ~ g2@2 ~ bb2 ~@16 g2@3 bb2@2 ~ bb2 ~@5 bb2@4, ~@23 eb3@5 ~@2 c3@2]/4",
  B: "[c2@4 ~@2 c2@5 ~ g1@3 bb1@4 ~@2 eb2@11 g1@2 ~@2 bb1@2 ~ c2 ~ c2@2 ~ bb1@3 ~]/2",
  C: "[c2@4 ~@2 c2@5 ~ g1@2 ~ bb1 ~@5 eb2@11 ~ g1@2 ~@3 c2@2 ~@2 c2@2 bb1 ~@2 c2@8 ~@2 c2@2 ~ g1@5 ~ g1@2 ~ bb1@2 ~, ~@9 bb1 ~@8]/3",
  D: "c2@7 ~@2 c2 ~@2 g1@5 bb1 ~@3 b1 ~@2", E: "c2@7 ~@2 c2 ~@2 g1@5 ~ bb1 ~@2 b1 ~@2",
  F: "c2@8 ~@2 c2@2 g1 ~@2 g1 ~@2 bb1 ~@2 b1 ~@2", G: "c2@8 ~ c2 ~@2 g1@5 ~ bb1 ~@2 b1 ~@2",
  H: "c2@11 ~ g1@5 ~ bb1 ~@2 b1 ~@2", I: "c2@7 ~@2 c2 ~@2 g1@7 bb1 ~ b1 ~@2",
  J: "c2@8 ~ c2 ~@2 g1 ~@2 g1@2 ~ c2@3 g1 ~@2",
  K: "[f1@8 ~ f1@2 ~ a1@2 ~ bb1 ~ b1 ~@2 c2@11 ~@2 c2@2 c2@8 ~@2 c2@2 ~]/2",
  L: "[f1@11 ~ a1@2 ~ bb1 ~ b1 ~@3 c2@11 ~ c2@2 ~ f1@6 c2@4 ~@2, ~@21 d2@2 ~@25]/2",
  M: "c2@7 ~@2 c2 ~@2 g1@8 ~ bb1 ~@2", N: "b1@2 ~ c2@5 ~ c2@2 ~ g1@5 ~ bb1 ~@2 b1 ~@2",
  O: "c2@7 ~@2 c2 ~@2 g1@6 bb1 ~@2 b1 ~@2", P: "c2@7 ~@2 c2 ~@2 g1@5 ~ c2@2 ab1 ~@3", Q: "g1@9 d2 ~@2 g1@8 g1 ~@3",
  R: "[g1@9 d2@2 ~ [g1,g2]@3 ~@3 gb1@3 c2@2 f1@12 ~ a1@2 ~ bb1 ~@2 b1 ~@2 c2@11 ~ c2@6 g1@2 ~ bb1@2 ~ b1 ~ c2@8 ~@2 c2 ~@2 g1@7 ~ bb1 ~@3, ~@17 gb2@3 ~@76]/4", // G
  S: "c2@7 ~@3 c2 ~ g1@6 bb1 ~@2 b1 ~@2", T: "c2@7 ~@2 c2 ~@2 g1@8 ~ b1!2 ~", U: "~ c2@7 ~ c2 ~ g1@5 ~ bb1 ~@2 b1 ~@3",
  V: "c2@7 ~ c2 ~@2 g1@5 ~ bb1 ~@3 b1 ~@2", W: "c2@7 ~@2 c2 ~@2 g1@5 bb1 ~@2 b1 ~@3",
  X: "c2@8 ~ c2 ~@2 g1@6 c2@2 ~ g1 ~@2", Y: "~@9 c2 ~@2 g1@5 ~ bb1 ~@2 b1 ~@2, f1@11 ~@13",
  Z: "c2@7 ~@2 c2@2 ~ g1@4 ~@2 bb1 ~@2 b1 ~@2", AA: "c2@7 ~ c2 ~@3 g1@4 ~ bb1 ~@3 b1 ~@2",
  AB: "[c2@7 ~@2 c2 ~ g1@3 bb1 ~@2 b1 ~@2 c2@11 ~@2 c2@2 ~ g1@4 ~ g1@2 ~@2 ab1 ~@2]/2", AC: "g1@10 ~@2 g1@9 d2 ~@2",
  AD: "[g1@9 d2@2 ~ [g1,g2]@3 ~@3 [gb1,gb2]@3 c2@2 f1@12 ~ a1@2 ~ bb1 ~@2 b1 ~@2 c2@11 ~ c2@5 ~ g1@2 ~ bb1 ~@2 b1 ~ c2@8 ~@2 c2@2 ~ g1@4 ~@2 bb1 ~@2 b1 ~@2]/4", // G Gb
  AE: "[g1@9 d2@2 ~ [g1,g2]@3 ~@3 [gb1,gb2]@3 c2@2 f1@12 ~ a1@2 ~ bb1 ~@2 b1 ~@2 c2@11 ~ c2@5 ~ g1@2 ~ bb1 ~@2 b1 ~ c2@8 ~@2 c2 ~@2 g1@6 bb1 ~@2 b1 ~@2]/4", // G Gb
  AF: "c2@6 ~@3 c2 ~@2 g1@5 ~ bb1 ~@2 b1 ~@2", AG: "c2@8 ~ c2 ~@2 g1@6 bb1 ~@2 b1 ~@2",
  AH: "c2@8 ~ c2@2 ~ g1@6 bb1 ~@2 b1 ~@2",
  AI: "[c2@6 ~@2 c2 ~@3 g1@5 bb1 ~@2 b1 ~@2 c2@8 ~ c2 ~@2 g1@5 ~ bb1 ~@2 b1 ~@2 c2@7 ~@2 c2 ~@2 g1@5 ~ bb1 ~@2 b1 ~@2 c2@7 ~@3 c2 ~@2 g1@6 bb1 ~@3 b1 ~]/4",
  AJ: "c2@7 ~@2 c2 ~@2 g1@5 c2 ~@2 c2 ~@3", AK: "g1@9 d2 ~@2 g1@9 d2 ~@2",
  AL: "g1@10 d2 ~ [g1,g2]@3 ~@3 [gb1,gb2]@3 c2@2 ~", // G Gb
  AM: "[f1@12 a1@2 ~ bb1 ~@2 b1 ~@2 c2@10 ~@2 c2 ~@2 c2@4 ~ g1 ~@2 bb1 ~@3]/2",
  AN: "[c2@7 ~ c2 ~@3 g1@7 bb1 ~@3 c2@8 ~ c2 ~@3 g1@5 bb1 ~@2 b1 ~@3]/2", AO: "c2@8 ~ c2 ~@2 g1@4 ~@2 bb1 ~@2 b1 ~@2",
  AP: "[f1@9 c2 ~@2 a1@2 bb1 ~@2 b1@2 ~@2 c2@10 ~ c2@2 ~ a1@6 ~ c2@3 a1 ~@2]/2",
  AQ: "[~@9 c2 ~@2 a1@2 ~ bb1 ~ b1 ~@2 c2@10 ~@3 c2@2 ~@7 c2@2 ~ bb1 ~@2, f1@11 ~@25 f1@8 ~@4]/2",
  AR: "c2@7 ~@2 c2 ~ g1@5 ~ bb1 ~@3 b1 ~@2", AS: "c2@8 ~ c2@2 ~ g1@4 ~@2 bb1 ~@2 b1 ~@2",
  AT: "c2@8 ~ c2 ~@3 c2@5 a1@2 ~@4", AU: "g1@10 ~@2 g1@7 ~@2 g1 ~@2", AV: "f1@11 ~ a1@2 ~ bb1 ~@2 b1@2 ~ c2@2 ~",
  AW: "f1@10 c2 ~ f1@2 ~ a1 ~@2 bb1 ~@2 b1 ~@2", AX: "c2@6 ~@3 c2 ~@2 g1@4 ~@2 bb1 ~@2 b1 ~@2",
  AY: "c2@7 ~@2 c2 ~@2 c2@3 g1@2 ~ bb1@2 ~ c2 ~@2", AZ: "g1@7 ~@2 g1 ~@2 g1@10 ~@2",
  BA: "g1@9 d2 ~@2 g2@2 ~@4 [gb1,gb2]@2 c2@2 ~@2, ~@11 g1@2 ~@11", BB: "f1@11 ~ f1@2 ~ f1@5 ~@4",
  BC: "[f1@8 ~@4 f1@5 ~ a1 ~@2 bb1 ~ c2@8 ~@2 c2 ~@2 g1@5 bb1 ~@3 b1 ~@2]/2",
  BD: "[c2@7 ~ c2@2 ~ g1@5 ~ bb1 ~@2 b1 ~@2 c2@8 ~ c2@2 ~ g1@6 bb1 ~@2 b1 ~@3]/2",
  BE: "c2@8 ~ c2 ~@2 g1@5 bb1 ~@2 b1 ~@3", BF: "c2@7 ~@2 c2 ~@2 g1@2 ~ g1@2 ~ bb1 ~@2 b1 ~@2",
  BG: "c2@7 ~@2 c2 ~@2 g1@5 ~ bb1 ~ b1 ~@3", BH: "c2@8 ~ c2 ~@8 c2 ~@2 c2 ~@2, ~@4 g1@3 ~",
  BI: "~@9 c2 ~@2 a1@5 bb1@2 ~ b1@2 ~@2, f1@11 ~@13", BJ: "~@6 f1 ~@2 c2@8 ~ bb1@2 bb1 ~ c2 ~, c2 ~@2",
  BK: "[~@9 c2 ~@2 a1@2 ~ bb1 ~@2 b1 ~@2 c2@10 ~@2 c2@2 ~ f1@5 ~ bb1@2 ~ [a1,b1] ~@2, f1@11 ~@37]/2", // Asus2
  BL: "c2@11 ~@10 d2@2 ~, ~@12 [g1,g2]@11 ~, ~@18 [ab1,ab2]@5 ~", // G Ab
  BM: "[g2@8 ~ d2 ~@11 d2@2 g1@10 g2@2 ~ [g1,g2]@5 [gb1,gb2]@4 c2 ~@2, g1@11 ~@13, ~@4 g2@7 ~@5]/2", // G Gb
  BN: "[f1@21 c2 ~ f1@8 ~@2 f1@2 ~ a1@2 bb1 ~@2 b1 ~@3 c2@9 ~@3 c2@2 ~ g1@4 ~ bb1 ~@2 b1 ~@3]/3",
  BO: "[c2@7 ~ c2 ~@3 g1@5 ~ bb1 ~ b1 ~@2 c2@9 ~ c2@3 c2@2 ~@4 [a1,b1]@3 ab1 ~@2, ~@38 c2@7 ~@3]/2", // Asus2
  BP: "g1@9 g1@2 ~ g1@9 g1 ~@2",
  BQ: "[g1@9 ~ g1@2 g1@5 gb1@4 ~@2 f1@11 ~@2 f1 ~@2 f1@4 ~@2 f1@12 f1@3 a1 ~@2 a1 ~ bb1 b1 ~@2 b1 ~@2]/3",
  BR: "c2 ~@7 c2 ~@3 g1@4 ~ bb1 ~@2 b1 ~@3",
  BS: "[c2@6 ~@3 c2 ~@2 g1@4 ~ bb1 ~@2 b1 ~@2 c2@7 ~@3 c2 ~@2 g1@4 ~ bb1 ~@2 b1 ~@3]/2",
  BT: "c2@8 ~ c2@2 ~ g1@4 ~ bb1 ~@2 b1 ~@3", BU: "c2@7 ~@2 c2 ~@2 g1@5 ~ bb1@2 ~ b1 ~@2",
  BV: "c2@7 ~@2 c2 ~ g1@4 ~@2 bb1 ~@2 b1 ~@3", BW: "c2@8 ~ c2 ~@2 g1@4 ~ bb1@2 ~ b1 ~@3",
  BX: "c2@7 ~ c2@2 ~@2 g1@5 bb1 ~@2 b1 ~@3", BY: "c2@11 ~ g1@5 bb1 ~@2 b1 ~@3", BZ: "c2@11 ~ g1@5 bb1@2 ~ b1 ~@3",
  CA: "c2@11 ~ g1@4 ~ bb1@2 ~@2 b1 ~@2", CB: "c2@8 ~ g1@5 ~@4 bb1 ~@5", CC: "[~@3 c2@3 ~@4 c2@48 ~@14]/3",
})).s("gm_acoustic_bass").gain(0.42)

// other · flute
const flute = note(`<
  ~@63 A B C D E F G@3 H I J K L@2 ~@31 M N O P Q R S@3 T U V W X Y@4 Z AA AB AC AD AE AF AG@2 AH@2 AI AJ AK@4 ~ AL@3 ~
  AM AN ~@5
>`.pickRestart({
  A: "~@15 c5@2 ~ eb5@2 ~@4", B: "[gb5,g5] ~@8 gb5 g5@2 ~@6 [gb5,g5] ~@5",
  C: "~@4 g5@5 gb5@2 ~ g5@3 c5@2 ~ eb5@2 f5 ~@3", D: "~@6 [gb5,g5] ~@8 gb5 g5@2 ~@3 gb5 g5 ~",
  E: "~@3 gb5 g5@3 ~@2 gb5 ~ g5@2 ~@2 c5 ~ eb5@2 ~ f5 ~@3", F: "~@3 gb5@4 ~ g5 ~@13 g5@2, ~@22 gb5 ~",
  G: "[~@3 gb5 g5@3 ~@2 g5 ~@2 bb5@2 ~ c6 ~@2 c6@34 ~@2 c6!2 ~ c6 ~@2 c6 ~@2 c6 ~@2 c6 ~@2 c6 ~@2]/3",
  H: "g5@3 ~@6 g5 ~@8 a5@5 ~", I: "~@3 g5@6 f5@2 ~ g5 ~@2 c5@2 ~ eb5@2 ~ f5 ~@2",
  J: "~@3 gb5@4 ~@2 g5 ~@2 gb5@2 ~ g5 ~@2 bb5 ~@5", K: "~@3 c5@3 eb5 ~@2 e5 ~@2 gb5@2 ~ g5 ~@2 bb5@2 ~ c6@2 ~",
  L: "[c6@3 ~@3 c6 ~@8 c6@2 ~ b5 ~@2 bb5@24 ~@3]/2", M: "~@15 c6@3 eb6@2 ~ f6 ~@2",
  N: "g6@2 ~@7 gb6 g6 ~@7 [gb6,g6] ~@5, gb6 ~@23", O: "~@2 gb6 g6@6 gb6@2 ~ g6@3 c6@2 ~ eb6@2 ~ f6@2 ~",
  P: "~@6 gb6 g6 ~@7 gb6 g6@3 ~@2 g6@3", Q: "~@3 gb6 g6@3 ~@5 g6 ~@8 f6 ~@2", R: "~@3 gb6@4 ~@2 g6@3 ~@12",
  S: "[~@3 gb6@4 ~@2 g6 ~@2 bb6@2 c7 ~@2 c7@55]/3", T: "g6@8 ~@2 g6@5 ~@3 g6@6",
  U: "~@2 g6@2 ~ gb6 ~@2 f6@2 ~ eb6@3 ~@4 c6@3 ~@3", V: "~@15 gb6@4 ~@2 g6 ~@2",
  W: "bb6@3 c7@3 ~@3 f6 ~@2 eb6@2 f6@2 ~@2 c6 ~@2 bb5@2 ~", X: "c6@3 ~@3 c6 ~@5 c6@2 ~ g5 ~@2 bb5 ~@2 c6@3",
  Y: "[~@6 bb5@2 ~@4 eb6 e6@2 c6 ~@2 bb5@2 ~ c6@6 ~@3 bb5 ~@2 c6@6 g5@2 bb5@2 ~@2 c6@7 g5@2 bb5@3 c6 ~@2 e6@3 f6 ~@2 gb6@2 ~ g6@20 ~ g6@5 ~]/4",
  Z: "bb6 b6@3 ~@2 g6@4 ~@2 g6@5 ~ gb6@4 ~@2", AA: "f6@5 c6 eb6 ~",
  AB: "f6@4 ~@2 f6@4 ~@2 f6@3 eb6@2 ~ c6 ~@2 bb5 ~@2, ~@12 gb6 ~@11",
  AC: "~@3 c6 ~@2 eb6@2 ~ f6 ~@2 f6@2 ~@2 gb6 g6 ~@2 gb6 g6 ~@2, ~@12 g6 ~@11",
  AD: "g6@3 ~@2 c6 eb6@2 ~@4 gb6 g6@2 ~@2 c6 eb6@2 ~ f6 ~@2, gb6 ~@23",
  AE: "~@3 gb6 g6@4 ~ c6@2 ~ eb6@2 ~ c6 ~@2 eb6@2 f6 ~@3", AF: "~@3 gb6@4 ~@2 g6@2 ~ bb6@2 ~ c7 ~@2 c7 ~@2 bb6 ~@2",
  AG: "[c7 ~@5 c7 ~@5 g6 ~@2 g6 ~@6 g6@11 ~@3 g6@4 ~@2 gb6@4 ~@2]/2",
  AH: "[f6@5 ~ f6@5 ~ eb6@2 ~ c6@2 ~@4 c6@11 ~ c6@2 ~ eb6@2 ~ f6@2 ~@4 [gb6,g6] ~@2]/2", // Gmaj7
  AI: "~@6 [gb6,g6] ~@2 c7 ~@5 c7@4 ~@2 gb6 c7@2", AJ: "~@3 [g6,c7]@4 ~@2 f6 ~@2 eb6@2 ~ f6@2 ~@7",
  AK: "[e6@4 ~@2 c6@3 ~@3 c6@2 ~@7 c6@66 g5@2 ~ bb5@2 ~@4, eb6 ~@95]/4",
  AL: "[~@12 eb6 e6 ~@8 c6@29 gb6@5 ~ g6@2 ~ f6@3 eb6@2 ~ c6@3 e6@3, ~@69 eb6 ~@2]/3",
  AM: "~@2 bb5@5 ~@2 gb5@3 ~@3 f5@2 ~@6 eb5", AN: "e5 ~@11",
})).s("gm_flute").gain(0.26)

// other · flute · soft notes
const flute_soft = note("<~@71 A B ~@40 C D ~@6 E ~ F G ~@6 H ~@4 C I ~@2 J ~@2 K@3 ~@2 L@2 M@4 ~@2>".pickRestart({
  A: "~@11 d6 ~@12", B: "~@18 g5 ~@5", C: "~@18 eb6 ~@5", D: "~@16 g6@3 ~@5", E: "~@3 gb6 ~@8",
  F: "~@4 g5@2 ~@3 c6 ~@14", G: "~@3 g5 ~@20", H: "~@10 f6 ~@13", I: "~@18 c6 ~@5", J: "~@14 g5@3 ~@7",
  K: "[~@21 c6@34 ~@11 bb5@3 ~@3]/3", L: "[~@11 d6 ~@36, ~ c6@11 ~@4]/2", M: "[~@4 c5@87 ~@5]/4",
})).s("gm_flute").gain(0.15)

// chords · epiano1
const epiano1 = note(`<
  ~@7 A@2 B@3 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@4 K@2 L@2 M@2 C@2 D@2 E@2 F@2 N@2 O@2 P@2 Q@2 R@2 O@2 P@2 Q@2 S@2 T@4 U V
  W@3 X@4 Y Z AA@3 AB@2 AC@2 AD@2 AE@2 AF@2 AG@2 AH@2 AI@2 AJ@7 AK@3 AL@2 AM@4 AN@2 AO@2 AP@4 AQ@2 AR@2 AS@2 AT@4 AU@5
  AV AW@2 AX@2 AY@2 AZ@2 BA@2 BB@2 BC@2 ~ BD BE@2 BF@2
>`.pickRestart({
  A: "[~@21 [e3,g3]@8 ~ [e3,g3] ~@14 [e3,g3,c4] ~@2]/2", // Em C
  B: "[~@3 [e3,g3] ~@5 e3@11 ~ [e3,g3,bb3]@9 ~@15 [e3,bb3]@22 ~@2 [e3,g3,bb3,c4] ~@2, ~ g3 ~@6]/3", // Em Edim C7
  C: "[~@6 [e3,g3,bb3,c4]@37 ~@2 [e3,g3,bb3,c4] ~@2]/2", // C7
  D: "[~@6 [e3,g3,c4]@37 ~@2 c4 [eb3,g3,a3] ~, ~@3 bb3@17 ~@4]/2", // C Am7b5
  E: "[~@6 [eb3,g3,a3,c4]@37 ~@2 [eb3,g3,a3,c4] ~@2]/2", F: "[~@6 [eb3,g3,a3]@35 ~@4 [eb3,gb3,c4]@3, ~@5 c4@35 ~@8]/2",
  G: "[[e3,g3] ~@5 e3 ~@6 e3@18 ~@2 [e3,g3,bb3] ~@12 c4 ~, ~@6 [g3,bb3,c4]@25 ~@14 [eb3,gb3,bb3]@3]/2", // Em Edim C7 Ebm
  H: "[c4 ~@5 [e3,g3,bb3,c4]@37 ~ [e3,g3,bb3,c4] ~@3]/2", // C7
  I: "[[f3,b3,d4]@11 ~ [f3,b3] ~ [e3,bb3,db4] ~, ~@36 d4@5 ~@7]/2", // Bdim Fdim Bbdim
  J: "[eb3@42 ~@3 [e3,bb3]@44 ~@4 [gb3,bb3] ~ [e3,g3,c4], c4@89 ~@7, a3@40 ~@53 eb3@2 ~]/4", // Edim Gb C
  K: "[~@2 [e3,g3,c4]@13 ~, ~@5 bb3@39 ~@4]/2", // C
  L: "[[g3,bb3,c4] ~@5 [g3,bb3,c4,e4]@36 ~@3 [gb3,bb3] ~@2, ~@45 eb4@2 ~]/2", // C7 Gb
  M: "[[g3,bb3,c4,e4] ~@5 [g3,c4]@38 ~@3 [g3,bb3,c4]]/2", // C7 C5 C7
  N: "[[e3,g3] ~@5 [g3,c4]@35 ~@4 [bb3,b3] ~ [g3,bb3,c4,e4], ~@6 [bb3,e4]@33 ~@5 eb4@2 ~@2, ~@45 gb3@2 ~]/2", // Em C5 Bmaj7 C7 Bbdim
  O: "[~@6 [g3,bb3,c4,e4]@37 ~@5]/2", // C7
  P: "[[b3,d4,f4,g4]@34 ~@3 [d4,f4] ~@4 [bb3,db4,e4,gb4]@3 ~@3, ~@18 [b3,g4] ~@5]/2", Q: "[[a3,c4,eb4,f4]@43 ~@5]/2",
  R: "[[e3,bb3,d4] ~@5 [g3,c4]@35 ~@4 [bb3,b3] ~ [g3,bb3,c4,e4], ~@6 [bb3,e4]@33 ~@5 eb4@2 ~@2, ~@45 gb3@2 ~]/2", // Em7b5 C5 Bmaj7 C7 Bbdim
  S: "[[e3,g3,bb3,d4] ~@8 c4@37 ~@2, ~@4 [e3,bb3]@19 ~]/2", // Em7b5 Edim
  T: "[[e3,g3,bb3,c4] ~@6 g3 ~@46 [e3,g3,bb3,c4] ~@8 [e3,g3,bb3,c4] ~@5 [e3,bb3]@22 ~@2 [eb3,gb3,bb3] ~@2, ~@6 [e3,bb3,c4]@43 ~@20 [g3,c4]@20 ~@7]/4", // C7 Edim Ebm C7 C5
  U: "~@6 [e3,g3,bb3,c4] ~@8 [e3,g3,bb3,c4,d4] ~@8", V: "[e3,g3,bb3,c4]@18 ~@3 [eb3,gb3,bb3] ~ bb3",
  W: "[[g3,c4] ~@5 [e3,g3,bb3,c4] ~@8 [e3,g3,bb3,c4]@34 ~@17 [f3,b3,d4] ~@5]/3", // C5 C7 Bdim
  X: "[~@3 [eb3,a3]@28 ~@2 [eb3,c4] ~@7 eb3 c4 ~@2 [eb3,g3,a3]@42 ~@6 [e3,g3,bb3,c4] ~@2, ~@45 c4@46 ~@5]/4", // Ebdim Cm Am7b5 C7
  Y: "~@6 [e3,g3]@14 ~ e3 ~@2, ~@6 [bb3,c4]@17 ~", Z: "~@5 [e3,g3,bb3] c4 ~@13 [eb3,gb3,b3]@2 ~ c4",
  AA: "[[e3,g3,bb3] ~@5 [e3,g3,bb3]@66]/3", AB: "[~@9 [e3,bb3]@31 ~@5 [eb3,gb3]@2 ~, ~@45 b3 ~@2]/2",
  AC: "[[e3,g3,bb3,c4] ~@5 [e3,bb3,c4]@38 ~ bb3@2 ~, ~@6 g3@36 ~@3 eb3 ~@2]/2", // C7
  AD: "[[e3,g3,bb3,c4] ~@5 [e3,bb3,c4]@38 ~@4, ~ g3@6 ~]/2", AE: "[[eb3,a3,c4] ~@9 c4@38, ~@3 [eb3,a3]@13]/2",
  AF: "[[eb3,c4] ~@9 [eb3,a3]@33 ~@5, ~@5 c4@19]/2", AG: "[[e3,bb3] ~@5 [e3,bb3,c4]@40 gb3@2, ~ g3@6 ~]/2",
  AH: "[g3 ~@5 [g3,bb3,c4]@38 ~@4, ~ e3@6 ~]/2", // C7
  AI: "[[f3,g3,b3,d4]@32 ~@5 d4@2 ~@3 [f3,gb3,db4]@3 ~@3, bb3 ~@35 [f3,g3,b3]@3 ~@9]/2", // G7 Gbmaj7 G7
  AJ: "[g3@15 ~@6 a3@21 ~@3 [e3,g3,bb3]@46 ~@2 [eb3,gb3]@2 ~ [e3,g3]@72, c4@91 ~@2 [bb3,c4]@75, eb3@13 ~@2 eb3@27 ~@126, e3 ~@20]/7", // Edim Ebm Em Bbsus2
  AK: "[~@12 [b3,d4,f4,g4]@3 ~@2 [bb3,db4,gb4]@4 ~@2 [a3,c4,eb4,f4]@41 ~@2 [a3,c4,eb4,f4] ~@2 [g3,bb3,c4,e4] ~@2]/3", // G7 Gb F7 C7
  AL: "[~@6 [g3,bb3,c4,e4]@35 ~@4 [f3,g3,bb3,b3] ~ [g3,c4,e4], ~@22 eb4 ~]/2", // C7 G7 C
  AM: "[~@5 [g3,bb3,c4,e4]@47 ~@2 [g3,bb3,c4] ~@7 e4 [g3,bb3,c4] ~@5 [bb3,c4]@19 ~@5 [f3,a3] ~ [g3,bb3,e4], ~@46 eb4 ~]/4", // C7 Bbsus2 F Edim
  AN: "[c4 ~@5 [g3,bb3,c4,e4]@36 ~@3 [bb3,eb4,gb4]@2 ~, ~@45 db4 ~@2]/2", // C7 Ebm
  AO: "[[d4,e4,g4] ~@5 [bb3,d4,e4,g4]@29 ~@10 [db4,eb4,gb4]@2 g4, ~@45 a3 ~@2]/2", // Em7 Em7b5 Ebm7
  AP: "[[bb3,d4] ~@5 [bb3,d4,e4]@35 ~@6 eb4 [a3,f4] ~@8 [a3,c4,eb4]@37 ~ [c4,eb4], ~@6 g4@51 f4@38 ~]/4", // Bb Em7b5 Dm Adim Cm
  AQ: "[~@9 f4@32 ~@3 [bb3,eb4]@2 ~ [g3,e4], ~@8 [a3,c4,eb4]@33 ~@7]/2", // Eb5 C Adim
  AR: "[~@6 [c4,e4]@36 ~@3 [gb3,a3] ~ bb3, ~@5 bb3@36 ~@4 eb4@2 ~, ~@3 g3@5 ~@16]/2", // C Gbm
  AS: "[[g3,e4] ~@5 [g3,e4]@39 [g3,bb3] ~@2, ~@5 bb3@38 ~@5]/2", // C Gm
  AT: "[[b3,d4,e4,g4]@34 ~@2 [b3,d4,e4]@3 ~@3 [bb3,eb4,gb4]@4 ~@2 f4@24 eb4 f4 eb4@2 c4@13 ~@4 [e3,g3,bb3,c4] ~@2, ~@35 g4@3 ~@3 db4@3 ~@3 eb4@21 ~@28, ~@8 a3@7 ~, ~@16 c4@7 ~@9]/4", // Em7 E7 Ebm C7
  AU: "[~@4 g3@63 ~@2 [e3,g3,bb3,c4]@28 ~@5 [g3,bb3,d4,e4] ~@9 [d4,e4] ~@5 e4 ~, ~@3 [e3,bb3,c4]@64 ~@53]/5", // C7 Em7b5 Dsus2 C7
  AV: "~@2 eb4 ~@3 [b3,d4,e4,g4] ~@5 d4 [b3,e4] ~@4 [bb3,db4,eb4,gb4] ~@5, ~@6 g4 ~@5", // Em7 E5 Ebm7
  AW: "[c4@21 eb4@6 c4@15 ~@5 bb3, f4@9 ~@7, eb4@5 ~@7]/2",
  AX: "[[e3,g3,c4] ~@8 [e3,g3,bb3,c4]@32 ~@3 [eb3,gb3,bb3] ~@2 [bb3,c4]]/2", // C C7 Ebm Bbsus2
  AY: "[~@6 [e3,g3,c4]@36 ~@3 [eb3,bb3]@2 ~, ~@5 bb3@36 ~@4 gb3 ~@2]/2", // C Eb5
  AZ: "[e3 ~@5 [e3,g3,bb3,c4]@37 ~@2 [eb3,gb3] ~@2, ~@45 bb3@2 ~]/2", // C7 Ebm
  BA: "[[e3,g3,c4] ~@5 [e3,bb3,c4]@36 ~@3 [eb3,gb3]@2 ~, ~@3 g3@17 ~@4]/2", // C C7 Ebm
  BB: "[g3 ~@6 [g3,c4]@34 ~@4 [eb3,gb3] ~@2, ~@6 [e3,bb3]@35 ~@7]/2", BC: "[~@6 [g3,bb3]@36 ~@5 c4]/2",
  BD: "~@23 [bb3,c4]", BE: "[~@3 bb3@16 ~@5]/2", BF: "[g3@19 ~@5, c4@3 ~]/2",
})).s("gm_epiano1").gain(0.2)

// chords · epiano1 · soft notes
const epiano1_soft = note(`<
  ~@7 A@2 B@3 ~@15 C@3 ~@2 D ~ E@2 ~@24 F@2 ~ G ~@2 H ~ I ~@2 J@2 ~@2 K ~ L@3 M@2 ~@8 N ~@19 O@2 ~@4 D ~ H ~@2 P Q@2 R@2
  ~@8 S ~ T@2 ~ U ~@4 V ~ I ~ W@2 X@2 Y@2 Z@2
>`.pickRestart({
  A: "[~@21 c4@10 ~@11 g3 ~@5]/2", B: "[~@3 c4 ~@5 c4@21 ~@15 [g3,c4]@21 ~@6]/3", C: "[~@11 g3@21 ~@4]/3", D: "e4 ~@23",
  E: "[~@13 bb3@31 ~@4, ~@6 e4@37 ~@5]/2", F: "[~@9 g3@37 ~@2]/2", G: "~ g3@3", H: "c4 ~@23", I: "e3 ~@23",
  J: "[~@3 c4@29 ~@16]/2", K: "~@21 g3 ~@2", L: "[~ c4@11]/3", M: "[~@3 [g3,c4]@10 ~@3]/2", N: "g3 ~@23",
  O: "[~@21 [g3,e4]@20 ~@7]/2", P: "~@23 bb3", Q: "[~@10 g3@11 ~@3]/2", R: "[c4 ~@4 c4@40 ~@3]/2",
  S: "~@16 b3 ~@5 [b3,d4] ~", T: "[a3@7 ~]/2", U: "~@23 e3", V: "bb3 ~@23",
  W: "[g3 ~@5 [e3,c4]@36 ~@3 [eb3,gb3,bb3] ~ bb3]/2", X: "[~@6 [e3,g3,bb3,c4]@33 ~@5 [eb3,bb3] ~@3]/2",
  Y: "[~@6 [e3,g3,c4]@32 ~@6 [eb3,gb3,bb3] ~@3]/2", Z: "[~ e3@36 ~@11, bb3@19 ~@5]/2",
})).s("gm_epiano1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "x ~@3 x ~@2 x", B: "x ~@2 x!2 ~@2 x", C: "x ~@2 x!2 ~@3",
})).gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@2 x ~@2 x ~@2",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!155 [x!6 ~@2]>").gain(0.26)

stack(bass, flute, flute_soft, epiano1, epiano1_soft, kick, snare, hihat)

More by Donovan