Strudelify

Everything She Wants

Wham!

KeyG majorTempo120 bpm
0:00/0:00
// Everything She Wants — Wham!
// 120.1 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 158 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120.1/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · string ensemble 1 · "Keyboard"
const string_ensemble_1 = note("<A@4 B@6 C@6 D@5 ~@137>".pickRestart({
  A: "[~@19 [e4,g4,b4]@38 [e4,g4,b4]@38 [a4,c5,e5]@33]/4", // Em Am
  B: "[~@6 [a4,c5,e5]@38 [e4,g4,b4]@38 ~ [e4,g4,b4]@38 [a4,c5,e5]@38 [a4,c5,e5]@33]/6", // Am Em Am
  C: "[~@6 [e4,g4,b4]@38 [e4,g4,b4]@38 ~ [a4,c5,e5]@38 [a4,c5,e5]@38 [e4,g4,b4]@33]/6", // Em Am Em
  D: "[~@6 [e4,g4,b4]@38 [a4,c5,e5]@38 ~ [a4,c5,e5]@38 [e4,g4,b4]@19 ~@20]/5", // Em Am Em
})).s("gm_string_ensemble_1").gain(0.2)

// chords · synth bass 1 · "Keyboard"
const synth_bass_1 = note(`<
  ~@25 A ~ B ~ A C D ~ E@2 F@2 G@2 H I J@2 K L M N H O@3 P Q@3 P R@2 ~@3 S T@3 U V W X Y@2 F L Z AA@2 AB AC ~ AD AE AF
  AG@3 AH@2 P Q@3 P R@2 ~@3 S T@3 U V W X ~@2 AI ~ AJ AK@2 AL@2 AM AN ~ AO AP AQ@3 AP AR@3 ~@2 AS AT@2 AU AO AP AQ@3 AP
  AR@3 ~@2 AS AV@2 AW AU ~@3 AS AV@2 AW AU ~@2
>`.pickRestart({
  A: "[a3,b3,e4]@2 ~@4 [a3,b3,e4] [g#3,b3,e4]", B: "[g3,c4,e4]@2 ~@4 [g3,c4,e4] [f#3,c4,e4]", C: "~@5 g#3 b3 e4",
  D: "~ [g3,a3,c4,e4]@2 [g3,a3,c4,e4] [g3,a3,c4,e4]@2 [g3,a3,c4,e4] [f#3,a3,c4,e4]", // Am7 F#m7b5
  E: "[~@2 [a3,b3,e4]@2 [a3,b3,e4]@3 [b3,e4]@2 ~@7]/2", F: "[c4,e4]!3 ~",
  G: "[~@2 [a3,b3]@2 [a3,b3,e4]@2 ~ [b3,e4]@2 ~@5 [g#3,b3]@2]/2", H: "[c4,e4]!4", I: "[c4,e4] [c4,e4]@3 ~@4",
  J: "[~@2 [a3,b3]@2 [b3,e4]@3 [b3,e4]@2 ~@2 [g3,b3,e4]@3 ~@2]/2", K: "[c4,e4]!2 [c4,e4]@2", L: "[c4,e4]!3 [b3,e4]",
  M: "~ [a3,b3]!2 [b3,e4,f#4]", N: "[b3,e4]@3 [g#3,b3] ~@4",
  O: "[[c4,e4]@2 ~ [c4,e4]@2 [a3,c4]!2 [a3,b3]@2 [a3,b3]!2 [a3,b3]@2 [a3,b3]!2 [g#3,b3]@2 [g#3,b3]!2 [g#3,b3]@2 b3@2 [c4,e4]]/3", // C Am Asus2 G#m C
  P: "~ [c4,e4]@3 ~ [a3,c4]!3", // C Am
  Q: "[[e4,a4,c5]@2 [e4,a4]@2 [e4,a4]@2 [e4,a4] [e4,a4]@5 ~@2 [a3,b3] [g#3,b3]@2 ~@2 [g#3,b3]@2 b3@2 [c4,e4]]/3", // Am A5 Asus2 G#m C
  R: "[[e4,a4,c5]@2 [e4,a4]@2 [e4,a4]@2 [e4,a4] [e4,a4]@9]/2", S: "[c4,e4,a4] ~",
  T: "[~@7 [g4,b4]@3 [g4,b4]@4 ~ [g3,b3,e4]@2 [g3,b3,e4]!3 [g3,b3,d4] [g3,b3,e4] [g4,b4,e5]@2]/3", // G Em G Em
  U: "[a4,b4,e5]!4 [a4,b4,e5]@2 [a4,b4,e5]!2", // Asus2
  V: "[g#4,b4,e5] [g#4,b4,e5]@2 [g#4,b4,e5]@2 [e4,g4] [e4,g4,b4] [e4,g4,b4,d5]", // E Em Em7
  W: "[g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2", // C
  X: "[f#4,a4,c5,e5] [f#4,a4,c5,e5]@2 [f#4,a4,c5,e5]@2 ~@3", // F#m7b5
  Y: "[~@2 [a3,b3]@2 [a3,b3]@2 [b3,e4] [b3,e4]@2 [g#3,b3]@3 ~@4]/2", Z: "~ [a3,b3]!2 [b3,e4]",
  AA: "[~ [g#3,b3]!2 [c4,e4]@2 [c4,e4]!3]/2", AB: "[c4,e4]@2 [c4,e4] [c4,e4]@3 ~@2", AC: "~ [e4,a4]!3",
  AD: "[a4,c5] [e4,a4]!2 [c4,e4]", AE: "[c4,e4]!2 ~@2", AF: "[e4,a4]!2 b3 [a3,b3]",
  AG: "[~@7 [g4,c5]@3 [e4,a4]@2 [e4,a4]@2 [e4,a4] [a4,c5]@3 [a4,c5]@2 [a4,c5]@2 [a4,c5]@2]/3", // C5 A5 Am
  AH: "[[g4,b4]@2 [e4,g4]@2 ~ [a3,b3]!2 [g#3,b3]@2 [g#3,b3]!2 [g#3,b3]@2 b3@2 [c4,e4]]/2", AI: "[a4,b4,e5]!3 ~",
  AJ: "[g4,c5,e5]!3 ~", AK: "[~@3 [c4,e4]@2 [b3,e4] ~@2]/2", AL: "[~@29 [c5,e5]@12 ~@16 [a4,c5]@7]/2",
  AM: "~ [a4,c5]@8 [a4,c5]@8 [a4,c5]@8 [a4,c5]@7", AN: "~ [a4,c5]@8 [a4,c5]@8 ~@15",
  AO: "~ [g#3,b3]@4 [g#3,b3]@4 [g#3,b3]@4 [g#3,b3]@8 b3@8 [c4,e4]@3", // G#m C
  AP: "~@5 [c4,e4]@12 ~@4 [a3,c4]@4 [a3,c4]@4 [a3,c4]@3", // C Am
  AQ: "[~ [e4,a4,c5]@8 [e4,a4]@8 [e4,a4]@8 [e4,a4]@4 [e4,a4]@20 ~@8 [a3,b3]@4 [g#3,b3]@8 ~@8 [g#3,b3]@8 b3@8 [c4,e4]@3]/3", // Am A5 Asus2 G#m C
  AR: "[~ [e4,a4,c5]@8 [e4,a4]@8 [e4,a4]@8 [e4,a4]@4 [e4,a4]@36 ~@31]/3", AS: "~ [c4,e4,a4]@16 ~@15",
  AT: "[~@29 [g4,b4]@12 [g4,b4]@16 ~@7]/2", AU: "~ [e4,a4,c5]@4 [e4,a4,c5]@4 [e4,g4,c5]@8 [e4,f#4,c5]@8 [e4,g4,c5]@7",
  AV: "[~@29 [g4,b4]@12 [g4,b4]@16 ~@4 [g4,b4]@3]/2", // G
  AW: "~ [g4,b4]@4 [g4,b4]@4 [g4,b4]@4 [g4,b4]@4 [g4,b4]@4 [g4,b4]@11", // G
})).s("gm_synth_bass_1").gain(0.31)

