Strudelify

Mr Big Stuff

Jean Knight

KeyD majorTempo180 bpm
0:00/0:00
// Mr Big Stuff — Jean Knight
// 180 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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 B C D E F C G E H I D A H C J A F C J E F I G A F I G K F I J A F I J A F I J A F I G A F I J E F I L A H C M A H
  C N E H C O P Q R S@2 T U V E W I J A H C M A W C D E F C M X H C M A W C J A H I G E H C D A H I M A H I D A H I D A
  F I Y Z
>`.pickRestart({
  A: "~@2 d1@5 ~@9", B: "d1 ~ d1@5 ~@6 f#1@3, ~@6 d1 ~", C: "~ g1@2 ~@5", D: "g1 ~ g1@2 ~@2 a1 ~ a1@2 ~@2 a1@2 g1@2",
  E: "~ d1@2 ~@5", F: "d1 ~ d1@5 ~@5 d1@2 f#1@2", G: "g1 ~ g1@3 ~ a1 ~ a1@2 ~@2 a1 ~ g1@2",
  H: "d1 ~ d1@4 ~@6 d1@2 f#1@2", I: "~@2 g1@5 ~@9", J: "g1 ~ g1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ g1@2",
  K: "~@2 d1@5 ~@9, ~@2 g#1 ~@13", L: "g1 ~ g1@2 ~@2 a1@2 a1@2 ~@2 a1 ~ g1@2", M: "g1 ~ g1@3 ~ a1 ~ a1@2 ~@2 a1@2 g1@2",
  N: "g1 ~ g1@3 ~ a1 ~ a1@2 ~@3 g1@3, ~@6 a1 ~", O: "g1 ~ g1@3 ~ a1 ~ a1@2 ~@3 a#1@2 ~, ~@6 a1 ~",
  P: "~@2 b1@6 ~@2 b1@5 ~", Q: "f#1 a1 ~ b1@3 a1 f#1", R: "~ e1@3 ~ g#1 a1@2",
  S: "[~@2 a#1@2 b1@3 ~ e2@3 ~ d2@2 b1@4 g1@6 ~@2 b1@2 c2@3 ~]/2", T: "~@2 c#2@2 d2@2 ~@2 g2@3 f2@2 d2@3",
  U: "~ a2 ~ a1 ~@4", V: "~@2 a1@2 a1@2 ~@2 a1@2 ~@2 f#1 e1@3", W: "d1 ~ d1@3 ~@7 d1@2 f#1@2",
  X: "~ d1@2 ~@5, ~@2 e1 ~@13", Y: "g1@2 a1 ~ a1@2 ~@2 a1@2 ~@2 a1@2 g1@2", Z: "~@2 d2@4 d1@5 ~@5",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · brass section · "horns"
const brass_section = note(`<
  ~@8 A B ~@6 C D ~@14 E D F G H D I J A D ~@8 K ~ L M N O P D ~@2 Q D ~@2 R S T U V W V X Y Z ~@14 AA D ~@2 AB D ~@2 AC
  D ~@2 AD D I G AE D AF AG AH D AI G AJ D I G AK D AL G A AM
