Strudelify

Benny the Bouncer

Emerson, Lake & Palmer

KeyD majorTempo150 bpm
0:00/0:00
// Benny the Bouncer — Emerson, Lake & Palmer
// 150 bpm, 4/4, key D 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 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// chords · piano · "Right Hand"
const piano = note(`<
  A B C D C D E F C D G H@2 D C D C D E F C D G H@2 D I J K L I J M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI
  AJ AK AL I J K L I J M N C D C D E F C D G H@2 AM ~@2 AN AO ~ AP AQ AR ~
>`.pickRestart({
  A: "[a3,d4]@2 d3@2 [g3,b3]@2 [f#3,a3]@2 b3 [f#3,a3] d3@2 b2@2 d3@2", B: "[a3,f#4] [g#3,f4] [g3,e4] [f#3,a3,d4]@5",
  C: "d3!2 [d3,a3,d4]!2 [d3,g3,b3]!2 [e3,b3,e4]!2", // D5 G E5
  D: "[e3,a3,c#4]!2 [a3,e4,a4] [a3,d4,f#4]@2 [a3,d4,f#4] [a3,c#4,e4] [a3,d4,f#4]", // A A5 D A D
  E: "~ d4 [c#4,a#4] [c4,a4] [b3,g4]!2 [c4,a4] [c#4,a#4]", F: "[d4,b4]!2 [c#4,a#4] [c4,a4] [b3,g4]!2 [a3,f4] [g3,e4]",
  G: "e4@2 g4 e4 d4 c#4 a3!2, a3@3 ~",
  H: "[g#3 d4 g#3@2 g3 d4 g3 [f#3,d4]@2 d3 [d3,a3,d4]!2 [d3,g3,b3]!2 [e3,b3,e4]!2]/2", // D D5 G E5
  I: "[b3,f4]!2 c4 d4 [b3,f4]!2 c4 d4", J: "[f3,c4,f4] [f3,a#3,d4]@2 [c3,g3,c4] [c3,f3,a3]@2 g#3 g3",
  K: "c#3 d3!3 c#3 d3!3", L: "c#3 d3!2 c#3 d3!2 c#3 d3", M: "[a3,c#4,a4] [a3,d4,a4]",
  N: "[a3,d#4,a4]@2 ~ g4, ~ [a3,e4,a4]", O: "[g#4,f5] [a4,f#5] [g#4,f5] [g4,e5] [f4,d5] d4 [f#4,a4] [d4,a4]",
  P: "f#5@2 a5@2 b5@2 d5@2 ~@2 [d5,f5] c5 a4 g#4 g4 f4", Q: "d4@4 f4@3 d4 [g4,b4]@4 ~@2 d4 f4",
  R: "[g4,b4]@2 [g4,b4] f4 d4 c4 a3 g3 f#3 a3 b3 c#4 e4 d4 c#4 d4", // G
  S: "[b3,f4]@2 [b3,f4]@2 [c4,f4]@2 [c#4,f4]@2 [d4,f4]@2 [g3,f4]@2 ~@2 d5 e5", // Bdim F5 C# Dm G7
  T: "f5@2 g5 f5 e5 d5 c#5 e5 d5 b4 g4 d4 [g4,d5] g#4 g4 f4", U: "d4@2 d4@2 ~@2 d6 d5 d6 d5 d6 d5 d6 d5 d6 d5",
  V: "[c5,c6] [a4,a5] [g4,g5] [f4,f5] [d4,d5]!2 ~ [g4,d5]", W: "~ g#4 g4 f4 g4@2 [a4,d5]@2 [f4,d5]@2 d4@2 c4@2 a3@2",
  X: "g#3@2 d4@2 e4@2 d4@2 [g3,f4]@2 d4 c4 a3@2 g3@2", Y: "f3 d4 [a3,d4]!2 [g3,b3]!2 [b3,e4]!2",
  Z: "[c#4,e4]@2 [c#4,e4]@2 [e4,a4]@2 [d4,f#4]@2 ~@2 a5 a#5 b5 d6 e6 d6", // C#m A5 D
  AA: "[a5,f6] d6 e6@2 [f5,d6]@2 d5 [g5,b5]@3 [f5,a5]!2 d5 c5 a4@2", // Dm G F
  AB: "[a4,f5]@2 d5@2 [g4,e5]@2 c#5@2 [f#4,d5]@3 a4 c#5 d5 c#5 b4", // Dm C D
  AC: "a4 g4 e4 f4 f#4 a4 b4 c#5 e5 c#5 d5 e5 f5 f#5 b5 a#5", AD: "a5 b5 c6 d6 e6 g6 f6 e6 f6 d6 a5 a#5 b5 d6 e6 d6",
  AE: "a6@2 f#6 d6 [b5,c#6] a5 c6 a5 b5 g6 ~@2 g6@2 f6 g6", // Bsus2
  AF: "[g6,d7] g#6 g6 f6 d6@2 [g6,d7] g#6 g6 f6 d6@2 [g6,d7] g#6 g6 f6", // G5
  AG: "[d6,f6] c6 a5 [g#5,d6] g5 f5 d5 c5 a4 g#4 g4 f4 d4 a4 f5 [a4,f5]", AH: "[a4,f5]!16",
  AI: "[a4,a5,f6] f5 [g5,e6] e5 [f5,d6] d5 [e5,c6] c5 [d5,b5] b4 [c5,a5] a4 [b4,g5] g4 [a4,f5] f4", // Dm C Dm C G F Em Dm
  AJ: "[g4,e5] e4 [f4,d5] d4 [e4,c5] c#4 [d4,b4] b3 [c4,a4] a3 [b3,g4] g3 [a3,f4] f3 [g3,e4] e3", // C Dm C G F Em Dm C
  AK: "[f3,d4] d3 [a3,d4]!2 [g3,b3]!2 [b3,e4]!2", AL: "[a3,c#4] a3 [e4,a4] [d4,f#4]@2 [d4,f#4] [c#4,e4] [d4,f#4]",
  AM: "[e3,a3,c#4]!2 [a3,e4,a4] [a3,d4,f#4]@3 ~@2", // A A5 D
  AN: "[a4,d5]@2 d4@2 [g4,b4]@2 [f#4,a4]@2 b4 [f#4,a4] d4@2 [b3,d4]@2 [a3,d4]@2", AO: "g#3 d4 [g3,d4] [f#3,d4]@5",
  AP: "[g5,b5,d6,g6]@2 [g5,b5,d6,g6] [f5,f6]@2 ~ [d5,d6]@2 [e5,e6]@3 a4@2 ~ [g#4,g#5]@2, ~@5 [e5,e6]@2 ~@6 [a4,a5]@2 ~", // G F D E G# E A
  AQ: "~ [f#4,f#5]@5 [d5,d6]@3 [d5,d6]@2 ~ [d5,d6] ~ [d5,d6]@2, [g4,g5] ~@5 b5 ~", // F# D G
  AR: "~ [f#5,f#6]@3 [d5,d6]@3 a4@2 [c#4,g4,b4]@3 [d4,f#4,d5]@3 ~, [e5,e6] ~@7", // F# D C#m7b5 D E
})).s("gm_piano").gain(0.36).pan(0.7)

