Strudelify

Jambalaya (On the Bayou)

Carpenters

KeyD majorTempo95 bpm
0:00/0:00
// Jambalaya (On the Bayou) — Carpenters
// 95 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 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): JAZZ GTR.
setcpm(95/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(`<
  ~@4 A B C D@4 E@3 F D@4 G@3 H D@4 G@3 I D@4 G@3 C J@3 K L@3 C M@3 K L@3 C M@3 K L@3 C N@4 L@3 ~@8 C O@3 K P@3 Q R@2
>`.pickRestart({
  A: "[c#4,a#4] [d4,b4] [b4,g5] [c#4,a#4] [d4,b4] [b4,g5] [c#4,a#4] [d4,b4] [b4,g5] [b3,d4] [b4,d5] [a#3,c#4] [a#4,c#5] [a3,c4] [a4,c5] [g3,b3]", // F# G Em F# G Em F# G …
  B: "[g4,b4] g4 d5 c5 b4 a4 ~@3 g4 ~ c4 b3 g4 b3 a3, g3@8 d3@7 ~, ~ d4@6 d4@3 d4@3 ~@3, ~@2 g4@4 g4@3 g3@6 ~", // G
  C: "~@15 g4, g3!2, ~ b3@4 b3@4 b3@4 b3@3, ~ d4!2 d4@2 d4!3, ~@3 g4@4 g4@4 g4@4 ~",
  D: "[~@63 g4, f#3@8 f#3@8 f#3@8 f#3@8 g3@8 g3@7 g4@3 d4 g4@3 d4@3 b3@3 d4 b3@3, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 b3@4 b3@11 g3@7 g4@3 d4 g4@3 d4@2, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~ d4@2 d4@2 d4@3 c4@3 d4 c4@19, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@2 g4@4 g4@3 d4 g4@3 d4@3 b3@3 d4 b3@3 g3@8]/4",
  E: "[~@38 d4 g4 ~ d5 d4 e4 f#4 g4 a4 a#4, f#3@8 f#3@8 f#3@8 f#3@8 g3@7 ~@9, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 b3@4 b3@2 ~@9, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~ d4@2 d4@2 ~@10, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@2 g4@4 ~@9]/3",
  F: "~@15 g4, b4, g3@7 g4@3 d4 g4@3 d4@2, ~ b3@3 d4 b3@3 g3@8, ~@2 d4 g4@3 d4@3 b3@3 d4 b3@3",
  G: "[~@38 d4 g4 ~@8, f#3@8 f#3@8 f#3@8 f#3@8 g3@7 ~@9, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 b3@4 b3@2 ~@9, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~ d4@2 d4@2 ~@10, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@2 g4@4 ~@9]/3",
  H: "~@14 d4 g4, b4@15 ~, g3@7 g4@3 d4 g4@4 ~, ~ b3@3 d4 b3@3 g3@7 ~, ~@2 d4 g4@3 d4@3 b3@3 d4 b3@2 ~",
  I: "~@14 d4 g4, g3@8 g3@7 ~, ~ b3@4 b3@4 b3@4 b3@2 ~, ~ d4!2 d4@2 d4!2 ~, ~@3 g4@4 g4@4 g4@4 ~",
  J: "[~@33 b3 d4 g4 d4 b3 d4 g4 ~ c4 d4 g4 d4 c4 d4 g4, f#3@8 f#3@16 f#3@8 g3@6 ~@2 g3@7 ~, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 ~@15, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~@15, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@15]/3",
  K: "~ b3 d4 g4 d4 b3 d4 g4 ~ b3 d4 g4 d4 b3 d4 g4, g3@7 ~ g3@7 ~",
  L: "[~@33 b3 ~@4 d4 g4 ~@8, f#3@8 f#3@8 f#3@8 f#3@8 g3@7 ~@9, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 ~@4 b3@2 ~@9, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~ d4@2 d4@2 ~@10, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@2 g4@4 ~@9]/3",
  M: "[~@33 b3 d4 g4 d4 b3 d4 g4 ~ c4 d4 g4 d4 c4 d4 g4, f#3@8 f#3@8 f#3@8 f#3@8 g3@6 ~@2 g3@7 ~, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 ~@15, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~@15, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@15]/3",
  N: "[~@63 g4, f#3!2 f#3!2 g3!2 g3!2, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@3, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~ d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@2, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@2 g4@4 g4@4 g4@4 g4@4 g4@4 g4@4 g4@4 ~]/4",
  O: "[~@33 b3 d4 g4 d4 b3 d4 g4 ~ b3 d4 g4 d4 b3 d4 g4, f#3@8 f#3@8 f#3@8 f#3@8 g3@6 ~@2 g3@7 ~, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 ~@15, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~@15, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@15]/3",
  P: "[~@38 d4 g4 ~@2 [a3,d4,f#4] ~ [b3,d4,g4]@3 ~, f#3@8 f#3@8 f#3@8 f#3@8 g3@7 ~@9, ~ a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 b3@4 b3@2 ~@9, ~@2 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 d4@3 ~ d4@2 d4@2 ~@10, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@2 ~@2 g4@4 ~@9]/3", // D G
  Q: "~ [b3,d4] [g4,b4] [b3,d#4] [c4,e4] [a4,c5] [c4,e4] [c#4,f4] [a#4,c#5] [c#4,f4] [d4,f#4] [b4,d5] [g4,b4]@4", // Bm G B C Am C C# A#m …
  R: "[[a1,a2] [a#1,a#2] [b1,b2] [d2,d3] [e2,e3] [g2,g3] [a2,a3] [b2,b3] [a3,c4,f4] ~ [a3,d4,f#4] ~ [b3,e4,g4]@16 ~@4]/2", // A A# B D E G A B …
})).s("gm_epiano1").gain(0.15).pan(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@13 A B C D E F G D H B C D E F G D H B I D E B I D J B C D E F G D H B C D E F G D H B I D E B I D J B C D E F G D H
  ~@7 K B C D E F G D L@2 M@2
>`.pickRestart({
  A: "~@9 a2 d2@2 e2@2 f#2@2", B: "g2@2 ~ g2 d2@4 g2@2 ~ g2 f#2@2 e2@2", C: "d2@2 ~ d2 a1@4 d2@2 ~@2 a1@4",
  D: "d2@2 ~ d2 a1@4 d2 ~ d2@2 e2@2 f#2@2", E: "g2@2 ~ g2 d2@4 g2@2 ~ g2 d2@4",
  F: "g2@2 ~ g2 d2@4 g2 ~ g2@2 f#2@2 e2@2", G: "d2@2 ~ d2 a1@4 d2@2 ~ d2 a1@4", H: "g2 ~@2 g2 d2@4 g2 ~@7",
  I: "d2@2 ~ d2 a1@4 d2 f#1@3 g1 ~ a1@2", J: "g2@2 ~ g2 d2@4 g2@2 ~@6", K: "g3@9 e3 d3 ~ [a2,b2] d3 d2@2, f#3 ~@15",
  L: "[g2 ~@2 g2 d2@3 d2 g2 ~ d2 ~ g2@7 ~@13]/2", M: "[~@10 d2 ~ g1@16 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.5)

// other · flute
const flute = note(`<
  A B C D E ~@2 F ~ G ~ H ~ I ~ F ~ G ~ H ~ I ~ F ~ G ~ H ~ J K L M N O P Q R ~ F ~ G ~ H ~ I ~@32 S T U V W X Y Z ~@3
>`.pickRestart({
  A: "~@12 b4 ~ d5 ~", B: "e5@3 b4 ~ b4 ~ d5 e5@4 d5 ~ b4 ~", C: "d5 ~ a4@9 ~ d5 ~ d5 ~",
  D: "f#5@4 e5 ~ d5 e5@4 ~ d5@3 b4", E: "a4 ~ g4@14", F: "~@4 a4 g4 f#4 a4@9", G: "~@3 d4 b4 a4 g4 d4@6 ~@3",
  H: "~@4 d5 a4 g4 f#4@8 ~", I: "~ d5 c#5 d5 g5 d5 b4 g4 ~@8", J: "~ d5 c#5 d5 g5 d5 b4 g4 ~ g4 b4 d5 g5 b5 d6 b5",
  K: "g5 [g5,a5] f#5 [g5,a5] g5 d5 b4 g4!2 [g4,a4] f#4 g4 b4 d5 g5 d5", L: "f#5 a5 c6 e6 d6 c6 a5 f#5 d5 ~@5 e6 ~",
  M: "d6@3 ~ c6@2 ~ c6 a5 c6 f5 f#5 b5 [d5,f#5] g5 [g5,a5]", N: "f#5 d5 b4 g4 d4 g4 b4 d5 g5 ~@3 d6!2 c#6 e6",
  O: "d6@2 b5 ~ g5@3 [g5,a5] f#5 [a5,b5] g5 d5 b4 g4 a4 b4", P: "c5 f#4 a4 c5 e5 a5 f#5 a5 c6 e6 d6 c6 a5 ~@3",
  Q: "~@2 e6 ~ d6@3 c6 a5 b5 c6 a5 ~ f#5 ~ d5", R: "g5 [g5,a5] d5 g5 b5 d6 b5 [d5,g5] g5 ~@7",
  S: "~@2 d6 ~ a5 b5 ~ e6@2 d6 b5 g5 a5 b5 a5 g5", T: "f#5 g5 f#5 d5 a4 b4 ~ a4@3 d5 [f#5,a5] g5 f#5 g5 f#5",
  U: "d5 ~@4 e6 ~ d6@2 c6 a5 g5 f#5 d5 e5 f#5", V: "g5 d5 b4 d5 g5!2 a5 [b5,d6] e6 d6 ~@3 d6 c#6 e6",
  W: "d6 c#6 e6 d6 c#6 e6 d6 c#6 e6 d6 c#6 e6 d6 c#6 e6 d6",
  X: "c6 a5 f#5 ~@2 c6 a5 [b5,c6] a5 [d5,f#5] a4 f#4 g4 a4 b4 c5", Y: "d5@3 a4 d5@2 e5 ~ f#5 d5 f#5 g5 a5 g5 f#5 a5",
  Z: "g5 d5 b4 g4 b4 d5 e5 d5 g5 ~ d5 ~ g5@2 ~@2",
})).s("gm_flute").gain(0.4)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@4 A B C ~@6 D E F@2 G@2 H I J ~@8 K@2 L M N@2 O P Q R S T U V W X Y Z@2 AA@2 Z@2 AB K@2 L M N@2 O P Y Z@2 AA@2 Z@2
  AB ~@7 AC AD AE@2 AF@2 AG AH AI ~@3
>`.pickRestart({
  A: "a#4 b4 g5 a#4 b4 g5 a#4 b4 g5 ~ d5 ~ c#5 ~ c5 ~", B: "b4 ~ d5 c5 b4 a4 g4 d4@2 g4 d4 c4 b3 g4 b3 a3",
  C: "g3@13 ~@3, f#3 ~@15", D: "~@9 d5 d4 e4 f#4 g4 a4 a#4", E: "a4@6 ~@2 a4 g4 a4@5 ~",
  F: "[b4@2 ~ a4@2 g4 a4@2 a4 ~ a4@2 ~@2 d4@7 ~ a3@10]/2", G: "[b3@6 a3 b3 ~@20 b4@3 ~, ~@8 b3@23 ~]/2",
  H: "a4@3 b4 a4@3 ~ a4 g4 ~ f#4@5", I: "d4", J: "d4 ~@15", K: "[a4@7 ~ a4@4 a4@14 ~@6, ~@12 g4 ~@19]/2",
  L: "a4@8 c5@3 ~ c5@4", M: "a4@3 ~", N: "[a4@7 ~ a4@3 g4 a4@13 ~@7]/2", O: "g4@8 f#4@4 g4@3 ~",
  P: "g5 ~ d5 e5 ~ a4@3 g4 ~@7, g4@7 ~@9", Q: "a4@7 ~ c5@6 ~@2", R: "d6 b5 a5 b5 g5 a5 f#5 a5 f#5 e5@2 ~ d5@4",
  S: "f#5@6 e5@2 d5@7 ~", T: "d5@3 b4 c5 b4 c5 b4 a4@3 g4@4 ~", U: "a4@7 ~ c5@7 ~",
  V: "[g4,a4] b4 a4 ~ a4 ~ b4 c5 ~ d5@5 ~@2", W: "c5@5 ~ b4 ~ c5@2 ~ b4 ~ a4@3", X: "g4@7 ~@9",
  Y: "[b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 g3 [b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 ~", // Em
  Z: "[d4,a4] f#4 [d4,a4] f#4 a3 [d4,a4] f#4 a3 [d4,a4] f#4 [d4,a4] f#4 a3 [d4,a4] f#4 a3", // D5
  AA: "[b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 g3 [b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 g3", // Em
  AB: "[b3,g4] ~ [b3,g4] d4 g3 [b3,g4] d4 g3 [d4,g4,b4] ~@7", AC: "~@5 g4 a4 g4 a4 d5 a4 g4 a4 g4 e4 d4",
  AD: "g4 ~@10 d4 a4 d4 g4 d4", AE: "[f#4@7 d4 e4@2 [f4,g4] e4@2 d4 e4 d4@8 d4 d5 d4 c#5 d4 c5 d4 [c5,d5] d4]/2",
  AF: "[b4@5 g4 a4 g4 a4@2 c5 a4@2 g4 a4 g4@5 ~ g4 a4 g4 b4@3 ~ d5@4]/2",
  AG: "d5@5 d5 e5 d5 e5@2 ~ e5@2 d5 b4 d5, ~@5 g5 ~@2", AH: "b4 a4 b4 a4 g4 a4 g4 f#4 g4 f#4 e4 f#4 e4 d4 e4 d4",
  AI: "c4 d4 c4 b3 c4 b3 a3 g3 a3 ~ [d4,f#4,a4] ~ [d4,g4,b4]@3 ~", // D G
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.1)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_2 = note(`<
  ~@14 A B@2 C D E@2 F ~@8 G H I J K L M@2 N O P Q R S T U ~@8 G H I J K L M@2 ~@27
>`.pickRestart({
  A: "g5@8 e5 d5 g5@5 ~", B: "[f#5@3 f#5@2 ~ f#5 ~ f#5 ~ f#5@2 ~@2 a4@8 f#4@10]/2", C: "g4@2 d4@2 e4@2 f#4@2 g4@7 ~",
  D: "~@3 g5", E: "[f#5@3 g5 f#5@3 ~ f#5 e5@2 ~@13 c5@7 ~, ~@11 d5@14 ~@7, ~@5 [f#4,a4]@3, ~@23 d4@8 ~]/2",
  F: "[g4,b4]@9 ~@7", G: "[g4,d5]@6 ~@2 [g4,d5]@3 ~ [g4,d5]@4", H: "[f#4,d5]@3 ~", I: "d5@7 ~ d5@4 d5@3 ~",
  J: "[g4,d5]@7 ~", K: "[g4,d5]@6 ~@2 [g4,d5]@3 ~ d5@3 ~", L: "d5 ~",
  M: "[d5@8 d5@10 ~@5 b4@3 ~@6, f#4@3 ~@7 d5@3 ~@3]/2", N: "[d5,g5]@7 ~ [g5,b5]@6 ~@2", O: "~@8 f#5@7 ~",
  P: "a5@6 g5@2 f#5@7 ~", Q: "g5@6 [c#5,g5] ~ [d5,g5]@7 ~", R: "[d5,g5] g5", S: "f#5@2 f#5@2 f#5@2 f#5!2 ~ a5@5 ~@2",
  T: "[f#5,a5]@7 ~ [e5,a5]@2 ~ [d5,a5] ~ [c5,d5,a5]@2 ~", U: "[d5,g5] ~",
})).s("gm_electric_guitar_jazz").gain(0.17).pan(0.1)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@4 A B C D@2 E F D@2 G C D@2 E F D@2 G C D@2 E F D@2 G C D@2 E F D@2 G C D@2 E F D@2 G C D@2 E F D@2 G C D@2 E F D@2
  G C D@2 E F D@2 G ~@8 C D@2 E F D@2 G ~@3
>`.pickRestart({
  A: "c#4 d4 b4 c#4 d4 b4 c#4 d4 b4 d4 b4 d4 a#4 c#4 a4 c4",
  B: "[g3,b3]@2 ~@2 g3@2 g4 ~ g3@2 g4 ~ g3@2 g4 d4, ~ g4 ~@6, ~@3 d4@3 ~ d4@3 ~ d4@3 ~@2", // G
  C: "b3@2 g4 ~ b3@2 g4 ~ b3@2 g4 ~ b3@2 g4 d4, ~@3 d4@2 ~@2 d4@2 ~@2 d4@2 ~@3",
  D: "a3@2 f#4 d4 a3@2 f#4 d4 a3@2 f#4 d4 a3@2 f#4 d4", E: "b3@2 g4 d4 b3@2 g4 d4 c4@2 g4 d4 c4@2 g4 d4",
  F: "b3@2 g4 d4 b3@2 g4 d4 b3@2 g4 d4 b3@2 g4 d4", G: "b3@2 g4 d4 b3 g4 b3 [b3,d4,g4] ~@8",
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_3 = note(`<
  ~@4 A B C ~@15 D E@2 F@2 E@2 G D E@2 F@2 E@2 G ~@8 H I@2 J@2 K@2 L M N O P Q R S T U V W X Y Z AA AB ~@8 U V W X Y Z
  AA AB AC AD@2
>`.pickRestart({
  A: "[c#4,a#4] [d4,b4] [b4,g5] [c#4,a#4] [d4,b4] [b4,g5] [c#4,a#4] [d4,b4] [b4,g5] [b3,d4] [b4,d5] [a#3,c#4] [a#4,c#5] [a3,c4] [a4,c5] [g3,b3]", // F# G Em F# G Em F# G …
  B: "[g4,b4] g4 d5 c5 b4 a4 ~@3 g4 ~ c4 b3 g4 b3 a3, g3@8 d3@7 ~, ~ d4@6 d4@3 d4@3 ~@3, ~@2 g4@4 g4@3 g3@6 ~", // G
  C: "g3@13 ~@3", D: "[b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 g3 [b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 ~",
  E: "[d4,a4] f#4 [d4,a4] f#4 a3 [d4,a4] f#4 a3 [d4,a4] f#4 [d4,a4] f#4 a3 [d4,a4] f#4 a3", // D5
  F: "[b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 g3 [b3,g4] d4 [b3,g4] d4 g3 [b3,g4] d4 g3", // Em
  G: "[b3,g4] ~ [b3,g4] d4 g3 [b3,g4] d4 g3 [d4,g4,b4] ~@7", // Em G
  H: "~@5 b3@2 ~@6 g4@2 b3, g4@8 g4@5 ~@3, ~@2 b3@3 ~@2 b3@3 b3@5 ~, ~@3 d4@8 d4@5",
  I: "[~@6 e4@2 e4@2 g4 e4@2 d4 e4 ~@4 a4@2 ~@8 c5@2 d4, f#4@4 ~@5 f#4@7, ~@2 a3@6 ~@13 a4@6 a4@5, ~@4 d4@4 ~@7 d4@8 d4@3 d4@5 ~, ~@24 c5@5 ~@3]/2",
  J: "[~@6 a4@2 a4@2 c5 a4@2 g4 a4 ~@14 b4@2 d4, b4@8 ~@11 b3@4 b3@9, ~@2 d4@6 ~@10 d4@3 d4@5 d4@5 ~, ~@4 g4@4 ~@7 g4@12 g4@5, ~@24 b4@5 ~@3]/2",
  K: "[~@2 d4@2 [b4,d5] ~ [a#4,c#5] [a4,c5]@4 ~ [a4,c5] ~ [g4,a4,b4] ~@7 d4@2 [c4,a4]@4 c4@2 c4@2, [f#4,a4]@4 ~@7 d4@2 ~@2 [f#4,a4]@5 [f#4,a4]@4 ~@4 [f#4,a4]@4, ~@9 d4@2 ~@5]/2", // Bm A#m Am G F F#m
  L: "[c4,d4,g4]@2 b3@4 ~@2 g4 g2 a2 b2 c3 d3 e3 f#3, ~@2 [d4,g4]@5 d4@2 ~@7, ~@6 b3@3 ~@7", // Csus2 G5
  M: "g3 a3@2 g3 a3 g3 b3 d4 ~ d4 e4 d4 g4!2 ~ g4, ~@4 e4 ~@3",
  N: "f#4 g4 ~@2 a3@3 c4 ~ f#4@2 ~ f#4@2 e4 ~, ~ f#4 ~@2 a4@2 ~@2, ~@3 d4@2 ~@11",
  O: "c4 [c#4,d4] [b4,d5] ~ a#3 [b3,c4] [a4,c5] ~ a3 [a#3,b3] [g4,b4] ~ a#3 [b3,c4] [f#4,a4] ~", // Dmaj7 Bm Cmaj7 Am Bmaj7 G Cmaj7 F#m
  P: "~@2 g4 a4 ~ a4 ~ d4 ~ c4 ~@2 f4@2 g4 ~, c4@2 ~@2 b4@5 ~@7, ~ d4@4 ~ g4@3 ~@2 c4@4 ~",
  Q: "~ c5@3 a4 g4 a4 g4 a4 c5 a4 c5 a4 g4 a4 g4", R: "f4 f#4 ~ b4@2 a4 b4 a4 e5 e5@2 ~ e5@2 d5 ~, ~ a4 ~@6",
  S: "a4@2 c5 ~ e5 d5 e5 d5 a5 g5@2 f5 f#5 d5 e5 d5", T: "g5!2 e5 d5 e5 a4@2 ~ g4@2 ~@6",
  U: "~ [b4,g5] [g4,d5]!2 [b4,g5] d5 [g4,b4,g5] d5 ~ [b4,g5] [g4,d5]!2 [b4,g5] d5 [g4,b4,g5] d5", // Em G5 Em G Em G5 Em G
  V: "~ [a4,f#5] [f#4,d5]!2 [a4,f#5] [f#4,d5] [a4,f#5] [f#4,d5] ~ [a4,f#5] [f#4,d5]!2 [a4,f#5] [f#4,d5] [a4,f#5] [f#4,a4,d5,f#5]", // D
  W: "~ [a4,f#5] [f#4,d5]!2 [a4,f#5] [f#4,d5] [a4,f#5] [f#4,d5] ~ [a4,f#5] [f#4,d5]!2 [a4,f#5] [f#4,d5] [a4,f#5] [f#4,d5]", // D
  X: "~ [b4,g5] [g4,d5]!2 [b4,g5] [g4,d5] [b4,g5] [g4,d5] ~ [b4,g5] [g4,d5]!2 [b4,g5] [g4,d5] [b4,g5] [g4,d5]", // Em G5 Em G5 Em G5 Em G5 …
  Y: "~ [b4,g5] [g4,d5]!2 [d5,g5] [g4,b4,d5] [b4,g5] [g4,d5] ~ [b4,g5] [g4,d5]!2 [b4,g5] [g4,d5] [g4,b4,g5] d5", // Em G5 G Em G5 Em G5 Em …
  Z: "~ [a4,f#5] [f#4,d5]!2 [a4,f#5] [f#4,d5] [a4,f#5] [f#4,d5] ~ [a4,f#5] [f#4,d5]!2 [a4,f#5] [f#4,d5] [a4,d5,f#5] [f#4,d5]", // D
  AA: "~ [a4,f#5] [f#4,d5] [f#4,a4,d5] [a4,f#5] [f#4,d5] [a4,f#5] [f#4,d5] ~ [a4,f#5] [f#4,d5] [a4,d5] [f#4,a4,f#5] [a4,d5] [f#4,f#5] d5", // D D5 F#m D5 F#
  AB: "~ [b4,g5] [g4,d5] [g4,b4,d5] [b4,g5] [g4,d5] [b4,g5] [g4,d5] ~@8", // Em G5 G Em G5 Em G5
  AC: "[a#3,c#4] [b3,d4] [g4,b4] [b3,d#4] [c4,e4] [a4,c5] [c4,e4] [c#4,f4] [a#4,c#5] [c#4,f4] [d4,f#4] [b4,d5] [g4,b4]@4", // A#m Bm G B C Am C C# …
  AD: "[[a1,a2] [a#1,a#2] [b1,b2] [d2,d3] [e2,e3] [g2,g3] [a2,a3] [b2,b3] [a3,c4,f4] ~ [a3,d4,f#4] ~ [b3,d4,g4]@16 ~@4]/2", // A A# B D E G A B …
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@12 B C A C A@3 C D C A C A@3 C D C A C A@3 C D C A C A@3 C D C A C A@3 C D C A C A@3 C E C A C A@3 C D F G F@3 G F
  A C A C A@3 C H I J ~
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@2 x ~@2 x ~ x ~ x ~", C: "x ~ x ~ x ~ x!2", D: "x!3 ~", E: "x ~ x ~ x ~@2 x",
  F: "x ~@3 x ~ x ~ x ~@2 x ~@2 x ~", G: "x ~@3 x ~@3 x ~@2 x ~@2 x ~", H: "x ~@6 x ~@2 x ~ x ~@3", I: "x",
  J: "~@5 x!2 ~",
})).gain(0.64)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A@12 B C A C A D A C E C A C A D A C E C A C A D A C E C A C A D A C E C A C A D A C E C A C A D A C E C A C A D A C
  E F G F@3 G F H C A C A D A C I ~@3
>`.pickRestart({
  A: "~@3 x ~@7 x ~@4", B: "~@3 x ~@2 x ~@2 x ~@6", C: "~@3 x ~@6 x ~@5", D: "~@3 x ~@6 x ~@3 x ~", E: "~@3 x ~@12",
  F: "~@3 x ~@9 x ~@2", G: "~@3 x ~@2 x ~@6 x ~@2", H: "~ x ~ x ~ x ~@2", I: "~@15 x",
})).gain(0.24)

// drums · rim
const rim = s("rim").struct("<~@14 A@7 B A@7 B A@5 C A B A@7 B A@7 B A@5 C A B A@7 B ~@8 A@7 B ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@6", C: "~@2 x ~@3 x ~@2 x ~@4 x ~",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct("<~@70 [~ x ~ x ~ x ~ x]!15 [~ x ~ x ~ x!2 ~] ~@3>").gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@14 A@2 B C D B E F A@2 B C D B E G A@2 B C D B E F A@2 B C D B E H A@2 B C D B E F ~@7 I A@2 B C D B E J ~@7 K A@2 B
  C D B L M ~ N ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "x!4 ~ x ~ x ~ x ~ x!3 ~ x",
  D: "~ x ~ x!9 ~ x!3", E: "x!4 ~ x!7 ~ x!3", F: "x!6 ~@2 x ~@4 x!2 ~", G: "x!6 ~@2 x ~@5 x ~", H: "x!7 ~ x ~@4 x!2 ~",
  I: "~@5 x ~@2 x ~@4 x ~@2", J: "x!6 ~@2 x ~@7", K: "x ~@3 x ~@2 x ~ x!3 ~@4", L: "x!4 ~ x!7 ~ x ~@2",
  M: "~@2 x ~ x!2 ~@3 x!2 ~@5", N: "~@9 x ~@6",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@69 [~@7 x] ~@7 [~@5 x ~@2 x ~@5 x!2] ~@11>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@14 A@7 B A@7 B A@7 B A@7 B C@7 D E F E@3 F E G C@7 D H@6 I ~ C@6 J ~@2 K ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@2 x ~@3", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!3 ~@7", E: "x!16",
  F: "x!9 ~@3 x!4", G: "x!5 ~@3 x ~@7", H: "x!8", I: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", J: "x ~ x!3 ~ x!3 ~ x!3 ~@3",
  K: "~@5 x ~@2",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@69 [~@13 x ~@2] ~@7 [~@2 x ~@9 x!2 ~@2] ~@7 [~@7 x ~@8] ~@3>").gain(0.72)
// … 26 more lines

More by Carpenters