Strudelify

Cat People

David Bowie

KeyE♭ majorTempo121 bpm
0:00/0:00
// Cat People — BOWIE DAVID
// 121 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 2 "mid bass" named as a bass, played on electric bass finger (its piano patch is not one); ch 1 "mid guitar" named as a guitar, played on electric guitar clean (its piano patch is not one)
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "mid bass"
const bass = note(`<
  A@3 B@2 C@3 D@4 E F G@2 H I@2 J K@2 L M@2 N O@2 P@2 Q R@3 S@2 T U@2 V@3 W X Y Z AA AB AC V AC V@2 Z AD AB AE V AF AG V
  AH AI AJ AK AL AM AN AO@2 Z AA AP Y Z AF AG AQ AR AD AS Y AR AT AG Y Z AU V AI AV V@5 Z AU AW AX AY V AY AZ BA Z BB@2
  BC V Y
>`.pickRestart({
  A: "[~@4 c3@6 ~@2 c3@2 g3@7 g3@2 ~ c3@6 ~ c3@2 g3@7 ~ c3 ~ f3@5]/3",
  B: "[~@2 f3@2 ~ c3@7 c3@2 f3@6 ~@2 f3@2 c3@7 f3]/2",
  C: "[~@2 c3@6 ~ c3@2 g3@10 c3@6 ~ c3@2 ~ g3@5 c3 ~ c3 ~ f3@6 ~@2]/3",
  D: "[f3@2 c4@6 ~ c4 ~@2 f3@6 ~ f3@2 c3@7 ~ f3!2 c3@6 ~ c3@2 ~ g3@10 c3@6 ~ c3@2 g3@4]/4",
  E: "~ c3 ~ c3 ~@2 c3@6 ~ c3@2 ~", F: "c3 ~ c3@3 ~@2 c3 ~ c3@6 ~", G: "[~ c3 ~ c3@7 c3 ~@2 f3@7 f3 ~ f3@6 ~@2 f3 ~]/2",
  H: "f3@6 ~ f3 ~@2 f3@6", I: "[~ f3 ~ c3@7 ~ c3 ~ c3@6 ~ c3 ~@2 c3@6 ~ c3 ~]/2", J: "c3@6 ~@2 c3 ~ bb2@6",
  K: "[~ bb2@2 ~ bb2 ~ bb2@3 ~@2 bb2 ~ bb2@6 ~@2 bb2 ~ bb2@7 bb2 ~]/2", L: "~ c3@7 c3 ~ c3@6",
  M: "[~@2 c3 ~ c3@6 ~ c3 ~@2 c3@7 c3 ~ f3@7 ~ f3]/2", N: "~ f3@7 f3@2 ~ f3@5",
  O: "[~@2 f3 ~@2 bb2@4 bb2@3 ~@2 c3@6 ~ c3 ~@2 c3@6 ~ c3]/2", P: "[~@2 c3@6 ~ c3 ~ c3@7 ~ c3 ~ c3@6 ~ c3 ~@2 c3]/2",
  Q: "~ c3@3 ~@2 c3 ~ c3@6 ~@2", R: "[c3 ~ c3@7 c3 ~@2 c3@7 c3 ~ c3@6 ~@2 c3 ~ c3@6 ~ c3 ~@2 c3@7]/3",
  S: "[c3 ~ c3@7 ~ c3 ~ c3@7 c3@2 ~ c3@6 ~ c3 ~ c3]/2", T: "~@2 c3@4 ~ c3@2 c3 ~@2 c3@2 c3 ~",
  U: "[c3@2 ~ c3 ~ c3@2 ~ c3 ~ c3@2 c3 ~@2 c3@2 c3 ~@2 c3@2 c3 ~@2 c3@2 c3 ~ c3@2 ~]/2",
  V: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2", W: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3@2 a2 ~",
  X: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2@2", Y: "c3 ~ c3 ~ c3 ~ c3 c2 c3 ~ c3 ~ c3@2 b2 ~",
  Z: "c3 ~ c3 ~ c3 ~ c3@2 c3 ~ c3 ~ c3 ~ c3 c2", AA: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 f2 f3 f2 f3!2",
  AB: "bb2 ~ bb2 ~ bb2 ~ bb2@2 bb2 ~ bb2 ~ bb2 ~ bb2 bb1", AC: "c3 ~ c3@2 c3 ~ c3 c2 c3 ~ c3 ~ bb2 ~ bb2 ~",
  AD: "f3 ~ f3 ~ f3 ~ f3@2 f3 ~ f3 ~ f3 ~ f3 f2", AE: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2 b2 ~",
  AF: "f3 ~ f3 ~ f3 ~ f3 f2 f3 ~ f3 ~ f3@2 a2 ~", AG: "bb2 ~ bb2 ~ bb2 ~ bb2 bb1 bb2 ~ bb2 ~ bb2@2 b2 ~",
  AH: "c3 ~ c3@2 c3 ~ c3@2 c3 ~ c3@2 c3 ~ c3@2", AI: "c3 ~ c3 ~ c3 ~ c3@2 c3 ~ c3 ~ c3 ~ c3 ~",
  AJ: "c3 ~ c3@2 c3@2 c3 c2 c3 ~ c3 ~ c3 ~ c3@2", AK: "c3 ~ c3 ~ c3 ~ c3 c2 c3 ~ c3 c2 c3 ~ c3 ~",
  AL: "eb3 ~ eb3@2 eb3@2 eb3 eb2 eb3 ~ eb3 ~ eb3 ~ eb3@2", AM: "eb3 ~ eb3 ~ eb3 ~ eb3 eb2 eb3 ~ eb3 eb2 eb3 ~ eb3 ~",
  AN: "eb3 ~ eb3 ~ eb3 ~ eb3 eb2 eb3 ~ eb3 ~ eb3 ~ eb3 ~", AO: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  AP: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 bb1 bb2 bb1 bb2!2", AQ: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 c2 c3 c2 c3!2",
  AR: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2 e3 ~", AS: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2@2 b2 ~",
  AT: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3@2", AU: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ b2 ~",
  AV: "c3 ~ c3 ~ c3 ~ c3 c2 c3 ~ c3 ~ c3 ~ c3@2", AW: "c3 ~ c3@2 c3 ~ c3 c2 bb2 bb1 bb2 ~ bb2 ~ bb2 ~",
  AX: "c3 c2 c3 ~ c3 ~ c3 ~ bb2 ~ bb2@2 bb2 ~ bb2 bb1", AY: "c3 c2 c3 ~ c3 ~ c3 ~ bb2 bb1 bb2 ~ bb2 ~ bb2 ~",
  AZ: "c3 c2 c3 ~ c3 ~ c3 ~ bb2 ~ bb2@2 bb2 ~ g3 ~", BA: "c3 c2 c3 ~ c3 ~ c3 ~ bb2 ~ bb2@2 bb2 ~ b2 ~",
  BB: "c3 ~ c3@2 c3 ~ a2 ~ bb2 bb1 bb2 ~ bb2 ~ bb2 ~", BC: "c3 ~ c3@2 c3 ~ c3 c2 bb2 ~ bb2@2 bb2 ~ bb2 bb1",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · piano · "mid piano"
const piano = note(`<
  A B@3 C D E@5 D F G H@2 I J@2 K@2 L M@5 N O@3 P@3 Q R@4 S T U V W U X Y Z AA X ~ AB@2 T AC W AD AE AF AG U AH@4 AI@2
  AJ@2 AK AL AM AN AL AO AP AN AD@2 AC AG U@2 AQ Z AE AR@2 AS@2 AT AU AV@2 AR@2 AW@2 AX AY AZ AD BA BB BC AL BD BE BF AE
  T
>`.pickRestart({
  A: "~ [g3,c4,eb4]@3", // Cm
  B: "[c3@3 [g3,c4,eb4]@4 ~ [g3,c4,eb4]@2 [g3,c4,eb4]@2 ~@3 [g3,c4,eb4]@10 ~@2 [a3,c4,f4]@12 f3@3 [a3,c4,f4]@4 [a3,c4,f4]@2]/3", // Cm F
  C: "~ [a3,c4,f4]@2 ~@3 [a3,c4,f4]@10", D: "~@2 [g3,c4,eb4]@13 ~",
  E: "[[g3,c4,eb4]@4 ~@4 [g3,c4,eb4]@2 ~@5 [g3,c4,eb4]@8 ~ [a3,c4,f4]@31 ~@3 a4@3 c5@2 [g3,c4,eb4]@10 ~@2 [g3,c4,eb4]@5, ~@56 f4@7 ~@17]/5", // Cm F Cm
  F: "~ [g3,c4,eb4]@2 ~@5 [g3,c4,eb4]@6 ~@2", G: "[g3,c4,eb4]@8 ~ [g3,c4,eb4]@2 ~ [g3,c4,eb4]@2 ~@2",
  H: "[~ [g3,c4,eb4]@9 ~@3 [a3,c4,f4]@12 f3@2 [a3,c4,f4]@4 ~]/2", I: "[a3,c4,f4]@2 [a3,c4,f4]@2 ~@3 [a3,c4,f4]@9",
  J: "[~@23 [g3,c4,eb4] ~ [g3,c4,eb4] ~@4 [g3,c4,eb4]@2, ~@3 [g3,c4,eb4]@19 ~@10, ~@20 c2@11 ~]/2", // Cm
  K: "[~@3 c2@2 [g3,c4,eb4]@2 ~@5 [bb3,d4,f4]@6 ~@2 [bb3,d4,f4]@8 ~ [bb3,d4,f4]@2 ~]/2", // Cm Bb
  L: "[bb3,d4,f4]@2 ~@3 [bb3,d4,f4]@9 ~@2", // Bb
  M: "[~ c4@9 ~@5 g4@3 c5@2 [g3,c4,eb4] ~@2 [g3,c4,eb4]@2 ~@2 [g3,c4,eb4]@10 ~@5 [a3,c4,f4]@2 ~@3 f3@2 [a3,c4,f4]@3 ~@2 [a3,c4,f4]@2 ~@3 [a3,c4,f4]@9 ~ [bb3,d4,f4]@9 ~@2, ~ g3@17 ~@62, ~ eb4@12 eb4@5 ~@62, ~@10 c4@7 ~@63]/5", // Cm F Bb
  N: "~ [g3,c4,eb4]@6 ~ [g3,c4,eb4]@8", // Cm
  O: "[~@2 [g3,c4,eb4]@2 [g3,c4,eb4]@2 ~@3 [g3,c4,eb4]@9 ~@3 [g3,c4,eb4]@13 ~ [g3,c4,eb4]@4 ~@4 [g3,c4,eb4]@2 ~@3]/3", // Cm
  P: "[~@2 [g3,c4,eb4]@8 ~@2 [g3,c4,eb4]@12 c3@2 [g3,c4,eb4]@3 ~@2 c4@12 c4@3 eb4@2, ~@31 [g3,eb4]@14 ~@3]/3", // Cm
  Q: "~@2 [g3,c4,eb4]@8 c3@2 [g3,c4,eb4]@3 ~", // Cm
  R: "[~ [g3,c4,eb4]@2 ~@3 c4@9 c4@3 eb4@2 g4@2 ~ c5 ~ [g4,c5,eb5,g5]@12 c3@3 [g4,c5,eb5,g5]@2 ~@2 [a4,c5,f5,a5]@18 ~@2, ~@3 [g3,eb4]@6 ~@23]/4", // Cm F Cm
  S: "[f4,bb4,d5,f5]@5 c3 [f4,bb4,d5,f5] ~", T: "~@3 g5@4 ~, ~ g4@6 ~, ~@2 c5@5 ~",
  U: "[g4,c5,eb5,g5]@5 c3 [g4,c5,eb5,g5] ~", V: "[a4,c5,f5,a5]@5 f2 [a4,c5,f5,a5] ~",
  W: "[f4,bb4,d5,f5]@5 bb2 [f4,bb4,d5,f5] ~", X: "[g4,c5,eb5,g5]@15 ~",
  Y: "[c5,f5]@10 ~@4 f5 c5, a4, a5@9 ~ a5@2 c5@2 ~@2, ~@11 f5@2 a5@2 ~", // F5
  Z: "[bb4,d5]@10 ~@4 d5 bb4, f4, f5@9 ~ f5@2 bb4@2 ~@2, ~@11 d5@2 f5@2 ~", AA: "[g4,eb5,g5]@7 ~@9",
  AB: "[[c5,g5]@25 ~ c3!2 [g4,c5,eb5,g5]@2 c3 ~]/2", AC: "~@3 a5@4 ~, ~ a4@6 ~, ~@2 c5@5 ~",
  AD: "[c5,eb5]@10 ~@4 eb5 c5, g4, g5@9 ~ g5@2 c5@2 ~@2, ~@11 eb5@2 g5@2 ~", // Cm
  AE: "[eb5,c6] ~@2 [c5,eb5,g5,c6]@4 ~, g5 ~@15", AF: "[a4,c5,f5,a5]@15 ~",
  AG: "[d5,bb5] ~@2 [bb4,d5,f5,bb5]@4 ~, f5 ~@15", // Gm Bb
  AH: "[~@7 c6@6 ~ [eb5,g5,c6] ~, ~@2 g4@23 ~ g4@4 ~@2, ~@2 c5@13 ~, ~@6 [eb5,g5]@21 ~@5]/2", // Cm Eb
  AI: "[[eb5,g5]@25 ~ eb2!2 [g4,bb4,eb5,g5]@2 eb2@2]/2", // Eb
  AJ: "[[bb4,eb5,g5]@13 ~@5 bb3 ~ [bb4,eb5,g5] ~ bb3 ~ [bb4,eb5,f5]@4 [bb4,eb5,g5] ~@3, ~@7 [bb4,eb5,f5]@3 ~@6]/2", // Eb Bbsus4 Eb Bbsus4
  AK: "[bb4,eb5]@10 ~@4 eb5 bb4, g4, g5@9 ~ g5@2 bb4@2 ~@2, ~@11 eb5@2 g5@2 ~", // Eb5
  AL: "[g4,c5,eb5,g5]@9 ~ [g4,c5,eb5,g5] ~ c3 [g4,c5,eb5,g5] ~@2", // Cm
  AM: "[a4,c5,f5,a5]@9 ~ [a4,c5,f5,a5] ~ f2 [a4,c5,f5,a5] ~@2", // F
  AN: "[f4,bb4,d5,f5]@9 ~ [f4,bb4,d5,f5] ~ bb2 [f4,bb4,d5,f5] ~@2", // Bb
  AO: "g4 ~@5 c6@7 ~@3, eb5@13 ~@3, ~ g4@6 ~, ~@4 g5@9 ~@3", AP: "a4 ~@5 c6@7 ~@3, f5@13 ~@3, ~ a4@6 ~, ~@4 a5@9 ~@3",
  AQ: "[f5,a5,c6] ~@2 [c5,f5,a5,c6]@4 ~", // F
  AR: "[[g4,c5,eb5,g5]@9 ~ [g4,c5,eb5,g5] ~@3 [c5,eb5,g5]@9 ~@4 g5@2 ~ g5 ~, ~@14 g4@8 ~ g4@9, ~@12 g5 c5 ~@2, ~@25 eb5@2 ~@5]/2", // Cm
  AS: "[[g4,c5,eb5,g5]@7 ~ [g4,c5,eb5,g5] ~@3 [g4,eb5,g5] ~ [g4,c5,eb5,g5]@5 ~ [eb5,g5] ~ [g4,c5,eb5,g5]@4 c3 ~ [g4,c5,eb5,g5]@2 ~@2]/2", // Cm Eb Cm
  AT: "[eb5,g5]@13 ~ [c5,eb5,g5] ~", AU: "~@2 c3!2 [c5,eb5,g5]@2 ~@2 [c5,eb5,g5] ~ [c5,eb5,g5]@3 ~@3",
  AV: "[~@2 [g4,c5,eb5] ~@3 c3 ~ [g4,c5,eb5]@2 ~@2 c3 ~@5 c3 ~ [g4,c5,eb5] ~ c3 ~ [c5,d5] ~ c3 ~ [g4,c5,eb5] ~@3, ~@7 [g4,c5,d5]@3 ~@6]/2", // Cm Csus2 Cm Gsus4
  AW: "[[eb5,g5,c6]@23 ~ eb5!2 ~ c3 [c5,eb5,g5]!2 ~@2, ~@12 g5 ~@3]/2", AX: "[g4,eb5,g5]@7 ~ [f4,d5,f5]@7 ~",
  AY: "[g4,eb5,g5]@7 ~ [f4,bb4,d5,f5]@8", AZ: "[c5,ab5,c6]@7 ~@3 [bb4,d5]@2 ~@4",
  BA: "[g4,eb5,g5]@7 ~@3 [bb4,d5]@2 ~@4", BB: "~ [c5,eb5] ~@3 [bb4,d5] ~@2", BC: "[c5,eb5,ab5,c6]@4 ~ [bb4,d5] ~@2",
  BD: "~ [f4,d5]", BE: "[c5,ab5,c6]@7 ~@9", BF: "[c5,eb5,ab5,c6] [f4,bb4,d5,f5]",
})).s("gm_piano").gain(0.26)

// chords · piano · "mid piano" · soft notes
const piano_soft = note(`<
  ~@40 A ~@7 B ~ C D@2 A E ~@2 F ~ G ~@5 H@2 ~ I ~@10 E G ~@2 F ~ F ~ J K L M N ~ O ~ J ~ P ~@2 Q ~ Q R Q ~ S T ~ F A
>`.pickRestart({
  A: "~@5 eb5@9 ~@2", B: "~@2 eb5 d5", C: "~ [c5,eb5] ~@2 eb5@2 d5@2", D: "[[g4,eb5]@13 ~@3]/2", E: "~@5 f5@9 ~@2",
  F: "c5 ~@7", G: "bb4 ~@7", H: "[[g4,bb4]@25 ~@7]/2", I: "~@12 f5 ~@3", J: "~@12 eb5 c5@2 ~", K: "~@12 c5 ~@3",
  L: "~@4 [g4,c5] ~@11", M: "c5@13 ~@3", N: "~@6 g3 ~@2 g3 ~@6", O: "~@4 d5 ~@3 g4@2 ~@2 [ab4,d5] ~@3",
  P: "~@7 c3 c5@2 ~@6", Q: "~@7 bb3", R: "~@6 c4 ~@7 bb3 ~", S: "~ [c5,eb5] ~@6", T: "~@5 [bb4,d5] ~@2",
})).s("gm_piano").gain(0.15)

// chords · electric guitar clean · "mid guitar"
const electric_guitar_clean = note(`<
  ~@36 A B@2 C D E F G H E I J K D K L M E N O E D N P Q R@2 L M S@2 T@2 U V W X Y Z AA X V Q F J D H N P D AB@2 AC@2
  AD@2 AE@4 AF@2 AG AH AI Y AJ AK AL Z AM AN AO D@2
>`.pickRestart({
  A: "~@6 [c3,g3] ~, ~@9 c2@6 ~", // C5
  B: "[~@3 c3@2 g3@3 ~@2 g3@2 ~@3 [c3,c4]@2 ~@5 [c3,c4]@8 ~@2, c2@12 ~@8 c2@11 ~, ~@3 c4@7 ~@22, ~@8 c3@5 ~@19]/2", // C
  C: "~ [c3,f3] ~@2 c3 f3 ~ f3, c2@5 ~ c2@10, ~@4 bb3@3 ~, ~@3 c3", D: "~@2 [c3,g3]@2 ~@4 [c3,g3]@7 ~, ~@6 c2@9 ~",
  E: "~@2 [c3,g3] ~@5 c3@2 g3@2 ~@2 g3@2, c2@5 ~ c2@10, ~@4 c4@3 ~, ~@3 c3", // C5
  F: "~@2 [f3,c4]@2 ~@4 [f3,c4]@7 ~, ~@6 f2@9 ~", // F5
  G: "~@2 [bb2,f3] ~@5 bb2@2 f3@2 ~@2 f3 ~, bb1@5 ~ bb1@10, ~@4 bb3@3 ~, ~@3 bb2", // Bb5
  H: "~@2 [c3,g3] ~@3 c2@2 [c3,g3]@6 ~@2", I: "~@2 [f3,c4] ~@3 f2@2 [f3,c4]@6 ~@2",
  J: "~@2 [bb2,f3] ~@3 bb1@2 [bb2,f3]@6 ~@2", K: "[c3,g3]@6 c2@2 [c3,g3,c4]@3 ~ [bb2,f3,bb3]@3 ~",
  L: "~@4 [c3,g3]@2 ~@4 [c3,g3]@3 ~ [c3,g3]@2", M: "~@2 [c3,g3]@3 ~ c2@2 [c3,g3]@2 c2@2 g3 ~ g3 ~, ~@3 c3",
  N: "~@2 [f3,c4] ~@3 f2@2 ~@2 f2@2 ~@2 c4 ~, ~@2 [f3,c4] f3", O: "~@2 [bb2,f3]@2 ~@4 [bb2,f3]@7 ~, ~@6 bb1@9 ~",
  P: "~@2 [bb2,f3] ~@3 bb1@2 ~@2 bb1@2 ~@2 f3 ~, ~@2 [bb2,f3] bb2", // Bb5
  Q: "~@2 [c3,g3] ~@3 c2@2 ~@2 c2@2 ~@2 g3 ~, ~@2 [c3,g3] c3", // C5
  R: "[~@2 [c3,g3,c4] ~@5 [c3,g3,c4]@4 g2@2 [c3,g3,c4]@4 ~@2 c3@2 ~@2 g3@2 ~@2 c3@2 g3 ~]/2", // C5
  S: "[~@2 [eb3,bb3,eb4] ~@5 [eb3,bb3,eb4]@4 bb2@2 [eb3,bb3,eb4]@4 ~@2 eb3@2 ~@2 bb3@2 ~@2 eb3@2 bb3 ~]/2", // Eb5
  T: "[[eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@2 ~@2 [eb3,bb3,eb4]@2 eb2 ~ [eb3,bb3,eb4]@4 eb2@2 eb3@2 eb2@2 [eb3,bb3,eb4]@2 eb2@2 eb3@2 bb3 ~]/2", // Eb5
  U: "~@2 [eb3,bb3] ~@3 eb2@2 ~@2 eb2@2 ~@2 bb3 ~, ~@2 [eb3,bb3] eb3", // Eb5
  V: "~@2 [c3,g3,c4] ~ [c3,g3,c4]@2 ~@2 [c3,g3,c4] ~ [c3,g3,c4] ~ [c3,g3,c4] ~ [c3,g3,c4] ~, ~@3 c2@5", // C5
  W: "~@2 c4 ~@2 f2 ~ c4, f2@9 ~@3 f3@4, ~@2 f3@4 [c4,f4]@7 ~@3", // F5
  X: "~@2 [bb2,f3,bb3] ~ [bb2,f3,bb3]@2 ~@2 [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~, ~@3 bb1@5", // Bb5
  Y: "~@2 [c3,g3] ~ [c3,g3]@2 c2@2 ~@4 c3@2 g3 ~, c2@5 ~@3 [c3,g3]@4 ~@4, ~@5 c2@2 ~", // C5
  Z: "~@2 [c3,g3,c4] ~@3 c2@2 [c3,g3,c4]@2 c2@4 [c3,g3,c4]@2", // C5
  AA: "~@2 [f3,c4,f4] ~ [f3,c4,f4]@2 ~@2 [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~, ~@3 f2@5", // F5
  AB: "[~@2 c2@2 ~@2 c2@2 ~@6 g3@3 ~ [c3,g3,c4] ~@9 [c3,c4]@3 ~, ~@4 c3@6 c2@10 ~@2 c2@4 c2@5 ~, ~@8 g3@4 c3@5 ~@7 [c3,g3]@4 ~@4]/2", // C5 C C5
  AC: "[~@2 [c3,g3]@2 ~@4 [c3,g3]@4 ~@2 [c3,g3]@3 c4 g3 ~@2 g3 ~@5 g3 c3 c4 ~ c3, ~@6 c2@5 ~ c2@20, ~@8 d3 ~@10 c3@2 ~ c3@2 g3@2 c4@2 ~@2 g3@2, ~@20 c4@2 ~ c4@2 c3@2 ~@5]/2", // C5
  AD: "[[c3,g3] ~@13 g3@4 c3@2 g3@2 c3@2 ~@2 c3@2 g3@2 c3@2, ~@4 c2@5 ~ c2@22, ~@3 c3@4 ~@9, ~@3 g3@3 ~@6 c4@2 ~@2]/2", // C5
  AE: "[~@2 [c3,g3] ~ [c3,g3]@2 c2@2 [c3,g3] ~ [c3,g3]@2 ~@2 [c3,g3]@3 ~ [c3,g3]@2 ~@2 [c3,g3]@3 c4 g3 c3 c4 g3 c3 g3, ~@3 c2@2 c2@3]/2", // C5
  AF: "[~@2 [c3,g3] ~@5 g3@6 ~@6 g3@2 ~@8 g3@2, c2@5 ~ c2@7 ~ c2@11 ~ c2@6, ~@8 c3@8 c4@5 ~ c4@8 ~@2, ~@18 c3@9 ~ c3@4]/2", // C5
  AG: "[c3,g3,c4]@6 c2@2 [bb2,f3,bb3] ~ bb1@2 [bb2,f3,bb3]@2 [bb2,f3,bb3] ~", // C5 Bb5
  AH: "c4 g3 c3 ~ g3 c3 c4 g3 [bb2,f3,bb3] ~ bb1@2 [bb2,f3,bb3]@2 [bb2,f3,bb3] ~, ~@3 c4@2 ~@11", // Bb5
  AI: "[c2,eb3,ab3] ~ c2@2 [eb3,ab3]@2 [c2,eb3,ab3] ~ bb3 f3 bb2 ~ f3 bb2 bb3 f3, ~@11 bb3@2 ~@3", // Ab Ab5 Ab
  AJ: "[c3,g3,b3,c4] c2 [c3,g3,c4] ~ [bb2,f3,a3,bb3] bb1 [bb2,f3,bb3] ~", // Cmaj7 C5 Bbmaj7 Bb5
  AK: "[c3,g3,c4] ~ c2@2 [c3,g3,c4]@2 [c3,g3,c4] ~ bb3 f3 bb2 ~ f3 bb2 bb3 f3, ~@11 bb3@2 ~@3", // C5
  AL: "[c2,eb3,ab3]@3 ~ [bb2,f3,a3,bb3] bb1 [bb2,f3,bb3] ~", // Ab Bbmaj7 Bb5
  AM: "[c3,c4] ~@3 g3@2 [g3,c4]@2 ~@2 [bb2,f3,bb3]@2 ~@2 [bb2,f3,bb3]@2, g3 c3@3 ~@4", // C C5 Bb5
  AN: "[c2,eb3]@3 ~ [bb2,f3]@3 bb1", AO: "~ [c2,eb3,ab3] ~ [c2,eb3,ab3] [bb2,f3] ~ [bb2,f3] ~",
})).s("gm_electric_guitar_clean").gain(0.41)

// chords · electric guitar clean · "mid guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@37 A@2 ~ B ~ C ~ D ~ E F ~ B ~ G ~@2 H I ~ B H J K L M G ~ N O P Q R B S I T U C I B K C F B D H J B V W X ~ Y Z AA
  ~ AA ~@2 AB ~@3 T ~@3 U ~@2 AC B@2
>`.pickRestart({
  A: "[~@6 c2@3 ~@7]/2", B: "c2@5 ~@11", C: "f2@5 ~@11", D: "~@2 gb3 ~@13", E: "~@2 b3 ~@13", F: "~@2 e3 ~@13",
  G: "~@4 c2 ~@3", H: "f2 ~@11 c4 ~@3", I: "bb1@5 ~@11", J: "bb1 ~@11 f3 ~@3", K: "c2 ~@11 g3 ~@3", L: "~@6 g2 ~@9",
  M: "~@2 g2 ~@3 g2@2 c3@2 g2@2 ~@4", N: "~@6 bb2 ~@9", O: "~@2 bb2 ~@3 bb2@2 eb3@2 bb2@2 ~@4", P: "eb2@2 ~@2 eb2 ~@11",
  Q: "~@2 bb3 ~@5", R: "eb2 ~@11 bb3 ~@3", S: "~@6 f3@5 ~@5", T: "~@13 g3 ~@2", U: "c2@3 ~@9 c3 ~@3", V: "~@12 ab3 ~@3",
  W: "~@12 g3 ~@3", X: "c2 ~@15", Y: "~@7 c3", Z: "~@6 ab3 ~@9", AA: "~@9 c2 ~@6", AB: "~@10 g2 ~@5",
  AC: "~@11 bb1 ~@4",
})).s("gm_electric_guitar_clean").gain(0.2)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C D B E D F E G H E I H J K L J M N A M O A P C Q B C D B E D H E K R J K S@30 T S@7 T S@7 U S@15 V S@3 W S@4 T
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@3 x ~@9 x ~@2", C: "~@3 x ~@4", D: "x ~@4 x ~@2", E: "~@7 x ~@8", F: "~@4 x ~@8 x ~@2",
  G: "~ x ~@8 x ~@5", H: "~@2 x ~@4 x", I: "~@11 x ~@4", J: "~ x", K: "~ x ~@9 x ~@4", L: "~@5 x ~@8 x ~",
  M: "~ x ~@4 x ~", N: "~@5 x ~@9 x", O: "~@6 x ~@8 x", P: "~@3 x ~@8 x ~@3", Q: "x ~@8 x ~@6", R: "~@7 x",
  S: "~ x ~ x", T: "x!2 ~@14", U: "~@4 x ~@3 x!2 ~@2 x ~ x ~", V: "~@2 x ~@3 x!2", W: "x ~@5 x ~@7 x!2",
})).gain(0.46)

// drums · clap
const clap = s("cp").struct("<~@21 [~@2 x ~@2 x ~@10] ~@8 [~@13 x ~@2] x ~@79>").gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@5 A ~@6 B ~@18 C ~@4 D ~@32 E ~@7 E ~@23 F ~@3 F ~@4 E>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@12", C: "~@7 x ~@8", D: "~@5 x ~ x ~@8", E: "~@12 x!4", F: "~@3 x",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E F B G H I J K L M N O D P Q B R D S T B R H N O U V W N O X Y Z B R AA@3 AB AA AB@3 AA@2 AB AA@5 AB AA@9 AB
  AA@3 ~ AA AB AA@4 AB ~ AA@4 AB AA@2 AC AA AB@2 AA@8 AB AA AB AA AD AA@3 ~ AA@4 ~
// … 62 more lines

More by David Bowie