Strudelify

Can't Get Enough of Your Love, Babe

Barry White

KeyF majorTempo109 bpm
0:00/0:00
// Can't Get Enough of Your Love, Babe — White Barry
// 109 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(109/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 · piano
const piano = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 C D E F G H I J G H I K G L I M G H I K N@2 O P N@2 O P N@2 C D E F G H I J G H I K G L I
  M G H I K N@2 O P N@2 O P N@2 C D E F G H I J Q@2 R@2 Q@2 S@2 T@3 U V@3 W G H I J G H I K X Y Z AA AB AC AD AE AF AG
  AH AI AJ AK AL AM
>`.pickRestart({
  A: "[a6@6 f6@6 d6@12 ~@6 [a4,d5,f5,a5] ~, [a4,d5,f5,a5]@29 ~@3]/2", // Dm
  B: "[g6@6 e6@6 c6@8 [g4,c5,e5] ~ [a4,c5,f5] ~@3 [b4,d5,g5] ~@5, [g4,c5,e5,g5]@19 ~@13]/2", // C F G C
  C: "[c4,d4,f4]@2 ~ [c4,d4,f4] ~@2 [c4,d4,f4]@9 ~", D: "[c4,d4,f4]@2 ~ [c4,d4,f4] ~@2 [c4,d4,f4]@8 ~@2",
  E: "[c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4]@8 ~@2", // Dm7
  F: "[c4,d4,f4,a4]@3 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4]@8 ~@2", // Dm7
  G: "[c4,f4,a4]@3 [c4,e4,g4] ~@2 [c4,d4,f4]@4 c4 ~ c4 d4 f4 ~", // F C Dm7
  H: "[a3,c4,f4,a4]@3 [g3,c4,e4,g4] ~@2 [f3,c4,d4,f4]@8 ~@2", // F C Dm7
  I: "[c4,f4,a4]@2 ~ [c4,e4,g4] ~@2 [c4,d4,f4]@4 c4 ~ c4 d4 f4 ~", // F C Dm7
  J: "[a3,c4,f4,a4]@3 [g3,c4,e4,g4] ~@2 [c4,d4,f4]@8 ~@2, ~@3 f3@3 ~@2", // F C Dm7
  K: "[a3,c4,f4,a4]@2 ~ [g3,c4,e4,g4] ~@2 [f3,c4,d4,f4]@8 ~@2", L: "[c4,f4,a4]@3 [c4,e4,g4] ~@2 [c4,d4,f4]@8 ~@2",
  M: "[c4,f4,a4]@2 ~ [c4,e4,g4] ~@2 [c4,d4,f4]@8 ~@2", // F C Dm7
  N: "[c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4]@7 ~ [c4,d4,f4,a4] ~", // Dm7
  O: "[c4,e4,g4,a4]@2 ~ [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4]@7 ~ [c4,e4,g4,a4] ~", // Am7
  P: "[a3,c4,d4,f4,a4]@2 ~ [a3,c4,d4,f4,a4] ~@2 [a3,c4,d4,f4,a4]@7 ~ [a3,c4,d4,f4,a4] ~", // Dm7
  Q: "[a6@6 f6@6 d6@12 [a3,d4,a4,d5,f5,a5] ~ [a3,d4,a4,d5,f5,a5] ~@3 [a3,d4,a4,d5,f5,a5] ~, [a3,d4,a4,d5,f5,a5]@23 ~@9]/2", // Dm
  R: "[g6@6 e6@6 c6@8 [g3,c4,g4,c5,e5] ~ [a3,c4,a4,c5,f5] ~@3 [g3,d4,b4,d5,g5] ~@5, [g3,c4,g4,c5,e5,g5]@9 ~@7]/2", // C F G C
  S: "[g6@3 e6@3 c6@4 ~@6, [g3,c4,g4,c5,e5,g5]@9 ~@7]/2", // C
  T: "[c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4]@7 ~ [c4,d4,f4,a4] ~", // Dm7
  U: "[c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4]@6 ~@2 [c4,d4,f4,a4] ~", // Dm7
  V: "[bb3,c4,d4,f4,a4] ~ a3 [bb3,c4,d4,f4,a4] ~ a3 [c4,d4,f4,a4]@7 ~ [c4,d4,f4,a4] ~, ~@3 bb3@4 ~", // Bbmaj7 Dm7
  W: "[bb3,c4,d4,f4,a4] ~ a3 [bb3,c4,d4,f4,a4] ~ a3 [c4,d4,f4,a4]@6 ~@2 [c4,d4,f4,a4] ~, ~@3 bb3@4 ~", // Bbmaj7 Dm7
  X: "[c4,f4,a4]@2 [f4,c5,f5] [c4,e4,f4,g4,c5,f5] [f4,c5,f5]!2 [f4,c5] [f4,c5,f5] ~ [f4,c5,f5] [c4,f4,c5,f5] [f4,c5,f5] [c4,f4,c5,f5] d4 [f4,c5,f5]!2, ~@3 [c4,d4]@2 ~@3", // F F5 C F5 Csus2
  Y: "f4 [f4,c5,f5] [f4,c5] [c4,e4,f4,g4,c5,f5] [f4,c5,f5]!4 ~ [f4,c5,f5]!2 [f4,c5] [f4,c5,f5] [f4,c5]!2 [f4,c5,f5], [c4,a4]@3 ~@3 [c4,d4]@8 ~@2", // F5 C F5 F Csus2
  Z: "[c4,f4,a4]@2 [bb4,d5] [c4,e4,g4,a4,c5,d5] ~ [a4,c5] [bb4,c5,d5] [bb4,d5] ~@2 [c4,a4,c5,f5] ~ [c4,g4,bb4,f5] d4 [f4,a4,c5,f5] ~, [bb4,d5,f5] ~ f5@2 ~@2 [c4,d4,f4]@4 ~@6, ~@3 f5 ~@4", // F Bb Am7 Am Bb F Csus4 F …
  AA: "[c4,f4,a4]@2 [bb4,d5,f5] [c4,e4,g4,a4,c5] ~ a4 [bb4,c5,d5,f5] [bb4,d5,f5] ~ a4 [a4,c5,f5] ~ [g4,bb4,f5] ~ a4 ~, [bb4,d5,f5] ~@5 [c4,d4,f4]@8 ~@2", // F Bb Am7 Bb F Gm7 Bb Dm7
  AB: "[c4,f4,a4]@2 f4 [c4,e4,g4,c5,e5,g5] ~ f4 [f4,c5,f5,a5] f4!2 [c5,e5,g5] c4 f4 [c4,c5,d5,f5] [d4,f4] [f4,c5,e5,g5] f4, [c5,f5,a5] ~@5 [c4,d4]@4 ~@6", // F C F C Dm7 Dm C F …
  AC: "[f4,c5,f5,a5] f4!2 [g3,c4,e4,g4,c5,e5,g5] ~ f4 [f4,c5,f5,a5] f4!2 [c5,e5,g5] ~ f4 [c5,d5,f5] f4 [c5,e5,g5] f4, [a3,c4,a4]@3 ~@3 [f3,c4,d4]@8 ~@2", // F C F C Dm7 C Am Dm7
  AD: "[f4,c5,f5,a5] f4!2 [c4,e4,g4,c5,e5,f5,g5] ~ f4 [f4,c5,f5,a5] f4!2 [c5,e5,f5,g5] c4 f4 [c4,c5,d5,f5] [d4,f4] [f4,c5,e5,g5] f4, [c4,a4]@2 ~@4 [c4,d4]@3 ~@7", // F C F C Dm7 Dm C F …
  AE: "[f4,c5,f5,a5] f4!2 [g3,c4,e4,g4,c5,e5,g5] f4!2 [c5,f5,c6]!2 f4 [c5,f5,c6]!2 f4 [c5,f5,c6]!2 f4 [c5,f5,c6], [a3,c4,a4] ~@2 [f3,c4,d4]@4 ~, ~@3 f4 ~@4", // F C F5 Am Dm7
  AF: "c5 [f5,c6,f6]!2 [c4,e4,g4,c5] [f5,c6,f6]!2 c5 [f5,c6,f6]!2 c5 [c4,f5,c6,f6] [f5,c6,f6] [c4,c5] [d4,f5,c6,f6] [f4,f5,c6,f6] [g5,ab5,bb5,c6], [c4,f4,a4]@3 ~@3 [c4,d4,f4]@4 ~@6", // F5 C F5 C Dm7 F5 C7 F …
  AG: "~ [g5,ab5,c6] g5 [g3,c4,e4,g4,f5] g5 f5!2 [g5,ab5,c6] ~ [g5,ab5,c6] g5 f5 g5 f5 d5 c5, [a3,c4,f4,a4]@3 ~@3 [f3,c4,d4,f4]@8 ~@2", // Abmaj7 C Abmaj7 F Dm7
  AH: "[c5,f5,a5]!2 ~ [c4,e4,g4,c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5] c4 [c5,f5] c4 [d4,c5] [f4,d5] c5, [c4,f4,a4] ~@2 [c4,d4,f4]@2 ~@3", // F Fmaj7 F F5 D7 Dm F Dm7
  AI: "[c5,f5]!2 ~ [g3,c4,e4,g4,c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5] ~ [c5,f5] ~@2 d5 f5, [a3,c4,f4,a4,a5]@3 ~@3 [c4,d4,f4]@8 ~@2, ~@6 f3@6 ~ c5@3", // F5 Fmaj7 F F5 F Dm7
  AJ: "f4 [f4,c5,f5]!2 [c4,e4,g4] [f4,c5,f5]!2 f4 [f4,c5,f5]!2 f4 [c4,f4,c5,f5] [f4,c5,f5] [c4,f4] [d4,f4,c5,f5] [f4,c5,f5] f4, [c4,a4]@3 ~@3 [c4,d4]@4 ~@6", // F5 C F5 Dm7 F5 F Csus2
  AK: "[f4,c5,f5]!2 f4 [g3,c4,e4,f4,g4,c5,f5] [f4,c5,f5] f4 [a4,c5,f5]!2 f4 [c5,f5,a5]!2 f4 [f5,a5,c6]!2 f4 [f5,a5,c6], [a3,c4,a4]@3 ~@3 [f3,c4,d4]@8 ~@2, ~@3 f4 ~@4", // F5 C F5 F Am Dm7
  AL: "f4 [f4,f5,a5,d6] ~ [c4,e4,g4,f5,a5,d6] ~ [f5,a5,d6] ~ [f5,a5,d6] ~ [f5,a5,b5,c6] [c4,f5,a5,c6] [f5,a5] [c4,f5,a5,c6] [d4,f5,a5,d6] f4 [f5,a5,d6], [c4,a4] ~@2 [c4,d4,f4]@2 ~@3", // Dm Dm7 Dm F Dm F Dm7
  AM: "~ [f5,a5,c6] f5 [g3,c4,e4,g4,f5,a5] [f5,a5,c6] [f5,a5,d6] ~ [f5,a5,d6] ~ [f5,a5,c6] ~ [a5,c6,f6] ~ [a5,c6,f6] ~@2, [a3,c4,f4,a4]@3 ~@3 [c4,d4,f4]@8 ~@2, ~@3 f3@3 ~@2", // F Fmaj7 F Dm F Dm7
})).s("gm_piano").gain(0.42).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  A@2 B@2 C@2 D@2 E F G H E I J K J L M N M N M N M N M N M N M N M N O P Q R O P Q R O P J K J L M N M N M N M N M N M
  N M N M N O P Q R O P Q R O S J K J L M N M N T@2 B@2 E F G U V W V X V W V X M N M N M N M N M N M N M N M N M N M N
  M N M Y
>`.pickRestart({
  A: "[bb1@29 ~ bb1 ~]/2", B: "[a1@20 f1@2 g1@4 a1 ~@5]/2", C: "[bb1@18 ~@2 bb1 ~ bb1 ~@3 bb1 ~@3 bb1@2]/2",
  D: "[a1@19 ~ f1@2 g1@2 ~@2 a1@2 ~@4]/2", E: "bb1@3 f2@3 bb1@2", F: "~@4 bb1 ~ bb1 ~@3 bb1 ~@3 bb1@2",
  G: "a1@6 e2@6 a1@3 ~", H: "~@2 f1 g1 ~ a1 ~@2", I: "~@4 bb1 ~ bb1 ~@3 bb1 ~@3 b1@2", J: "c2 ~@2 c2 ~@2 c2@8 a1 bb1",
  K: "c2 ~@2 c2 ~@2 c2@7 ~ a1 bb1", L: "c2 ~@2 c2 ~@2 c2@4 d2@2 f2@2 d2 ~", M: "f1@3 a1 ~@2 d2@3 ~ f1 ~ d2 c2 a1@2",
  N: "bb1@3 a1 ~@2 g1@4 c2 ~@3 c2 f2", O: "bb1@3 ~@4 bb1!2 ~@5 f1 g1", P: "bb1@2 ~@5 bb1!2 ~@2 f1 g1@2 bb1@2",
  Q: "a1@3 ~@4 a1!2 ~@5 a1@2", R: "d2@6 ~ d2 d2@4 c2@3 ~", S: "bb1@2 ~@5 bb1!2 ~ a1@2 bb1@2 b1@2",
  T: "[bb1@24 bb1 ~ bb1@2 ~@2 bb1 ~]/2", U: "d2@3 ~ d2@3 c2 d2 c2 a1 ~ g1@2 a1 ~",
  V: "g1!3 ~@3 g1@3 g1 a1 g1 bb1 g1 b1 g1", W: "c2 g1 c2 ~@3 c2@3 g1 c2 ~ d2 c2 a1 ~",
  X: "c2!3 ~@3 c2@3 g1 c2 ~ d2 c2 a1 ~", Y: "bb1@3 a1 ~@2 g1@4 c2 ~@3 c2 ~",
})).s("gm_electric_bass_finger").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 F@4 G@2 H@2 G@2 H@2 I@2 J@2 G@2 K@2 L@4 M@2 N@2 O@2 F@4 G@2 H@2 G@2 H@2 I@2 J@2 G@2 K@2 L@4
  M@2 N@2 O@2 F@4 P@2 J@2 Q@2 R S C@2 T@2 U V@2 W U V@2 W G@2 H@2 G@2 H@2 I@2 J@2 G@2 K@2 G@2 K@2 G@2 K@2
