Strudelify

I'm Just a Singer (In a Rock and Roll Band)

The Moody Blues

KeyB minorTempo150 bpm
0:00/0:00
// I'm Just a Singer (In a Rock and Roll Band) — The Moody Blues
// 150 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 154 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// bass · electric bass finger
const bass = note(`<
  ~@7 A@3 B A@3 B A@3 B C@2 D E A@3 B A@3 B A@3 B C@2 D E A@3 B F G H I J K H I L M N O P A@3 B A@3 B A@3 B C@2 D E A@3
  B A@3 B A@3 B C@2 D E A@3 B F G H I J K H I L M N O P A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3
  B Q R@3 S
>`.pickRestart({
  A: "b1 ~ b1@2 b2@2 a2@3 ~ f#2@2 e2@2 f#2@2", B: "b1 ~ b1@2 b2@2 a2@4 f#2@2 e2@2 f#2@2",
  C: "[e1@4 e2@2 e1@2 e2@2 b1@2 e1@2 e2@4 e1@2 e2@2 d2@2 b1 ~ e1@2 e2@2 b1@2]/2", D: "f#1@2 f#2 f#1 f#2 c#2 f#1 f#2",
  E: "~@2 f#2@2 f#1@2 f#2@2 c#2@2 f#1@2 f#2@2 f#1 ~", F: "f#1@3 ~ f#1@3 ~ f#1@3 ~ f#1@2 c#2@2",
  G: "f#2@3 ~ f#2@3 ~ f#2@2 f#1@2 f#2@2 f#1 ~", H: "e1@5 ~ e1@2 e2@2 e1@2 e2@2 b1@2",
  I: "a1@5 ~ a1@2 ~@2 a1@2 e2@2 a1@2, ~@2 a2 ~", J: "f#2@5 ~ f#2@2 c#2@2 f#1@2 f#2@2 c#2@2",
  K: "b1@5 ~ b1 ~ b1@2 f#1@2 b1@2 f#1 ~", L: "b1@3 ~ b1@3 ~ b1@2 f#1@2 b1@2 f#1 ~",
  M: "f#1@4 f#2@3 ~ f#2@2 c#2@2 f#1@2 f#2 ~", N: "b1@3 ~ b1@3 ~ b1@2 f#1@2 b1@2 f#1@2",
  O: "f#2@3 ~ f#2@3 ~ f#2@2 c#2@2 f#1@2 f#2@2", P: "b1 ~ b1 ~ b1 ~ b1@2 ~@8",
  Q: "b1@3 ~@2 b1 [b1,b2]@2 ~@3 b2 b1 ~@2 b1, ~@4 b2@2 ~@2 b1@2 b1@2 ~ b1@2 ~, ~@9 b2@2 ~ b2@2 b2@2", // B
  R: "[b2 ~@3 b1 b2 ~@10 b2@2 ~@4 b2@2 b1@2 ~@3 b2@2 ~@2 b2@9 ~@6, b1@2 b1@2 ~ b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 ~ b1@2 b1@4 ~@3 b1@4 b1@16 ~, ~ b2@2 b2@2 ~ b2@2 b2@2 b2@2 b2@2 b2@2 ~@3 b2@3 ~@4 b2@2 ~@20]/3",
  S: "~@8 b1@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.36).pan(0.6)

// chords · piano
const piano = note(`<
  ~@19 A@2 B@2 C D E F ~@8 A@2 B@2 C D E F G H I J K L I J M N O P Q C D E F C D E F C D E F A@2 B@2 C D E F C D E F C D
  E F A@2 B@2 C D E F G H I J K L I J M N O P Q C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D E F
  C D E F C D E F R@4 S
>`.pickRestart({
  A: "[[e2,d4,g#4]@31 ~, b4@7 ~@25]/2", // E7
  B: "[f#2@12 f#2@4 [f#2,f#3]@4 [f#2,f#3]@4 ~@3 [b5,c6] [f#3,g5,a5] [d5,e5,f5] [b4,c5] [g4,a4], [c#4,f#4,a#4]@27 d6@2 ~@3, ~@12 [f#2,f#3,c7]@2 f#2 ~, ~@25 [g6,a6,b6]@4 ~@3, ~@26 [e6,f6]@3 ~@3]/2", // F# Cmaj7 F#m Dm Cmaj7 Gsus2 F# F#dim …
  C: "[d4,f#4,b4]!8", // Bm
  D: "[d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4] ~ [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2", // Bm
  E: "[d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4] ~ [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2", // Bm
  F: "[d4,f#4] ~ [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4] ~ [d4,f#4,b4]@2 [d4,f#4,b4]@2 [d4,f#4,b4] ~, b4 ~@7", // D Bm
  G: "[c#3,f#3,a3,c#4,e4]!2", H: "[c#4,f#4]@4 [f#3,c#4,f#4,a#4]@3 ~, f#2@7 ~", I: "[g3,b3]@8 [g3,b3]@7 ~, [e2,d3]@15 ~",
  J: "a3@2 a3@2 e4@2 [b3,e4] ~, [a2,e3]@7 ~, [c#4,e4]@4 [a3,c#4]@3 ~", // E5 A5 C#m A
  K: "[c#4,f#4]@3 ~@3 [f#3,a3]@2, [c#3,f#3,a3] c#3, ~@3 [c#4,f#4]@2 [c#4,f#4]@3, ~@2 [f#3,a3] ~", // F#5 F#m F#5 F#m
  L: "[a3,d4,f#4]@2 [a3,d4,f#4]!2 ~@2 b2 ~, b2@3 ~ b2@2 ~@2, ~@5 [a3,d4,f#4]@2 ~", // D
  M: "a3 ~@3 a3 f#4!2 [a3,d4,f#4], b2@3 b2@5, [d4,f#4]@2 [d4,f#4]@3 ~@3, ~ a3@3 ~ [a3,d4]@2 ~", // D D5
  N: "f#3@2 [f#3,c#4,f#4] [c#4,f#4]!3 [c#4,f#4]@2, c#3@5 [c#3,f#3]@3, ~@3 f#3@2 ~@3", // F#5
  O: "[a3,d4,f#4]@2 ~@2 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4], ~ [a3,d4,f#4] ~@2, ~@3 b2@5", // D
  P: "~@4 [c#4,f#4,a#4]!2 [c#4,f#4,a#4]@2, [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@5, ~ [c#4,f#4,a#4] ~@2", // F# F#5 F#
  Q: "[b2,a3,d4,f#4] ~ [b2,a3,d4,f#4] ~ [b2,a3,d4,f#4] ~ [b2,a3,d4,f#4] ~@9", // Bm7
  R: "[[a3,d4] ~@13 d4@3 ~ [d4,f#4,a4]@2 ~ [d4,f#4,a4]@2 ~@2 b2@2 ~ [d4,f#4,c#5]@3 [d4,f#4,c#5]@3 [b2,d4,f#4,c#5]@3 b2@3 ~ e5@3 ~ e5@4 [b2,e5]@11 ~@4, b2@3 ~ b2@2 b2@3 ~ [b2,f#4]@2 f#4@6 ~@5 a4@32 ~@9, f#4@2 ~ a3@5 a3@3 a3@29 b2@4 b2@4 ~@16, ~@5 f#4@2 f#4@2 d4@2 d4@3 c4@32 ~@18, ~@12 b2@4 ~ b2@6 [d4,f#4]@4 b2@7 ~@3 [d4,f#4,c#5]@23 ~@4]/4", // D5 D Dmaj7 Bm E5 B5 D Dmaj7
  S: "c7 [g6,a6,b6] [e6,f6] [b5,c6,d6] [f5,g5,a5] [d5,e5] [g4,a4,b4,c5] [c4,d4,e4,f4] [a3,b3] ~@7, ~@4 b2 ~@3", // G Fmaj7 Bm F Dsus2 Cmaj7 Dm7 Asus2
})).s("gm_piano").gain(0.31).pan(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@7 A B C D A B C D A B C D E@2 F@2 G H@3 A B C D A B C D E@2 F@2 G H@3 I J K L M N K L O P Q@2 R G H@3 A B C D A B C
  D E@2 F@2 G H@3 G H@3 G H@3 E@2 F@2 G H@3 I J K L M N K L O P Q@2 R G H@3 A B C D A B C D A B C D A B C D G H@3 G H@3
  G H@3 G H@3 G H@3 G H@3 S@3 T U
>`.pickRestart({
  A: "[b3,d4] ~ [b3,d4]@2 [b3,d4,f#4]@2 ~@8 [b3,d4,f#4]@2, b2, f#4 f#3!3, ~@3 [b3,d4,f#4]@2 [b3,d4,f#4]@2 ~", // Bm
  B: "f#3 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4], ~ f#3@2 f#3@3 f#3@2, ~@2 [b3,d4,f#4]@2 ~ [b3,d4,f#4]@2 ~", // Bm
  C: "[b3,d4,f#4]@2 [b3,d4,f#4] [b3,d4,f#4]@2 ~@2 [b3,f#4], [b2,f#3]@3 [b2,f#3]@3 [b2,f#3]@2, ~@5 d4@3, ~@5 [b3,f#4]@2 ~", // Bm B5
  D: "f#3@2 [b3,f#4]@2 ~@8 [b3,d4,f#4]@2 [a#2,b2,f#3] ~, b2@3 [b2,f#3]@2 [b2,f#3]@2 ~, ~ f#3@2 ~@5, ~ [b3,d4,f#4]!2 ~", // B5 Bm Bmaj7 B5 Bm
  E: "[[g#3,b3,d4,e4]@2 ~@2 [g#3,b3,d4,e4] ~@4 [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4]@2 [g#3,b3,d4,e4]@2, e3@3 e3@3 e3@2 e3@3 e3@5, ~@2 [g#3,b3,d4,e4]@2 ~ [g#3,b3,d4,e4]@2 [g#3,b3,d4,e4]@2 ~ [g#3,b3,d4,e4]@2 ~@4]/2", // E7
  F: "[[f#3,a#3,c#4]@4 ~@4 [f#3,a#3,c#4]@2 ~@18 f#2@2 [f#3,a#3,c#4] ~, f#2@3 f#2@3 f#2@2 f#2@2 f#2@2 f#2@2 ~@2, ~@2 [f#3,a#3,c#4]@2 ~ [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 ~]/2", // F#
  G: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~@2 [a3,d4,f#4], b2@2 b2!2, ~@5 [a3,d4,f#4]@2 ~", // D
  H: "[[b2,a3,d4,f#4]@2 ~@10 [b3,d4,f#4]@2 [b2,b3,d4,f#4]@2 [b2,b3,d4,f#4]@4 [b3,d4,f#4]@2 ~@8 [b3,d4,f#4]@2 [b3,f#4]@2 ~@10 [b3,d4,f#4]@2 b2 ~, ~ [a3,d4,f#4] [a3,d4,f#4]@2 a3@16 ~@4, ~@3 b2@3 b2@4 b2@4 ~@6 b2@4 b2@4 b2@4 [b2,d4]@3 b2@3 b2@4 b2@4 ~@2, ~@4 [d4,f#4]@2 ~@5 [b3,d4,f#4]@2 [b3,d4,f#4]@2 ~@2 [b3,f#4] [b3,d4,f#4]@2 [b3,d4,f#4]@2 ~@2]/3", // Bm7 Bm B5 Bm D Bm D Bm …
  I: "[c#3,f#3,a3,c#4]!2", J: "[c#3,f#3,c#4,f#4]@8 [c#3,f#3,c#4,f#4,a#4]@5 ~@3",
  K: "[g3,b3]@2 [g3,b3] ~@2 [g3,b3,e4] [g3,b3,e4]@2, e3!2, e4@3 [g3,b3,e4]@2 ~@3", // G Em
  L: "[a3,c#4,e4]@2 ~@4 [a3,c#4,e4] ~, [a2,e3]@3 [a2,e3]@2 [a2,e3]@2 ~, ~ [a3,c#4,e4]!2 ~", // A A5 A
  M: "[c#4,f#4]@3 ~@2 [c#4,f#4]@3, [c#3,f#3,a3]!2, ~@3 [c#4,f#4]@2 ~@3", // F#5 F#m F#5
  N: "[b3,d4,f#4]@2 [b3,d4,f#4] ~@3 b2 ~, b2@2 b2 ~, ~@3 [b3,d4,f#4]@2 [b3,d4,f#4]@2 ~", // Bm
  O: "[d4,f#4]@2 ~@3 [b3,d4,f#4]@2 [b3,d4,f#4], b2@3 b2@5, [a3,b3] ~ [b3,d4,f#4]@3 ~@3", // D Bm Asus2 Bm
  P: "~@2 [c#4,f#4] ~@3 [c#4,f#4,a#4]@2, [c#3,f#3]@3 [c#4,f#4] [c#4,f#4]@2 ~@2, ~@7 [c#3,f#3]@3 [c#3,f#3]@6", // F#5 F# F#5
  Q: "[~@4 [b3,d4,f#4]@4 [b3,d4,f#4]@2 [b3,d4,f#4]@4 ~@6 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@3 ~, ~@14 [b3,d4]@17 ~, ~@7 f#4@3 ~@6, ~@16 [c#3,f#3]@15 ~]/2", // Bm F# Bm F#5
  R: "[b2,d4,f#4,a4] ~ [b2,d4,f#4,a4] ~ [b2,d4,f#4,a4] ~ [b2,d4,f#4,a4] ~@9", // Bm7
  S: "[[b2,f#4]@4 b2@2 ~@4 b2 b2@2 [b2,b3]@2 ~@13 b2@2 [b2,f#4]@2 ~ f#4@2 ~@7 [b2,d4]@2 ~@2 f#4@2, b3@13 ~@5 [b2,f#4]@2 [b2,f#4]@2 ~ b2@2 f#4@2 f#4@3 ~@6 f#4@2 ~ d4@3 ~@6, d4@6 [b2,f#4]@2 b2@2 ~@6 [b2,b3]@3 ~@2 [b2,d4]@3 ~@2 b2@2 ~@4 [b2,b3]@3 [b2,b3]@3 ~@2 b3@8, ~@7 [d4,f#4]@2 d4@8 d4@4 ~ f#4@2 d4@5 ~ d4@7 ~ [b3,f#4]@3 f#4@3 f#4@2 ~@2, ~@9 f#4@2 f#4@4 f#4@3 ~ b3@6 b3@6 ~@6 [b2,d4]@3 b2@2 ~@3 [b2,d4]@3]/3", // B5 B B5 Bm B5 B Bm B …
  T: "~@2 b2@2 ~ [b2,f#4]@2 ~ [b2,f#4]@2 ~@2 d4@3 ~, [b2,d4] d4@4 d4 ~@2, ~ [b3,f#4]@3 b3@3 b3@3 [b2,b3]@6, ~@11 f#4@5", // B5 Bm B5 B
  U: "~@8 [b2,f#3,b3]@3 ~@5", // B5
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.2)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@19 A@2 B@2 ~ C ~@10 A@2 B@2 D@5 E F G@2 H F I J K J L M N O P Q R S T U V W S X A@2 B@2 Y@12 A@2 B@2 D@5 E F G@2 H F
  I J K J L M N O P Q R S T U V W S X R S T U V W S X N O P Q N O P Q N O P Q N O P Q Z@2 AA@2 AB@8 AC
>`.pickRestart({
  A: "[~ e4, [e2,e3]]/2", B: "[~@8 f#5@7 ~, [f#2,f#3]@15 ~, ~@4 f#4@11 ~]/2", C: "~@10 [b5,b6] ~@3 [b5,b6]@2",
  D: "[~@26 [b5,b6] ~@3 [b5,b6]@2 ~@31 [a2,a3]@2 [c#3,c#4]@3 [e3,e4]@2 [f#3,f#4]@2 [a3,a4]@2 [c#4,c#5]@2 [a4,a5]@2 [b4,b5]@2, f#4@63 ~@17, d4@59 ~@21, b3@57 ~@23]/5", // B A C# E F# A C# A …
  E: "~@4 f#4@11 ~, [c#5,c#6]@13 ~@3", F: "e4 g4, [b3,b4,b5]", G: "[[c#5,c#6], [c#4,e4] ~]/2", H: "[d5,d6]@15 ~",
  I: "[c#4,e4,c#5,c#6]", J: "b5", K: "a#5", L: "c#6@15 ~", M: "b5 ~", N: "[b5,b6] ~@11 [b5,b6] ~@3",
  O: "[b5,b6] ~ [b5,b6] ~@13", P: "[b5,b6]@3 ~@7 [b5,b6] ~@5", Q: "[b5,b6]@7 ~@9", R: "[b4,b5]@2 ~@8 [b4,b5] ~@5",
  S: "[b4,b5] ~ [b4,b5] ~@9 [b4,b5] ~@3", T: "[b4,b5] ~@9 [b4,b5] ~@5", U: "[b4,b5]@4 ~@6 [b4,b5] ~@5",
  V: "[b4,b5] ~ [b4,b5] ~@7 [b4,b5] ~@5", W: "~@4 [b4,b5] ~@5 [b4,b5] ~@5", X: "~@2 [b4,b5] ~@5 [b4,b5]@6 ~@2",
  Y: "[~@26 [b5,b6] ~@3 [b5,b6]@2 ~@31 [a2,a3], f#4@63 ~, d4@59 ~@5, b3@57 ~@7]/4", Z: "[[b4,d5]@29 ~@3, b2@31 ~]/2",
  AA: "[[c5,e5]@7 ~, a2]/2", // C
  AB: "[[e5,g5]@28 ~@4 [a4,c5,e5,g5]@8 [a4,c5,e5,g5]@8 [a4,c5,e5,g5]@7 ~ [a4,e5,g5]@7 ~@30 e4@8 d4@9 ~ b3@9 ~@8, a3@16 e5@13 ~@3, ~@55 c5@7 ~@2 b2@64, ~@64 a5@31 ~@33]/8", // Em Am7 A7
  AC: "e5 ~",
})).s("gm_string_ensemble_1").gain(0.31)

// other · vibraphone
const vibraphone = note(`<
  ~@11 A B C D E F G H I@2 J K L M ~@2 A B C D E F G H I@2 J K L M ~@3 N O P Q R S T U V U W ~@5 A B C D E F G H I@2 J K
  L M ~@14 L M ~@3 N O P Q R S T U V U W ~@5 A B C D X Y Z AA A B C D X Y Z AA ~@29
>`.pickRestart({
  A: "~@2 f#5 ~ f#5 ~ f#5 ~ f#5@2 e5@2 d5 ~ e5 ~", B: "f#5@2 e5@2 ~@2 f#5@6 d5 ~ e5 ~",
  C: "f#5 ~ f#5@2 ~@2 f#5@7 ~ d5 ~", D: "f#5 ~ e5 ~ d5 ~ b4@7 ~@3", E: "~@2 f#5 ~@3 f#5 ~ f#5 ~ f#5@2 e5@2 d5 ~",
  F: "e5@2 d5 ~ e5 ~ f#5@4 b4@2 d5@2 b4 ~", G: "f#5@3 ~ e5@2 d5 ~ e5@2 ~@2 e5@2 d5 ~",
  H: "f#5@2 e5@2 d5@2 b4@3 ~@3 e5 ~ e5 ~",
  I: "[e5 ~ e5 ~ d5 ~ d5 ~ c#5 ~ c#5 ~ b4 ~ e5@4 c#5@2 d5 ~ e5@3 ~ e5 ~ e5@3 ~]/2",
  J: "f#5 ~ f#5 ~ e5 ~ e5 ~ d5 ~ d5 ~ e5 ~ f#5@2", K: "~@2 d5@2 e5@3 ~ f#5@3 ~ f#5@2 ~@2",
  L: "~@2 [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5]@2 [c#5,e5]@2 [b4,d5]@2 [c#5,e5] ~", // D C#m Bm C#m
  M: "[d5,f#5]@2 [c#5,e5]@2 b4@2 [d5,f#5]@5 ~@5, ~@4 d5 ~@11", N: "~@2 e5 ~ e5@2 d5@2 e5@2 d5@2 e5@2 d5 ~",
  O: "e5@2 b4@4 d5 ~", P: "e5 ~ e5@2 ~@2 e5@4 d5 ~ e5@2 d5 ~", Q: "f#5@2 c#5@2 ~ c#5 d5 c#5",
  R: "e5@2 d5@2 ~@2 d5@4 c#5@2 d5@2 c#5 ~", S: "d5@3 ~ d5@2 c#5 ~ d5@2 c#5@2 d5@2 c#5@2",
  T: "e5 ~ e5 ~ e5 ~ e5 ~ e5@2 d5 ~ e5@2 d5 ~", U: "f#5@4 d5@4 e5@3 ~ f#5@3 ~", V: "f#5@4 e5@3 ~", W: "f#5@8 e5@5 ~@3",
  X: "~@2 f#5 ~ f#5 ~ f#5 ~ f#5@2 e5 ~ d5@2 e5 ~", Y: "f#5@2 e5 ~ d5 ~ f#5@6 ~@4",
  Z: "~@2 f#5 ~ f#5 ~ f#5 ~ f#5@2 e5 ~ d5 ~ e5 ~", AA: "f#5@2 e5@2 d5 ~ f#5@7 ~@3",
})).s("gm_vibraphone").gain(0.51).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@2 A B C D E F@36 E@2 F@10 G F@36 E@2 F@10 G F@40 H@4 I ~@3 J>".pickRestart({
  A: "x ~@2 x ~@6 x ~@5", B: "x ~@4 x ~@2 x ~@2 x ~@4", C: "x ~@4 x ~@5 x ~ x ~ x", D: "~@4 x ~@4 x ~@3 x ~ x",
  E: "~ x ~ x ~ x ~ x", F: "x ~@3 x!2 ~ x", G: "x!4 ~@4", H: "x!2 ~ x ~ x ~ x", I: "x", J: "~ x",
})).gain(0.46)

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

