Strudelify
Sit and Wait cover art

Sit and Wait (Radio Edit)

Sit and Wait

Sydney Youngblood

KeyA minorTempo107 bpm
0:00/0:00
// Sit and Wait — Sydney Youngblood
// 107 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: 
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(107/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@3 A B C D A E F G H I J K J L H M N O N P Q O N R ~@2 A S C T A U F V W X C Y H Z AA AB N O N P N O N AC Q O Q P N O
  N AC ~@2 A E C AD A AE AF V H AG H AH J AI AJ AK AL O Q AM Q O AN AC ~@2 A AO C AP A B AQ V A AR C AS A AT AU AV AW@3
  ~@6
>`.pickRestart({
  A: "f1!2 ~ f1!2 ~ f1!2 ~@6 f1@2", B: "g1 ~@2 g1 ~@2 g1 ~@6 g1 ~@2", C: "a1!2 ~ a1!2 ~ a1!2 ~@6 g1@2",
  D: "a1 ~@2 a1 ~@2 a1@2 ~@4 a1 g1 f1 e1", E: "g1 ~@2 g1 ~@2 g1 ~@3 g1 ~@2 g1 ~@2", F: "c2!2 ~ c2!2 ~ c2!2 ~@6 c2 ~",
  G: "c2 ~@2 c2 ~@2 c2 ~@7 c2@2", H: "a1!2 ~ a1!2 ~ a1!2 ~@6 a1@2", I: "g1!2 ~ g1!2 ~ g1!2 ~@3 e1 g1 ~ e1 ~",
  J: "a1!2 ~ a1!2 ~ a1!2 ~@6 a1 ~", K: "g1!2 ~ g1!2 ~ g1 [g1,d#4] e2 g1 a1 ~@3 g1 ~, ~@4 c-1 ~@3",
  L: "g1!2 ~ g1!2 ~ g1!2 ~ g1 e1 ~ g1 ~ e1 ~", M: "g1!2 ~ g1!2 ~ e1 g1 ~ g1 ~@4 g1 ~", N: "f1!2 ~ f1!2 ~ a1@9 ~",
  O: "d1@2 ~ d1 ~@2 e1@8 ~@2", P: "b1@2 ~ b1 ~@2 c2@8 ~@2", Q: "f1!2 ~ f1 f1@2 a1@8 ~@2", R: "d1@3 ~ e1@3 ~ f1@5 ~@3",
  S: "g1 ~@2 g1@2 ~ g1 ~@2 g1 ~@6", T: "a1 ~@2 a1 ~@2 a1@2 ~@3 a1 g1 ~ g1 ~", U: "g1@2 ~ g1 ~@2 g1@2 ~@2 g1 ~@5",
  V: "c2 ~@2 c2 ~@2 c2@2 ~@4 c2 b1 a1 g1", W: "a1@2 ~ a1!2 ~ a1!2 ~@6 a1@2",
  X: "g1!2 ~ g1!2 ~@2 g1 ~ g1 e1 ~ g1 ~ g1 ~", Y: "a1 g1 ~ g1!2 ~@6 g1 a1 ~ g1 ~",
  Z: "g1!2 ~ g1!2 ~@2 g1 ~ g1!2 ~ g1 ~ g1@2", AA: "a1!2 ~ a1!2 ~ g1 a1 ~@6 a1@2",
  AB: "g1!2 ~ g1!2 ~@2 g1 ~ g1!2 ~ g1@2 ~@2", AC: "d1@3 ~ e1@3 ~ f1@3 ~@5",
  AD: "a1 ~@2 a1 ~@2 a1 ~@2 a1 g1 ~ f1 ~ e1 ~", AE: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@6", AF: "c2!2 ~ c2!2 ~ c2 c2@2 ~@5 a1@2",
  AG: "g1!2 ~ g1!2 ~@2 g1 ~ g1 e1 ~ g1 ~ e1 ~", AH: "g1 ~@2 g1 ~@2 g1 ~@4 e1 g1!2 e1@2",
  AI: "a1 ~@2 g1 ~@2 g1@2 ~ g1 e1 ~ g1 ~ e1 ~", AJ: "a1!2 ~ g1 a1 ~ g1 a1 ~@6 a1@2",
  AK: "g1 ~@2 a1 ~@4 g1!2 ~ e1 g1 ~ e1 ~", AL: "f1@2 ~ f1@2 ~ a1@9 ~", AM: "b1@2 ~ b1@2 ~ c2@8 ~@2",
  AN: "f1!2 ~ f1!2 ~ a1@8 ~@2", AO: "g1 ~@2 g1 ~@2 g1@2 ~@2 g1 ~@2 g1 ~@2", AP: "a1 ~@2 a1 ~@2 a1 ~@6 a1 g1 f1",
  AQ: "c2!2 ~ c2!2 ~ c2!2 ~@6 b1@2", AR: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@4 g1@2", AS: "a1 ~@2 g1 ~@2 a1 ~@5 a1 g1 f1 e1",
  AT: "g1 ~@2 g1 ~@2 g1@2 ~@8", AU: "c2 ~@2 c2 ~@2 c2@2 ~@6 a1@2", AV: "c2!2 a1 ~ c2 ~ a1 c2 ~@4 c2 a1 ~@2",
  AW: "[d1@17 ~@7]/3",
})).s("gm_synth_bass_2").gain(0.5)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@2 A B C D E B F D G ~@17 A B F D@2 B F D G ~@25 A B F D E B F D G ~@17 A B F D@2 B F D@2 B F D H B F D G I@2 ~@7
>`.pickRestart({
  A: "~@5 [a4,a5] [c5,c6] [a4,a5]", B: "[g5,g6]@2 [a4,a5] [c5,c6]@2 [a4,a5] [c5,c6] [a4,a5]",
  C: "[f5,f6]@2 [a4,a5] [c5,c6]@2 [a4,a5] [c5,c6] [a4,f5,a5,b5]", // F A C A C Bm7b5
  D: "[e5,e6]@2 [a4,a5] [c5,c6]@2 [a4,a5] [c5,c6] [a4,a5]", // E A C A C A
  E: "[e5,e6]@4 [a4,a5]@2 [c5,c6]@3 ~ [a4,a5]@2 [c5,c6]@2 [a4,a5]@2", // E A C A C A
  F: "[f5,f6]@2 [a4,a5] [c5,c6]@2 [a4,a5] [c5,c6] [a4,a5]", // F A C A C A
  G: "[e5,e6]@4 [a4,a5]@2 [c5,c6]@4 [a4,a5]@2 [c5,c6]@2 [a4,a5] ~", // E A C A C A
  H: "[e5,e6]@2 [a4,a5] [c5,c6]@2 [a4,f5,a5] [c5,c6] [a4,a5]", // E A C Dm C A
  I: "[[d3,a3,c4,d4,e4,a4,c5,e5]@3 ~, [d2,g4,g5]@13 ~@3]/2", // Am G5
})).s("gm_piano").gain(0.4)

