Strudelify

Lullaby

Shawn Mullins

KeyG majorTempo80 bpm
0:00/0:00
// Lullaby — Shawn Mullins
// 80 bpm, 4/4, key G 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: duplicate parts dropped: ch 16 "Acoustic Bass" acoustic bass (copy of ch 2 "Fingered Bass" electric bass finger); ch 13 "Overdrive Guitar" overdriven guitar (copy of ch 9 "Overdrive Guitar" overdriven guitar, 0.208 beats late); ch 15 "Clean Guitar" electric guitar clean (copy of ch 14 "Steel String Guitar" acoustic guitar steel)
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · electric bass finger · "Fingered Bass"
const bass = note(`<
  ~@2 A B C B C B A B D E C B C F C G H I J K L M J N O P Q R Q S Q T Q U Q V W X Y Z AA AB AC AD AA AE AF AG AH AI AJ
  AK AL AM AN AO AP ~@16 AQ AR AS AT AU AV AW AF AX AY AZ BA BB BC@3
>`.pickRestart({
  A: "g2 ~ g2 ~@4 g2 d2 ~ d2 ~@5", B: "b1 ~ b1 ~@4 b1 c2 ~ c2 ~@4 d2", C: "g1 ~ g1 ~@4 g1 d2 ~ d2 ~@5",
  D: "g1@2 g1@2 g1@2 g1!4 g1@2 g1@2 g1!2", E: "b1@2 b1@2 b1@2 b1!2 c2!2 c2@2 c2@2 c2 d2",
  F: "b1 ~ b1@2 ~@3 b1 c2!5 e1 f1 f#1", G: "b1 ~ b1 ~@4 b1 c2!3 ~ c2!3 d2", H: "g1 ~ g1 ~@4 g1 d2 ~ d2@6",
  I: "b1 ~ b1@5 b1 c2@2 c2@2 c2!4", J: "g1@2 g2@2 g1@2 ~ g1!2 ~ g1@3 g1 a1 b1",
  K: "c2@2 c2 ~ c2@2 ~ c2 c2@2 c2 ~ c2@2 b1 a1", L: "g1 ~ g1 ~ g1 f1 g1@2 g1 ~ g1 ~ g1 f1 g1@2",
  M: "c2@2 c2@2 c2@2 ~ c2!2 ~ c2@2 c2 d2 c2@2", N: "c2@2 c2@2 c2@3 c2 c2@2 c2@2 c2@4", O: "a1@2 a1!2 b1@2 a2@6 a2@4",
  P: "c2 ~ c2!2 d2@2 c3@7 ~@3", Q: "g1@2 g1@2 ~@3 g1 d2 ~ d2@2 ~@3 d2", R: "b1@2 b1@2 ~@3 b1 c2!2 c2@2 ~ c2!2 d2",
  S: "b1@2 b1@2 ~@3 b1 c2@2 c2@2 ~ e1 f1 f#1", T: "b1 ~ b1@2 ~@3 b1 c2!3 ~@2 c2!2 d2",
  U: "b1@2 b1@2 ~@3 b1 c2@2 c2@2 ~@3 c2", V: "b1 ~ b1@2 ~@3 b1 c2!2 c2@2 c2@2 c2!2",
  W: "g1 ~ g1 ~ g1 ~ g1!2 ~ g1!2 ~ g1@2 g1!2", X: "b1 ~ b1 ~ b1 ~ b1 c2 ~ c2!2 ~ c2 e1 f1 f#1",
  Y: "g1 ~ g1 ~ g1 ~ g1!2 ~ g1 g1@2 g1@2 g1!2", Z: "b1@2 b1 ~ b1@2 b1 c2 ~ c2!2 ~ c2@2 c2 d2",
  AA: "g1 ~ g1@2 g2@3 g1!2 ~ g1@3 g1 a1 b1", AB: "c2@2 c2@2 c2@3 c2 c2@2 c2@2 c2@2 c2 d2",
  AC: "g1 ~ g1@2 g2@3 g1!2 ~ g1@2 g2 g1 a1 b1", AD: "c2 ~ c2@2 c2@3 c2 c2@2 c2 ~ c2 d2@3",
  AE: "c2@2 c2@2 c2@2 ~ c2!2 ~ c2@2 ~ c2 g1 g#1", AF: "a1@3 a1 b1@2 e2 c#2 a2@8", AG: "c2@2 ~ c2 d2@2 c3 e2 c3 d3@6 ~",
  AH: "g1 ~ g1!2 g2@3 g1 g2 e2 d2@5 d2", AI: "b1@2 b1@2 b1@2 ~ b1 c2!2 c2@2 c2@2 c2 d2",
  AJ: "g1 g2!3 g2@2 g2!3 e2 d2@4 d2 e2", AK: "b1@2 b1@2 b1@2 ~ b1 c2@2 c2@2 c2@2 c2 d2",
  AL: "a1 ~ a1!2 b1@2 a2@4 a2!3 e2 d2 c#2", AM: "c2 ~ c2!2 d2@2 c3 g2 c3 g2 c3 d3 c3 g2 e2 d2",
  AN: "a1 ~ a1!2 a2@2 b1@2 a2 c#2 a2@6", AO: "c2 ~ c2!2 c2@2 d2 f#2 d3@2 ~ d3!2 a2 f#2 d2", AP: "g1!2 ~@6",
  AQ: "~@7 g2 c3 g2 e2 c2 g1 e1 f1 f#1", AR: "g1 ~ g1 ~ g1 e1 f#1@2 g1 ~ g1 ~ g1@3 b1",
  AS: "c2 ~ c2 ~ c2@3 c2!5 c2@2 c2 d2", AT: "g1 ~ g1 ~ g1 e1 f1 f#1 g1!3 ~ g1@2 g1!2",
  AU: "c2 ~ c2!3 g1 c2 g1 c2 d2 c2!2 c2@2 c2 d2", AV: "g1 ~ g1 ~ g1@3 g1!2 ~ g1 ~ g1@3 b1",
  AW: "c2 g2 c3 g2 c3 g2 c2!2 c2@2 c2!2 c2@2 b1 a#1", AX: "c2 d2@2 c3@2 g2 c3@10",
  AY: "a1 a2 a1 b1 b2 b1 c#2@3 c#3@2 a1@5", AZ: "c2@2 g2 c2 g2@2 c3@3 e3@7", BA: "c3@7 g2 c3 g2 c3@6", BB: "c3",
  BC: "c2/3",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · fretless bass
const bass_2 = note("<~@68 A B C D E F D G ~@15>".pickRestart({
  A: "g1@2 g1@4 ~ g1 d2@8", B: "c2 ~ c2@5 g1 c2@8", C: "g2 ~ g2@4 ~ g2 b2@8", D: "a2", E: "g2 d2", F: "c2",
  G: "c3@7 ~@9",
})).s("gm_fretless_bass").gain(0.32)

// chords · acoustic guitar steel · "Steel String Guitar"
const acoustic_guitar_steel = note(`<
  ~@2 A B A B A B A B ~@2 C B C B C B C B ~@8 D B C B C B C B C B ~@20 C B C B C B C B C E@7 F G ~@15
>`.pickRestart({
  A: "g2@2 g2@2 [g3,b3,d4] ~@2 g2 d3 ~ d3@2 [a3,d4,f#4] ~@2 d3", // G D
  B: "b2@2 b2@2 [g3,b3,d4] ~@2 b2 c3 ~ c3 c4 ~@2 c3 g3, ~@9 g3@4 [c4,e4]@2 ~, ~@6 c3 ~", // G C
  C: "g2@2 g2@2 [g3,b3,d4] ~@2 g2 d3 ~ d3@2 [a3,d4,f#4]!2 ~ d3", // G D
  D: "g2@2 g2@2 [b3,d4,g4]!2 ~ g2 d3 ~ d3@2 [a3,d4,f#4] ~@2 d3", // G D
  E: "[b2@2 b2@2 [g3,b3,d4] ~@2 b2 c3 ~ c3 c4 ~@2 c3 g3 [g3,b3,d4]@7 ~ [d4,f#4]@7 ~@14 c4@2 ~ [g3,b3,d4]@7 ~ [d4,f#4]@7 ~ e4@6 ~@7 g3@2 ~ [g3,b3,d4]@7 ~ [d4,f#4]@7 ~@15 c3@2, ~@9 g3@4 [c4,e4]@2 ~@17 e4@16 ~@16 c4@11 c4@5 ~@16 c4@10 c4@6, ~@12 c3@2 ~ [g2,d3]@8 [d3,a3]@8 [c3,g3]@8 c3@4 c3@5 ~@7 [d3,a3]@8 c3@7 c3@2 c3@2 c3@2 c3@4 ~@7 [d3,a3]@9 ~@8 g3@3 g3@2 g3@3, ~@32 c4@13 ~@2 [g2,d3]@9 ~@15 e4@9 ~@16 e4@16, ~@41 g3@7 ~@15 g3@9 ~ g3@4 ~@2 [g2,d3]@8 ~@8 [c3,g3]@8 c3@2 c3@3 c3@2 ~@2]/7", // G D G D G D C G5 …
  F: "a2@7 ~@6 a3@3, [c#4,e4], a3@9 a3@4 ~@3, ~@7 a2@4 a2@5", // C#m
  G: "c3@6 ~@8 e4 c4, c4@15 ~, [g3,e4]@7 e4@2 c3@2 c3@2 c3@3, ~@3 c3 g3@2 g3@2, ~@5 g4@2 ~", // C
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0)

// chords · acoustic guitar steel · "Steel String Guitar"
const acoustic_guitar_steel_2 = note(`<
  ~@10 A B ~@8 A C A C A C D E ~@10 A B A B A C A C A C D E A B A B D C D F ~@18 A C A C A C D C D C G H I@3
>`.pickRestart({
  A: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] [g3,b3,d4,g4]@2 [f#3,a3,d4,f#4] [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2", // G D
  B: "[d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4] [d3,g3,b3,d4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2", // G C
  C: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2", // C
  D: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2", // A
  E: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2 ~@4", // C
  F: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [f#3,a3,d4,f#4] [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2", // C D
  G: "[c3,g3,c4,e4]@6 c3@5 ~@2 c4@2 c3, ~@3 [g3,e4]@5, ~@6 c4@7 ~@3, ~@11 c3@4 ~", // C
  H: "[c3,g3,c4,e4]@6 c3@3 ~@6 g3, ~@3 e4@3 c3@2, ~@6 [g3,c4]@4 c4@3 e4@3, ~@9 c3@2 g3@3 c4@2", I: "[c3,g3,c4,e4]/3",
})).s("gm_acoustic_guitar_steel").gain(0.25)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@10 A B ~@8 A C A C A C D E ~@14 A C A C A C D E A B A B D C D F G@2 ~@15 C A C A C A C D C D C H@2 I@3
>`.pickRestart({
  A: "[d3,g3] [d3,f#3]", B: "[b2,g3] [c3,g3]", C: "[c3,g3]", D: "[a2,e3]", E: "[c3,g3]@11 ~@5", F: "[c3,g3] [d3,a3]",
  G: "[g2,d3,g3]/2", H: "[c3,g3]@3 [c3,g3]@5", I: "[c3,g3]/3",
})).s("gm_distortion_guitar").gain(0.2)

// chords · piano · "Piano 2"
const piano = note(`<
  ~@10 A B ~@8 A C D E F G H I ~@10 J K J K A C D E F G H I L M N O P Q R S ~@16 T U A V F W F X Y Z AA AB@3 AC@3
>`.pickRestart({
  A: "d4!2 [d4,f#4,a4]@2, [g4,b4] ~", B: "[d4,g4,b4]@8 ~ [e4,g4,e5]@4 [e4,g4,d5]@3",
  C: "[e4,g4]@4 ~@6 g4 [e4,g4]@2 ~@2 e4, c5@7 ~@4 d5@5, ~@4 e4@2 e4@3 e4@2 ~@2 e4@2 ~, ~@5 g4@2 [g4,e5]@4 ~@3 g4@2", // Em C
  D: "[d4,g4,b4]@4 d4@3 d4, ~ [f#4,a4]", // G F#m
  E: "[e4,g4]@5 ~ g4 ~ d5 e5 d5 c5 c4 d4 e4 d4, c5@7 ~ g5@2 ~@6, ~@5 e4@2 c4@2 ~@4 g4@2 ~", F: "[d4,g4,b4] [d4,f#4,a4]",
  G: "e4@7 ~@6 c5@2 e4, c5@11 ~@5, g4@9 g4@7, ~@7 e4@4 e4@4 ~",
  H: "e4@2 e4 e4@3 ~ a4, [a4,c#5]@3 e5@5, ~@3 a4@4 ~, ~@3 e4", // A
  I: "[e4,g4]@4 ~@2 e4 g3 ~ e4 g4 [e4,g4,c5] ~@4, c5 ~, ~@2 e4 ~ c4 ~@3, ~@5 g4@3 ~@8", J: "[b3,d4,g4] [a3,d4,f#4]",
  K: "[b3,d4,g4] [c4,e4,g4]", L: "[d4,g4]@5 ~@2 b4 [d4,f#4,a4]@3 [a3,d4,f#4]@5, b4@3 g4 ~@4, ~@5 d4@3 ~@8",
  M: "[b3,d4]@5 ~@2 b3 [c4,e4,g4]@3 [e4,g4,c5]@5, g4 ~, ~@5 b3@2 ~@9, ~@3 d4 ~@4", // Bm C
  N: "[d4,b4]@5 ~@2 d4 [d4,f#4,a4]@3 [a3,d4,f#4]@5, g4 ~, ~@5 d4@2 ~@9, ~@3 b4 ~@4", // G D
  O: "b3@6 ~ d4 [c4,e4,g4]@3 [e4,g4,c5]@5, [d4,g4] ~, ~@3 b3 ~@4", // C G5
  P: "[c#4,e4,a4]@6 e4@5 ~@3 c#5@2, ~@3 a4@5, ~@3 c#5@4 ~, ~@11 e4@5", // A
  Q: "[c4,g4]@6 c4 [c4,c5]@2 [c4,c5]@2 c4@3 c4@2, e4, ~@11 c5@5", // C5 C
  R: "[c#4,e4,a4]@3 e4@3 ~ c#5, ~@3 a4@5, ~@3 c#5@4 ~, ~@3 e4", S: "[c4,g4]@5 ~ g4@2 [d4,f#4,a4]@8, e4 ~, ~@5 c4@3 ~@8",
  T: "[c#4,e4,a4]@3 [d4,e4,a4]@3 [e4,a4]@2", // A Dsus2 A5
  U: "[e4,g4]@5 ~@2 e4 d5 ~ d5 c5 c4 d4 ~ c4, c5@4 g5 ~@3, ~@5 e4@2 ~@6 g4@3, ~@6 g4@2 ~ e5@2 ~@3 e4@2", // Em
  V: "[e4,g4,c5]@6 e4 e4@2 ~ g4 [e4,g4]@2 ~@2 e4, ~@7 [g4,e5]@4 d5@5, ~@9 e4@2 ~@2 e4@2 ~, ~@7 g4", // C Em C
  W: "[e4,g4]@5 e4 ~ e4@2 c4 d5 ~ d5 c5 c4@2, c5@9 ~ g5@3 ~@3, ~@6 g4@3 ~@2 e5@2 ~@3", // Em
  X: "[e4,g4,c5]@6 e4 e4@2 e4@2 [e4,g4,c5]@5, ~@7 [g4,e5]@4 ~@5", Y: "c#4@2 c#4 e4@3 e4@2, [e4,a4]@3 [a4,c#5]@5",
  Z: "[c4,e4,g4]@3 e4@3 ~ g4, ~@3 c5@5, ~@3 g4@4 ~, ~@3 e4", AA: "[e4,a4,c#5]@3 [c#4,e4,a4]@5",
  AB: "[c4,e4,g4]@3 [c4,e4,g4]@5", AC: "[b5,e6] [g5,c6] [b5,e6] [g5,c6] [b5,e6] [g5,c6] [b5,e6] [g5,c6]",
})).s("gm_piano").gain(0.32).pan(0.2)

// chords · rock organ · "Organ 3"
const rock_organ = note(`<
  ~@10 A B ~@8 A C A C A C D E ~@10 A B A B A C A C A C D E A B A B D C D F ~@17 G A C A C A C D C D C H@2 I@3
>`.pickRestart({
  A: "[d5,g5,b5] [d5,f#5,a5]", B: "[b4,d5,g5] [c5,e5,g5]", C: "[c5,e5,g5]", D: "[c#5,e5,a5]", E: "[c5,e5,g5]@11 ~@5",
  F: "[c5,e5,g5] [d5,f#5,a5]", G: "[g4,c5,e5]", H: "[c5,e5,g5]@3 [c5,e5,g5]@5", I: "[c5,e5,g5]/3",
})).s("gm_rock_organ").gain(0.13).pan(0.8)

// other · overdriven guitar · "Overdrive Guitar"
const overdriven_guitar = note("<~@50 A@3 B C D E F@3 ~@31>".pickRestart({
  A: "d5!2", B: "g4!2", C: "c#4@2 d4 e4@2 g4@2 a4", D: "a4@6 g4@9 ~", E: "c#5@3 a4 e4@11 ~",
  F: "[b4@3 g4 d4@8 e4@2 g4@34]/3",
})).s("gm_overdriven_guitar").gain(0.57)

// chords · piano · "Piano 1"
const piano_2 = note(`<
  ~@2 A ~ B ~ B ~ B ~@3 A ~ B C D E F G ~@8 H@2 I ~ I J@2 K L M@2 ~@19 A N O ~@6 P Q R S T S U ~@12 V@2 W@3
>`.pickRestart({
  A: "~ [g5,a5,d6]@3", B: "~ [g4,a4,d5]@3", C: "~@14 b4 [d5,g5,a5], ~@13 a4@2 ~", D: "[g5,a5,d6]", E: "~@9 a6@7",
  F: "~ b4 [d5,g5,a5] [g5,a5,d6]@13, a4 ~@7", G: "~@9 [a4,d5]@3 [d4,g4,b4]@4, ~@2 g4 ~",
  H: "[~@14 a5@11 ~ a5@6, ~@7 [g5,a6]@7 ~@2, ~@25 [d6,g6]@7]/2", I: "[g4,a4,d5]",
  J: "[~@9 a4@2 a4@2 a4@2 ~@5 g4@12, ~@15 a4@17, ~@17 b4@15, ~@9 d4@7]/2",
  K: "~@9 [d6,g6]@7, ~@5 a4@3 a5@8, ~@6 d5@3 ~@7, ~@7 g5@2 ~@7", L: "~@5 e6@11",
  M: "[~@9 d5 g5 d5 [a5,d6]@2 ~ d5@17, ~@7 b5@9]/2", N: "~@2 [a5,d6]@3 e6@3 ~@6 d7@2, g5, ~ g6, ~@11 a6@5", O: "g7 ~@3",
  P: "~@12 a4 ~ g4@2, ~@11 g4@2 b4@3", Q: "[d5,g5] [a4,d5,f#5]",
  R: "[g4,c5,e5]@11 g4 ~@2 c5@2, ~@3 g4, ~@6 d5 ~, ~@13 e5@3", S: "[b4,d5,g5] [a4,d5,f#5]",
  T: "[g4,c5]@9 ~@2 d5@2 e5@3, e5@5 c5@3, ~@9 g4@7", U: "g4@9 ~@5 g4@2, [c5,e5]@11 e5@5, ~@9 g4@5 ~@2, ~@5 d5 c5@2",
  V: "[[d6,g6]@6 g6@5 ~@5 [d6,g6]@6 [d6,g6]@10, ~@6 d6@3 ~@2 d5@11 ~@10, ~@3 d6 ~@4, ~@13 g6@3 ~@16, ~@7 a6@4 ~@5]/2", // G5
  W: "[d6,g6]/3", // G5
})).s("gm_piano").gain(0.33).pan(0.7)

// chords · string ensemble 2 · "Slow Strings"
const string_ensemble_2 = note("<~@68 A B A B A B C D ~@15>".pickRestart({
  A: "[g3,b3,d4,g4] [f#3,a3,d4,f#4]", B: "[g3,c4,e4,g4]", C: "[a3,e4,c#5]", D: "[c4,g4,e5]",
})).s("gm_string_ensemble_2").gain(0.11)

// other · acoustic guitar steel · "Steel String Guitar"
const acoustic_guitar_steel_3 = note(`<
  ~@2 A B A B A B C B D E A B A F A G H I J K L M J N O P Q R Q S Q T Q U Q V W X Y Z AA AB AC AD AA AE AF AG AH AI AJ
  AK AL AM AN AO AP ~@16 AQ AR AS AT AU AV AW AF AX AY AZ BA BB BC@3
>`.pickRestart({
  A: "g2 ~ g2 ~@4 g2 d3 ~ d3 ~@5", B: "b2 ~ b2 ~@4 b2 c3 ~ c3 ~@4 d3", C: "g3 ~ g3 ~@4 g3 d3 ~ d3 ~@5",
  D: "g2@2 g2@2 g2@2 g2!4 g2@2 g2@2 g2!2", E: "b2@2 b2@2 b2@2 b2!2 c3!2 c3@2 c3@2 c3 d3",
  F: "b2 ~ b2@2 ~@3 b2 c3!5 e2 f2 f#2", G: "b2 ~ b2 ~@4 b2 c3!3 ~ c3!3 d3", H: "g2 ~ g2 ~@4 g2 d3 ~ d3@6",
  I: "b2 ~ b2@5 b2 c3@2 c3@2 c3!4", J: "g2@2 g3@2 g2@2 ~ g2!2 ~ g2@3 g2 a2 b2",
  K: "c3@2 c3 ~ c3@2 ~ c3 c3@2 c3 ~ c3@2 b2 a2", L: "g2 ~ g2 ~ g2 f2 g2@2 g2 ~ g2 ~ g2 f2 g2@2",
  M: "c3@2 c3@2 c3@2 ~ c3!2 ~ c3@2 c3 d3 c3@2", N: "c3@2 c3@2 c3@3 c3 c3@2 c3@2 c3@4", O: "a2@2 a2!2 b2@2 a3@6 a3@4",
  P: "c3 ~ c3!2 d3@2 c4@7 ~@3", Q: "g2@2 g2@2 ~@3 g2 d3 ~ d3@2 ~@3 d3", R: "b2@2 b2@2 ~@3 b2 c3!2 c3@2 ~ c3!2 d3",
  S: "b2@2 b2@2 ~@3 b2 c3@2 c3@2 ~ e2 f2 f#2", T: "b2 ~ b2@2 ~@3 b2 c3!3 ~@2 c3!2 d3",
  U: "b2@2 b2@2 ~@3 b2 c3@2 c3@2 ~@3 c3", V: "b2 ~ b2@2 ~@3 b2 c3!2 c3@2 c3@2 c3!2",
  W: "g2 ~ g2 ~ g2 ~ g2!2 ~ g2!2 ~ g2@2 g2!2", X: "b2 ~ b2 ~ b2 ~ b2 c3 ~ c3!2 ~ c3 e2 f2 f#2",
  Y: "g2 ~ g2 ~ g2 ~ g2!2 ~ g2 g2@2 g2@2 g2!2", Z: "b2@2 b2 ~ b2@2 b2 c3 ~ c3!2 ~ c3@2 c3 d3",
  AA: "g2 ~ g2@2 g3@3 g2!2 ~ g2@3 g2 a2 b2", AB: "c3@2 c3@2 c3@3 c3 c3@2 c3@2 c3@2 c3 d3",
  AC: "g2 ~ g2@2 g3@3 g2!2 ~ g2@2 g3 g2 a2 b2", AD: "c3 ~ c3@2 c3@3 c3 c3@2 c3 ~ c3 d3@3",
  AE: "c3@2 c3@2 c3@2 ~ c3!2 ~ c3@2 ~ c3 g2 g#2", AF: "a2@3 a2 b2@2 e3 c#3 a3@8", AG: "c3@2 ~ c3 d3@2 c4 e3 c4 d4@6 ~",
  AH: "g2 ~ g2!2 g3@3 g2 g3 e3 d3@5 d3", AI: "b2@2 b2@2 b2@2 ~ b2 c3!2 c3@2 c3@2 c3 d3",
  AJ: "g2 g3!3 g3@2 g3!3 e3 d3@4 d3 e3", AK: "b2@2 b2@2 b2@2 ~ b2 c3@2 c3@2 c3@2 c3 d3",
  AL: "a2 ~ a2!2 b2@2 a3@4 a3!3 e3 d3 c#3", AM: "c3 ~ c3!2 d3@2 c4 g3 c4 g3 c4 d4 c4 g3 e3 d3",
  AN: "a2 ~ a2!2 a3@2 b2@2 a3 c#3 a3@6", AO: "c3 ~ c3!2 c3@2 d3 f#3 d4@2 ~ d4!2 a3 f#3 d3", AP: "g2!2 ~@6",
  AQ: "~@7 g3 c4 g3 e3 c3 g2 e2 f2 f#2", AR: "g2 ~ g2 ~ g2 e2 f#2@2 g2 ~ g2 ~ g2@3 b2",
  AS: "c3 ~ c3 ~ c3@3 c3!5 c3@2 c3 d3", AT: "g2 ~ g2 ~ g2 e2 f2 f#2 g2!3 ~ g2@2 g2!2",
  AU: "c3 ~ c3!3 g2 c3 g2 c3 d3 c3!2 c3@2 c3 d3", AV: "g2 ~ g2 ~ g2@3 g2!2 ~ g2 ~ g2@3 b2",
  AW: "c3 g3 c4 g3 c4 g3 c3!2 c3@2 c3!2 c3@2 b2 a#2", AX: "c3 d3@2 c4@2 g3 c4@10",
  AY: "a2 a3 a2 b2 b3 b2 c#3@3 c#4@2 a2@5", AZ: "c3@2 g3 c3 g3@2 c4@3 e4@7", BA: "c4@7 g3 c4 g3 c4@6", BB: "c4",
  BC: "c3/3",
})).s("gm_acoustic_guitar_steel").gain(0.06).pan(0.1)

// drums · rim
const rim = s("rim").struct(`<
  ~@3 A B A B A B ~@4 A B A B A B A ~@9 A B A B A B A B A ~ A B A ~@17 A B A B A B A B A B A B A B A B ~@16
>`.pickRestart({
  A: "~@15 x", B: "~ x ~@14",
})).gain(0.48)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<A@11 B A@13 B@2 C A@13 B A@5 B@2 C A@3 B@5 A@17 B A@3 B A B@5 ~@5>".pickRestart({
  A: "~@7 x ~@7 x", B: "~@7 x ~@8", C: "~@3 x ~@4",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A B A B A C A B A B A B A B A@3 D A C B E A B A B A B A B A B A@3 F A@5 C B E A@3 C B A B G A B A B A B A
// … 63 more lines