Strudelify

The Chicken

Jaco Pastorius

KeyB♭ majorTempo106 bpm
0:00/0:00
// The Chicken — Jaco Pastorius
// 106 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(106/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 · "Bass"
const bass = note(`<
  A@11 B@2 C D E F G H I J K A L A@2 M N@2 O D P Q G R I A@4 S T A U V O W X Y Z AA I AB K AC AD A AE A AF AG O D E AH@2
  AI I AB K AC AJ A@3 AK@2 AL W AM AN AO AP I AQ AR A AJ AS AT A AU@2 O D X F AV@2 I AB K A AJ A AW A AX@2 AL D P Q AY R
  I AZ AR A BA BB A@2 BC@2 C D E BD@2 BE I ~
>`.pickRestart({
  A: "bb1@3 bb1 d2!2 ~ eb2 ~ eb2 f2@2 g2@2 bb2@2",
  B: "[bb1@3 bb1 d2!2 ~ d2 f2!2 ~ bb1 e2 ~ eb2@5 ~ f2 gb2 ~ g2 ~ g1 c2@2 db2@2 d2@2]/2",
  C: "eb2@3 eb1 g1!2 ~ g1 ab1!2 bb1!2 eb2 bb1 db2@2", D: "d2@2 ~ d2 c2@2 ~ c2 bb1!2 ~ bb1 d2 c2 f2@2",
  E: "g2!2 ~ g2 f2!2 ~ f2 eb2 a1@2 eb2 bb1@2 b1@2", F: "c2@2 ~ c2 f1!2 ~ f1 g1!2 ~ g1 g2 f1 bb1@2",
  G: "c2@2 ~ c2 d2 eb2 ~ e2 ~ a2 g2 e2 d2 bb1 ~ bb1", H: "c2!2 ~ c2 e1@2 ~ e1 f1!2 ~ f1 g1 ~@3",
  I: "bb2 ab2 ~ f2 ~ eb2 ~ db2 ~ bb1 ab1 ~@5", J: "bb1@3 bb1 d2!2 ~ eb2 ~@2 f1!2 ab1 f1 a1@2",
  K: "bb1@3 bb1 g2 f2 ~ d2 ~ bb1 eb2 bb1 g1 e2 a1@2", L: "bb1@2 bb2 ~ bb1 g2 f2 bb1 d2!2 bb1 d2 eb2!2 f2@2",
  M: "~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~@2 [ab3,d4]@3 g1 bb1@2 d2@2", // Db5 Abdim
  N: "[eb2@2 e2@2 f2@2 a2@2 bb2@2 d2@2 e2 ~ eb2@5 ~ f2 gb2 ~ g2 ~ g1 c2@2 db2@2 d2@2]/2",
  O: "eb2@3 eb1 g1!2 ~ ab1 ~ ab1 bb1!2 eb2 bb1 db2@2", P: "g1!2 ~ g1 a1!2 ~ a1 bb1!2 ~ eb2 a1@2 bb1@2",
  Q: "c2@2 eb2 ~ eb2 ~ eb2 ~@2 f1 ~ gb1 ~ g1 ~ bb1, ~@4 e2 ~@3", R: "c2!2 ~ c2 e1@2 ~ e1 ~ f1 ~ f1 g1@2 ~@2",
  S: "bb1@3 bb1 d2!2 ~ f2 ~ g1 d1!2 f1 g1 a1@2", T: "bb1@2 d2 eb2 ~ g2 f2 f1 db2 f1 d2 f1 eb2!2 f2@2",
  U: "bb1@3 bb1 db2!2 ~ db2 eb2!2 ~ eb2 f2!2 ~ f2", V: "eb2@4 g2!2 ~ bb2 ~ g1 bb1!2 c2 db2 d2@2",
  W: "d2@2 ~ d2 c2@2 ~ c2 bb1!2 ~ bb1 a1!2 ~ a1", X: "g2!2 ~ g2 f2!2 ~ f2 eb2!2 ~ eb2 d2@2 b1@2",
  Y: "c2@2 ~ c2 f1!2 ~ g1 ~ g1 ~ g1 g2 f1 bb1@2", Z: "c2@2 ~ c2 eb2 e2 ~ f2 ~ g1 ~ g1 g2 f1 bb1@2",
  AA: "~ c2 c3 c2 bb2 c3 c2 c2@2 c2 c3 c2 bb2 c3 ~@2", AB: "bb1@3 bb1 d2!2 ~ eb2 ~ f1 g1@2 g2 f1 a1@2",
  AC: "bb1@2 bb2 ~@2 d2 ~ eb2 ~ eb2 f2@2 g2@2 bb2@2", AD: "bb1@2 ~ f2 g2 f2 g2!2 f2 d2 eb2!2 e2!2 f2!2",
  AE: "bb1@3 bb1 d2!2 ~ eb2 ~ eb2 bb1@2 d2@2 a1@2", AF: "bb1@3 bb1 d2!2 ~ d2 f2!2 ~ bb1 e2!2 ~ e2",
  AG: "eb2@4 f2 gb2 ~ g2 ~ g1 c2@2 db2@2 d2@2",
  AH: "[c2@2 ~ c2 f1!2 ~ f1 g1 f1@3 gb1@3 g1@3 gb1@3 g1@3 a1@3 bb1@3 b1@2]/2",
  AI: "c2@3 c2 e1!2 ~ e1 f1!2 ~ f1 g1@2 ~@2", AJ: "bb1@2 d2 ~ bb1 g2 f2 bb1 d2!2 bb1 d2 eb2!2 f2@2",
  AK: "[bb1!2 ~ bb1 d2!2 ~ d2 f2!2 ~@2 e2 ~ eb2@5 ~ f2 gb2 ~ g2 ~ bb1 c2 bb1 db2 bb1 d2!2]/2",
  AL: "eb2@3 eb1 g1!2 ~ g1 ab1!2 bb1@2 eb2 bb1 db2@2", AM: "g1@2 ~ g1 a1!2 ~ a1 bb1!2 ~ eb2 a1@2 bb1@2",
  AN: "c2@2 c3 ~ a2 ~ gb2 ~ g2@2 c2 eb2 e2 g1 bb1!2", AO: "c2@2 e2 ~ f2 ~ gb2 ~ g2 ~ bb1!2 c2!2 e2@2",
  AP: "e2@3 e2 f2@3 f2 gb2!2 ~ gb2 g2@2 ~@2", AQ: "bb1@3 bb1 d2!2 ~ bb2 ~ d1 d1@2 ~ g1 a1!2, ~@6 f1 ~",
  AR: "bb1@2 bb2 ~@2 g2 f2 f1 db2 f1 d2 f1 eb2 f1 eb2 d2", AS: "bb2@3 bb1 d1!2 ~ eb1 ~ eb1 f1@2 g2@2 g1@2",
  AT: "bb1@3 bb1 d2!2 ~ eb2 ~ eb2 f2@2 g2@2 ab1@2",
  AU: "[bb1@3 bb1 db2!2 ~ db2 eb2!2 ~ bb1 e2 ~ eb2@5 ~ g1!2 ~ g1 ab1!2 ~ ab1 bb1!2 ~ bb1]/2",
  AV: "[c2@2 c3 c2 bb2 c3 c2 c2@2 c2 c3 c2 bb2 c3 c2 c2@2 c2 c3 c2 bb2 c3 c2 c2@2 c2 c3 c2 bb2 c3 ~@2]/2",
  AW: "bb1@2 ~ bb1 d2!2 ~ eb2 ~ eb2 f2@2 g2@2 bb2@2",
  AX: "[bb1@2 ~ bb1 d2!2 ~ d2 f2!2 ~@2 d2@2 eb2@5 ~ f2 gb2 ~ g2 ~ bb1 c2 bb1 db2 bb1 d2!2]/2",
  AY: "c2@2 ~ c2 a2 g2 ~ e2 ~ a2 g2 e2 d2 bb1 ~ bb1", AZ: "bb1@3 bb1 d2!2 ~ f2 ~ d1 d1@2 f1 g1 a1!2",
  BA: "bb1@2 bb2 ~ bb1 g2 f2 bb1 d2!2 bb1 d2 eb2 g2 bb2 ~", BB: "c3@2 ~@2 bb1 d2 ~ eb2 ~ eb2 f2@2 g2@2 bb2@2",
  BC: "[bb1@2 d2 ~ bb1 g2 f2 bb1 d2!2 bb1 db2 d2!2 eb2@5 ~ f2 gb2 ~ g2 ~ g1 c2@2 db2@2 d2@2]/2",
  BD: "[c2@3 eb1@3 e1@3 f1@3 gb1@3 g1@3 gb1@3 g1@3 a1@3 bb1@3 b1@2]/2", BE: "c2@3 c2 e2!4 f2!4 g2@2 ~ f2",
})).s("gm_electric_bass_finger").gain(0.45)