// other · vibraphone
const vibraphone = note("<~@70 A B C D E F G H I J ~@34>".pickRestart({
  A: "~@9 d#5 d5 c5 a4 e4 g4 e4", B: "a4 c5 ~ a4 ~ e4 g4 a4 c5 d5 d#5 e5 ~@4",
  C: "~ e4 g4 a4 a#4 b4 d5 e5 [d5,g5] b4 [b4,e5] g4 d5 e4 b4 a4", D: "~ g4 ~ e4 ~ a4 ~@5 e4 g4 a4 c5 ~",
  E: "[c5,e5,a5] ~@2 [c5,e5,a5] ~@2 [b4,d5,g5]@4 g4 b4 d5 d#5 e5 g5", // Am G
  F: "a5 [g5,c6] ~ e5 a5 e5 [a5,d6] e5 ~@4 [g5,a5] c6 d6 d#6", // C5 D5 Gsus2
  G: "e6 g6 e6 d6 c6 [b5,c6] ~ [a5,b5] ~ g5 ~ e5 ~ [d5,d#5] c5 e5", // Cmaj7 Asus2 D#maj7
  H: "b4 d5 a4 b4 g4 a4 e4 g4 a4 a#4 b4 d5 e5 [d5,g5] e5 b4", // G5
  I: "[c5,e5,a5] ~@2 [c5,e5,a5] ~@2 [b4,e5,g5]@4 g4 [b4,d5] [e5,g5] e5 d5 [g4,b4]", J: "g4 ~@15",
})).s("gm_vibraphone").gain(0.5)