>`.pickRestart({
  A: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [b4,d5,g5]@2", B: "~ [a4,d5,f#5]@3 ~@12",
  C: "~@6 [c#5,e5] ~ [c#5,e5,a5]@3 ~ [c#5,e5,a5] ~ [b4,d5,g5]@2, ~@3 a5 ~@4", D: "~@2 [a4,d5,f#5]@3 ~@11",
  E: "~@5 c#5 [e5,a5] ~ e5@2 ~@2 [c#5,e5,a5] ~ [b4,d5]@2, ~@7 [c#5,a5]@2 ~@4 g5@3", // A5 A Bm F#m
  F: "~ [b4,b5] [d5,d6] ~ [e5,e6] ~@2 c5, ~@6 [d5,d6] ~, ~@13 c6@2 ~", G: "~@2 [b4,b5]@3 ~@11",
  H: "~@6 [e5,a5] ~ [c#5,e5,a5]@2 ~@2 [e5,a5] ~ [b4,d5]@2, ~@3 c#5 ~@2 c#5 ~, ~@13 g5@3", // A5 A A5 Bm
  I: "~ [b4,b5] [d5,d6] ~ [e5,e6] ~ [d5,d6] [c5,c6]", J: "~@2 b5@3 ~@11, ~ b4@3 ~@12",
  K: "~@2 a#5 [b4,b5]@3 ~ d5@3 ~@6, ~ a#4 ~ d6 ~@4", // B
  L: "~@2 [b4,b5]@3 [d5,d6] ~@2 [d5,d6]@2 ~@3 [b4,b5]@3, ~@6 [d5,d6] ~", M: "~ [a4,a5]@3 ~@12",
  N: "~@3 b5@3 [d5,d6]@3 ~@7, ~ [a4,a5]@2 ~@13, ~ b4 ~@6", O: "~ [e5,e6]@2 [d5,d6] ~@4",
  P: "~@6 [c#5,e5] ~ [c#5,e5,a5]@3 [e5,a5] ~@2 [b4,d5]@2, ~@6 a5@2 ~@3 c#5@2 g5@3", // C#m A A5 Bm
  Q: "~@6 [c#5,e5] ~ [c#5,e5,a5]@3 ~ [e5,a5] ~ [b4,d5,g5]@2, ~@3 a5 ~@2 c#5 ~", // C#m A A5 G
  R: "~@6 [c#5,a5]@2 [c#5,e5,a5]@2 ~ [c#5,a5] e5 ~ [b4,d5,g5]@2, ~@6 e5 ~@9", // F#m A F#m G
  S: "~@2 [b4,d5,a5]@3 ~@6 [b4,d5,f#5]@3 ~@2", T: "~ b4 ~ c#5 d5 ~ c#5 b4", U: "~@2 e5@3 ~ b4@2 ~@8",
  V: "~ b4 c#5 ~ d5 ~ c#5 b4", W: "~@2 d5@3 ~@11", X: "~@2 [c#5,e5,a5]@2 ~@2 [c#5,e5,a5]@3 ~@7",
  Y: "~@6 [e5,a5,c#6] ~ [e5,a5,c#6]@2 ~@2 [e5,a5,c#6] ~ [d5,g5,b5]@2", Z: "~@2 [d5,f#5,a5]@3 ~@11",
  AA: "~@6 [c#5,e5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [d5,g5]@2, ~@6 a5@2 ~@6 b4 ~", // C#m A G5
  AB: "~@6 [c#5,a5]@2 [c#5,e5,a5]@2 ~@2 [e5,a5] ~ [b4,d5,g5]@2, ~@6 e5 ~@5 c#5@2 ~@2", // F#m A A5 G
  AC: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@3 [c#5,e5,a5] ~@2 b4@2, ~@13 [d5,g5]@3", // A G5
  AD: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [e5,g#5] ~ [b4,d5,g5]@2, ~@6 c#5 ~", // A E G
  AE: "~@6 [c#5,e5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [b4,d5,g5]@2, ~@3 a5 ~@4", // C#m A G
  AF: "~@2 [b4,b5]@2 [d5,d6]@2 ~@2 [e5,e6]@2 ~@3 [c5,c6]@2 ~, ~@6 [d5,d6] ~", AG: "~ [b4,b5]@3 ~@12",
  AH: "~@6 [c#5,a5]@2 [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [b4,d5,g5]@2, ~@6 e5 ~@9", // F#m A G
  AI: "~ [b4,b5] [d5,d6] ~ e5 ~@2 c5, ~@8 e6 ~@3 [d5,d6]@2 ~@2, ~@13 c6@2 ~", // B D
  AJ: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ [b4,d5]@2, ~@13 g5@3", // A Bm
  AK: "~@6 [c#5,e5,a5] ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5] ~ b4@2, ~@13 [d5,g5]@3", // A G5
  AL: "~@2 [b4,b5]@2 ~ d5@2 ~ [e5,e6]@2 ~@2 [d5,d6]@2 [c5,c6]@2, ~@2 d6 ~@5", // B E D C
  AM: "~@2 [a4,d5,f#5,d6]@3 ~ [a4,d5,f#5,d6]@2 ~@8", // D
})).s("gm_brass_section").gain(0.52)

// chords · distortion guitar · "guitar"
const distortion_guitar = note(`<
  ~ A B C D E F G H I J K L I J K H M J N O P B C Q E J C O I R S T U F K H U F S H I B N V I B W Q E F X Y E B Z AA U B
  AB H AC B AD AE AF AG AH AI AJ AK AL AM AC AN AO AP AQ AR AS AT AC AU AO V AQ AV AW AX AC AN AO AY AC AV AZ BA AC BB
  AO BC AQ AV BD BE AC BF AO BE AQ BG AW BE BH AV BI BJ BK AV BL BM BN