>`.pickRestart({
  A: "[~@10 d4 c4 ~@2 [f4,g4] a4@16 ~, ~@11 d4@20 ~]/2", B: "[~ c5, [c4,g4]]/2", C: "[a4@6 g4 a4, d4]/2",
  D: "[~@4 d4@2 e4@2 a4@18 d5@3 c5@2 ~, c4@15 ~]/2", E: "[~@5 a4@23 [c5,c6] [g4,a4,g5,a5] [e4,e5] ~, d4@31 ~]/2",
  F: "[~@31 [c5,c6]@24 ~ c4@2 d4@2 f4@2 g4@2, c4@7 ~, c5@31 ~@33, ~@2 [g4,g5]@5 ~]/4", // C G
  G: "[[c4,c5]@26 [c4,c5] [d4,d5] [f4,g4,f5,g5] ~ [f4,f5] [g4,g5]]/2", // C D Fsus2 F G
  H: "[[f4,f5]@6 [a4,a5]@20 [f4,f5] [g4,g5] [a4,bb4,a5,bb5] [a4,a5] ~ [bb4,bb5]]/2", // F A F G Bbmaj7 A Bb
  I: "[[a4,a5]@3 [f4,f5]@2 ~ [c4,c5]@20 [c4,c5] [d4,d5] [f4,g4,f5,g5] ~ [f4,f5] [g4,g5]]/2", // A F C D Fsus2 F G
  J: "[[f4,f5]@3 [a4,a5]@9 [f4,f5] [g4,g5] [a4,a5] [bb4,bb5]]/2", // F A F G A Bb
  K: "[[f4,f5]@6 [a4,a5]@18 ~ [e4,e5]@2 ~ [f4,f5]@2 [g4,g5]@2, ~@12 [d4,d5] ~@3]/2", // F A E F G D
  L: "[[a4,a5]@26 ~ [d4,d5]@2 [c4,c5]@12 ~ [c5,c6]@2 [d4,d5]@2 [f4,f5]@10 [d4,d5]@2 [e4,e5]@2 ~ [g4,g5]@2 ~, ~@13 [a4,a5] ~@16 [f4,f5] ~]/4", // A D C D F D E G …
  M: "[[a4,a5]@11 ~ [d4,d5] [e4,e5] [f4,f5] [g4,g5]]/2", // A D E F G
  N: "[[c4,c5]@9 ~ [c5,c6]@2 [d4,d5]@2 [f4,f5]@10 [d4,d5]@2 [e4,e5]@2 ~ [g4,g5]@2 ~, ~@14 [f4,f5] ~]/2", // C D F D E G F
  O: "[a4@5 a4@16 ~@7 [c5,c6] [a4,a5] [g4,g5] [e4,e5], d4@31 ~, a5@11 ~@5]/2", // C A G E
  P: "[[a4,a5]@3 [f4,f5]@3 [c4,c5]@20 [c4,c5] [d4,d5] [f4,g4,f5,g5] ~ [f4,f5] [g4,g5]]/2", // A F C D Fsus2 F G
  Q: "[~@5 [c4,c5] [d4,d5] [a4,a5]@9]/2", R: "[g4,g5]@10 [a3,a4] [bb3,bb4] [c4,d4,c5,d5] ~ [c4,c5] [d4,d5]",
  S: "[c4,c5]@7 ~", T: "[~@4 d4@2 e4@2 a4@21 ~@3, c4@15 ~]/2", U: "f4 g4 a4 ~@3 c4@8 ~@2",
  V: "[f4,f5] [g4,g5] [a4,a5] ~@3 [c4,c5]@9 ~", W: "[f4,f5] [g4,g5] [a4,a5] ~@3 [c4,c5]@7 ~@3",
})).s("gm_string_ensemble_1").gain(0.36).pan(0.7)

// chords · trombone
const trombone = note(`<
  ~@5 A B@2 C D E F C D G@2 H@2 ~ I ~ J ~ K ~ L ~ I ~ J ~ K ~ L ~@3 M N@2 O M P@2 G@2 H@2 ~ I ~ J ~ K ~ L ~ I ~ J ~ K ~
  L Q@2 R S T@2 U V W@2 X@4 ~ I ~ J ~ Y Z F ~ Y Z F AA@2 AB AC AA@2 AB AD ~ I ~ J ~ K ~ L ~ I ~ J AE AF ~@2 AE AF ~@2 AE
  AF ~@2
