Strudelify

That's What I Like (Medley)

Jive Bunny

KeyC minorTempo160 bpm
0:00/0:00
// That's What I Like (Medley) — Jive Bunny
// 160 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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.

// other · electric guitar clean · "SoloGuit"
const electric_guitar_clean = note(`<
  ~@56 A B@3 C D E B F G H I J K L M N O M P Q R S@2 T ~ U V@3 W X V@2 Y W V Z U V@3 W X V@2 Y W V Z ~@28
>`.pickRestart({
  A: "~@5 [g2,g3] [bb2,bb3] [b2,b3]", B: "[c3,c4]!3 [bb2,bb3] [g2,g3]!2 [bb2,bb3] [b2,b3]",
  C: "[c3,c4]!3 [bb2,bb3] [g2,g3] [c3,c4] [eb3,eb4] [e3,e4]", D: "[f3,f4]!3 [eb3,eb4] [c3,c4]!2 [eb3,eb4] [e3,e4]",
  E: "[f3,f4]!3 [eb3,eb4] [c3,c4] [g2,g3] [bb2,bb3] [b2,b3]", // F Eb C G Bb B
  F: "[c3,c4]!3 [bb2,bb3] [g2,g3] [c3,c4] [g3,g4] [gb3,gb4]", G: "[f3,f4]!3 [eb3,eb4] [c3,c4]!2 [f3,f4] [e3,e4]",
  H: "[eb3,eb4]!3 [c3,c4] [bb2,bb3] [g2,g3] [bb2,bb3] [b2,b3]", I: "[c3,c4]!3 [bb2,bb3] [g2,g3]!2 [c3,c4] [bb2,bb3]",
  J: "[g2,g3]!8", K: "c2 ~@3", L: "~@10 c2@2 d2@2 e2 ~", M: "f2@3 ~@13", N: "~@10 e2@2 f2@2 gb2 ~",
  O: "g2@3 ~@7 d2@2 g2@2 gb2 ~", P: "c2@15 ~", Q: "c2@5 ~ c2 ~@3 c4@2 [c2,eb4]@2 f4 ~, ~@2 c2 ~", R: "[eb4,ab4]!8",
  S: "[[gb4,b4]@2 [f4,bb4]@2 [eb4,ab4]@2 [c4,f4]@2 [bb3,eb4]@2 [g3,c4]@2 [f3,bb3]@2 [eb3,ab3]@4 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3] ~ [eb3,ab3]@2 [eb3,ab3]@2]/2", // B5 Bb5 Ab5 F5 Eb5 C5 Bb5 Ab5
  T: "[g2,g3]@7 ~", U: "g2@2 g2@2 b2@2 b2@2 d3 ~ d3@2 e3@2 d3@2", V: "g2 ~ g2@2 b2 ~ b2@2 d3 ~ d3@2 e3@2 d3@2",
  W: "c3 ~ c3@2 e3 ~ e3@2 g3 ~ g3@2 a3@2 g3@2", X: "c3 ~ c3@2 e3@2 e3@2 g3 ~ g3@2 a3@2 g3 ~",
  Y: "d3 ~ d3@2 gb3 ~ gb3@2 a3 ~ a3@2 b3@2 a3@2", Z: "g2 ~ g2@2 b2 ~ b2@2 d3 ~ d3 ~ e3@2 d3@2",
})).s("gm_electric_guitar_clean").gain(0.36)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@5 A B A C A B C D E A F G A H I J K L@2 M@2 N@2 O P L@2 M@2 N Q L R ~@3 S T S T U V S T W U X Y S T S Z AA@4 AB@2
  AA@2 AC AB AA AC AD AE AF AG AH AF AI AJ AK AL AM AN AO AP AQ AP AQ AR AS AP AQ AT AR AP AQ AP AQ AP AQ AR AS AP AQ AT
  AR AP AQ AU ~@4 A B A C A B C D E A F G A H I J A H I J K AV AW