// drums · low tom
const low_tom = s("lt").struct("<~@5 A B ~@11 C ~@15 C ~@20 D ~@11 C ~@36 D ~@11 C ~@7 C ~@22 B@2 ~@5>".pickRestart({
  A: "~@9 x ~@6", B: "~@5 x ~@2", C: "~@3 x", D: "~ x ~@2",
})).gain(0.41)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@3 A B C ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@4 D E ~@2 D ~ D E ~@3 D E ~@2 D E
  ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@4 D E ~@2 D ~ D E ~@3 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E
  ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@6
>`.pickRestart({
  A: "~@11 x ~@4", B: "x", C: "~@13 x ~@2", D: "~ x ~ x ~@4", E: "~@7 x",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A B C D ~@11 E ~@15 E ~@20 F ~@11 E ~@36 F ~@11 E ~@7 E ~@20 G@2 D@2 ~@3 H I
>`.pickRestart({
  A: "~@3 x ~@12", B: "~ x", C: "~@4 x ~@6 x ~@4", D: "~@3 x ~@2 x ~", E: "~@11 x ~@3 x", F: "~ x ~@6", G: "~@3 x",
  H: "~@15 x", I: "~@2 x ~@2 x ~@10",
})).gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@43 A B ~@10 C ~@36 A B ~@10 C ~@44 D E F G ~>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~@2", D: "~@3 x ~ x ~ x ~ x!2 ~ x ~ x!2", E: "~ x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", G: "~ x ~ x ~@2 x ~ x ~ x ~ x!2 ~@2",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@5 A B ~@11 C ~@15 C ~@20 D ~@11 C ~@36 D ~@11 C ~@7 C ~@22 B@2 E F ~ G ~
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@7 x", C: "~@5 x ~ x", D: "x", E: "~@12 x!2 ~@2", F: "~@3 x ~ x ~@5 x ~ x ~@2",
  G: "~@7 x ~@2 x ~@2 x ~@2",
})).gain(0.41)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@7 A B@3 ~@12 A B@3 ~@12 A B@3 ~@2 A B@3 A B A B@3 ~ A B@3 ~@12 A B@3 A B@3 A B@3 ~@4 A B@3 ~@2 A B@3 A B A B@3 ~ A
  B@3 ~@16 A B@3 A B@3 A B@3 A B@3 A B@3 ~@4 C D E F ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~@3 x ~ x!2 ~ x ~ x!2 ~ x ~ x", D: "x ~ x!2 ~ x!2 ~ x!2 ~ x ~ x!2 ~", E: "x!8",
  F: "x ~ x ~ x ~@2 x ~ x ~ x ~ x!2 ~",
})).gain(0.41)

// … 4 more lines

More by The Moody Blues