>`.pickRestart({
  A: "~@4 [f3,a3,d4] ~ [f3,a3,d4] ~ e4@2 [f3,a3,d4] ~@3 [f3,a3]@2, ~@4 c4@2 ~@4 f4@4 d4 ~", B: "[[e3,g3,c4]@29 ~@3]/2",
  C: "~@12 [f3,a3,d4] ~ [f3,a3,d4] ~", D: "~@4 [f3,a3,d4] ~ [f3,a3,d4] ~@3 [f3,a3,d4] ~@3 [f3,a3] ~, ~@7 d4",
  E: "[e3,g3,c4] ~", F: "~@4 [e3,g3,c4]@2 [f3,a3,d4] ~@3 [g3,b3,e4] ~@5",
  G: "[d3,f3,c4] ~@2 [d3,f3,c4] ~@2 [d3,f3,c4] ~@9", H: "[f3,c4,d4] ~@2 [f3,c4,d4] ~@2 [f3,c4,d4] ~@9",
  I: "[c4,f4,a4] ~@2 [c4,e4,g4] ~@2 [c4,d4,f4]@6 ~@4", J: "~@8 [d4,f4,a4,c5]!4 ~@4",
  K: "[c4,d4,f4]@2 ~@4 [f4,a4,c5]@9 ~", L: "~@6 [d4,f4,a4,c5]!6 ~@4", M: "~@4 [d4,d5] [e4,e5] [f4,f5] [g4,g5]",
  N: "[~@12 [bb3,d4] [c4,e4] [d4,f4] [bb3,d4], [a4,a5]@13 ~@3]/2", O: "[g3,c4]@9 ~@7",
  P: "[~@5 a3 d3 f3@6 ~@3, [a4,a5]@13 ~@3]/2", Q: "a3/2", R: "g3", S: "~@4 [d4,d5] [e4,e5] [f4,f5] [g4,g5], a3",
  T: "[~@12 [bb3,d4] [c4,e4] [d4,f4] [bb3,d4], a3, [a4,a5]@13 ~@3]/2", U: "c4, g3@9 ~@7",
  V: "d4@4 [d4,d5] [e4,e5] [f4,f5] [g4,g5], a3@15 ~", // D E F G
  W: "[a3@10 [a3,d4]@2 d3@2 [f3,d4,f4]@13 ~@5, [a4,a5]@13 ~@3, ~@12 e4 ~@19]/2", // D5 Dm A
  X: "[[d3,f3,c4] ~@2 [d3,f3,c4] ~@2 [d3,f3,c4] ~@9 [d3,f3,c4] ~@2 [d3,f3,c4] ~@2 [d3,f3,c4] ~@9 [f3,c4,d4] ~@2 [f3,c4,d4] ~@2 [f3,c4,d4] ~@9 [f3,c4,d4] ~@2 [f3,c4,d4] ~@2 [f3,c4,d4] ~@9, c5@63 ~]/4", // Dm7
  Y: "~@8 [f3,a3,d4] ~ [f3,a3,d4] ~@3 [f3,a3,d4] ~", Z: "[e3,g3,c4]@3 ~", AA: "~@12 [d4,f4] [e4,f4,g4] [f4,g4,a4] ~",
  AB: "~@12 [d4,f4] [e4,f4,g4] [f4,a4] ~", AC: "~@12 [d4,f4,d5,f5] [e4,f4,g4,e5,f5,g5] [f4,g4,a4,f5,g5,a5] ~",
  AD: "[bb3,d4]@3 ~ [c4,e4]@3 ~ [d4,f4]@3 ~ [e4,g4]!2 g4 ~, ~@12 c4@3 ~", // Bb C Dm Em
  AE: "[c4,f4,a4] ~@2 [c4,e4,g4] ~@2 [c4,d4,f4]@3 ~@7", AF: "[c4,d4,f4] ~@2 [f4,a4,c5]@2 ~@3",
})).s("gm_trombone").gain(0.27).pan(0.3)

// other · brass section
const brass_section = note("<~@93 A B@2 C@2 ~@13 D@3 ~ D@3 ~ D@3>".pickRestart({
  A: "~@5 d5 a4@2", B: "[c5@13 f5 g5@2]/2", C: "[c6@31 ~, a5 ~@31]/2", D: "[a5@2 ~ c6@20 ~]/3",
})).s("gm_brass_section").gain(0.4).pan(0.7)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  A ~ B ~ A ~ B ~ A ~ C@2 A ~@31 D E F E ~@26 G@4 ~@4 A ~ B ~ A ~ C@2 ~@32
>`.pickRestart({
  A: "f5@2 ~ f5@2 f5@2 ~ f5@2 ~@6", B: "e5@2 ~ e5@2 e5@2 ~ e5@2 ~@6",
  C: "[e5@2 ~ e5@2 e5@2 ~ e5@2 ~@2 c5@2 ~ c5@2 c5@2 ~ c5@2 ~@10]/2", D: "c4!5 ~ c4!10", E: "c4!16", F: "c4!11 ~ c4!4",
  G: "[c4,c5]!16", // C
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.9)

// other · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<A ~ B ~ A ~ B ~ A ~ C D A ~@31 E ~ F ~@35 A ~ B ~ A ~ C D ~@32>".pickRestart({
  A: "~@11 f5@2 f5@2 ~", B: "~@11 e5@2 e5@2 ~", C: "~@11 e5@2 ~@3", D: "~@7 c5@2 c5@2 ~@5", E: "~@5 c4 ~@10",
  F: "~@11 c4 ~@4",
})).s("gm_electric_guitar_jazz").gain(0.14).pan(0.9)