// other · piano · "Left Hand"
const piano_2 = note(`<
  ~ A B C B C D@2 B C E F B C B C B C D@2 B C E F B C G H I J G H K L B M B N D@2 B O P Q B M B M B N D@2 B O C Q B C G
  H I J G H R S B C B C D@2 B C E F B T ~@3 U V W X Y@2
>`.pickRestart({
  A: "a1 b1 c#2 d2@3 d2@2", B: "d1 d2 f#1 f#2 g1 g2 g#1 g#2", C: "a1 a2 c#2 c#3 d2 d3 d2 d3",
  D: "g1 g2 a1 a2 a#1 a#2 b1 b2", E: "a1 a2 a1 a2 a1 a2 a1 a2", F: "e1 e2 e1 e2 a1 a2 a1 a2",
  G: "[g2,d3]!2 a#2 b2 [g2,d3]!2 a#2 b2", H: "a2 a#2@2 e2 f2@2 e2 a2", I: "c#2 d2!3 c#2 d2!3",
  J: "c#2 d2!2 c#2 d2!2 c#2 d2", K: "[a1,a2] [b1,b2]", L: "[c2,c3] [c#2,c#3]", M: "a1 a2 c#2 c#3 d2 d3 c#1 c#2",
  N: "a1 a2 c#2 c#3 d2 d3 f#1 f#2", O: "a1 a2 c#2 c#3 d2 d3 g#1 g#2", P: "a1 a2 b1 b2 c2 c3 d2 d3",
  Q: "e2 e3 e2 e3 a1 a2 a1 a2", R: "[a2,a3] [b2,b3]", S: "[c3,c4] [c#3,c#4]", T: "a1 a2 [c#2,c#3] [d2,d3]@3 ~@2",
  U: "e2@2 a1 d2@3 d1@2", V: "~@15 g2",
  W: "b3@3 [g3,b3,d4]@2 ~ b3@3 [g#3,b3,d4]@3 ~@2 [c#2,c#3]@2, ~@6 g#2 ~@6 [d2,d3]@2 ~", // G G#dim C# D
  X: "~ [b1,b2]@8 e2@3 [g#3,b3,d4]@3 ~, [c2,c3] ~@7", Y: "[a2@3 [g3,c#4,e4]@3 [d3,d4]@3 a2@3 d2@3 d1@3 ~@14]/2",
})).s("gm_piano").gain(0.36).pan(0.3)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@2 A B C D E F A G H I C J C K A L M N A L O P C J Q R S T Q R U ~@25 V R W X V R Y Z AA B AA AB AC AD A AE O AF C AG
  ~@9