>`.pickRestart({
  A: "c2@5 ~ c2 ~ c2@7 ~", B: "bb1@5 ~ bb1 ~ bb1@6 ~@2", C: "eb2@5 ~ eb2 ~ eb2@7 ~", D: "g1@5 ~ g1 ~ g1@8",
  E: "c2@6 c2 ~ c2@7 ~", F: "f1@5 ~ f1 ~@2 f1@6 ~", G: "ab1@5 ~ ab1@2 bb1@7 ~", H: "ab1@5 ~ ab1 ~ bb1@7 ~",
  I: "c2@5 ~ c2 ~ c2@6 ~@2", J: "ab1@2 ~@2 ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~", K: "bb1@2 ~@2 bb1@3 ~ bb1@3 ~ bb1@3 ~",
  L: "eb2 g2 bb2 g2", M: "c2 eb2 g2 eb2", N: "ab1 c2 eb2 c2", O: "bb1 d2 f2 g2", P: "bb2 ab2 g2 f2", Q: "bb1 d2 f2 d2",
  R: "eb2@3 ~@13", S: "g1!2 b1!2 d2!2 e2!2", T: "g2!2 e2!2 d2!2 b1!2", U: "c2!2 e2!2 g2!2 a2!2",
  V: "c3!2 a2!2 g2!2 e2!2", W: "d2!2 gb2!2 a2!2 b2!2", X: "d2!2 gb2!2 a2!2 b2 a2", Y: "c2!2 e2!2 g2!2 a2 g2",
  Z: "g2!2 e2!2 d2 g1 bb1 b1", AA: "c2!2 e2!2 g2!2 e2!2", AB: "f1!2 a1!2 c2!2 a1!2", AC: "g1!2 b1!2 d2!2 b1!2",
  AD: "c2@3 ~@13", AE: "~@10 c2 ~ d2 ~ e2 ~", AF: "f2 ~@7", AG: "~@10 e2 ~ f2@2 gb2 ~", AH: "g2@3 ~@7 g2 ~ g2 ~ gb2 ~",
  AI: "c2@2 ~@6 c2@3 ~@5", AJ: "c2@4 ~@4 c2@3 ~@5", AK: "ab1@4 ~@2 ab1 ~ ab1@5 ~@3", AL: "ab1@5 ~ ab1 ~ ab1@5 ~@3",
  AM: "ab1@4 ~@2 ab1 ~ ab1@6 ~@2", AN: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", AO: "g1 ~@7", AP: "g1 b1 d2 e2",
  AQ: "g2 e2 d2 b1", AR: "c2 e2 g2 a2", AS: "g2 a2 g2 e2", AT: "d2 gb2 a2 b2", AU: "c2 ~@3",
  AV: "c2@3 ~ c2@3 ~ c2@2 c2@2 ~@2 bb1@2", AW: "c2 ~@7",
})).s("gm_acoustic_bass").gain(0.42).pan(0.4)

// other · trumpet · "Tromp. 1"
const trumpet = note("<~@4 A@4 B@5 C D E F G@4 ~@84 H I ~@3 A@4 B@5 C D E F G@8 ~ J K>".pickRestart({
  A: "[~@4 g4@2 g4 ~ bb4 ~ d5@3 ~ c5@9 ~ g4@11 ~ g4@2 g4 ~ f4 ~ bb4@3 ~ g4@18]/4",
  B: "[~@4 g4 ~ g4 ~ bb4 ~ d5@2 ~@2 c5@9 ~ g5@11 ~ f5@2 f5 ~ d5 ~ bb4@2 ~@2 g5@33 ~]/5",
  C: "~@4 bb5@2 ~@2 g5@2 f5 ~ eb5 ~ c5 ~", D: "eb5@2 f5 ~ eb5 ~ c5@9 ~", E: "~@4 c6@2 ~@2 a5@2 g5 ~ f5 ~ d5 ~",
  F: "ab4@2 bb4 ~ ab4 ~ bb4@3 ~ c5 ~ d5@2 ~@2", G: "[c5@7 ~ g5@11 ~ f5@2 f5 ~ d5 ~ bb4@3 ~ c5@19 ~@15]/4",
  H: "~@8 g5!2 gb5 g5 ab5 a5 bb5 b5", I: "c6 ~@3", J: "eb5@3 ~ eb5@3 ~ d5 ~ bb4@3 ~ bb5@2", K: "c6 ~@7",
})).s("gm_trumpet").gain(0.64).pan(1)

// other · trumpet · "Tromp. 2"
const trumpet_2 = note("<~@4 A@8 B C D E F G@4 ~@84 H I ~@3 A@8 B C D E F G@8 ~ J K>".pickRestart({
  A: "[~@4 g4@2 g4 ~ g4 ~ bb4@2 ~@2 g4@9 ~ eb4@11 ~ eb4@2 eb4 ~ d4 ~ d4@3 ~ eb4@20 ~@2 eb4 ~ eb4 ~ g4 ~ g4@2 ~@2 g4@9 ~ eb5@11 ~ d5@2 d5 ~ bb4 ~ f4@3 ~ bb4@17 ~]/8",
  B: "b4@15 ~", C: "~@4 bb4 ~@3 g4@2 f4 ~ eb4 ~ c4 ~", D: "c5@2 c5 ~ c5 ~ g4@10", E: "~@4 c5@2 ~@2 a4@2 g4 ~ f4 ~ d4 ~",
  F: "ab3@2 bb3 ~ ab3 ~ bb3@3 ~ ab4 ~ bb4@2 ~@2", G: "[g4@8 eb5@11 ~ d5@2 d5 ~ bb4 ~ f4@3 ~ g4@19 ~@15]/4",
  H: "~@8 g4!2 gb4 g4 ab4 a4 bb4 b4", I: "c5 ~@3", J: "eb4@3 ~ eb4@2 ~@2 d4 ~ bb3@3 ~ bb4@2", K: "g5 ~@15",
})).s("gm_trumpet").gain(0.64).pan(0)

// chords · electric guitar muted · "RhytGuit"
const electric_guitar_muted = note(`<
  ~@5 A B A C A B C D A@2 E F A F A G B H I J K L M N O H I P K L O Q R ~@7 S T U V W X Y Z AA AB U@2 A@4 AC E A@2 D E A
  AD AE ~ AF ~ AG AH A@2 AI AJ AI D AG U@4 AK@2 U@2 AL AK U AM U@4 AK@2 U@2 AL AK U AM AN ~@4 A B A C A B C D A@2 E F A
  F A G A F A G B AO AN