// other · trombone
const trombone = note(`<
  ~@8 A B C D@2 E F@5 G ~@3 H A B C D@2 E I@5 G J@4 ~@11 G ~@4 K L M N@3 F@5 G J@3 O P Q R S@2 T@2 U V W X Y Z AA AB AC
  AD AE AF AG AH@4 AI AJ AK AL ~@4 K L M N@3 F@5 G ~@3 AM A B C D@2 E F@5 AN ~
>`.pickRestart({
  A: "f4 ~@7", B: "~@7 bb4@3 g4 f4 g4 ~ bb4@2", C: "ab4 ~@7",
  D: "[~@4 f4@2 ~@2 g4@2 f4 ~ ab3@2 ~@6 g4 d4 g4@8 ~@2, ~@7 g3@5 ~@4]/2", E: "~@6 eb4 ~",
  F: "[~@4 d4@2 d4 ~@5 db4 c4 ~ g3@8 ~@4 f4 g4 bb4 d5 ~@5 bb3!2 ab3 ~@4 f4 g4 bb4 d5 ~@5 bb3!2 ab3 ~@4 f4 g4 bb4 d5 ~@5 bb3!2 ab3 bb3@8 ~, ~@31 bb4@8 bb3@8 bb4@8 bb3@8 bb4@8 ~@9]/5",
  G: "d5 c5 ~ bb4 ~ ab4 ~ f4 ~ eb4 db4 ~@3 bb4@2", H: "~@13 f3 bb3 ~",
  I: "[~@4 d4@2 d4 ~@5 db4 c4 ~ g3@8 ~@4 f4 g4 bb4 d5 ~@5 bb3!2 ab3 ~@4 f4 g4 bb4 d5 ~@5 bb3!2 ab3 ~@4 f4 g4 bb4 d5 ~@5 bb3!2 ab3 bb3@8 f4, ~@31 bb4@8 bb3@8 bb4@8 bb3@8 bb4@8 ~@9]/5",
  J: "~@4 bb4!2 ~ bb4@8 ~", K: "~@4 c4!4 ~@3 c4 ~@4", L: "~@4 bb3!4 ~@4 bb3!4", M: "~@4 c4!4 ~@3 d4 ~@4",
  N: "[~@2 bb3 db4 eb4@2 db4 ~ bb3@2 ab3 ~ e3@2 eb3@6 ~@2 c4@6 ~@2 f4@10 ~@4 eb4@2 ~@2]/3",
  O: "~@4 bb4!2 ~@6 f4 ab4 bb4 ~, ~@7 bb4@7 ~@2", P: "bb4 ~ bb4 ~ bb4 ~ ab4 bb4 ~ f4 ~@6", Q: "~@9 d4 f4 ~ f4 ~ f4 ~",
  R: "f4 g4 ab4 g4 ~ f4 ~ eb4 ~ c4 ~ bb3 ~ ab3 g3 ab3",
  S: "[bb3 c4 eb4 ~ eb4 c4 ~ d4 ~ bb3 ~ c4 ~ db4 ~ c4@2 db4 [bb3,c4] ~ g3 ~ bb3 ~ bb3 ~ f3 g3 ~@4]/2", // Bbsus2
  T: "[bb3 ~ bb3 c4 ~ bb3 c4 db4 ~ db4 ~ c4 ~ bb3 ~ d4@2 ~ c4 ~ a3 ~@4 g3 gb3 g3 a3 c4 a3 bb3, ~@15 db4 ~@16]/2",
  U: "b3 ~ d4 f4 ~ d4 g4 ab4 g4 f4 d4 f4 c4 d4 eb4 c4", V: "e4 g4 bb4 g4 c5 g4 c5 db5 c5 bb4 g4 bb4 a4 g4 f4 gb4",
  W: "g4 ~ e4 ~ e4 c4 d4 eb4 d4 c4 ~@2 bb3 ~ d4 c4", X: "~ g3 ~ bb3 ~ f3 ~ g3 ~ e3 ~ f3 ~ ab3 ~ f3",
  Y: "ab3 bb3 ~ b3 ~ c4 ~ db4 ~ eb4 ~ e4 ~ f4 ~ bb4", Z: "~ f4 g4 ab4 bb4 eb5 c5 db5 d5 bb4 f4 ab4 g4 f4 bb3 eb4",
  AA: "d4 bb3 ~@2 ab3 ~ c4 bb3 ~ f4 ab4 f4 g4 f4 eb4 g4", AB: "f4 ~@2 c5 eb5 c5 d5 bb4 a4 ab4 g4 gb4 f4 ~ bb4 f4",
  AC: "bb3 ab4 eb4 bb3 ~ db4 bb3 eb4 db4 bb3 db4 ~ ab3 ~ db4 bb3",
  AD: "~@5 bb3 db4 eb4 e4 f4 bb4 f4@3 eb4 db4, ~@11 e4 ~@4",
  AE: "bb3@3 db4 ~ eb4 ~ f4 ~ [eb4,e4,f4] db4 bb3 eb4 db4 bb3 ab3",
  AF: "f3 bb3 ab3 f3 a3 c4 bb3 eb4 b3 f3 bb3 d4 g4 f4 ~ f3",
  AG: "bb3 d4 gb3 b3 eb4 g3 c4 e4 ~ db4 f4 ~ db4 bb3 g3 f3, ~@4 ab3 ~@3",
  AH: "[eb3@2 ~@6 bb3@2 g3 bb3 ~ c4 ~ db4@2 c4@2 db4 ~ g3 ~ bb3@4 g3 bb3 c4 db4 c4@2 bb3 a3 ~ g3 gb3 ~ eb3 ~ d3 ~ eb3 ~ gb3 ~ g3@7 ~ bb3 ~ d4 f4 ab4 g4 f4 d4 eb4, ~@15 c4 ~@4 bb3@2 ~@42]/4",
  AI: "e4 ~ e4 ~ e4 d4 c4 ~ bb3 ~ d4 c4 ~ bb3 ~ g3", AJ: "~@2 f3 ~ e3 g3 ~ bb3 ~ g3 c4@2 g3 db4 ~ g3",
  AK: "c4@2 g3 db4 ~ g3 c4@2 g3 db4 ~ g3 c4 ~@2 f4", AL: "d5 c5 ~ bb4 ~ ab4 ~ f4 ~ eb4 db4 ~@3 bb4 ~",
  AM: "~@13 g3 bb3 ~", AN: "d5 c5 ~ bb4 ~ ab4 ~ f4 ~ eb4 db4 ~@3 ab4@2",
})).s("gm_trombone").gain(0.5).pan(0.6)