// chords · synth strings 1 · "#STR SECT3"
const synth_strings_1 = note(`<
  ~@3 A B C@2 A B C@2 D@6 E@2 F G@3 F H@2 ~@3 A B C@2 I@2 C@2 D@4 J@3 K@2 L F M F L F ~ F L F N@3 O ~@3 A B C@2 A B C@2
  E@2 P@4 Q@2 F L R M S@2 T ~@3 A B U@3 B C@2 A B C@2 A B C@2 V@2 ~@7
>`.pickRestart({
  A: "[f3,a3,c4]", B: "[g3,b3,d4]", C: "[[a3,c4,e4]@31 ~]/2", D: "[[a3,c4] [g3,b3], e4@31 ~]/2",
  E: "[[a3,c4]@16 [g3,b3]@15 ~, e4@31 ~]/2", F: "f4 e4, [a3,c4]",
  G: "[[f3,a3]@6 ~ [g3,b3,e4]@8 ~ f4@8 e4@7 [b3,d4]@8 [c4,e4]@8 ~, d4@7 ~@8 c4@16 ~@17, ~@16 a3@15 g3@15 ~@2]/3", // F Em Bm C
  H: "[[f3,a3]@6 ~@2 [g3,b3,e4]@7 ~ f4@7 e4@8 ~, d4@8 ~@7 c4@16 ~, ~ a3]/2", // F Em
  I: "[[f3,a3]@7 ~ [g3,b3]@8, c4@15 d4@16 ~]/2", J: "[[a3,c4] [g3,b3] [a3,c4], e4@47 ~]/3",
  K: "[[g3,b3,e4]@15 ~ f4@7 e4@8 ~, ~@15 [a3,c4]@16 ~]/2", L: "[f3,a3,d4] [g3,b3,e4]",
  M: "[b3,d4]@7 ~ c4@7 ~, g3@15 ~, ~@7 e4@8 ~", // Bm
  N: "[[b3,d4]@7 e4@8 ~ f4@8 e4@7 ~ [f3,a3]@7 [g3,b3,e4]@8 ~, g3@15 ~ a3@15 ~@17, ~@7 c4@24 d4@8 ~@9]/3", // Bm F Em
  O: "f4@8 e4@7 ~, [a3,c4]@15 ~", P: "[[a3,c4]@22 [g3,b3]@9 ~, e4@31 ~]/2", Q: "[[a3,c4]@11 [g3,b3]@4 ~, e4@15 ~]/2",
  R: "f4@7 e4@9, [a3,c4]", S: "[f4 e4 [f3,d4] [g3,b3,e4], a3@23 ~@9, c4 ~]/2", T: "f4 e4, [a3,c4]@15 ~",
  U: "[e4@32 f3@15 ~, [a3,c4]]/3", V: "[[d3,a3,c4,e4,g4]@7 ~]/2",
})).s("gm_synth_strings_1").gain(0.1)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@3 A B C D A E F G ~@8 H I J K L M N O ~@2 P Q R S T U V W ~@8 X Y H Z X AA L AB L AC X AD L AE AF AG ~@2 AH AI AJ AK
  P AL AM AN ~@8 L AO AP AQ L AR L AS ~ AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ ~@9