>`.pickRestart({
  A: "~@2 [d3,d4,f#4,a4,b4,d5] ~@5 d3@2 [d4,f#4,a4,b4,d5] ~@5", // Bm7
  B: "d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // D Bm7 D
  C: "~@2 [g3,d4,g4,b4,d5] ~@5 g3 ~ [d4,g4,b4,d5] ~@5", // G
  D: "g3 ~ [d4,g4,b4,d5] ~@3 [a3,e4,f4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  E: "~@2 [d3,d4,f#4,a4,d5] ~@5 d3 ~ [d4,f#4,a4,d5] ~@5", // D
  F: "d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // D
  G: "~@2 [g3,d4,g4,b4,d5] ~@5 g3 ~ [d4,e4,g4,a4,b4,d5] ~@5", // G Em7
  H: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  I: "~@2 [d3,d4,f#4,a4,b4,d5]@2 ~@4 d3 ~ [d4,f#4,a4,d5] ~@5", // Bm7 D
  J: "d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // Bm7 D
  K: "~@2 [g3,d4,g4,b4,d5] ~@5 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  L: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 ~@2 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  M: "~@2 [d3,d4,f#4,a4,b4,d5] ~@5 d3 ~ [d4,f#4,a4,d5] ~@5", N: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3 ~ [d4,g4,b4,d5] ~@5",
  O: "g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G
  P: "~@2 [d3,d4,f#4,a4,b4,d5] ~@5 d3 ~ [d4,f#4,a4,b4,d5] ~@5", // Bm7
  Q: "g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,a4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G
  R: "d3 ~ [d4,e4,f#4,a4,d5] ~@5 [d4,f#4,a4,d5]@2 ~@2 d3 ~ [d4,f#4,a4,d5] ~", // D
  S: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  T: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [g3,a3,d4,e4,g4,a4,b4,c#5,d5,e5]@2 ~@2", // G A Em7
  U: "~@2 [d3,d4,f#4,a4,d5]@2 ~@4 d3 ~ [d4,f#4,a4,d5] ~@5", // D
  V: "g3 ~ [d4,g4,a4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G
  W: "~@2 [g3,d4,g4,b4,d5]@2 ~@4 g3 ~ [d4,g4,b4,d5] ~@5", X: "~@2 [g3,d4,g4,a4,b4,d5]@2 ~@4 g3 ~ [d4,g4,b4,d5] ~@5",
  Y: "g3 ~ [d4,g4,b4,d5] ~@3 g3 ~ [d4,e4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~", // G Em7 G
  Z: "~@2 [g3,d4,g4,b4,d5]@2 ~@4 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  AA: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,d5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  AB: "~@2 [g3,d4,g4,a4,b4,d5]@2 ~@4 g3 ~ [d4,g4,a4,b4,d5] ~@5", // G
  AC: "~@2 [d3,d4,f#4,a4,d5]@2 ~@4 d3@2 [d4,f#4,a4,d5] ~@5", // D
  AD: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3 ~ [d4,e4,g4,a4,b4,d5] ~@5", // G Em7
  AE: "g3 ~ [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,d5,e5] ~ [g3,d4,g4,b4]@2", // G A G
  AF: "~@5 [b3,d4,f#4] ~@2", AG: "~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@2", AH: "~@2 [b3,e4,g#4]@3 ~@5 [b3,e4,g#4]@2 ~@4",
  AI: "~@2 [b3,e4,g#4]@2 ~@6 [b3,e4,g#4] ~@5", AJ: "~@2 [g3,b3,d4,g4]@3 ~@5 [g3,b3,d4,g4]@2 ~@4",
  AK: "~ [g3,b3,d4,g4] ~@3 [g3,b3,d4,e4,g4] ~@2", AL: "~@2 [e3,a3,c#4,e4] ~@3 [e3,a3,c#4,e4]@2 ~@8",
  AM: "~@6 [e3,a3,c#4] ~ [e3,a3,c#4]@2 ~@2 [e3,a3,c#4] ~ [e3,a3,c#4]@2", // A
  AN: "d3@2 [d4,f#4,a4,d5] ~@3 d3@2 [d4,f#4,a4,d5] ~@3 d3@2 [d4,f#4,a4,d5] ~", // D
  AO: "~@2 [g3,d4,g4,b4,d5] ~@5 g3@2 [d4,g4,b4,d5] ~@5", // G
  AP: "g3@2 [d4,g4,b4,d5] ~@3 g3 ~ [d4,g4,b4,d5] ~@3 g3@2 [d4,e4,g4,b4,d5] ~", // G Em7
  AQ: "~@2 [d3,d4,f#4,a4,b4,d5]@2 ~@4 d3@2 [d4,f#4,a4,d5] ~@5", // Bm7 D
  AR: "d3@2 [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // D
  AS: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3@2 [d4,g4,b4,d5] ~@5", // G
  AT: "g3@2 [d4,g4,b4,d5] ~@3 g3@2 [d4,g4,b4,d5] ~@3 g3@2 [d4,g4,b4,d5] ~", // G
  AU: "d3@2 [d4,f#4,a4,d5] ~@3 d3@2 [d4,f#4,a4,b4,d5] ~@3 d3@2 [d4,f#4,a4,d5] ~", // D Bm7 D
  AV: "d3@2 [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3@2 [d4,f#4,a4,d5] ~", // D
  AW: "~@2 [g3,d4,g4,b4,d5] ~@5 g3@2 [d4,g4,a4,b4,d5] ~@5", // G
  AX: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 ~@2 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  AY: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,e4,g4,b4,d5]@2", // G A Em7
  AZ: "~@2 [g3,d4,g4,a4,b4,d5] ~@5 g3@2 [d4,g4,a4,b4,d5] ~@5", // G
  BA: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  BB: "d3@2 [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3@2 [d4,e4,f#4,a4,d5] ~", // D
  BC: "g3@2 [d4,g4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 ~@2 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5] ~", // G A G
  BD: "~@2 [g3,d4,g4,b4]@3 ~@3 g3@2 [d4,g4,b4,d5] ~@5, ~@2 d5 ~@13", // G
  BE: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5] ~", // G A G
  BF: "d3 ~ [d4,f#4,a4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~@3 d3@2 [d4,f#4,a4,d5] ~", // D
  BG: "d3@2 [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,b4,d5] ~@3 d3 ~ [d4,f#4,a4,d5] ~", // Bm7 D
  BH: "~@2 [d3,d4,f#4,a4,d5]@2 ~@4 d3@2 [d4,f#4,a4,b4,d5] ~@5", // D Bm7
  BI: "~@2 [g3,g4,b4]@3 ~@3 g3@2 [d4,g4,b4,d5] ~@5, ~@2 [d4,d5] ~@13", // G D
  BJ: "g3 ~ [d4,g4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5] ~@3 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5]@2", // G A G
  BK: "~@2 [d3,d4,f#4,a4,b4,d5]@3 ~@3 d3@2 [d4,f#4,a4,b4,d5] ~@5", // Bm7
  BL: "~@2 [g3,d4,g4,a4,b4]@3 ~@3 g3@2 [d4,g4,a4,b4,d5] ~@5, ~@2 d5 ~@13", // G
  BM: "g3@2 [d4,g4,a4,b4,d5] ~@3 [a3,e4,a4,c#5,e5] ~ [a3,e4,a4,c#5,e5]@2 ~@2 [a3,e4,a4,c#5,e5] ~ [g3,d4,g4,b4,d5] ~", // G A G
  BN: "~@2 [d3,d4,f#4,a4,c5,d5]@2 ~@2 [d3,d4,f#4,a4,b4,d5]@3 ~@7", // D7 Bm7
})).s("gm_distortion_guitar").gain(0.41)

// chords · rock organ · "organ"
const rock_organ = note(`<
  ~ A B@2 C D E F G D H F I D J F K D H F L D M F I D H F N D O@2 P D H F Q D M F I D H R S D T F U D V F W D H F X D H
  F Y D M F I Z@2 AA@2 AB@2 AC AD AE H F U D AF F U D H F AG D AH F K D M F Y D M F L D H F Y D H F Y D M F Y AI AF AJ Y
  D AH F L D H F Y AK