// other · baritone sax
const baritone_sax = note(`<
  ~@13 A B C ~@13 A B C ~@4 D@4 ~@21 A E F ~@13 A E F ~@13 A E F ~@29 A E F ~@5
>`.pickRestart({
  A: "~@7 db2", B: "d2 c2 bb1 c2", C: "d2 ~", D: "~@4 ab3!2 ~ bb3@8 ~", E: "d2 db2 c2 db2", F: "eb2 ~",
})).s("gm_baritone_sax").gain(0.18)

// other · trumpet
const trumpet = note(`<
  ~@7 A B C B D@2 E F@5 G ~@3 H B C I D@2 E F@5 G J@4 ~@11 G ~@4 K L M N@3 O@5 G J@4 ~@11 G ~@4 K L M N@3 P@5 G ~@4 K L
  M N@3 O@5 G ~@4 B C B D@2 E F@5 Q ~
>`.pickRestart({
  A: "~@13 f4 bb4 ~", B: "d5 ~@7", C: "~@4 f4 g4 bb4 d5@3 bb4 g4 bb4 ~ eb5@2",
  D: "[~@4 d5@2 ~@2 g5@2 f5 ~ db5@2 ~@6 bb4 g4 bb4@8 ~@2, ~@7 c5@4 ~@5]/2", E: "~@6 bb5 ~",
  F: "[~@4 a5@2 a5 ~@5 a5 g5 f5 g5@8 ~@4 f5 g5 bb5 d6 bb5@8 ~@4 f5 g5 bb5 d6 bb5@8 ~@4 f5 g5 bb5 d6 bb5@8 ~@9]/5",
  G: "bb5 ab5 ~ f5 ~ eb5 ~ db5 ~ bb4 ab4 ~@3 f5@2", H: "~@13 g4 bb4 ~", I: "d5 ~@15", J: "~@4 d5!2 ~ db5@8 ~",
  K: "~@4 bb4!4 ~@3 bb4 ~@4", L: "~@4 bb4!4 ~@4 bb4!4", M: "~@4 bb4!4 ~@3 c5 ~@4",
  N: "[~@2 bb4 db5 eb5@2 db5 ~ bb4@2 ab4 ~ e4@2 eb4@6 ~@2 bb4@6 ~@2 c5@10 ~@4 bb5@2 ~@2]/3",
  O: "[~@4 a5@2 a5 ~@5 a5 g5 f5 g5@8 ~@4 f4 g4 bb4 d5 bb4@8 ~@4 f4 g4 bb4 d5 bb4@8 ~@4 f4 g4 bb4 d5 bb4@8 ~@9]/5",
  P: "[~@4 a5@2 a5 ~@5 a5 g5 f5 g5@8 ~@4 f4 g4 bb4 d5 ~@5 c4!2 bb3 ~@4 f4 g4 bb4 d5 ~@5 c4!2 bb3 ~@4 f4 g4 bb4 d5 ~@5 c4!2 bb3 c4@9, ~@31 bb4@8 c4@8 bb4@8 c4@8 bb4@8 ~@9]/5",
  Q: "bb5 ab5 ~ f5 ~ eb5 ~ db5 ~ bb4 ab4 ~@3 bb4@2",
})).s("gm_trumpet").gain(0.6).pan(0.6)

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@34 [~@12 x!4] ~@31 [~@12 x!4] ~@47 [~@12 x!4] ~@18>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A B ~@7 C ~@7 B ~@7 C ~@4 D ~@2 B ~@7 E ~@6 F G ~@7 E ~@4 D ~@2 B ~@7 E ~@15 E ~@6 F E ~@7 C ~@3 H C ~@2 B ~@6 I
  J ~