>`.pickRestart({
  A: "~@2 f4 ~@2 f4 ~@2 f4 ~@2 f4 ~@2 f4!2", B: "~@2 g4 ~@2 g4 ~@2 g4 ~ g4!2 ~@2 g4!2",
  C: "~@2 a4 ~@2 a4 ~ g4 a4 ~@2 a4 ~ a4 g4!2", D: "~@2 a4 ~@2 a4 ~ g4 a4 ~ [g4,c5]!2 ~ [g4,c5] a4 g4",
  E: "~@2 g4 ~@2 g4 ~ g4!2 ~ g4!2 ~ g4!3", F: "~@2 a4 ~@2 a4 ~ g4 a4 ~ g4 a4 ~ [g4,c5] a4 g4",
  G: "~@2 a4 ~@2 a4 ~ g4 a4 ~@2 [g4,c5] ~ [g4,c5] a4 g4", // C5
  H: "~@2 [a4,c5] ~@2 [a4,c5] ~@2 [b4,d5]@2 ~ [a4,c5] ~@2 [a4,c5] ~", // Am Bm Am
  I: "~@2 [a4,c5] ~@2 [a4,c5] ~@2 [b4,d5]@2 ~ [g4,b4] ~@2 [g4,b4] ~", // Am Bm G
  J: "~@2 [a4,c5]!2 ~ [a4,c5]!2 ~ [b4,d5]@2 ~ [a4,c5] ~ [a4,c5]!2 ~", K: "~@2 [a4,c5] c5 ~ c5!2 ~@9",
  L: "~@2 [a4,c5]!2 ~ [a4,c5]!2 ~ [b4,d5]@2 ~ [a4,c5] ~@2 [a4,c5] ~", // Am Bm Am
  M: "~@2 c5 ~@2 [a4,c5] ~@2 [b4,d5]@2 ~ [g4,b4] ~@2 [g4,b4] ~", // Am Bm G
  N: "~@2 c5 [a4,c5] ~ [a4,c5]!2 ~ [b4,d5]@2 ~ [a4,c5] ~@2 [a4,c5] ~", O: "~@2 a4 ~@2 g4 ~@10",
  P: "~ f4 ~ f4!2 ~ f4!2 ~ f4!2 ~ f4 ~ f4!2", Q: "~ g4 ~@2 g4 ~@2 g4 ~ g4 ~ g4!2 ~ g4!2",
  R: "~ a4 ~ g4 a4 ~@2 a4 ~ a4 g4 ~ [g4,c5]!2 a4 g4", S: "~ a4 ~@2 a4 ~ g4 a4 ~ g4 a4!2 [g4,c5]!2 a4 g4",
  T: "~ f4 ~@2 f4 ~ f4!2 ~ f4!2 ~ f4 ~ f4!2", U: "~ g4 ~@2 [g4,a4] ~@2 g4 ~ g4 ~ g4!2 ~ g4!2",
  V: "~ a4 ~ g4 a4 ~@2 [g4,c5] ~ [g4,c5] a4 ~ a4 ~ g4 a4", W: "~ a4 ~@2 a4 ~@2 a4 ~ g4 a4 ~ [g4,c5]!2 a4 ~",
  X: "~@2 [a4,c5]!2 ~ [a4,c5]!2 ~ [b4,d5] ~@2 [a4,c5] ~@2 [a4,c5] ~", // Am Bm Am
  Y: "~@2 c5 [a4,c5] ~ [a4,c5]!2 ~ [b4,d5] ~@2 [g4,b4] ~@2 [g4,b4] ~", Z: "~@2 [a4,c5]!2 ~ [a4,c5]!2 ~@6 g4 a4 c5",
  AA: "~@2 [a4,c5] ~@2 [a4,c5] ~@2 [b4,d5]@2 ~ [g4,b4] ~@2 [g4,b4]!2", AB: "~@2 g4 a4 ~@9 g4 a4 ~",
  AC: "~@2 [a4,c5]!2 ~ [a4,c5]!2 ~ [b4,d5] ~@2 [g4,b4] ~@2 [g4,b4]!2", AD: "~@2 g4!2 ~ g4 a4 ~@3 g4 a4 c5 a4 g4 ~",
  AE: "~@2 c5 [a4,c5] ~ [a4,c5]!2 ~ [b4,d5]@2 ~ [g4,b4] ~@2 [g4,b4] ~", // Am Bm G
  AF: "~@2 [a4,c5]!2 ~ [a4,c5]!2 ~ [b4,d5] ~ [b4,d5] [a4,c5] ~@2 [a4,c5] ~", AG: "~@2 g4 a4 ~ c5 ~@3 g4 ~ c5 ~@4",
  AH: "~ f4 ~@2 f4 ~ f4!2 ~ f4!2 ~@2 f4 g4 a4", AI: "~ g4 ~ g4!2 ~@2 g4 ~ g4!2 ~@3 g4!2",
  AJ: "~ a4 ~@2 a4 ~ g4 a4 ~ a4 g4 ~ [g4,c5]!2 a4 g4", AK: "~ [g4,c5] ~ a4 g4 ~ a4 g4 ~ g4 a4 g4 [g4,c5]!2 a4 g4",
  AL: "~ g4 ~@2 g4 ~@2 g4 ~ g4!2 ~ g4 ~ g4!2", AM: "~ a4 ~ a4!2 ~@2 g4 ~ g4 a4 ~ [g4,c5]!2 a4 g4",
  AN: "~ [g4,c5] ~ g4 [g4,c5] ~@2 [g4,c5] ~ [g4,c5] a4 ~@5", // C5
  AO: "~@2 c5 [a4,c5] ~ [a4,c5]!2 ~ [b4,d5]@2 ~ [g4,b4] ~@2 [g4,b4]!2", // Am Bm G
  AP: "~@2 [a4,c5]!2 ~ c5 [a4,c5] ~ [b4,d5] ~@2 [a4,c5] ~@2 [a4,c5] ~", // Am Bm Am
  AQ: "~@2 c5 [a4,c5] ~ [a4,c5] ~@3 g4!3 a4 g4 a4 g4", AR: "~@3 [a4,c5] ~ [a4,c5]!2 ~ [b4,d5]@2 ~ [g4,b4] ~ [g4,b4]!3",
  AS: "~@3 g4 ~@2 a4 ~@2 g4 ~@6", AT: "~@12 f3 c4 d4 f4", AU: "~@2 f4!2 ~ f4!2 ~ f4!2 ~ f4!2 ~ f4!2",
  AV: "~@2 g4!2 ~ g4!2 ~@2 g4 ~@2 g4 ~ g4!2", AW: "~ a4 ~ g4 a4 ~ g4 a4 ~ a4 g4 ~ [g4,c5] g4!2 ~",
  AX: "~@2 a4 ~@2 g4 ~ g4 ~ g4 a4 g4 c5 a4 g4 a4", AY: "~@2 f4!2 ~ f4 ~ f4!2 ~ f4!2 ~ f4!3",
  AZ: "~@2 g4!2 ~ g4 ~ e4 g4!2 ~ g4 ~ g4!3", BA: "~@2 a4!2 ~ a4 g4 ~ [g4,c5] ~ a4 [g4,c5] ~ [g4,c5] a4 ~",
  BB: "~@2 [a4,d5] ~@2 c5 ~ a4 ~ [d4,g4] ~ [e4,a4] ~ [d4,g4] [e4,a4] [g4,c5]", // D5 G5 A5 G5 A5 C5
  BC: "~@2 g4 a4 ~ a4 g4 ~ a4 ~ f4 g4 ~ g4 f4 g4", BD: "a4 ~ [g4,a4] ~@2 g4 ~ g4 ~ g4 f4 ~ g4 f4 g4 a4",
  BE: "~@2 g4!2 ~ g4 a4 ~ [g4,c5] ~ a4 [g4,c5] ~ [g4,c5] a4 g4", // C5
  BF: "~@2 a4!2 ~ a4 g4 a4 [a4,d5] a4 [g4,c5,d5] ~ [e4,a4]!2 [d4,g4] ~", // D5 Gsus4 A5 G5
  BG: "~@2 f4 g4 ~ a4 f4 ~ g4 ~ a4 ~ f4 g4 a4 f4", BH: "~ g4 ~ g4 ~ g4 f4 ~ a4 ~ f4 ~ g4 ~@3",
  BI: "~@3 a4 ~ a4 g4 ~ [g4,c5] ~ a4 [g4,c5] ~ [g4,c5] a4 g4", BJ: "~@2 a4!2 ~ a4 g4 ~ [g4,c5] ~ a4 ~ [g4,c5] a4 g4 a4",
})).s("gm_electric_guitar_clean").gain(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B ~ A B C D E F@2 G ~@3 H I H J K ~@2 L ~@3 M N O ~ A B P D Q R@3 ~@3 S@2 H T K ~@2 U ~@7 U ~@3 V N@2 ~ A B P D Q
  W@2 ~@11 X ~@3 V N O ~ A B P D Q Y@2 ~ A B P D Q Z@2 K ~@8
>`.pickRestart({
  A: "~@12 d6 e6 ~@2", B: "g5 a5 ~@14", C: "~@8 c7 b6 a6 g6 e6 d6 c6 b5", D: "a5@3 c6", E: "f6@3 e6",
  F: "[d6@3 e6@10 d6 c6 b5]/2", G: "a5@5 ~@3", H: "e6@5 a5 c6 a5", I: "e6@9 d6@7", J: "e6@13 d6 c6 b5", K: "a5 ~@15",
  L: "g6 f6 e6 d6 f6 e6 d6 c6 e6@3 ~@5", M: "~@8 f6 ~@3 f6 ~@3", N: "f6 ~@3 f6 ~@3 f6 ~@3 f6 ~@3",
  O: "f6 ~@3 f6 ~@3 f6 ~@7", P: "~@4 c7 b6 a6 g6 a6 g6 e6 d6 e6 d6 c6 b5", Q: "f6@5 e6 d6 c6",
  R: "[d6@6 e6@19 d6 c6 b5 d6 c6 b5 a5@9 ~@8]/3", S: "[e6@5 a5 c6 a5@2 e6@4 d6@3]/2", T: "d6@2 e6@11 d6 c6 b5",
  U: "f6 e6 d6 c6 e6 d6 c6 b5 c6@6 ~@2", V: "~@12 f6 ~@3", W: "[d6@6 e6@20 d6@2 c6 b5 a5 ~]/2",
  X: "f6 e6 d6 c6 e6 d6 c6 b5 c6@8", Y: "[d6@6 e6@23 d6 c6 [a5,b5]]/2", Z: "[d6@6 e6@19 d6 c6 b5 a5 ~ g5 ~]/2",
})).s("gm_string_ensemble_1").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!104 x ~@8>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@3 A@25 B A@33 B A@25 B A@15 B ~@9>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~ x!2 ~ x!2",
})).gain(0.5)

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