// other · pad new age · "Keyboard"
const pad_new_age = note("<~@68 [~@5 b4 d5 e5] ~@35 [~@5 b4 d5 e5] ~@53>").s("gm_pad_new_age").gain(0.31)

// chords · brass section · "Sax" · Asus2
const brass_section = note(`<
  ~@107
  [~@2 [a5,b5,e6]@2 [a5,b5,e6]!2 ~@2]
  ~
  [~@2 [a5,b5,e6]@2 [a5,b5,e6]!2 ~@2]
  ~
  [~@4 [a5,b5,e6]!2 ~@2]
  ~@46
>`).s("gm_brass_section").gain(0.41)

// bass · synth bass 1 · "Bass"
const bass = note(`<
  ~@25 A B C D A B E F G H@2 I G J@2 K G H@2 I G L@2 K M N O P M N O Q R S T U V W X Y X Z@2 I G H@2 I G AA AB I G AC@2
  AD AE AF O AG M N O P M N O Q R S T U V W X Y X Z@2 I ~@2 AH AI AJ AK AH AL AM AN AO AP AQ AR AS AT AQ AR AN AO AP AU
  AV AW AX AY AZ AQ AR AS AT AQ AR AN AO AP AU AV AW AX AY AZ BA AP AU AV AW AX AY AZ BA AP ~
>`.pickRestart({
  A: "e2@2 ~@3 b1 d2 e2", B: "~@7 e2", C: "d2@2 ~@4 e2 a1", D: "~@6 b2 d3", E: "d2 ~@3", F: "d3 a2 d2@2 ~@3 d2",
  G: "e2@2 e2@2 e2@3 e2", H: "[b2 b2@2 e2@2 e2 g2 a2@3 a2@2 a2@2 a2!2]/2", I: "d2 d2@2 d2@2 b1 d2 e2",
  J: "[b2 b2@2 e2@2 e2 g2 a2@3 a2@2 a2 a2@2 a2]/2", K: "d3 c3 a2 f#2", L: "[e2 e2@2 e2@2 e2 g2 a2@3 a2@2 a2 a2@2 a2]/2",
  M: "e2@2 e2@2 e2@2 e2!2", N: "e2 e2@2 e2@3 e2 g2", O: "a2@2 a2@2 a2@2 a2!2", P: "d2@2 d2@2 d2 b1 d2 e2",
  Q: "d3 c3 a2 g2", R: "a2@2 a2@2 a2@2 a2 b2", S: "b2 b1@2 b1 d2 b1 d2 e2", T: "e2!2 g2@2 e2@2 b1 d2", U: "e2 d2 c2 b1",
  V: "a1@2 a1@2 a2!2 a1!2", W: "b1@2 b1@2 d2 b1@2 d2", X: "e2@2 e2@2 e2@2 b1 d2", Y: "e2@2 e2@2 e2 b1 d2 b1",
  Z: "[e2 e2@2 e2@2 e2 g2 a2@3 a2@2 a2@2 a2!2]/2", AA: "b2 b2@2 e2@2 e2 g2 a2", AB: "a2@2 a2@2 a2 a2@2 a2",
  AC: "[e2@2 e2@2 e2!2 g2 a2@3 a2@2 a2 a2@2 a2]/2", AD: "d2@2 d2@2 d2@2 d2 e2", AE: "e2@2 e2@2 e2 e2@2 e2",
  AF: "e2 e2@2 e2@2 e2 g2 a2", AG: "d2@2 d2@2 d2@2 d2!2", AH: "e2!3 ~", AI: "~@5 e2 g2 e2", AJ: "a2!3 ~", AK: "~@7 b1",
  AL: "~@21 e2@4 g2@4 e2@3", AM: "~ a2@8 a2@8 a2@8 ~@4 a2@3", AN: "~ d3@8 c3@8 a2@8 g2@7",
  AO: "~ a2@8 a2@8 a2@8 a2@4 b2@3", AP: "~ b2@4 b1@8 b1@4 d2@4 b1@4 d2@4 e2@3", AQ: "~ e2@4 e2@8 e2@12 e2@4 g2@3",
  AR: "~ a2@8 a2@8 a2@8 a2@4 a2@3", AS: "~ d2@8 d2@8 d2@4 b1@4 d2@4 e2@3", AT: "~ e2@8 e2@8 e2@8 e2@4 e2@3",
  AU: "~ e2@4 e2@4 g2@8 e2@8 b1@4 d2@3", AV: "~ e2@8 d2@8 c2@8 b1@7", AW: "~ a1@8 a1@8 a2@4 a2@4 a1@4 a1@3",
  AX: "~ b1@8 b1@8 d2@4 b1@8 d2@3", AY: "~ e2@8 e2@8 e2@8 b1@4 d2@3", AZ: "~ e2@8 e2@8 e2@4 b1@4 d2@4 b1@3",
  BA: "~ a1@8 a1@8 a2@8 a2@4 b2@3",
})).s("gm_synth_bass_1").gain(0.31)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@21 A@11 B A@14 C D@6 E D@10 F G D@24 E D@10 E D@8 H I J K@6 L K@31 M ~@5
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~@2", C: "~@2 x ~@4 x", D: "~@3 x ~@3 x", E: "~@2 x!5 ~@7 x ~",
  F: "~@6 x ~@3 x ~ x ~ x!2", G: "~ x ~ x ~@10 x ~", H: "~@12 x ~@16 x ~@2", I: "~@13 x ~@15 x ~@2", J: "~@13 x ~@17 x",
  K: "~@15 x ~@15 x", L: "~ x ~@13 x ~@15 x", M: "~ x ~@30",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@32 A ~@21 B ~@11 B ~@24 B ~@10 B ~@49 C ~@5>".pickRestart({
  A: "~@14 x!2", B: "~@8 x!2 ~@6", C: "~@3 x ~ x ~@26",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@21 A@3 B A@3 B C@3 D E@2 F E@5 G E@3 G@2 H I@2 J K J L M N O P N O Q P N R N S T I@3 J K I@2 J K I@11 J K I U M V W
  Q X Y Z@5 AA AB@2 I@3 J AC I AD AE AF AG@2 AH AI AH@2 AJ AH AK@2 AH AL AM@18 AN@3 AO ~@10