>`.pickRestart({
  A: "~@3 x", B: "~@7 x", C: "x", D: "~@3 x ~@4", E: "x ~@6 x", F: "~@5 x ~@2", G: "~ x ~@5 x", H: "~@5 x ~ x ~@8",
  I: "~ x!2 ~", J: "~ x ~ x ~@3 x ~@2 x ~@5",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@34 [~@10 x!2 ~@4] ~@31 [~@10 x!2 ~@4] ~@47 [~@10 x!2 ~@4] ~@18>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@11 A ~@19 A ~@27 A ~@15 A ~@13 B ~@2
>`.pickRestart({
  A: "x", B: "~@5 x ~@2",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@4 A B@3 ~@28 A B@3 ~@12 A B@14 ~ B@4 ~@12 B@15 ~ A B@14 ~@18>".pickRestart({
  A: "~ x!3", B: "x!4",
})).gain(0.45)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@4 A@15 ~ A@15 ~ A@2 B A@12 ~ A@15 ~ A@15 ~ A@15 ~ A@15 ~ A@15 ~@2
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "x!2 ~ x!3 ~ x!2 ~@2 x ~@4",
})).gain(1.27)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@4 A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A ~ A B A B A@11 ~ A@15 ~ A B A B A B A B A B A B A B
  A ~ A B A B A@11 ~ A@3 B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A ~@2
>`.pickRestart({
  A: "~@15 x", B: "~@6 x!2 ~@7 x",
})).gain(1.27)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@4 A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A ~ A B@3 A@11 ~ A@15 ~ A B A B A B A B A B A B A B A
  ~ A B A B A@11 ~ A@3 B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A ~@2
>`.pickRestart({
  A: "~@6 x!2 ~ x ~@4 x ~", B: "~@7 x",
})).gain(1.27)

stack(
  bass, trombone, baritone_sax, trumpet, kick, snare, hihat, mid_tom, open_hat, high_tom, crash, ride, congas, congas_2,
  congas_3
)