// drums · hihat
const hihat = s("hh").struct("<[~@6 x!10] [x!16]!104 x ~@8>").gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A ~@7 A ~@7 A ~@9 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@9 A ~@3 A ~@3 A ~@7 A ~@3 A ~@5 A ~@7 A ~@16
>`.pickRestart({
  A: "x",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct(`<
  [~@8 x!3 ~ x!3 ~]
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!42
  [x!3 ~ x ~ x!3 ~ x ~ x!3 ~]
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!53
  [x!3 ~ x!3 ~ x!3 ~ x!4]
  [x ~ x!3 ~ x ~ x!3 ~ x!3 ~]
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!6
  ~@9
>`).gain(0.25)

// drums · congas
const congas = s("conga:13").struct("<A B@10 ~@8 B@9 C B@8 ~@8 B@60 ~@9>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@3 x ~@2", C: "~ x ~@6",
})).gain(1.27)

// drums · congas
const congas_2 = s("conga:18").struct("<A B@10 ~@8 B C B@7 D B@8 ~@8 B@10 C B@6 E B@2 C@3 B@37 ~@9>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@8 x ~@2", D: "~@3 x ~@4", E: "~ x ~@2",
})).gain(1.27)

// drums · congas
const congas_3 = s("conga:33").struct("<A B@10 ~@8 B@9 C B@8 ~@8 B@17 D B@35 A B@6 ~@9>".pickRestart({
  A: "~@14 x!2", B: "~@6 x!2 ~@6 x!2", C: "~@7 x ~@8", D: "~@6 x!2 ~@8",
})).gain(1.27)

stack(
  bass, piano, vibraphone, synth_strings_1, electric_guitar_clean, string_ensemble_1, kick, snare, clap, hihat, crash,
  tambourine, congas, congas_2, congas_3
)