Strudelify

Rock Me

Steppenwolf

KeyF majorTempo127 bpm
0:00/0:00
// Rock Me — Steppenwolf
// 127 bpm, 4/4, key F major. 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 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D A B C D E D A D A B C D A D A F G H I J K J I H L J M N A B C D E D A D A B C D A D A F G H I J K J I H L J
  M N O@2 P Q@2 R@3 S R S R@5 S R S R@5 S R S R@5 S R S R S R T A B C D A B C D A B C D A B C D R S R T
>`.pickRestart({
  A: "c2 ~ c2 ~ c2 ~ c2@2 ~@2 bb1 ~ bb1 ~ bb1 ~", B: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 bb1@2 b1@2",
  C: "c2 ~ c2 ~ c2 ~ c2@2 ~@2 bb1 ~ bb1 ~ bb1@2", D: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ bb1@2 b1@2",
  E: "c2 ~ c2 ~ c2 ~ c2@2 ~@2 bb1@2 bb1 ~ bb1@2", F: "f1 ~ f1 ~ f1 ~ f1 ~ f1@2 f2@2 f1@2 f2@2",
  G: "f2@2 a2@4 bb2@3 ~ b2@4 c3@2", H: "bb2@2 bb1@4 d2@4 eb2@4 e2 ~", I: "f2@2 a2@3 ~ bb2@4 b2@4 c3@2",
  J: "bb2@2 bb1@3 ~ d2@4 eb2@4 e2 ~", K: "f2 a2@2 bb2@2 b2@2 c3", L: "f2@2 a2@4 bb2@4 b2@3 ~ c3@2",
  M: "f2@2 a2@2 bb2 ~ c3@4 f3@2 ~@4", N: "bb2 ~ ab2@2 ~@2 f2@8 ~@2", O: "bb2 c3@6 ~ bb2 c3@6 ~", P: "c3 bb2 f2 eb2",
  Q: "[bb2 c3@7 bb2 c3@7 bb2 c3@7 bb2 c3@7, c2@31 ~]/2", R: "bb2 c3@7 bb2 c3@7", S: "bb2 c3@7 bb2 c3@6 ~",
  T: "bb2 c3@6 ~ c2@2 ~@6",
})).s("gm_acoustic_bass").gain(0.72)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B C D E F C G H I J K L M N O P@3 Q R S T S R S U S V S W ~ E F C G H I J K L M N O P@3 Q R S T S R S U S V S W
  ~@4 X@4 Y Z AA AB AC AB AD@2 AA AE AD AA AB AA Z AB@3 AD AF AB@4 AE AB@3 AD AE AG AH AI B C D A B C D A B C D A B C D
  AD AE AG AH
>`.pickRestart({
  A: "[c5,e5]@3 ~ [c5,e5]@3 ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 ~@2 f4@2, [c4,g4]@7 ~@5 bb3@4", // C Bb C5
  B: "[f4,a4,c5] ~@2 c4 [f4,bb4] c4 a4 g4, ~@2 f3@10 f4 ~@3, ~ [f4,a4,c5] ~ c5", // F Bb5 F
  C: "[c5,e5]@3 ~ [c5,e5]@3 ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 bb3 ~ [f4,bb4,d5]@2, c4@7 ~@9", // C Bb
  D: "[f4,a4,c5]@3 ~@3 c4@2 [f4,bb4,c5]@2 c4@2 [f4,a4,c5]@3 ~, f3@3 ~, ~ [f4,a4,c5] ~@2", // F Fsus4 F
  E: "[c5,e5]@3 ~@3 g4@2 [f4,bb4,d5] ~@5 [f4,bb4,d5]@2, c4@7 ~@3 [f4,bb4,d5]@4 ~@2, g4 [c5,e5] ~ bb3", // C Bb C
  F: "[f4,a4,c5] c4 ~ c4 ~ c4 ~ g4, f3@2 [f3,f4,bb4] ~, ~ [f4,a4,c5] ~ [f4,a4]", // F Bb5 F
  G: "[f4,a4,c5] c4 ~@2 [f4,bb4,c5] c4 ~ g4, f3@3 c4 ~@2 [f4,a4,c5]@2, ~@4 [f4,a4,c5]@3 f3@4 ~@5", // F Fsus4 F
  H: "[c5,e5]@3 ~ [c5,e5]@2 g4 ~@3 [f4,bb4,d5] ~@3 bb3@2, c4@7 ~@5 [f4,bb4,d5]@4", // C Bb
  I: "[f4,a4,c5]@2 ~@2 [f4,a4,c5]@2 [f4,bb4,c5]@2 c4 ~ [f4,bb4,c5]@2 [f4,a4,c5]@4, ~@2 f3@11 ~@3", // F Fsus4 F
  J: "[g4,c5,e5]@4 [c5,e5]@2 g4 ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 bb3@2 [f4,bb4,d5]@2, c4@7 ~@9", // C Bb
  K: "[f4,a4,c5]@2 c4@2 ~@2 c4@2 ~@2 c4@2 [f4,a4,c5]@3 ~, f3@2 [f3,f4,bb4,c5] ~, ~ [f4,a4,c5] ~@2", // F Fsus4 F
  L: "[c5,e5]@3 ~ [c5,e5]@2 g4 ~@3 [f4,bb4,d5] ~@3 bb3@2, c4 ~, g4 ~@2 [f4,bb4,d5]", // C Bb
  M: "[f4,a4,c5]@2 ~@4 c4@2 [f4,bb4,c5]@2 c4@2 [f4,a4,c5]@2 g4 ~, ~ f3@5 ~@2, ~ [f4,a4,c5] ~@2", // F Fsus4 F
  N: "[c5,e5]@3 ~@3 g4@2 [f4,bb4,d5] ~ [f4,bb4,d5]@2 bb3 ~ [f4,bb4,d5] ~, c4 ~, ~ [c5,e5] ~@2", // C Bb C
  O: "[f4,a4,c5]@2 c4@2 [f4,a4,c5] ~ [f4,bb4,c5]@2 ~@6 [f4,a4,c5]@2, f3@7 ~ f3@8, ~@5 [f4,a4,c5]@2 ~, ~@3 c4", // F Fsus4 F
  P: "[[c5,e5]@3 ~ [c5,e5]@2 g4 ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 bb3 ~ [f4,bb4,d5] ~ [f4,a4,c5]@2 c4 ~@5 [f4,bb4,c5]@2 c4@2 [f4,a4,c5]@2 f4 ~ [c5,e5]@3 ~ [c5,e5]@2 g4 [f4,bb4,d5] g4 ~@5 [f4,bb4,d5]@2, c4@8 ~@7 f3@7 c4@2 ~@7 c4@8 ~@3 [f4,bb4,d5]@4 ~@2, g4@4 ~@16 [f4,a4,c5]@3 f3@4 ~@17 bb3@4]/3", // C Bb F Fsus4 F C Bb F
  Q: "[f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4 ~ [f4,bb4,c5]@2 ~@2 [f4,a4,c5]@2 [eb5,a5,c6]!2, f3@7 ~ f3@6 ~@2, ~@5 c4@2 ~", // F Fsus4 F Adim
  R: "[eb5,a5,c6]!4 [eb5,a5,c6]@2 [eb5,a5,c6]@4 ~@6", S: "~@14 [eb5,a5,c6]!2",
  T: "[eb5,a5,c6]!4 [eb5,a5,c6]@2 [eb5,a5,c6]@5 ~@5", U: "[eb5,a5,c6]!4 [eb5,a5,c6]@2 [eb5,a5,c6]@7 ~@3",
  V: "[eb5,a5,c6]!4 [eb5,a5,c6]@2 [eb5,a5,c6]@6 ~@4", W: "[eb5,a5,c6]!4 [eb5,a5,c6]@2 [eb5,a5,c6]@3 ~@7",
  X: "[[c3,c4]@63 ~]/4", Y: "c3 c4!2 c3 c4 ~ c4 c3 ~ c3 ~ c3 c4 c3 c4 c3",
  Z: "c4 ~ c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3", AA: "c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3",
  AB: "c4 c3 c4 c3 c4 ~ c4 c3 ~ c3 ~ c3 c4 c3 c4 c3", AC: "c4 c3 c4 c3 c4 c3 c4 c3 ~ c3 c4 c3 c4 ~ c4 c3",
  AD: "c4 c3 c4 c3 c4 c3 c4 c3 ~ c3 ~ c3 c4 c3 c4 c3", AE: "c4 c3 c4 c3 c4 ~ c4 c3 ~ c3 ~ c3 c4 ~ c4 c3",
  AF: "c4 c3 c4 c3 c4 c3 c4 c3 ~ c3 c4 c3 c4 c3 c4 c3", AG: "c4 ~ c4 ~ [c3,c4] ~ c4 c3 ~ c3 ~ c3 c4 c3 c4 c3",
  AH: "~@4 c4 c3 c4 c3!2 ~@7", AI: "~@8 [f4,bb4,d5] ~ [f4,bb4,d5]@2 ~@2 f4@2, ~@3 bb3",
})).s("gm_piano").gain(0.48)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~ A B A B A B A B A B A B A B A B A B A B C D E D E F E F G F H I A B A B A B A B A B A B A B A B C D E D E F E F G F
  H I J@2 K L@4 M N O P Q R S T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI AJ AK AE AL AM AH AI ~ A B A B A B A B A B A B
  A B A B AM AH AI ~