// drums · kick
const kick = s("bd").struct("<A@14 B@3 C A@26 B@3 C A@26 B@3 C A@44>".pickRestart({
  A: "x!4", B: "x!2", C: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A B@3 C B@7 D B@7 E B@13 C B@7 D B@7 E B@13 C B@4 ~@7 F B@7 G B@7 D B@7 E B@8
>`.pickRestart({
  A: "~@3 x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@2 x ~ x ~ x ~ x ~ x!2 ~@4", D: "~@2 x ~ x ~ x ~ x ~ x ~ x!2 ~@2",
  E: "~@4 x ~ x ~@3 x!2 ~@4", F: "~@2 x ~ x ~ x ~ x!2 ~@6", G: "x ~ x ~ x ~ x!3 ~ x!3 ~@3",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@17 A ~@7 A ~@7 B ~@13 A ~@7 A ~@7 B ~@13 A ~@11 A ~@7 A ~@7 A ~@7 B ~@8
>`.pickRestart({
  A: "~@15 x", B: "~@14 x!2",
})).gain(0.45)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@14 A@2 B ~@2 C D E ~ F D G ~ C D E ~ F D G H F D G H F D I H F A@2 B ~@2 C D E ~ F D G ~ C D E ~ F D G H F D G H F D
  I H F A@2 B ~@2 C D E ~@9 C D E ~ C D E ~ C D E ~ F D G ~ C D E ~ F D G ~ C D E ~ C D E
>`.pickRestart({
  A: "~ x ~ x ~ x ~@2", B: "~@2 x ~@3 x ~@3 x ~@4 x", C: "~ x ~@6", D: "~@3 x ~ x ~ x", E: "~ x ~@3 x ~@2",
  F: "~ x ~ x ~@4", G: "~ x ~@3 x ~ x", H: "~@7 x", I: "~ x ~ x ~@3 x",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@17 A ~@7 A ~@7 B ~@13 A ~@7 A ~@7 B ~@13 A ~@11 C ~@7 A ~@7 A ~@7 B ~@8
>`.pickRestart({
  A: "~@7 x", B: "~@13 x ~@2", C: "~@12 x!3 ~",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@14 B@2 ~@2 B@2 ~ B@3 ~@2 B@2 ~ B@3 ~@3 B ~ C ~ B ~@2 D B@3 ~@2 B@2 ~ B@3 ~@2 B@2 ~ B@3 ~@3 B ~ C ~ B ~@2 D B@3 ~@2
  B@2 ~ B A@8 B@2 ~ B@3 ~ B@3 ~ B@3 ~@2 B@2 ~ B@3 ~@2 B@2 ~ B@3 ~ B
>`.pickRestart({
  A: "x!4", B: "~@7 x", C: "~@15 x", D: "x",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@17 A ~@15 B ~@13 A ~@15 B ~@13 A ~@11 C ~@7 A ~@15 B ~@8>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@3 x", C: "~@10 x!2 ~@4",
// … 32 more lines

More by Barry White