Strudelify
Billion Dollar Babies cover art

Billion Dollar Babies

Billion Dollar Babies

Alice Cooper

KeyF majorTempo89 bpm
0:00/0:00
// Billion Dollar Babies — Alice Cooper
// 89 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 27, 4/4 at bar 28, 2/4 at bar 58, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 electric bass finger (copy of ch 9 fretless bass)
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(89/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 · overdriven guitar
const overdriven_guitar = note(`<
  ~@2 A@3 B C D E F C G H I C G H J K L M N O P Q R S A@3 T U V W X U V Y@2 U V W X U V Z AA AB AC AD AE AF AG AH@3 ~ AI
  AJ AK AJ AK AJ AL AJ AI AJ AL AJ AK AJ AL AJ AI AJ AL AM@5 ~
>`.pickRestart({
  A: "g3!4", B: "g3@4 g3@4 g3@4 g3@3 ~", C: "a2!2 g2 e2 a2 ~@4 c3@3 b2@2 a2 ~", D: "[f3,c4]@3 [c4,f4] [f3,c4,f4]@11 ~",
  E: "[g2,d3,g3]@6 ~@2 [a2,e3,a3]@4 ~@2 [g2,d3] ~", F: "[f2,c3]@3 d3@3 e3@3 g3@3 g3@4",
  G: "[f2,c3]@3 [c3,f3] [f2,c3] ~@5 [c4,f4]!2 [c4,f4]@3 ~", H: "[g2,d3,g3]@6 ~@2 [a2,e3,a3]@4 ~ [g2,d3,g3] ~@2",
  I: "[f2,c3,f3]@4 ~@5 [f2,c3] c3 [f2,c3,f3] ~ [f2,c3,f3] [f2,c3] ~", J: "[f2,c3,f3]@15 ~",
  K: "[e3,b3,e4]@2 ~@2 [e3,b3,e4] ~@2 [e3,b3,e4] ~ [e3,b3,e4] ~@2 [e3,b3,e4]@2 ~@2", // E5
  L: "[a3,c4]@2 ~@2 [a3,c4] ~@2 [a3,c4] ~ [a3,c4] ~@2 [a3,c4]@2 ~@2, e3 ~@3", // Am
  M: "[e3,b3]@2 ~@2 [e3,b3,e4] ~@2 [b3,e4] ~ [b3,e4] ~@2 [e3,b3,e4] ~@3", N: "a3@2 ~@2 [e3,a3,c4] ~@4 d3@3 d3 ~ c3 ~",
  O: "[b3,e4]@2 ~@2 [e3,b3,e4] ~@2 [b3,e4] ~ [b3,e4] ~@2 [e3,b3,e4]@2 ~@2, e3 ~@3", // E5
  P: "[e3,a3]@2 ~@2 [e3,a3,c4] ~@2 [a3,c4] ~ [e3,a3,c4] ~@2 [e3,a3,c4] ~@3", // A5 Am
  Q: "[e3,b3]@2 ~@2 [e3,b3,e4] ~@2 [e3,b3,e4] ~ [e3,b3,e4] ~@2 [e3,b3,e4] ~@3", R: "[f3,c4,f4]",
  S: "g2 a2 c3!2 d3 e3 f3 g3 g3@4 g3@4", T: "g3@4 g3@3 ~ a2!2 g2 e2 a2 ~@3",
  U: "~ c3@3 b2@2 a2 ~ [f2,c3]@3 [c3,f3] [f2,c3] ~@3", V: "~@2 [c4,f4]!2 [c4,f4]@3 ~ [g2,d3,g3]@6 ~@2",
  W: "[a2,e3,a3]@4 ~ [g2,d3,g3] ~@2 [f2,c3,f3]@4 ~@4", // A5 G5 F5
  X: "~ [f2,c3] c3 [f2,c3,f3] ~ [f2,c3,f3] [f2,c3] ~ a2!2 g2 e2 a2 ~@3", // F5
  Y: "[[a2,e3,a3]@4 ~ [g2,d3,g3] ~@2 [f2,c3,f3]@15 ~ a2!2 g2 e2 a2 ~@3]/2", // A5 G5 F5
  Z: "[a2,e3,a3]@4 ~ [g2,d3,g3] ~@2 [f2,c3]@2 ~ d3@3 e3@2", // A5 G5 F5
  AA: "~ g3@3 g3@4 [e3,b3,e4]@2 ~@2 [e3,b3,e4] ~@2 [e3,b3,e4]", // E5
  AB: "~ [e3,b3,e4] ~@2 [e3,b3,e4]@2 ~@2 [a3,c4]@2 ~@2 [a3,c4] ~@2 [a3,c4], ~@2 e3 ~", // E5 Am
  AC: "~ [a3,c4] ~@2 [a3,c4]@2 ~@2 [e3,b3]@2 ~@2 [e3,b3,e4] ~@2 [b3,e4]", // Am E5
  AD: "~ [b3,e4] ~@2 [e3,b3,e4] ~@3 a3@2 ~@2 [e3,a3,c4] ~@3", // E5 Am
  AE: "~ d3@3 d3 ~ c3 ~ [b3,e4]@2 ~@2 [e3,b3,e4] ~@2 [b3,e4], ~@2 e3 ~", // E5
  AF: "~ [b3,e4] ~@2 [e3,b3,e4]@2 ~@2 [e3,a3]@2 ~@2 [e3,a3,c4] ~@2 [a3,c4]", // E5 A5 Am
  AG: "~ [e3,a3,c4] ~@2 [e3,a3,c4] ~@3 [e3,b3]@2 ~@2 [e3,b3,e4] ~@2 [e3,b3,e4]", // Am E5
  AH: "[~ [e3,b3,e4] ~@2 [e3,b3,e4] ~@3 [f3,c4,f4]@31 ~@9]/3", AI: "a2@2 g2 e2 a2@2 ~@3 c3@3 b2@2 a2 ~",
  AJ: "[f2,c3,f3]@3 f3 [f2,c3,f3] ~@3 g2 a2 b2 c3 d3 e3 f3 g3", AK: "a2!2 g2 e2 a2 ~@4 c3@3 b2 ~ a2 ~",
  AL: "a2!2 g2 e2 a2@2 ~@3 c3@3 b2 ~ a2 ~", AM: "[f2@4 f3@4 ~ e2@5 e3@5 f2@5 ~ f3@5 f2@6 f3@30 ~@14]/5",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.9)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  ~@8 A ~@2 B ~ C ~ B ~@2 D E F G H I J ~@6 K ~@2 L K ~@3 K ~@2 L K ~@3 M N O P Q R S ~@28
>`.pickRestart({
  A: "~@14 g3 ~", B: "f3@3 ~ f3 ~@11", C: "~@10 f3 ~@5", D: "~@10 e4 b3 ~@2 [b3,e4] ~",
  E: "~@4 e3 ~@2 e3 ~ e3 ~@2 e3@2 ~ e3", F: "e4@2 [b3,e4]@2 ~@3 e3 ~ e3 ~ [e3,b3,e4] ~@4",
  G: "[e3,c4]@2 c4@2 e4 ~ e4 ~@9", H: "~@7 e3 ~ e3 ~ b3 ~@2 e4 ~", I: "c4@2 ~@5 e3 ~@3 [e3,a3] ~@2 a3 e3",
  J: "e4@2 [b3,e4]@2 ~@7 [e3,b3] ~@3 e3", K: "~@8 f3@3 ~ f3 ~@3", L: "~@2 f3 ~@13",
  M: "~@2 e4 b3 ~@2 [b3,e4] ~@5 e3 ~@2 e3", N: "~ e3 ~@2 e3@2 ~ e3 e4@2 [b3,e4]@2 ~@3 e3",
  O: "~ e3 ~ [e3,b3,e4] ~@4 [e3,c4]@2 c4@2 e4 ~ e4 ~", P: "~@15 e3", Q: "~ e3 ~ b3 ~@2 e4 ~ c4@2 ~@5 e3",
  R: "~@3 [e3,a3] ~@2 a3 e3 e4@2 [b3,e4]@2 ~@4", S: "~@3 [e3,b3] ~@3 e3 ~@8",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.9)

// chords · overdriven guitar
const overdriven_guitar_2 = note(`<
  ~@2 A ~ A ~@4 B ~@8 C D ~ E F G H I J ~ J ~@17 K L M N O P Q R@3 ~ S T ~ U ~ U ~@2 S T ~ U ~ U ~@2 S T ~ V@2 W@3 ~
>`.pickRestart({
  A: "ab3 ~@3", B: "~@3 a3", C: "~@2 ab4 ~@3 ab4 ~, ~@2 e2@5 ~@4 e2@3 ~@2", D: "~@2 a2@2 ~@4 a2 ~@2 a2 ~@2 [a2,a3]@2",
  E: "~@2 a2@5 c4 ~ e3@3 ~@4", F: "~@2 e2@2 ab4@3 ~@4 e2 ~@4", G: "~@2 a2@2 ~@4 a2 ~@5 c4 ~",
  H: "~@4 ab4@2 ~@2 e2 ~@3 ab4 ~ e2@2", I: "a3@13 ~@3", J: "~@2 ab3 ~", K: "~@2 a3@2 ~@2 ab4 ~, ~@10 e2@5 ~",
  L: "~@2 ab4 ~@2 a2 ~@2, ~@3 e2@3 ~@10", M: "a2 ~@2 a2 ~@2 [a2,a3]@2 ~@8", N: "~@10 a2@5 c4",
  O: "~ e3@3 ~@6 e2@2 ab4@3 ~", P: "~@3 e2 ~@6 a2@2 ~@4", Q: "a2 ~@5 c4 ~@5 ab4@2 ~@2",
  R: "[e2 ~@3 ab4 ~ e2@2 a3@29 ~@11]/3", S: "~ a2 ~@14", T: "~@2 f2 c3@2 ~@11", U: "~@3 c3@2 ~@11",
  V: "[~@9 f2@4 e3@5 ~@6 e3@6 ~@2]/2", W: "[~@2 e3@15 ~@7]/3",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.2)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft_2 = note("<~@18 A B C D E F ~@23 G H I ~ J K ~@29>".pickRestart({
  A: "~@8 e2 ~@7", B: "~@15 c4, ~@7 c4", C: "~@4 ab4@3 ~ e2 ~@3 ab4@2 ~@2", D: "~@6 c4 ~@9", E: "~@8 e2 ~@3 ab4@3 ~",
  F: "~@15 [a3,c4]", G: "e2 ~@15", H: "~@7 c4 ~@4 ab4@3 ~, ~@3 c4 ~@4", I: "e2 ~@3 ab4@2 ~@8 c4 ~",
  J: "e2 ~@3 ab4@3 ~@9", K: "~@7 [a3,c4] ~@8",
})).s("gm_overdriven_guitar").gain(0.21).pan(0.2)

// bass · fretless bass
const bass = note(`<
  ~@3 A B C D E F G H I J G K L M N O P Q R S T U V W@3 X Y Z AA AB@2 Z AA AB@2 Z AA AC@2 AD AE AF@2 AG AH AI AJ AK AL
  AM@3 AN AO AP AQ AR AO AP AS AT AO AP AS AU AV AP AS AT AV AP AS AW@6
>`.pickRestart({
  A: "~@14 g1 ab1", B: "a1@13 ~ b1@2", C: "a1@8 eb4 db4!2 [bb3,c4] [a3,bb3] [ab3,a3] [gb3,g3,ab3] f3",
  D: "a1!2 g1 e1 a1@2 ~@3 c2@3 b1@2 a1 ~", E: "f1@3 g1 f2@8 ~ b1 ~@2, ~@6 d2 ~", F: "g1@7 ~ a1@6 g1@2", G: "f1@7 ~",
  H: "a1!2 g1 e1 a1@2 ~@3 c2@3 b1 ~ a1@2", I: "f1@3 f1 f1@4 ~@2 f1@2 g1@2 ~@2", J: "g1@7 ~ a1@5 g1@2 ~",
  K: "a1!2 g1 e1 a1 ~@4 c2@3 b1 ~ a1 ~", L: "f1@3 f1 f1@4 ~@2 f1!2 f1@4", M: "g1@6 ~@2 c2@5 b1@2 eb2", N: "f2",
  O: "e1@2 e1 ~ eb2@4 e1@2 ~ e1 eb2@4", P: "a1@2 a1 ~ ab2@4 a1@2 a1 ~ d3 e3 a2 b2",
  Q: "e1@4 eb2@3 ~ e1@2 ~ e1 eb2@2 e2@2", R: "a1@2 a1@2 ab2@4 ~ eb2@3 d2!2 c2@2",
  S: "e1@2 e1@2 eb2@2 e2@2 e1@2 e1 ~ eb2@2 e2@2", T: "a1@2 a1@2 a2@4 a1@2 a1 ~ d3 e3 a2!2", U: "e1!2 eb2@2 e1!2 eb2 e1",
  V: "f1", W: "[g1 a1 c2!2 d2 e2 f2 g2 ab2@28 ~@2 g1 ab1 a1@5 a1 ~ [b1,d2]]/3", X: "a3!16",
  Y: "a3!8 a1!2 g1 e1 a1@2 ~@2", Z: "~ c2@3 b1 ~ a1@2 f1@3 f1 f1@4", AA: "~@2 f1@2 g1@2 ~@2 g1@7 ~",
  AB: "[a1@5 g1@2 ~ f1@14 ~@2 a1!2 g1 e1 a1@2 ~@2]/2", AC: "[a1@5 g1@2 ~ f1@14 ~@2 a1!2 g1 e1 a1 ~@3]/2",
  AD: "~ c2@3 b1 ~ a1 ~ f1@3 f1 f1@4", AE: "~@2 f1!2 f1@4 g1@6 ~@2", AF: "[c2@5 b1@2 eb2 f2@15 ~ e1@2 e1 ~ eb2@4]/2",
  AG: "e1@2 ~ e1 eb2@4 a1@2 a1 ~ ab2@4", AH: "a1@2 a1 ~ d3 e3 a2 b2 e1@4 eb2@4",
  AI: "e1@2 ~ e1 eb2@2 e2@2 a1@2 a1@2 ab2@4", AJ: "~ eb2@3 d2!2 c2@2 e1@2 e1@2 eb2@2 e2@2",
  AK: "e1@2 e1 ~ eb2@2 e2@2 a1@2 a1@2 a2@4", AL: "a1@2 a1 ~ d3 e3 a2!2 e1@2 e1@2 eb2@4", AM: "[e1!2 eb2 e1 f1@20]/3",
  AN: "g1 a1 c2 db2 d2 e2 f2 g2 a2!3 b2 [d3,gb3,a3] [gb3,a3] [c3,d3,e3] [a2,c3]", // D Gbm C Am
  AO: "a1!2 g1 e1 a1@2 ~@2 a1 c2@3 b1@2 a1 ~", AP: "f1@3 f1 f1@2 ~@2 g1 a1 b1 c2 d2 e2 f2 g2",
  AQ: "a1!2 g1 e1 a1 ~@3 a1 c2@3 b1@2 a1@2", AR: "f1@3 f1 f1@4 f2!3 g2 [c3,eb3,a3,bb3] [gb3,bb3] [c3,eb3,f3] b2",
  AS: "a1!2 g1 e1 a1@2 ~@2 a1 c2@3 b1@2 a1@2",
  AT: "f1@3 f1 f1@4 eb4!2 [d4,eb4] [db4,d4] [bb3,b3,c4] [ab3,a3] [f3,g3] [eb3,e3,f3]", AU: "f1@3 f1 f1@4 a3!8",
  AV: "a1!2 g1 e1 a1 ~@3 a1 c2@3 b1@2 a1 ~",
  AW: "[f1@4 c2 eb2@3 c2 f1@4 c2 eb2@4 d2 f1@5 ~ eb2@4 c2 f1@5 ~ eb2@48 ~@12, ~@25 c2 ~@10 c2 ~@59]/6",
})).s("gm_fretless_bass").gain(0.38)

// other · overdriven guitar
const overdriven_guitar_3 = note(`<
  ~@4 A B C D E F ~ G H I ~ J K L ~@3 M N ~@2 O P Q R S T U V W X ~@7 Y Z AA AB AC ~@2 AD@2 ~@2 AE AF ~@27
>`.pickRestart({
  A: "b3!4", B: "d4@4 d4@3 ~ f4@4 f4@3 ~", C: "e4!2 d4 c4 e4 ~@4 e4@3 d4@2 c4 ~", D: "f4@3 f4 f4@3 [b3,d4] ~@8",
  E: "bb3@7 ~ e4@3 e4!2 ~ d4 ~", F: "c4@3 d4@2 ~ e4@3 g4@2 ~ a4@4", G: "~@10 f4 g4 f4@3 d4", H: "b3@6 ~@2 c4@5 b3@2 ~",
  I: "a3 ~@3", J: "~@10 f4 g4 f4@3 ~", K: "b3@7 ~ c4@5 b3 ~@2", L: "c4@6 [c4,f4]@2 [c4,f4] ~@2 [c4,f4]!3 f4 ~",
  M: "~@3 e4 f4 e4 ~ d4@2 e4 d4 c4 d4 c4 b3@2", N: "~ ab3 ~@14", O: "~@3 f4 a4!2 ~ bb4 ~ bb4@7", P: "~@2 eb4!2",
  Q: "eb4@3 ~ eb4@4 eb4@4 eb4@4", R: "eb4@4 eb4@3 ~ gb4@4 gb4@4", S: "gb4 f4 d4!2",
  T: "f4@3 ~ f4@3 ~ e3 g3 a3 c4 d4 e4 g4 a4", U: "c5 d5 ~ d5@3 ~@2 e5@4 f4@4",
  V: "~@2 f5 g5 eb5@2 d5 c5 b4@4 b4 c5 b4 g4", W: "d5@3 ~ d5@2 ~@2 c5@5 ~@3", X: "d5!2 ~ c5 b4 a4 ~ g4 ab4@6 ~@2",
  Y: "~@8 eb4 e4 d4 c4 e4@2 ~@2", Z: "~ eb4@3 d4@2 c4 ~ e4@7 ~", AA: "~@2 f4@2 f4 ~@3 b3@6 ~@2",
  AB: "eb4@5 d4@2 ~ c4@3 d4@2 ~ eb4@2", AC: "~ g4@2 ~ ab4@4 ~@8",
  AD: "[~@11 e4 f4 e4 ~ d4@2 e4 d4 c4 d4 c4 b3@3 ab3 ~@6]/2", AE: "~@10 [c5,d5] f5 g5 eb5 f5 ~",
  AF: "ab5 ~ ab5 f5 eb5 c5 ~ eb5@9",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.7)

// other · guitar harmonics
const guitar_harmonics = note(`<
  ~@4 A B C D E F ~ G H I ~ J K L ~@3 M N ~@2 O P Q R S T U V W X ~@7 Y Z AA AB AC ~@2 AD@2 ~@2 AE AF ~@27
>`.pickRestart({
  A: "b2!4", B: "d3@4 d3@3 ~ f3@4 f3@3 ~", C: "e3!2 d3 c3 e3 ~@4 e3@3 d3@2 c3 ~", D: "f3@3 f3 f3@3 [b2,d3] ~@8",
  E: "bb2@7 ~ e3@3 e3!2 ~ d3 ~", F: "c3@3 d3@2 ~ e3@3 g3@2 ~ a3@4", G: "~@10 f3 g3 f3@3 d3", H: "b2@6 ~@2 c3@5 b2@2 ~",
  I: "a2 ~@3", J: "~@10 f3 g3 f3@3 ~", K: "b2@7 ~ c3@5 b2 ~@2", L: "c3@6 [c3,f3]@2 [c3,f3] ~@2 [c3,f3]!3 f3 ~",
  M: "~@3 e3 f3 e3 ~ d3@2 e3 d3 c3 d3 c3 b2@2", N: "~ ab2 ~@14", O: "~@3 f3 a3!2 ~ bb3 ~ bb3@7", P: "~@2 eb3!2",
  Q: "eb3@3 ~ eb3@4 eb3@4 eb3@4", R: "eb3@4 eb3@3 ~ gb3@4 gb3@4", S: "gb3 f3 d3!2",
  T: "f3@3 ~ f3@3 ~ e2 g2 a2 c3 d3 e3 g3 a3", U: "c4 d4 ~ d4@3 ~@2 e4@4 f3@4",
  V: "~@2 f4 g4 eb4@2 d4 c4 b3@4 b3 c4 b3 g3", W: "d4@3 ~ d4@2 ~@2 c4@5 ~@3", X: "d4!2 ~ c4 b3 a3 ~ g3 ab3@6 ~@2",
  Y: "~@8 eb3 e3 d3 c3 e3@2 ~@2", Z: "~ eb3@3 d3@2 c3 ~ e3@7 ~", AA: "~@2 f3@2 f3 ~@3 b2@6 ~@2",
  AB: "eb3@5 d3@2 ~ c3@3 d3@2 ~ eb3@2", AC: "~ g3@2 ~ ab3@4 ~@8",
  AD: "[~@11 e3 f3 e3 ~ d3@2 e3 d3 c3 d3 c3 b2@3 ab2 ~@6]/2", AE: "~@10 [c4,d4] f4 g4 eb4 f4 ~",
  AF: "ab4 ~ ab4 f4 eb4 c4 ~ eb4@9",
})).s("gm_guitar_harmonics").gain(0.19).pan(0.7)

// other · overdriven guitar
const overdriven_guitar_4 = note("<~@21 A ~@3 B ~@8 C D E F@2 ~@10 G@2 ~@13 H I J K L M N O P@4 Q@2 ~@4>".pickRestart({
  A: "~@3 c4 d4 c4 ~ b3@2 c4 b3 a3 b3 a3 ab3@2", B: "~@3 c4 f4!2 ~ g4 ~ g4@6 ~", C: "~@8 eb4@6 a4 e4",
  D: "g4 eb4 e4@2 eb4 a4 g4 a4 g4@5 ~@3", E: "a4 b4!2 a4 b4 a4 b4 c5 [b4,c5] ab4 g4 a4 g4 e4 g4 e4",
  F: "[d4 c4 d4 e4 a4 g4 c5 a4 c5 ab4@2 c5 d5@2 c5 g5@3 g5@2 a5@2 e5 ~ g5@5 ~@3]/2",
  G: "[~@11 c4 d4 c4 ~ b3@2 c4 b3 a3 b3 a3 ab3@3 ~@7]/2", H: "~@6 g4 e4 eb4@2 a3 c4@2 eb4 g4 c5",
  I: "ab4@5 c5 d5!2 ~ d5 ~ d5@4 ~", J: "~ d5@2 c5 d5 ~ d5 c5 d5 c5 a4 g4 a4 g4 eb4 c4",
  K: "e4 d4 e4 ~ e4 d4 e4 a4 d4 e4 a4 d4@4 d4, ~@3 a4@2 ~@11", L: "a3@4 ~@3 g3 a3@3 g3 d3@4",
  M: "a2 c3 d3 e3 g3 a3 c4 a3 e4 a3 d4 a3 c4 d4 gb4 c5", N: "a4 g4 c5 a4@4 b4 db5 ~ db5 ~ eb5@3 c5",
  O: "a4@4 c5 d5 eb5 c5 d5 a4 c5 d5 eb5 c5 d5 c5",
  P: "[d5@2 g5 d5@2 g5 d5@2 g5 d5@4 c5@2 g5@3 g5@3 ab5 ~ e5 g5 ~ ab5@2 e5 g5 e5 g5@2 a5!2 ~ b5 b5@2 c6 ~@2 d6 c6 ~ [c6,d6] ~ c6@3 ~@2 d6 a5 [a5,c6] g5 g5@4 ~@2 a5 eb5, ~@41 c6@2 ~@4 d6 ~@8 a5 ~@7]/4", // Csus2 Am
  Q: "[d5 ~ d5@2 c5 a4 ~ c5@18 ~@7]/2",
})).s("gm_overdriven_guitar").gain(0.43).pan(0.3)

// chords · flute
const flute = note("<~@57 A B C D E D F G ~@17>".pickRestart({
  A: "[e4,a4]@4 [d4,a4] c4 a3@3 ~@3 [c4,g4]@2 [a3,e4]@2", B: "[e4,g4]@4 d4 c4 a3@3 ~@7, ~@4 a4@5 ~@7",
  C: "[e4,a4]@4 d4 c4 a3@3 ~@3 [c4,g4]@2 [a3,e4]@2, ~@4 a4@5 ~@7", D: "[e4,g4]@4 d4 c4 a3@2 ~@8, ~ a4 ~@2",
  E: "[e4,a4]@4 d4 c4 a3@2 ~@4 [c4,g4]@2 [a3,e4]@2, ~@4 a4@5 ~@7", // A5 C5 A5
  F: "[e4,a4]@4 d4 c4 a3@2 ~@4 [c4,g4]@2 [a3,e4]@2, ~ a4 ~@2", G: "[e4,g4]@4 d4 c4 a3@8 ~@2, ~@2 a4@5 ~",
})).s("gm_flute").gain(0.38)

// drums · kick
const kick = s("bd").struct(`<
  A@5 B A C D E F@2 G H F@2 G I J A J K I@3 L M ~ N O P Q R S P Q R T U V W X U V W Y P Z Q Z AA I@2 AB N Q AC A C A E A
  C A E A C A E A C A E A C A AD AE ~@4
>`.pickRestart({
  A: "x ~@2 x ~@2 x!2", B: "x ~@3 x!4", C: "x ~@5 x ~ x!2 ~ x!2 ~ x ~", D: "x ~@2 x!2 ~ x!2", E: "x ~@2 x!5",
  F: "x ~ x ~@4 x ~ x ~ x ~@4", G: "x!2 ~@2 x!2 ~@2", H: "x ~ x ~@2 x!2 ~ x ~ x ~ x ~ x ~", I: "x!8",
  J: "x ~@5 x ~ x ~ x!2 ~ x ~@2", K: "x ~@5 x ~@2 x ~@2 x ~@3", L: "x", M: "x!2 ~@2", N: "~@4 x ~@2 x",
  O: "~@2 x!3 ~@3", P: "x!5 ~@2 x", Q: "~@2 x!3 ~@2 x", R: "x!2 ~ x!2 ~ x ~ x ~@5 x ~", S: "x ~ x!3 ~ x ~",
  T: "x ~ x!3 ~@2 x", U: "x ~ x ~ x ~ x ~ x ~ x ~@4 x", V: "~ x ~ x ~@4 x ~ x ~@4 x", W: "~ x ~ x ~@4 x ~ x ~@5",
  X: "x ~ x ~@5 x ~ x ~@2 x!2 ~", Y: "x!2 ~@2 x!4", Z: "x ~ x!2 ~ x ~@2 x ~@5 x ~", AA: "~ x ~@2 x ~@3 x ~ x ~ x ~ x ~",
  AB: "x!5 ~@3", AC: "~@2 x!6", AD: "x ~@8 x ~@6", AE: "~@3 x ~@10 x ~",
})).gain(0.43)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A C D E F G H I J K H I J L M A M N O P Q R ~@2 S T U V W X U Y Z AA AB J AC AD AB J AC AE U AF AG AF AH AI AJ
  AK AL AG AM AN AO AN C AN AO AN C AN AO AN C AN AO AN C AN AO AP AQ AR AS ~@3
>`.pickRestart({
  A: "~@2 x ~ x ~@2 x ~ x ~ x ~@4", B: "~@2 x ~ x ~@2 x ~ x ~ x!5", C: "~@2 x ~ x ~@3 x!8",
  D: "~@2 x ~ x ~@2 x ~ x ~ x ~ x ~ x", E: "~@2 x ~ x ~@2 x ~@2 x ~@5", F: "~@2 x ~ x ~ x!2 ~@2 x ~ x!2 ~@2",
  G: "~@2 x ~ x ~@2 x ~ x!7", H: "~ x ~ x", I: "x ~@3 x ~@7 x ~@2 x", J: "~ x!3", K: "x ~@3 x ~@2 x ~ x!7", L: "x!16",
  M: "~@2 x ~ x ~@2 x ~ x ~@2 x ~@3", N: "~@2 x ~ x ~@2 x ~@4 x ~ x ~", O: "~@2 x ~ x ~@2 x ~@2 x ~ x ~ x ~",
  P: "x ~ x ~ x ~@2 x ~@2 x!3 ~ x ~", Q: "x ~ x ~ x ~@2 x ~@2 x ~ x ~ x ~", R: "~@2 x ~ x ~@2 x", S: "~@10 x ~ x ~@2 x",
  T: "~ x ~ x ~@6 x ~ x ~@3", U: "x!8 ~@2 x ~ x ~@2 x", V: "~ x ~ x ~ x ~@4 x ~ x ~@2 x",
  W: "~@2 x ~ x!2 ~ x ~@2 x ~ x ~ x!2", X: "~@2 x ~@2 x ~ x ~@2 x ~@3 x ~", Y: "~ x ~ x ~ x ~ x ~@2 x ~ x ~@2 x",
  Z: "~@2 x ~@7 x ~ x ~ x!2", AA: "~@2 x ~ x!2 ~@4 x ~ x ~@2 x", AB: "~ x!7 ~@4 x ~@3", AC: "~@4 x ~@2 x ~@4 x ~@3",
  AD: "x ~@3 x ~@3 x ~@3 x ~@2 x", AE: "x ~@3 x ~@3 x!8", AF: "~ x ~@2 x ~@5 x ~ x ~@2 x",
  AG: "~ x ~ x ~@6 x ~ x ~@2 x", AH: "~@4 x ~ x ~@3 x ~ x ~@2 x", AI: "~@2 x ~ x ~ x ~ x ~ x ~ x ~@2 x",
  AJ: "~@2 x!3 ~ x ~ x ~ x ~ x ~@2 x", AK: "~ x!3 ~@2 x ~", AL: "x ~@5 x ~@3 x ~ x ~@2 x", AM: "~ x ~ x ~@4 x!8",
  AN: "~@2 x ~ x ~@2 x ~ x ~ x ~ x ~@2", AO: "~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x", AP: "~@2 x ~ x ~@2 x ~ x ~ x ~ x!2 ~",
  AQ: "~@2 x ~@4 x", AR: "~@9 x ~@6", AS: "~ x ~@2",
})).gain(0.38)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@10 A ~ B ~ A ~ C ~@5 D E F G ~@13 C A C ~ C A ~@5 H I J K L ~@27>".pickRestart({
// … 54 more lines

More by Alice Cooper