>`.pickRestart({
  A: "[e5,g5,c6]@7 ~ [d5,f5,bb5]@7 ~", B: "[c5,f5,a5]@15 ~", C: "[a5,c6,eb6,f6]", D: "[bb3,f4,bb4,d5,f5,bb5]",
  E: "[a5,c6,eb6,f6]@15 ~", F: "[bb3,f4,bb4,d5,f5,bb5]@15 ~", G: "[a5,c6,eb6,f6]@7 ~", H: "[a5,c6,eb6,f6]@3 ~@5",
  I: "[bb5,bb6] ~ [ab5,ab6]@2 ~@2 [f5,f6]@7 ~@3", J: "[[c6,g6,c7]@31 ~]/2", K: "[c6,g6,c7]@4 bb4@4 f4@4 eb4@3 ~",
  L: "[[bb4,c5] ~ [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [f5,a5] ~ [bb4,c5] ~ [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [f5,a5] ~ [bb4,c5] [g5,bb5]!2 ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [f5,a5] ~ [bb4,c5] ~ [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [f5,a5] ~, [c3,c4]]/4", // Bbsus2 Gm Bbsus2 Gm Bbsus2 Gm F Bbsus2 …
  M: "[c3,g3,bb4,c5] [c4,g4] [g5,bb5] ~ [c4,g4,g5] ~ [c3,g3,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [c4,g4] [c3,g3], ~@2 bb5 ~@4 [f5,a5]", // C7 C5 Gm C5 C7 Bbsus2 Gm C5 …
  N: "[bb4,c5] ~ [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // Bbsus2 C7 Bbsus2 Gm Bbsus2 C7 C5 F …
  O: "[c4,g4,bb4,c5] [c4,g4] [c3,g3,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,g3,bb4,c5] [c4,g4,g5,bb5] ~ [c3,g3,g5,bb5] [c4,g4] [c4,g4,bb4,c5] [c3,g3,g5,bb5] [c4,g4] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 F C5
  P: "[c4,g4,bb4,c5] [c4,g4] [c3,g3,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g3,g5,bb5] [c4,g4] [c3,g3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 Bbsus2 C7 …
  Q: "[c4,g4,bb4,c5] [c3,g3] [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,g3,g5,bb5] [c4,g4] [c3,g3,bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4] [c3,g3], ~@7 [f5,a5]", // C7 C5 C7 C5 C7 C5 F
  R: "[c4,g4,bb4,c5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,e3,g3,g5,bb5] [c4,g4] [c3,g3,bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 C7 C5 …
  S: "[c4,g4,bb4,c5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,g3,g5,bb5] [c4,g4] [c3,g3,bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 C7 C5 …
  T: "[c4,g4,bb4,c5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,e3,g3,g5,bb5] [c4,g4] [c3,g3,bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 C7 C5 …
  U: "[c4,g4,bb4,c5] [c3,g3,g5,bb5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,g3,g5,bb5] [c4,g4] [c3,g3,bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 F C5
  V: "[c4,g4,bb4,c5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,g3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4,f5,a5] [c3,g3]", // C7 C5 C7 C5 C7 C5 Bbsus2 C7 …
  W: "[c4,g4,bb4,c5] ~ [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5] [c3,e3,g3] [c4,g4,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,g3,bb4,c5] [c4,g4,g5,bb5] [c3,g3] [c4,g4] [c3,g3], ~@2 bb5 ~@4 [f5,a5]", // C7 C5 C C7 C5 F
  X: "[c4,g4,bb4,c5] [c3,g3] [c4,g4,g5,bb5] [c3,g3] [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g3,g5,bb5] ~ [c3,g3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 C7 C5 C7 C5 Bbsus2 C7 …
  Y: "[c4,g4,bb4,c5] ~ [c4,g4,g5,bb5] c3 [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 Bbsus2 C7 F
  Z: "[c4,g4,bb4,c5] ~ [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] c3 [c4,g4,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4] c3, ~@7 [f5,a5]", // C7 C5 F
  AA: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] c3 [c4,g4,g5,bb5] c3 [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c3,g5,bb5] [c4,g4] [c3,bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 C7 F
  AB: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 Bbsus2 C7 F
  AC: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4,f5,a5] c3", // C7 F
  AD: "[c4,g4,bb4,c5] [c4,g4,g5,bb5] [c3,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 F
  AE: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] c3 [c4,g4,g5,bb5] c3 [c4,g4,bb4,c5] [c3,g5,bb5] [c4,g4] [c3,g5,bb5] [c4,g4] [c3,bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 C7 C5 C7 F
  AF: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] c3 [c4,g4,g5] c3 [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4] c3, ~@2 bb5 ~@4 [f5,a5]", // C7 C5 C7 C5 Bbsus2 C7 C5 F
  AG: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] c3 [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g4,g5,bb5] c4 [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4,f5,a5] c3", // C7 F
  AH: "[c4,g4,bb4,c5] ~ [c3,c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g5,bb5] g4 [c4,g5,bb5] c3 [c4,g4,bb4,c5] [g5,bb5] ~ [c4,g4,f5,a5] c3", // C7 Gm F
  AI: "[c4,g4,bb4,c5] ~ [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [g5,bb5] ~ [bb4,c5] [g5,bb5] ~ [f5,a5] ~", // C7 Gm Bbsus2 Gm Bbsus2 Gm F
  AJ: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,c4,g4,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4] c3, ~@7 [f5,a5]", // C7 C5 F
  AK: "[c4,g4,bb4,c5] [c4,g4] [c3,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 C7 F
  AL: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] c3 [c4,g4,g5,bb5] c3 [c4,g4,bb4,c5] [c3,g5,bb5] ~ [c3,g5,bb5] [c4,g4] [bb4,c5] [c4,g4,g5,bb5] c3 [c4,g4,f5,a5] c3", // C7 C5 Bbsus2 C7 F
  AM: "[c4,g4,bb4,c5] c3 [c4,g4,g5,bb5] c3 [c4,g4,g5,bb5] ~ [c4,g4,bb4,c5] [c3,g4,g5,bb5] c4 [c4,g4,g5,bb5] ~ [c3,bb4,c5] [c4,g4,g5,bb5] ~ [c4,g4] c3, ~@7 [f5,a5]", // C7 C5 F
})).s("gm_rock_organ").gain(0.56)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A B C B D E F G H I F J H E F G H I F J H K L M N ~@3 N ~@3 O E F G H I F J H E F G H I F J H K L M N ~@3 N ~@4 P Q R
  S@2 ~@34 T U T U T U T U T U T U T U T U ~@4
>`.pickRestart({
  A: "~@12 [c4,g4,c5]@3 ~, ~@12 b4 ~@3", B: "e5@8 ~@2 c6@2 ~ bb5@2 ~", C: "a5@13 ~@3", D: "a5 f6@6 ~",
  E: "e5@2 [g5,c6]@5 ~ d5@2 [f5,bb5]@5 ~, c5@5 ~@3 bb4@5 ~@3, ~ e5 ~@3 d5 ~@2", // C5 Bb5
  F: "c5@2 [f5,a5]@11 ~@3, a4@3 ~, ~ c5 ~@6", // F
  G: "e5@2 [g5,c6]@5 ~ d5@2 [f5,bb5]@6, c5@5 ~@3 bb4@5 ~@3, ~ e5 ~@3 d5 ~@2", H: "c5 [f5,a5]@5 ~@2, a4@3 ~, ~ c5 ~@6",
  I: "e5@2 [g5,c6]@6 d5@2 [f5,bb5]@5 ~, c5@5 ~@3 bb4@5 ~@3, ~ e5 ~@3 d5 ~@2", // C5 Bb5
  J: "e5@2 [g5,c6]@5 ~ d5@2 [f5,bb5]@5 ~, c5@3 ~ bb4@3 ~, ~ e5 ~@3 d5 ~@2", K: "f3@13 ~@3", L: "[f4,bb4]",
  M: "f3@3 ~@5", N: "bb4@15 ~", O: "bb4 ~ ab4@2 ~@2 f4@8 ~@2", P: "[c4,g4,c5,e5]@7 ~ [c4,g4,c5,e5]@6 ~@2",
  Q: "[c4,g4,c5,e5]@7 ~ [c4,g4,c5,e5]@7 ~", R: "[c4,g4,c5,e5]@4 bb4@4 f4@4 eb4@3 ~", S: "c4/2",
  T: "[c4,g4] ~ [c4,g4]@2 a4@2 [c4,g4] ~ [bb3,f4] ~ [bb3,f4]@2 g4@2 [bb3,f4] ~", // C5 Bb5
  U: "[f3,c4] ~ [f3,c4]@2 d4@2 [f3,c4] ~ [f3,c4] ~ [f3,c4]@2 d4@2 [f3,c4] ~", // F5
})).s("gm_overdriven_guitar").gain(0.53)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D A B C D A B C D A B C D A B C E F G H G F G I G J K L M A B C D A B C D A B C D A B C E F G H G F G I G J K
  L M ~@39 A B C D A B C D A B C D A B C D ~@4