>`.pickRestart({
  A: "d2 ~ d2@2 d2 ~ d2 d1 g2 ~ g2 ~ e2 ~ e2 ~", B: "a1 a0 a1 ~ a1 ~ a1 ~ d2 ~ d2@2 d2 ~ d2 d1",
  C: "d2 d1 d2 ~ d2 ~ d2 ~ g2 ~ g2 ~ e2 ~ e2 ~", D: "a1 ~ a1@2 a1 ~ c#2 ~ d2 ~ d2@2 d2 ~ f#2 ~",
  E: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 g1", F: "g2 ~ g2 ~ g2 ~ g2 g1 g2 ~ g2 ~ g2 ~ c#2 ~",
  G: "a1 ~ a1@2 a1 ~ a1 a0 d2 ~ d2@2 d2 ~ g#1 ~", H: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 d#2 ~",
  I: "e2 ~ e2@2 e2 ~ g#1 ~ a1 ~ a1@2 a1 ~ a1 a0", J: "a1 ~ a1@2 a1 ~ a1 a0 d2 ~ d2@2 d2 ~ d2 d1",
  K: "a1 a0 a1 ~ a1 ~ a1 ~ d2 ~ d2@2 d2 ~ c#2 ~", L: "a1 a0 a1 ~ a1 ~ a1 ~ d2 d1 d2 ~ d2 ~ d2 ~",
  M: "g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 g1", N: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ c#2 ~",
  O: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 a0 a1 a0 a1!2", P: "e2 e1 e2 ~ e2 ~ e2 ~ a1 a0 a1 ~ a1 ~ a1 ~",
  Q: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 g1 g2 g1 g2!2", R: "f2 ~ f2 ~ a#1 ~ a#1 ~ c2 ~ c2 ~ f2 ~ f2 ~",
  S: "d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 d1", T: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ f#2 ~",
  U: "a1 a0 a1 ~ a1 ~ a1 ~ b1 b0 b1 ~ b1 ~ b1 ~", V: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  W: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2", X: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~",
  Y: "a1 a0 a1 ~ a1 ~ a1 ~ b1 ~ b1@2 b1 ~ b1 ~", Z: "c2 ~ c2@2 c2 ~ c2 c1 c#2 ~ c#2@2 c#2 ~ c#2 ~",
  AA: "d2 ~ d2@2 d2 ~ f#2 ~ g2 ~ g2 ~ e2 ~ e2 ~", AB: "a1 a0 a1 ~ a1 ~ a1 ~ d2 ~ d2@2 d2 ~ f#2 ~",
  AC: "g2 ~ g2@2 g2@2 g2 g1 g2 ~ g2 ~ g2 ~ g2@2", AD: "g2 ~ g2 ~ g2 ~ g2 g1 g2 ~ g2 g1 g2 ~ g2 ~",
  AE: "a1 ~ a1@2 a1 ~ c#2 ~ d2 ~ d2@2 d2 ~ d2 d1", AF: "e2 ~ e2@2 e2 ~ e2 e1 a1 ~ a1@2 a1 ~ a1 a0",
  AG: "a1 ~ a1@2 a1 ~ a1 a0 d2 d1 d2 ~ d2 ~ d2 ~",
})).s("gm_fretless_bass").gain(0.36).pan(0.3)

// bass · acoustic bass · "Bass"
const bass_2 = note("<~@33 A B C D E F G H C I J D K B L D E M N D C O P B Q ~@29>".pickRestart({
  A: "c2 ~ c2@2 c2 ~ c2 c1 c#2 c#1 c#2 ~ c#2 ~ c#2 ~", B: "d2 ~ d2@2 d2 ~ d2 d1 g2 ~ g2 ~ e2 ~ e2 ~",
  C: "a1 a0 a1 ~ a1 ~ a1 ~ d2 ~ d2@2 d2 ~ d2 d1", D: "d2 ~ d2@2 d2 ~ f#2 ~ g2 ~ g2 ~ e2 ~ e2 ~",
  E: "a1 a0 a1 ~ a1 ~ a1 ~ d2 ~ d2@2 d2 ~ f#2 ~", F: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  G: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2@2 g2 ~ g2 ~", H: "d2 d1 d2 ~ d2 ~ d2 ~ g2 ~ g2 ~ e2 ~ e2 ~",
  I: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2", J: "e2 ~ e2@2 e2 ~ e2 e1 a1 ~ a1@2 a1 ~ c#2 ~",
  K: "a1 ~ a1@2 a1 ~ a1 a0 d2 d1 d2 ~ d2 ~ d2 ~", L: "a1 a0 a1 ~ a1 ~ a1 ~ d2 d1 d2 ~ d2 ~ d2 ~",
  M: "g2 ~ g2@2 g2 ~ g2@2 g2 ~ g2@2 g2 ~ g2@2", N: "g2 ~ g2@2 g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 ~",
  O: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 d#2 ~", P: "e2 e1 e2 ~ e2 ~ e2 ~ a1 ~ a1@2 a1 ~ c#2 ~",
  Q: "a1 ~ a1@2 a1 ~ c#2 ~ d2 ~ d2@2 d2 ~ f#2 ~",
})).s("gm_acoustic_bass").gain(0.36).pan(0.3)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  ~@2 A B C D E@2 C F G H I F J K L M N O P Q R S P T U V W@2 X V Y Z ~@24 U V AA@2 X V AB AC AD AE A D AF@2 I AG G AH I
  AI ~@9
>`.pickRestart({
  A: "[d3,a3]@2 ~@2 [d3,a3]@2 ~@2 [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~, ~@3 d2@2 ~@11", // D5 G5 E5
  B: "~@2 [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2 [d3,d4] ~@3 a3@2 [a3,d4]@2, ~@4 a3 d3@3", // A5 D D5
  C: "[d3,d4] ~@3 a3@2 [a3,d4]@2 [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~, a3 d3@3 ~@4", // D D5 G5 E5
  D: "[a2,a3] ~@3 e3@2 [e3,a3]@2 [d3,d4] ~@3 a3@2 [a3,d4]@2, e3 a2@3 a3 d3@3", // A A5 D D5
  E: "[~@2 [g2,d3,g3] ~@3 d2 ~ [g2,d3,g3]@4 d2@2 [g2,d3,g3]@4 d2 ~ g2@2 d2@2 [g2,d3]@2 d2@2 g2@2 d3 ~]/2", // G5
  F: "~ [a2,e3,a3] ~ [a2,e3,a3] [d3,a3]@3 d2", G: "~@2 [a2,d#3,e3] ~@3 a2@2 e3@6 ~@2",
  H: "[e3,b3]@6 e2@2 [a2,g3] ~@3 e3@2 [e3,a3]@2, ~@2 [e3,a3] ~, ~@5 a2@3", // E5 A7 A5
  I: "[d3,a3]@6 d2@2 [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~", // D5 G5 E5
  J: "d4 a3 d3 ~ a3 d3 d4 a3 [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~, ~@3 d4@2 ~@11", // G5 E5
  K: "a3 e3 a2 ~ e3 a2 a3 e3 [d3,a3,d4] ~ d2@2 [d3,a3,d4]@2 [d3,a3,d4] ~, ~@3 a3@2 ~@11", // D5
  L: "[d3,a3,c#4,d4]@2 d2@2 [d3,a3,d4]@2 ~@2 [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~", // Dmaj7 D5 G5 E5
  M: "[a2,e3,g#3,a3] ~ [a2,e3,a3] ~ [d3,a3,d4]@3 d2", // Amaj7 A5 D5
  N: "g2 ~ [g2,d3]@2 ~@4 d3@4 g2 ~ [g2,d3]@2, ~@6 g2@5 ~@5, ~@8 a2 ~@7", // G5
  O: "~ g3 d3 ~@2 d3 ~@5 d3 g2 g3 ~ g2, ~@3 g2@2 ~ g2@2 d3@2 g3@2 ~@2 d3@2, ~@4 g3@2 ~ g3@2 g2@2 ~@5",
  P: "[d3,a3,d4] ~ d2@2 [d3,a3,d4]@2 [d3,a3,d4] ~ [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~", // D5 G5 E5
  Q: "[a2,e3,a3] ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~ [d3,a3,c#4,d4]@2 d2@2 [d3,a3,d4]@2 ~@2", // A5 Dmaj7 D5
  R: "~@4 e3@2 a2@3 ~ a2 ~ a2 ~ e3@2, a2@6 [e3,a3]@7 ~@3", // A5
  S: "[e3,b3,e4] ~ e2@2 [e3,b3,e4]@2 [e3,b3,e4] ~ [a2,e3,a3] ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~", // E5 A5
  T: "[a2,e3,g#3,a3] ~ [a2,e3,a3] ~ [d3,a3,c#4,d4] d2 [d3,a3,d4] ~", // Amaj7 A5 Dmaj7 D5
  U: "g2@2 d3 ~ d3@2 g2 ~ g2 ~ g2 ~@2 d3!2 ~, ~@4 g2 ~@3 d3@4 g2@2 ~@2",
  V: "[f3,c4,f4]@3 ~ [a#2,f3,a#3]@3 ~ [c3,g3,c4]@3 ~ [f3,c4,f4]@3 ~", // F5 A#5 C5 F5
  W: "[~@2 d2@2 ~@2 d2@2 ~@4 b3 ~ a3@3 ~ [d3,a3,d4] ~@9 [d3,d4]@3 ~, ~@4 d3@6 d2@10 ~@2 d2@4 d2@5 ~, ~@8 a3@4 d3@5 ~@7 [d3,a3]@4 a3 ~@3]/2", // D5 D D5
  X: "g2@2 [d3,g3] ~ [g2,d3,g3]@2 g2 ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  Y: "[a2,e3,a3]@3 ~ [b2,f#3,b3]@3 b1", Z: "c4 g3 c3 ~ g3 c3 c4 g3 [c#3,e3,a3]@6 c#2@2, ~@3 c4@2 ~@11",
  AA: "[~@2 [d3,a3] ~ [d3,a3]@2 d2@2 [d3,a3] d2 [d3,a3]@2 ~@2 [d3,a3]@3 ~ [d3,a3]@2 ~@2 [d3,a3]@3 d4 a3 ~ d4 a3 ~ a3, ~@3 d2@2 d2@3, ~@27 d3@2 ~ d3@2]/2", // D5
  AB: "[a2,e3,a3] ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~ [b2,f#3,b3]@6 b1@2", // A5 B5
  AC: "[c3,g3,c4] ~ c2@2 [c3,g3,c4]@2 [c3,g3,c4] ~ a3 e3 c#3 ~ e3 c#3 a3 e3, ~@11 a3@2 ~@3", // C5
  AD: "~@2 [d3,a3,d4]@2 ~@2 [d3,a3,d4]@2 [g2,d3,g3]@3 ~ [e3,b3,e4]@3 ~", // D5 G5 E5
  AE: "[a2,e3]@6 ~@2 [d3,d4] ~@3 a3@2 [a3,d4]@2, ~@4 a3 d3@3", // A5 D D5
  AF: "[~@3 g2 [g2,d3]@2 ~@2 g2 ~ [g2,d3]@2 g2 ~ [g2,d3]@4 ~@8 d3@2 g2@2 [g2,d3]@2, ~@18 g3@4 g2@5 ~@5, ~@20 d3@4 g3@5 ~@3]/2", // G5
  AG: "[a2,e3]@2 ~@2 e3@2 ~@2 [d3,d4] ~@3 a3@2 [a3,d4]@2, ~@3 a2@2 ~@3 a3@2 d3@6", // A5 D D5
  AH: "~ [e3,b3,e4] ~ [e3,b3,d4,e4] [a2,e3]@3 ~", AI: "~ [a2,e3,a3] ~ [a2,e3,a3] [d3,a3] ~ [d3,a3] ~, ~@11 d2@2 ~@3",
})).s("gm_electric_guitar_muted").gain(0.31).pan(0.7)

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