>`.pickRestart({
  A: "[c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // C5
  B: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", // Bb5
  C: "[eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~ [eb3,bb3] ~", // Eb5
  D: "[g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~", // G5
  E: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  F: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", // Ab5 Bb5
  G: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~", // Ab5
  H: "~@2 [bb3,eb4]@2 ~@4 [bb3,eb4] ~@7", I: "[bb3,eb4] ~@5 [bb3,eb4]@2 ~@8", J: "~@2 [g3,c4]@2 ~@4 [g3,c4] ~@7",
  K: "[g3,c4] ~@5 [g3,c4] ~@9", L: "~@2 [eb3,ab3] ~@5 [eb3,ab3] ~@7", M: "[eb3,ab3] ~@5 [eb3,ab3] ~@9",
  N: "~@2 [f3,bb3]@2 ~@4 [f3,bb3] ~@7", O: "[f3,bb3] ~@5 [f3,bb3] ~@9", P: "~@2 [g3,c4] ~@5 [g3,c4] ~@7",
  Q: "~@2 [bb3,eb4] ~@5 [bb3,eb4] ~@7", R: "[eb3,bb3]@3 ~@13",
  S: "[c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,a3]@2 [c3,g3] ~", // C5 F C5 F C5
  T: "[c3,g3] ~ [c3,g3] ~ [c3,a3]@2 [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~", // C5 F C5 F C5
  U: "[g2,d3] ~ [g2,d3] ~ [g2,e3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,e3] ~ [g2,d3] ~", // G5 C G5 C G5
  V: "[g2,d3] ~ [g2,d3] ~ [g2,e3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3,e3] ~ [g2,d3] ~", // G5 C G5 Em7 G5
  W: "[d3,a3] ~ [d3,a3] ~ [d3,b3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,b3] ~ [d3,a3] ~", // D5 G D5 Bm7 D5
  X: "[c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3,a3] ~ [c3,g3] ~", // C5 F C5 Am7 C5
  Y: "[d3,a3] ~ [d3,a3] ~ [d3,a3,b3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,b3] ~ [d3,a3] ~", // D5 Bm7 D5 G D5
  Z: "[c3,f3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3,a3] ~ [c3,g3] ~", // Csus4 C5 F C5 Am7 C5
  AA: "[g2,d3] ~ [g2,d3] ~ [g2,e3]@2 [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3,e3] ~ [g2,d3] ~", // G5 C G5 Em7 G5
  AB: "[g2,d3] ~ [g2,d3] ~ [g2,d3,e3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,e3] ~ [g2,d3] ~", // G5 Em7 G5 C G5
  AC: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ f2@2 c3 ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~, ~@6 c3 ~@9", // F5
  AD: "[g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3]@2", AE: "[c3,g3]@3 ~@13",
  AF: "[f2,c3]@3 ~@13", AG: "[g2,d3]@3 ~@13", AH: "[f2,c3] ~@3", AI: "[ab2,eb3]@5 ~ [ab2,eb3] ~ [ab2,eb3]@7 ~",
  AJ: "[ab2,eb3]@6 [ab2,eb3] ~ [ab2,eb3]@7 ~", // Ab5
  AK: "[c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~", // C5 F C5 F C5
  AL: "[c3,a3] ~ [d3,a3] ~ [d3,b3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,b3] ~ [d3,a3] ~", // F D5 G D5 G D5
  AM: "[g2,d3] ~ [g2,d3] ~ [g2,e3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ g2@2 d3 ~, ~@12 e3 ~@3", AN: "[c3,g3] ~@7",
  AO: "[c3,g3]@2 ~@2 [c3,g3]@3 ~ [c3,g3] ~ [c3,g3]@3 ~ [bb2,f3]@2", // C5 Bb5
})).s("gm_electric_guitar_muted").gain(0.42).pan(0.6)

// chords · brass section · "Brass"
const brass_section = note(`<
  ~@4 A@4 B@5 C D E F G@4 ~@73 H I J K H L M K N O H P Q ~@3 A@4 B@5 C D E F G@8 ~ R S