>`.pickRestart({
  A: "c4 ~ c4@2 [c5,e5,g5]@4 bb3 ~ bb3@2 [bb4,d5,f5]@4", B: "f3 ~ f3@2 [f4,a4,c5]@4 f3 ~ f3@2 [f4,a4,c5]@4",
  C: "c4 ~@3 [c5,e5,g5]@4 ~@2 bb3@2 [bb4,d5,f5]@4, ~ c4@3 ~@4", D: "f3 ~ f3@2 [f4,a4,c5]@4 f3 ~ f3@2 [f4,a4,c5]@3 ~",
  E: "f3 ~ f3@2 [f4,a4,c5]@4 f3 ~ f3@2 [f4,a4,c5]@2 [c5,eb5,a5]!2", F: "[c5,eb5,a5]!4 [c5,eb5,a5]@2 [c5,eb5,a5]@6 ~@4",
  G: "~@14 [c5,eb5,a5]!2", H: "[c5,eb5,a5]!4 [c5,eb5,a5]@2 [c5,eb5,a5]@3 ~@7",
  I: "[c5,eb5,a5]!4 [c5,eb5,a5]@2 [c5,eb5,a5]@8 ~@2", J: "[c5,eb5,a5]!4 [c5,eb5,a5]@2 [c5,eb5,a5]@5 ~@5",
  K: "~@14 a5 [c5,eb5,a5]", L: "[c5,eb5,a5]!4 [c5,eb5,a5]@2 [c5,eb5,a5] ~@9",
  M: "[bb3,f4] ~ [ab3,eb4]@2 ~@2 [f3,c4]@6 ~@4", // Bb5 Ab5 F5
})).s("gm_electric_guitar_muted").gain(0.48)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A ~@27 B ~@27 C ~@20 D ~ E ~@3 F ~@3 F ~@5 D ~ G ~@14 H I ~ D ~ G
>`.pickRestart({
  A: "~@6 x!2 ~@8", B: "~@11 x ~@4", C: "x!2 ~@14", D: "~@4 x!4 ~@2 x ~@3 x ~", E: "x!6 ~@7 x!3", F: "x ~@11 x!2 ~@2",
  G: "x ~ x!2 ~ x!3 ~@8", H: "~@14 x!2", I: "x!11 ~@5",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@66 [~ x ~ x]!33 [~ x ~@2] ~@16 [~ x ~ x]!3 [~ x ~@2]>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<A ~@84 B ~ C ~@3 C ~@7 D ~@15 E ~@3 F>".pickRestart({
  A: "~@3 x", B: "~@13 x!3", C: "~@12 x!2 ~@2", D: "~@2 x!2", E: "~@8 x!8", F: "~ x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~ A@3 B A@27 C A@27 C ~@5 D@34 A@16 D@3 E>".pickRestart({
  A: "x!8", B: "x!4", C: "x!2 ~@6", D: "~ x ~ x", E: "~ x ~@2",
})).gain(0.8)

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

// drums · open hat
const open_hat = s("oh").struct("<~@4 A ~@27 B ~@27 B ~@4 C ~@14 D ~@15 D ~ D ~@17 D ~ D ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@2", C: "~@7 x", D: "~@5 x!3 ~@8",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@85 A ~ B ~@3 B ~@7 C ~@19 C>".pickRestart({
  A: "~ x ~@2 x ~@2 x ~ x!2 ~@5", B: "x!2 ~ x ~@12", C: "x!4 ~@12",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@15 A ~@9 B C A ~@15 A ~@9 B C D@3 ~@32 A ~@3 A ~@7 A ~@7 A ~@2 E
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@3 x ~@4", D: "x!2", E: "~ x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@32 A ~@27 A ~@3 B@35 C B@19 C>".pickRestart({
  A: "~@3 x ~@4", B: "x!4", C: "x!3 ~",
})).gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<~@21 A@11 ~@17 A@11 ~@20 A@4 ~@12 A@3 ~ A@19 B>".pickRestart({
// … 29 more lines

More by Steppenwolf