// drums · rim
const rim = s("rim").struct("<~ [x!4] ~@85>").gain(0.26)

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

// drums · low tom
const low_tom = s("lt").struct("<~@13 A ~@11 B ~@7 A ~@11 C ~@19 D ~@13 A ~@7>".pickRestart({
  A: "~@7 x", B: "~@3 x!5", C: "~@3 x", D: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@13 [x!4] ~@19 [x!4] ~@45 [x!4] ~@7>").gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A ~@19 A ~@11 B ~@19 C ~@13 A ~@7>".pickRestart({
  A: "~@13 x ~@2", B: "~@3 x ~@4", C: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@11 ~@12 B ~@40 A@7 C A@3 C ~@9>".pickRestart({
  A: "x!4", B: "x", C: "x ~ x ~ x ~@2 x",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@45 x ~@41>").gain(0.41)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@14 A@10 B ~ A@2 C A@3 C ~ A@2 D A C D A@2 C A@2 ~ A E A E D A B A@4 ~ A@2 C A@3 C ~@13 A ~ F G ~@5
>`.pickRestart({
  A: "x!4", B: "x ~ x!3 ~ x ~", C: "x ~@3 x ~@3 x ~ x!3 ~ x!2", D: "x ~@3 x ~ x!3 ~@3 x ~@3",
  E: "x ~@3 x ~@2 x!2 ~@3 x ~@3", F: "x", G: "~@3 x",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@14 A@19 ~ A@11 ~ A@11 ~ A@7 ~@13 A ~ B C ~@5>".pickRestart({
  A: "x!8", B: "x", C: "~@3 x",
})).gain(0.31)

// … 4 more lines

More by Emerson, Lake & Palmer