>`.pickRestart({
  A: "[~@4 g4@2 g4 ~ [g4,bb4] ~ [bb4,d5]@3 ~ [g4,c5]@9 ~ [eb4,g4]@11 ~ [eb4,g4]@2 [eb4,g4] ~ [d4,f4] ~ [d4,bb4]@3 ~ [eb4,g4]@18]/4", // Gm Bb C5 Eb Dm Gm Eb
  B: "[~@4 [eb4,g4] ~ [eb4,g4] ~ [g4,bb4] ~ [g4,d5]@2 ~@2 [g4,c5]@9 ~ [eb5,g5]@11 ~ [d5,f5]@2 [d5,f5] ~ [bb4,d5] ~ [f4,bb4]@3 ~ bb4@17 ~ b4@15 ~, ~@46 g5@33 ~]/5", // Eb Gm G5 C5 Eb Dm Bb Bb5
  C: "~@4 bb5@2 ~@2 [g4,g5]@2 [f4,f5] ~ [eb4,eb5] ~ [c4,c5] ~, ~@4 bb4 ~@11", // G F Eb C
  D: "[c5,eb5]@2 [c5,f5] ~ [c5,eb5] ~ [g4,c5]@10", E: "~@4 [c5,c6]@2 ~@2 [a4,a5]@2 [g4,g5] ~ [f4,f5] ~ [d4,d5] ~",
  F: "[ab3,ab4]@2 [bb3,bb4] ~ [ab3,ab4] ~ [bb3,bb4]@3 ~ [ab4,c5] ~ [bb4,d5]@2 ~@2", // Ab Bb Ab Bb Ab Bb
  G: "[[g4,c5]@8 [eb5,g5]@11 ~ [d5,f5]@2 [d5,f5] ~ [bb4,d5] ~ [f4,bb4]@3 ~ [g4,c5]@19 ~@15]/4", // C5 Eb Dm Bb Bb5 C5
  H: "~ [g4,g5] ~@2 [g4,g5] ~@3", I: "[g4,g5] ~@2 [g4,g5] ~@4", J: "~ [g4,g5] ~@2 g5 ~@3, ~@8 g4 ~@7",
  K: "g5 ~@2 [g4,g5] ~@4, g4 ~@15", L: "[g4,g5] ~@5 g5@2 ~@8, ~@6 g4 ~@9", M: "~@2 [g4,g5]@2 ~@4 [g4,g5] ~@7",
  N: "[gb4,gb5]", O: "[e4,e5]",
  P: "[g4,g5]@2 ~@4 [g4,g5]@2 [g4,g5]!2 [gb4,gb5] [g4,g5] [ab4,ab5] [a4,a5] [bb4,bb5] [b4,b5]", Q: "[g5,c6] ~@3",
  R: "[eb4,eb5]@3 ~ [eb4,eb5]@3 ~ [d4,d5] ~ [bb3,bb4]@3 ~ [bb4,bb5]@2", S: "c6 ~@7, g5 ~@15",
})).s("gm_brass_section").gain(0.35)

// chords · drawbar organ · "Orgel"
const drawbar_organ = note(`<
  ~@5 A B A C A B C D E@2 F G A G A H B I@2 J@2 K@2 L@2 M@4 N O P Q ~@4 R S T U V W X Y Z Y Z AA AB W AB ~@11 AC AD ~@41
  A B A C A B C D E@2 F G A G A H A G A H B ~@2