>`.pickRestart({
  A: "x!4 ~ x!4 ~ x!2 ~ x!3", B: "x!3 ~ x!5 ~ x!2 ~ x!2 ~", C: "x!2 ~@3 x!4 ~@4 x!3", D: "x!4 ~ x!4 ~ x!2 ~@4",
  E: "x!3 ~@2 x!4 ~ x ~@2 x!3", F: "x ~ x ~@2 x!4 ~ x ~@2 x!3", G: "~@2 x ~@2 x!3 ~@2 x ~@2 x!3",
  H: "x!3 ~@2 x!8 ~@2 x", I: "x!3 ~ x ~@2 x!6 ~@2 x", J: "x!3 ~ x ~@2 x!3 ~@2 x ~@2 x", K: "x!2 ~@2 x ~@2 x!6 ~@2 x",
  L: "x!2 ~@2 x ~@2 x!7 ~ x", M: "x!2 ~@8 x!4 ~ x", N: "x!3 ~ x!2 ~ x!5 ~@3 x", O: "x!3 ~@4 x!5 ~@3 x",
  P: "x!3 ~@4 x!7 ~ x", Q: "x!3 ~ x!8 ~@3 x", R: "x!3 ~@2 x!11", S: "x!3 ~ x!6 ~@6", T: "~@10 x!3 ~@2 x",
  U: "x!3 ~ x ~@2 x!7 ~ x", V: "x!3 ~ x!2 ~ x!6 ~ x!2", W: "x!3 ~ x!2 ~@2 x!4 ~@3 x", X: "x!3 ~ x!10 ~ x",
  Y: "x!3 ~ x!2 ~ x!9", Z: "x!3 ~ x!2 ~ x!7 ~ x", AA: "x!2 ~@8 x!3 ~@2 x", AB: "x!5 ~@2 x!6 ~@2 x",
  AC: "x!2 ~@2 x ~@2 x!4 ~ x ~@2 x", AD: "x ~ x ~ x ~@3 x ~@5 x ~ x ~ x ~ x ~@4 x ~@5 x",
  AE: "~ x ~ x ~ x ~@3 x ~@5 x ~ x ~ x ~ x ~ x ~ x ~@5 x",
  AF: "~ x ~ x ~ x ~@3 x ~@5 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
  AG: "~ x ~ x ~ x ~ x ~ x ~@7 x ~ x ~ x ~ x ~@3 x ~ x ~ x",
  AH: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~@3 x ~ x ~@2",
  AI: "~ x ~ x ~ x ~ x ~ x ~@7 x ~ x ~ x ~ x ~@5 x ~ x", AJ: "~@5 x ~ x ~ x ~@7 x ~ x ~ x ~ x ~@8",
  AK: "~ x ~ x ~ x ~ x ~ x ~@7 x ~ x ~ x ~ x ~@3 x ~@3 x",
  AL: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~@2",
  AM: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~@2",
  AN: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
  AO: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@6",
})).gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@21 A@20 ~ A@3 ~@3 B@3 ~ B ~@2 B@11 ~ B@4 ~ B@3 ~ B@12 ~ B@2 ~ B@10 ~@3 B@4 ~ B@2 C@2 D@30 ~@3 E F@2 G H ~@6
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@3 x ~@12", C: "~@7 x ~@24", D: "~@25 x ~@6", E: "~@27 x ~ x ~@2",
  F: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", G: "~ x ~ x ~@3 x ~ x ~@7 x ~ x ~ x ~ x ~ x ~@6",
  H: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@66 [~@6 x!2 ~@8] ~@53 [~@3 x ~@28] ~@37>").gain(0.36)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@24 A ~@3 A B@3 ~ C@2 D C@5 E C@3 E@2 F G@2 H I H J ~ K L M K L K M K M K ~ N G@3 H I G@2 H I G@11 H I G O ~ P K@2
  ~@7 N G@5 H Q G R S T U@2 ~ V ~@2 V ~ W@2 ~@2 X@24 Y ~@7
>`.pickRestart({
  A: "~@3 x ~@11 x", B: "~ x ~@3 x ~@2", C: "~@3 x!2 ~@6 x!2 ~@3", D: "~ x ~ x!2 ~@6 x!2 ~@3",
  E: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", F: "~@3 x!2 ~@8 x!2 ~", G: "~@5 x!2 ~@6 x!2 ~", H: "~@5 x!2 ~@3 x ~@2 x!2 ~",
  I: "~@2 x ~@2 x!2 ~@6 x!2 ~", J: "~@2 x ~@2 x!2 ~@9", K: "~@3 x", L: "~ x ~ x", M: "~ x ~@2", N: "~@13 x!2 ~",
  O: "~@5 x!2 ~@9", P: "~@13 x ~@2", Q: "~@2 x ~@2 x!2 ~@4 x ~ x!2 ~", R: "~@10 x ~ x ~@10 x ~@3 x ~ x ~@2",
  S: "~@11 x ~ x ~@13 x ~ x ~@2", T: "~@11 x ~ x ~@18", U: "~@11 x ~@20", V: "~@11 x ~@15 x ~@4",
  W: "~@11 x ~@17 x ~@2", X: "~@5 x ~@26", Y: "~@5 x ~@5 x ~@15 x ~@4",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@66 A ~@6 B ~@4 B ~ B ~@4 B@2 ~@6 C ~@17 B ~@46>".pickRestart({
  A: "~@4 x!2 ~@10", B: "~ x", C: "~@7 x ~@8",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~@3 A ~@7 A ~@3 A ~@16 B ~@11 B ~@11 B ~@11 C B ~@10 B ~ B ~@3 C ~@49
>`.pickRestart({
  A: "x", B: "~@5 x ~@2", C: "~@7 x ~@8",
})).gain(0.41)

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

// drums · congas · soft notes
const congas_soft = s("conga:13").struct("<~@63 A ~@53 B ~@29 B C@2 D@2 E ~@5>".pickRestart({
  A: "~ x ~@2", B: "~@27 x ~@4", C: "~ x ~@9 x ~@15 x ~@4", D: "~ x ~@9 x ~@5 x ~@9 x ~@4", E: "~ x ~@30",
// … 60 more lines

More by Wham!