>`.pickRestart({
  A: "~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~@2, ~@2 b4 ~@13", // D
  B: "[~ [a4,f#5] ~@2 [a4,d5,f#5]@2 ~ [g4,c5,e5]@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@2, ~@2 d5 ~@29]/2", // D C G
  C: "~@2 [g4,b4] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ a4@2 [c#5,e5]@2, ~ d5 ~@6", D: "~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~@2",
  E: "~@2 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@5 ~ [g4,c5,e5]@2", F: "~ [g4,b4,d5] ~@3 [g4,b4,d5] ~@2",
  G: "~@2 [g4,b4] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5]@4 a4@2 [c#5,e5]@2, ~ d5 ~@6", // G A C#m
  H: "~ [a4,d5,f#5] ~@2 [a4,d5,f#5]@2 ~ [g4,c5,e5]", // D C
  I: "~@2 [g4,b4] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2, ~ d5 ~@6", // G A
  J: "~ [d5,f#5] ~@2 [a4,d5,f#5]@2 ~ [g4,c5,e5], ~@2 a4 ~@13", // D C
  K: "~@2 [g4,b4] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2, ~ d5 ~@6", // G A
  L: "~@2 [g4,d5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2, ~@2 b4 ~@13", // G5 A
  M: "~@2 [a4,d5,f#5]@2 ~@5 [a4,d5,f#5]@4 ~ [g4,c5,e5]@2", // D C
  N: "~@2 [g4,d5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~@3 [a4,c#5,e5]@2, ~@2 b4 ~@13", // G5 A
  O: "[~@2 [a4,d5]@2 ~@3 f#5 ~ [a4,d5,f#5]@5 ~ g4@2 ~ [g4,b4,d5]@2 ~@6 [g4,b4,d5]@2 ~@4, ~ f#5@2 ~@11 [c5,e5]@3 ~@15]/2", // D5 D G C
  P: "~@2 [g4,d5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2, ~@2 b4 ~@13", // G5 A
  Q: "~ [g4,b4,d5]@3 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2", // G A
  R: "~ [g4,b4,d5] ~@3 [b4,d5] ~@2, ~@10 g4 ~@5", S: "~@2 [g4,b4] ~@5 [a4,c#5,e5]@4 ~@2 [a4,c#5,e5]@2, ~ d5 ~@6",
  T: "~@2 [d5,f#5]@2 ~@5 [a4,d5,f#5]@4 ~ [g4,c5,e5]@2, ~@2 a4 ~@13", U: "~ [g4,b4,d5] ~@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5]",
  V: "~@2 [a4,d5,f#5]@2 ~@5 a4@4 ~ [g4,c5,e5]@2, ~@2 [d5,f#5] ~", // D C D
  W: "~@2 [g4,b4,d5]@2 ~@4 [a4,c#5,e5]@3 ~@3 [a4,c#5,e5]@2", // G A
  X: "~@2 [g4,b4] ~@3 e5@2 e5@3 ~@3 [a4,c#5,e5]@2, ~@2 d5@2 ~@2 [a4,c#5]@5 ~@5", // G A
  Y: "~@2 [g4,b4,d5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2", // G A
  Z: "[~@2 [b4,d5,f#5]@16 ~ [b4,d5,b5]@13, ~@9 f#5@7]/2", AA: "[~@2 [b4,e5,g#5]@22 ~ [b4,e5,a5]@5 [b4,e5,g#5]@2]/2",
  AB: "[~@2 [b4,d5,g5]@29 ~]/2", AC: "~@2 a5 [e6,a6]@2 ~ [a5,c#6,e6,a6]@2 ~@8, ~ c#6 ~@6",
  AD: "~@2 [a5,c#6,e6,a6] ~@2 [a5,e6,a6]@2 ~ [a5,c#6,e6,a6]@2 ~@3 e6@2 ~, ~@5 c#6 ~@6 [a5,f#6]@3 ~", // A A5 A D
  AE: "~@2 [a5,d6,f#6]@4 [e5,f5,g5] d5 ~@2 [a4,d5,f#5]@2 ~@4", // D Em D
  AF: "~@2 [a4,d5,f#5]@2 ~@5 [a4,d5,f#5]@3 ~@2 [g4,c5,e5]@2", // D C
  AG: "~@2 [g4,b4,d5]@3 ~@3 [a4,c#5,e5]@4 ~@2 [a4,c#5,e5]@2", // G A
  AH: "~@2 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@3 ~@3 [g4,c5,e5]@2", AI: "~@2 [a4,d5,f#5]@3 ~@5 [a4,d5,f#5]@2 ~@4",
  AJ: "~@2 [g4,b4,d5]@2 ~@6 [g4,b4,d5]@3 ~@3", AK: "~ [d5,f#5,a5,d6] ~ [d5,f#5,a5,d6]@2 ~@3",
})).s("gm_rock_organ").gain(0.54)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B
  C B C B C B A B C B C B D E A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C B C B A B C B C
  B C B E
>`.pickRestart({
  A: "~ x ~@6", B: "x!2 ~ x ~@4", C: "x!2 ~@6", D: "x ~@6 x", E: "~ x ~ x ~@4",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x ~ x ~ x] ~@121>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ [~@5 x ~@2]!70 [~@2 x!2 ~@3 x ~@8] [x ~@2 x!2 ~ x!2] [~@5 x ~@2]!48 [~ x ~@14]>")
  .gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~@5 x!3] x ~@112>").gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@8 [~@2 x ~@2 x!2 ~ x ~@7] ~@62 [~@11 x ~ x ~@2] ~@50>").gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x!7] [x!8]!69 x [~@6 x!2] [x!8]!47 [x!6 ~@2] ~>").gain(0.72)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [~ x!7] [x!8]!119 [x!3 ~@5]>").gain(3.24)

stack(bass, brass_section, distortion_guitar, rock_organ, kick, rim, snare, mid_tom, high_tom, tambourine, cabasa)