>`.pickRestart({
  A: "[g4,c5,eb5]", B: "[f4,bb4,d5]", C: "[g4,bb4,eb5]", D: "[g4,b4,d5]", E: "[g4,c5,eb5]/2", F: "[a4,c5,f5]",
  G: "[ab4,c5,eb5] [f4,bb4,d5]", H: "[ab4,c5,eb5]", I: "[bb3,eb4,g4]/2", J: "[c4,eb4,g4]/2", K: "[c4,eb4,ab4]/2",
  L: "[d4,f4,bb4]/2", M: "[[bb3,g4] [c4,g4], eb4]/4", N: "[c4,eb4,ab4]", O: "[d4,f4,bb4]", P: "[bb3,eb4,g4]",
  Q: "[g4,bb4,eb5] ~@7", R: "~@10 d4 ~ d4@2 ~@2", S: "g4 ~@7", T: "~@10 d5 ~ eb5@2 ~@2",
  U: "~@2 [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~@3 [g4,c5,e5] ~", // C
  V: "[g4,c5,e5] ~ [g4,c5,e5] ~ [a4,c5,f5] ~ [g4,c5,e5]@2 ~@8", // C F C
  W: "~@2 [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5]@2 ~@2 [g4,b4,d5] ~", // G
  X: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,c5,e5] ~ [g4,b4,d5]@2 ~@2 [b4,d5] ~ [c5,e5] ~ [b4,d5] ~", // G C G Bm C Bm
  Y: "[a4,d5,gb5]@3 ~ [a4,d5,gb5] ~ [a4,d5,gb5]@3 ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~", // D
  Z: "[g4,c5,e5]@3 ~ [g4,c5,e5] ~ [g4,c5,e5]@3 ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~", // C
  AA: "~@2 [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~@3 [g4,b4,d5] ~", // G
  AB: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,c5,e5] ~ [g4,b4,d5]@2 ~@8", // G C G
  AC: "[g4,d5,g5] ~ [g4,d5,g5] ~ [g4,d5,g5] ~ [g4,d5,g5] ~ [g4,d5,g5] ~ [g4,d5,g5] ~ [g4,e5,g5] [c5,d5] [e4,f4,g4,a4,b4] [a3,b3,c4,d4]", // G5 C Csus2 Em D7
  AD: "[f3,g3] ~@15", // Fsus2
})).s("gm_drawbar_organ").gain(0.29)

// drums · kick
const kick = s("bd").struct(`<
  A@3 B C D@15 B@2 E@15 B@11 F B@3 F B@3 F B@12 E@7 B E@4 C B@11 F B@11 F A@3 B C D@15 B D@3 B@2 G C
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x!4", C: "x", D: "x ~@2 x!2 ~@2 x", E: "x ~@2 x!2 ~@3", F: "x ~ x ~ x ~ x!2",
  G: "x ~ x ~ x!2 ~ x",
})).gain(0.46)

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

// drums · clap
const clap = s("cp").struct("<~@22 A@15 B@3 C B@3 C A B A B A B A B A B A B A@20 B@4 D A@24 ~@28>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@2 x ~@2 x!3", D: "x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<A@4 B ~@7 C ~@24 A@8 ~@25 D E D F E ~@30 G A@4 B ~@7 C ~@7 H ~@5 G E>".pickRestart({
  A: "x!8", B: "x ~@11 x!4", C: "~@12 x!4", D: "~@7 x", E: "x", F: "x ~@6 x", G: "~@8 x!8", H: "~@4 x!4",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<A@4 B A@16 B A@59 B A@28 B A@20 B A B>".pickRestart({
  A: "x!8", B: "x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@70 [~@3 x] ~ [~@3 x]!2 ~@60>").gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@7 A ~@57 B ~ B@2 ~@31 C ~@4 A ~@7 A ~@7 D ~@5 C ~>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@5 x ~@2", C: "x!8 ~@8", D: "x!4 ~@4",
})).gain(0.46)

// drums · congas
const congas = s("conga:13").struct("<~@57 [x!16]!12 ~@65>").gain(1.3)

stack(
  electric_guitar_clean, bass, trumpet, trumpet_2, electric_guitar_muted, brass_section, drawbar_organ, kick, snare,
  clap, low_tom, hihat, mid_tom, high_tom, congas
)