Strudelify

Porch

Pearl Jam

KeyE minorTempo120 bpm
0:00/0:00
// Porch — Pearl Jam
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · distortion guitar · "guitar1"
const distortion_guitar = note(`<
  A@2 B C@2 D E F G@2 H@2 I@2 J K L@2 M@4 N O@3 P@2 Q@2 R@3 ~@20 S T U@2 V@3 W X Y Z AA AB AC AD@3 AE@2 AF AG AH@4 ~
>`.pickRestart({
  A: "[~@5 a2@2 ~@3 a2 ~@3 a2 c3@5 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@4 ~@2 a2@2 ~ a2 ~ c3@5 g2@2 ~@2 g2@2 ~ g2@2 ~ a2@4 ~@2 a2 ~]/2",
  B: "~ a2 ~ c3@5 g2@2 ~@2 g2@2 ~ g2@2 ~ a2@4 ~ a2 ~@4 c3@4",
  C: "[~@2 g2@2 ~@2 g2@2 ~ g2@2 ~ a2@3 ~@2 a2 ~@3 a2 ~ c3@4 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@2 ~@4 a2 ~@2 a2 c3@5 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@2]/2",
  D: "~@4 a2 ~@3 c3@5 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@3 ~@3 a2@2 ~, ~@7 a2@2 ~@23",
  E: "a2 c3@5 ~ g2@2 ~ g2@2 g2@2 ~@2 g2@5 g2@5 ~ g2@5", F: "~ g2@2 ~@2 g2 g2@5 ~ a2@4 ~ a2@3 ~@2 a2@8 ~@2",
  G: "[~ a2 ~ a2@2 ~@2 a#2@4 ~ a#2@3 ~@2 a#2@5 ~ a#2@2 ~@2 a#2 ~ a#2@5 a2@3 ~@2 a2@3 ~@2 a2@5 ~ a2@2 ~@2 a2 ~@2 a2@4 g2@3]/2",
  H: "[~@2 g2@3 ~@3 g2@5 g2@2 ~@2 g2 ~@2 g2 g2@2 ~ a2@4 ~ a2 ~ a2@2 ~ a2@5 ~@2 a2@2 ~ a2@2 ~ a2@3 ~ a#2@6 ~ a#2@5 ~]/2",
  I: "[~ a#2 ~ a#2@2 ~ a#2 ~ a#2@4 ~@5 b2@5 c3@23 ~@2 a2@5 ~ a2@2 ~ a2 ~ b2@5 ~]/2",
  J: "g2@2 ~ g2@2 ~ g2@2 ~ a2@4 ~ a2 ~@2 a2@2 c3@5 g2@2 ~ g2@2 ~ g2@2",
  K: "~ a2@4 ~@2 a2 ~@2 a2@2 c3@5 g2@2 ~ g2@2 ~ g2@2 ~ a2@4 ~@2",
  L: "[a2 ~@2 a2 ~ c3@6 g2@2 g2@2 ~@2 g2@2 ~ a2@3 ~ a2@2 ~ a2@2 ~ c3@6 g2@2 ~ g2@2 ~ g2@2 ~ a2@3 ~@3 a2@2 ~ a2@2 c3@5 ~ g2 ~]/2",
  M: "[~ g2 ~@2 g2@2 ~ a2@3 ~@2 a2 ~@3 c3@5 g2@2 ~ g2@2 ~@2 g2 ~@2 a2@4 ~@3 a2 ~@2 a2 ~ c3@5 g2@2 ~@2 g2@2 g2@2 ~@2 a2@3 ~@2 a2@2 ~ a2 ~ c3@5 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@4 ~@3 a2 ~@2 a2 ~ c3@5 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@3 ~@3 a2@2 ~@2 c3@6 g2@2, ~@15 a2@2 ~@13 g2@2 ~@87 a2@2 ~@7]/4",
  N: "~ g2@2 ~@2 g2@2 ~ a2@3 ~@2 a2@2 ~ a2@2 c3@5 g2@2 ~ g2@2 ~@2 g2@2",
  O: "[~ g2@4 ~ g2@4 ~ g2@5 ~ g2@2 ~ g2 ~ g2@4 ~ a2@3 ~ a2@2 ~@3 a2@5 ~ a2@2 ~ a2 ~ a2@4 ~ a#2@3 ~@2 a#2@3 ~ a#2@5 ~ a#2 ~@2 a#2 ~@3 a#2@3 a2@3 ~@2 a2@4 ~ a2@5 a2@2 ~@2]/3",
  P: "[a2!2 ~ a2@3 ~ g2@4 g2@3 ~@2 g2@5 ~ g2@2 ~@2 g2 ~@2 g2@4 a2@3 ~@2 a2@3 ~@2 a2@4 ~@2 a2 ~@2 a2 ~ a2@4 ~@2 a#2@4]/2",
  Q: "[~ a#2@3 ~@2 a#2@5 ~ a#2@2 ~ a#2@4 ~@2 c3@2 ~ c3@5 ~ c3@5 ~ c3@2 ~ c3 ~@2 c3@4 g2@4 ~ g2@3 ~@2 g2@5 ~ g2@2]/2",
  R: "[~@2 g2 ~ g2@3 ~@2 a2@3 ~ a2@3 ~@2 a2@5 ~ a2 ~ a2@3 ~@2 a2@2 ~@2 a#2@5 ~ a#2@6 ~ a#2@2 ~ a#2 ~ a#2@6 ~ c3@26 ~@10]/3",
  S: "~@5 g2@4 ~ g2@3 ~ g2@5 ~ g2@2 ~ g2 ~ g2@4 a2@3", T: "~ a2@3 ~@2 a2@4 ~ a2@2 ~ a2 a2@3 ~@2 a#2@3 ~ a#2@3 ~ a#2@4",
  U: "[~ a#2 ~@4 a#2@4 ~ c3@3 ~ c3@2 ~@2 c3@4 ~ c3@2 ~ c3 ~@6 g2@3 ~@2 g2@4 g2@4 ~ g2@2 ~ g2 g2@4 ~ a2@2 ~@3 a2@2, ~@31 c3@5 ~@28]/2",
  V: "[~@2 a2@5 a2@2 ~ a2 ~ a2@2 ~@2 a#2@3 ~@2 a#2@3 ~@2 a#2@5 a#2@2 ~ a#2@2 ~ a#2@2 ~ c3@3 ~ c3@4 ~ c3@4 ~ c3@2 ~ c3@2 ~ c3@3 g2@2 ~@2 g2@4 ~ g2@5 ~ g2@2 ~ g2@2 ~ g2@2 a2@4 ~ a2@3 ~@2]/3",
  W: "a2@5 ~ a2@2 ~ a2@2 a2@2 ~@2 a#2@3 ~ a#2@3 ~@2 a#2@4 ~ a#2@2 ~",
  X: "a#2@2 a#2@2 ~@2 c3@2 ~ c3@5 ~ c3@3 ~ c3@2 ~ c3 ~ c3@4 g2@3 ~",
  Y: "g2@3 ~ g2@4 ~@2 g2 ~ g2 ~@2 g2@3 ~ a2@3 ~ a2@3 ~@2 a2@4",
  Z: "~@2 a2@2 ~ a2@2 ~ a2@2 ~ a#2@3 ~@2 a#2@3 ~ a#2@5 ~ a#2@2 ~ a#2@2 ~",
  AA: "a#2@2 ~ c3 ~@2 c3@2 ~ c3@2 ~@2 c3@5 c3@2 ~ c3@2 ~ c3@2 ~ g2@3 ~ g2",
  AB: "g2@2 ~@2 g2@5 ~ g2@2 ~ g2@2 g2@2 ~@2 a2@3 a2 ~ a2@3 a2@5",
  AC: "~ a2@2 ~ a2@2 ~ a2 ~@2 a#2@3 a#2@2 ~@3 a#2@6 ~@2 a#2@2 ~ a#2@3",
  AD: "[c3@3 c3@4 ~ c3@4 ~ c3@2 ~ c3 c3@4 ~ g2@3 ~ g2@2 ~@2 g2@5 g2@2 ~ g2 ~ g2@4 a2@3 ~ a2@3 ~@2 a2@5 a2@2 ~ a2@2 a2@2 ~@2 a#2@2 ~ a#2@3 ~@2 a#2@5 a#2@2 ~ a#2@2 ~ a#2@2 ~ c3@2 ~@2 c3@3]/3",
  AE: "[~ c3@4 c3@2 ~ c3 ~ c3@3 ~@2 g2@3 ~ g2@3 ~ g2@4 ~ g2@2 ~ g2@2 g2@3 a2@3 ~@2 a2@3 ~ a2@4 ~ a2@2 ~ a2@2 ~@4 a#2@3 ~@2]/2",
  AF: "a#2@4 a#2@3 ~@2 a#2@2 ~ a#2@6 ~ c3@3 ~ c3@2 ~ c3@6",
  AG: "~@2 c3 ~ c3@4 ~ g2@3 ~ g2@3 ~ g2@4 ~ g2@2 ~ g2 ~ g2@4 ~",
  AH: "[a2@3 ~ a2@3 ~ a2@4 ~@2 a2 ~@2 a2 ~ a2@2 ~@2 a#2@3 ~ a#2@2 ~@2 a#2@2 ~ a#2@2 a#2@2 ~ a#2@2 a#2@4 ~ c3@30 ~@11 e2@39 ~@2]/4",
})).s("gm_distortion_guitar").gain(0.51)

// other · distortion guitar · "guitar1"
const distortion_guitar_2 = note(`<
  A@2 B C@2 D E F G@2 H@2 I@2 J K L@2 M@4 N O@3 P@2 Q@2 R@3 ~@20 S T U@2 V@3 W X Y Z AA AB AC AD@3 AE@2 AF AG AH@4 ~
>`.pickRestart({
  A: "[~@5 e3@2 ~@3 e3 ~@3 e3 g3@5 ~ d3@2 ~ d3@2 ~ d3@2 ~ e3@4 ~@2 e3@2 ~ e3 ~ g3@5 d3@2 ~@2 d3@2 ~ d3@2 ~ e3@4 ~@2 e3 ~]/2",
  B: "~ e3 ~ g3@5 d3@2 ~@2 d3@2 ~ d3@2 ~ e3@4 ~ e3 ~@4 g3@4",
  C: "[~@2 d3@2 ~@2 d3@2 ~ d3@2 ~ e3@3 ~@2 e3 ~@3 e3 ~ g3@4 ~ d3@2 ~ d3@2 ~ d3@2 ~ e3@2 ~@4 e3 ~@2 e3 g3@5 ~ d3@2 ~ d3@2 ~ d3@2 ~ e3@2]/2",
  D: "~@4 e3 ~@3 g3@5 ~ d3@2 ~ d3@2 ~ d3@2 ~ e3@3 ~@3 e3@2 ~, ~@7 e3@2 ~@23",
  E: "e3 g3@5 ~ d3@2 ~ d3@2 d3@2 ~@2 d3@5 d3@5 ~ d3@5", F: "~ d3@2 ~@2 d3 d3@5 ~ e3@4 ~ e3@3 ~@2 e3@8 ~@2",
  G: "[~ e3 ~ e3@2 ~@2 f3@4 ~ f3@3 ~@2 f3@5 ~ f3@2 ~@2 f3 ~ f3@5 e3@3 ~@2 e3@3 ~@2 e3@5 ~ e3@2 ~@2 e3 ~@2 e3@4 d3@3]/2",
  H: "[~@2 d3@3 ~@3 d3@5 d3@2 ~@2 d3 ~@2 d3 d3@2 ~ e3@4 ~ e3 ~ e3@2 ~ e3@5 ~@2 e3@2 ~ e3@2 ~ e3@3 ~ f3@6 ~ f3@5 ~]/2",
  I: "[~ f3 ~ f3@2 ~ f3 ~ f3@4 ~@5 f#3@5 g3@23 ~@2 e3@5 ~ e3@2 ~ e3 ~ f#3@5 ~]/2",
  J: "d3@2 ~ d3@2 ~ d3@2 ~ e3@4 ~ e3 ~@2 e3@2 g3@5 d3@2 ~ d3@2 ~ d3@2",
  K: "~ e3@4 ~@2 e3 ~@2 e3@2 g3@5 d3@2 ~ d3@2 ~ d3@2 ~ e3@4 ~@2",
  L: "[e3 ~@2 e3 ~ g3@6 d3@2 d3@2 ~@2 d3@2 ~ e3@3 ~ e3@2 ~ e3@2 ~ g3@6 d3@2 ~ d3@2 ~ d3@2 ~ e3@3 ~@3 e3@2 ~ e3@2 g3@5 ~ d3 ~]/2",
  M: "[~ d3 ~@2 d3@2 ~ e3@3 ~@2 e3 ~@3 g3@5 d3@2 ~ d3@2 ~@2 d3 ~@2 e3@4 ~@3 e3 ~@2 e3 ~ g3@5 d3@2 ~@2 d3@2 d3@2 ~@2 e3@3 ~@2 e3@2 ~ e3 ~ g3@5 ~ d3@2 ~ d3@2 ~ d3@2 ~ e3@4 ~@3 e3 ~@2 e3 ~ g3@5 ~ d3@2 ~ d3@2 ~ d3@2 ~ e3@3 ~@3 e3@2 ~@2 g3@6 d3@2, ~@15 e3@2 ~@13 d3@2 ~@87 e3@2 ~@7]/4",
  N: "~ d3@2 ~@2 d3@2 ~ e3@3 ~@2 e3@2 ~ e3@2 g3@5 d3@2 ~ d3@2 ~@2 d3@2",
  O: "[~ d3@4 ~ d3@4 ~ d3@5 ~ d3@2 ~ d3 ~ d3@4 ~ e3@3 ~ e3@2 ~@3 e3@5 ~ e3@2 ~ e3 ~ e3@4 ~ f3@3 ~@2 f3@3 ~ f3@5 ~ f3 ~@2 f3 ~@3 f3@3 e3@3 ~@2 e3@4 ~ e3@5 e3@2 ~@2]/3",
  P: "[e3!2 ~ e3@3 ~ d3@4 d3@3 ~@2 d3@5 ~ d3@2 ~@2 d3 ~@2 d3@4 e3@3 ~@2 e3@3 ~@2 e3@4 ~@2 e3 ~@2 e3 ~ e3@4 ~@2 f3@4]/2",
  Q: "[~ f3@3 ~@2 f3@5 ~ f3@2 ~ f3@4 ~@2 g3@2 ~ g3@5 ~ g3@5 ~ g3@2 ~ g3 ~@2 g3@4 d3@4 ~ d3@3 ~@2 d3@5 ~ d3@2]/2",
  R: "[~@2 d3 ~ d3@3 ~@2 e3@3 ~ e3@3 ~@2 e3@5 ~ e3 ~ e3@3 ~@2 e3@2 ~@2 f3@5 ~ f3@6 ~ f3@2 ~ f3 ~ f3@6 ~ g3@26 ~@10]/3",
  S: "~@5 d3@4 ~ d3@3 ~ d3@5 ~ d3@2 ~ d3 ~ d3@4 e3@3", T: "~ e3@3 ~@2 e3@4 ~ e3@2 ~ e3 e3@3 ~@2 f3@3 ~ f3@3 ~ f3@4",
  U: "[~ f3 ~@4 f3@4 ~ g3@3 ~ g3@2 ~@2 g3@4 ~ g3@2 ~ g3 ~@6 d3@3 ~@2 d3@4 d3@4 ~ d3@2 ~ d3 d3@4 ~ e3@2 ~@3 e3@2, ~@31 g3@5 ~@28]/2",
  V: "[~@2 e3@5 e3@2 ~ e3 ~ e3@2 ~@2 f3@3 ~@2 f3@3 ~@2 f3@5 f3@2 ~ f3@2 ~ f3@2 ~ g3@3 ~ g3@4 ~ g3@4 ~ g3@2 ~ g3@2 ~ g3@3 d3@2 ~@2 d3@4 ~ d3@5 ~ d3@2 ~ d3@2 ~ d3@2 e3@4 ~ e3@3 ~@2]/3",
  W: "e3@5 ~ e3@2 ~ e3@2 e3@2 ~@2 f3@3 ~ f3@3 ~@2 f3@4 ~ f3@2 ~",
  X: "f3@2 f3@2 ~@2 g3@2 ~ g3@5 ~ g3@3 ~ g3@2 ~ g3 ~ g3@4 d3@3 ~",
  Y: "d3@3 ~ d3@4 ~@2 d3 ~ d3 ~@2 d3@3 ~ e3@3 ~ e3@3 ~@2 e3@4",
  Z: "~@2 e3@2 ~ e3@2 ~ e3@2 ~ f3@3 ~@2 f3@3 ~ f3@5 ~ f3@2 ~ f3@2 ~",
  AA: "f3@2 ~ g3 ~@2 g3@2 ~ g3@2 ~@2 g3@5 g3@2 ~ g3@2 ~ g3@2 ~ d3@3 ~ d3",
  AB: "d3@2 ~@2 d3@5 ~ d3@2 ~ d3@2 d3@2 ~@2 e3@3 e3 ~ e3@3 e3@5",
  AC: "~ e3@2 ~ e3@2 ~ e3 ~@2 f3@3 f3@2 ~@3 f3@6 ~@2 f3@2 ~ f3@3",
  AD: "[g3@3 g3@4 ~ g3@4 ~ g3@2 ~ g3 g3@4 ~ d3@3 ~ d3@2 ~@2 d3@5 d3@2 ~ d3 ~ d3@4 e3@3 ~ e3@3 ~@2 e3@5 e3@2 ~ e3@2 e3@2 ~@2 f3@2 ~ f3@3 ~@2 f3@5 f3@2 ~ f3@2 ~ f3@2 ~ g3@2 ~@2 g3@3]/3",
  AE: "[~ g3@4 g3@2 ~ g3 ~ g3@3 ~@2 d3@3 ~ d3@3 ~ d3@4 ~ d3@2 ~ d3@2 d3@3 e3@3 ~@2 e3@3 ~ e3@4 ~ e3@2 ~ e3@2 ~@4 f3@3 ~@2]/2",
  AF: "f3@4 f3@3 ~@2 f3@2 ~ f3@6 ~ g3@3 ~ g3@2 ~ g3@6", AG: "~@2 g3 ~ g3@4 ~ d3@3 ~ d3@3 ~ d3@4 ~ d3@2 ~ d3 ~ d3@4 ~",
  AH: "[e3@3 ~ e3@3 ~ e3@4 ~@2 e3 ~@2 e3 ~ e3@2 ~@2 f3@3 ~ f3@2 ~@2 f3@2 ~ f3@2 f3@2 ~ f3@2 f3@4 ~ g3@30 ~@11 b2@39 ~@2]/4",
})).s("gm_distortion_guitar").gain(0.51)

// other · overdriven guitar · "solo"
const overdriven_guitar = note("<~@32 A@3 B C@3 ~@25 D@3 E@2 F G H@5 ~@3>".pickRestart({
  A: "[~@27 e4@23 d4@18 e4@4 d4@3 ~ g3@2 e3@15 ~@3]/3", B: "~ e3@20 ~ f3 g3 ~ a3 b3!2 c4@4",
  C: "[~@3 b3@17 d4@3 b3@3 d4@3 ~ e4@20 d4@2 e4@22 f4@3 ~ e4@12 ~@6]/3",
  D: "[~@27 g4@8 ~@4 e5@3 ~ c5@3 g4@5 a4@9 ~@3 e5@3 c5@3 g4@2 c5@2 ~ a#4@9 f5@3 e5@2 c5@3 g4@3 e5@2, ~@36 f5@5 ~@19 f5@5 ~@31]/3",
  E: "[~ c5@8 f5@3 e5@3 c5@3 g4@2 e5 ~@2 g4@7 ~@3 e5@3 c5@3 g4@6 a4@7 ~@3 e5@3 c5@3 g4@3, ~@31 f5@4 ~@17 f5@5 ~@7]/2",
  F: "e5@2 ~ a#4@8 f5@3 e5@3 c5@3 g4@2 e5@2 ~ b4@7", G: "~ f5@3 e5@3 ~ c5@2 e5@3 c5@2 ~ g4@7 ~ f5@3 e5@2 c5@3",
  H: "[~ g4@7 a4@6 ~@2 e5@3 c5@2 ~@2 e5@3 ~ a#4@8 ~@3 e5@3 c5@2 ~ g4@2 e5@2 ~ e5 c5@9 ~@2 e5@2 c5@3 g4@2 ~ e5@2 ~ g4@9 ~@2 e5@3 c5@2 g4@2 ~ e5@3 a4@9 ~@2 e5@3 c5@3 g4@3 e5@3 a#4@9 ~ f5@3 e5@2 c5@2 g4@3 e5@3 ~ c5@16 ~@3, ~@14 f5@4 ~@4 g4@2 ~@12 f5@4 ~@19 f5@4 ~@18 f5@4 ~@18 f5@4 ~@53]/5",
})).s("gm_overdriven_guitar").gain(0.51)

// other · distortion guitar · "solo"
const distortion_guitar_3 = note("<~@38 A@3 B C D E F G H@5 ~@27>".pickRestart({
  A: "[~@27 f4 g4 a4 b4 c5@2 d5 e5@24 d5@17 e5@4 d5@3 b4@14, ~@13 e4 ~@34]/3", B: "~@8 [a4,b4]@2 g4@2 ~ a4@19",
  C: "~ g4@12 ~ f#4@10 ~@3 f4@2 e4@2 ~", D: "f4@14 ~@2 a4@7 g4@9", E: "~ g4@4 e4@3 g4@4 ~ b4@3 a4@15 ~",
  F: "~@8 a4 ~@4 d5@19, ~@7 b4@2 ~@3 e5@2 ~@18", G: "~@26 d5@3 ~ e5@2, ~@25 b4@2 ~@5",
  H: "[d5@38 ~ b4 e5@4 d5@37 ~@6 b4@3 ~@2 d5@42 ~@26, ~@91 e5@2 ~@67]/5",
})).s("gm_distortion_guitar").gain(0.51)

// chords · distortion guitar · "guitar2"
const distortion_guitar_4 = note(`<
  ~@6 A@3 B@5 ~ C D E F@2 G H I J@4 K@4 L@8 M@3 N@8 O P Q@2 R@2 S@3 T@2 U@3 V@3 W@2 X@2 Y@7 ~
>`.pickRestart({
  A: "[~@16 [g2,d3]@24 ~@3 [a2,e3]@25 ~@14 a#3@7 ~@7, ~@72 [a#2,f3]@23 ~]/3", // G5 A5 A#5
  B: "[~@13 a3@7 ~@9 d3@24 ~@3 [a2,e3]@24 ~@3 [a#2,f3]@21 ~@8 c3@31 ~@17, ~@2 [a2,e3]@23 ~@3 g2@24 ~@59 g3@31 ~@18]/5", // A5 A#5 A5
  C: "~ [a2,e3]@6 ~@20 [a2,e3]@5", D: "~@19 [a2,e3]@6 ~@7", E: "~@13 a2@5 ~@14, ~@6 e3@3 ~@7",
  F: "[~@8 [a2,e3]@5 ~@18 [a2,e3]@5 ~@22 [a2,e3]@6]/2", G: "~@19 [a2,e3]@5 ~@8", H: "~@14 [a2,e3]@5 ~@13",
  I: "~@8 [a2,e3]@5 ~@19", // A5
  J: "[~@2 d3@5 [g2,d3]@18 ~@2 [a2,e3]@21 ~@14 a#3@7 ~@18 a3@9 ~@7 d3@23 ~@2, ~ g2@5 ~@46 [a#2,f3]@23 ~@2 a2@22 ~@3 g2@24 ~@2, ~@39 e3@11 ~@14]/4", // G5 A5 A#5
  K: "[~ [a2,e3]@24 ~@3 [a#2,f3]@22 ~@3 [c3,g3]@21 ~@4 d3@23 ~@3 [a2,e3]@23 ~, ~@77 g2@23 ~@28]/4", // A5 A#5 C5 A5
  L: "[~@3 [a#2,f3]@23 ~@3 [c3,g3]@20 ~@8 e2@73 ~ e2@2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@2 [e2,b2]@2 ~ [e2,b2]@70 ~@20 [e2,b2,d3]@2 ~@2 e2@2 ~ [e2,e3]@2, ~@57 b2@77 b2@3 b2@9 ~ b2@5 ~@98 [b2,d3]@2 ~ b2@2 ~]/8", // A#5 C5 E5 E7 E Bm
  M: "[~ [e2,b2] ~@2 [e2,b2,e3]@82 ~@2 [e2,b2,e3]@2 ~@2 e2@3 [b2,e3], ~@91 [b2,e3]@2 ~@3]/3", // E5
  N: "[~@2 [e2,b2,e3]@85 ~@2 [b2,e3]@3 b2@2 ~@2 b2@2 ~ b2@2 ~@2 [e2,b2,e3]@49 ~@7 [e3,f3]@3 ~ [a2,e3]@4 ~ [a2,d3]@6 ~ e3@3 a2@2 ~ a2@2 ~@2 a2@4 a2@4 ~ a2@6 a2@2 ~@2 a2 ~ a2@2 ~@2 [a2,e3]@5 a2@4 ~ a2@5 ~ a2@2 ~ a2@2 ~ a2@2 ~ [a2,e3]@5 ~ [a2,e3]@4 ~ a2@5 a2@2 ~ a2@2, ~@89 e2@11 ~@156, ~@92 e3@9 ~@57 b2@4 ~@12 a2@3 ~ e3@5 ~ e3@18 ~ e3@5 ~@7 e3@20 ~@10 e3@11]/8", // E5 Fmaj7 A5 D5 A5
  O: "~ a2@2 ~ [a2,e3]@4 ~ [a2,e3]@4 ~ a2@5 ~ a2@2 ~ a2@2 ~ [a2,e3]@2 ~ [a2,e3]@3, ~@14 e3@11 ~@7", // A5
  P: "~@2 a2@3 ~ [a2,e3]@5 ~ [a2,e3]@2 ~ a2@2 ~ a2@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ a2@2 ~ [a2,e3]@2, ~ e3@4 ~@10 e3@6 ~@5 e3@2 ~@4", // A5
  Q: "[~ [a2,e3]@2 ~ [a2,e3]@3 [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~@2 a2@2 ~ a2@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ a2@2 ~ a2@2 ~@28 [a2,e3]@2, ~@16 e3@2 ~ e3@2 ~@8 e3@5 ~@30]/2", // A5
  R: "[~@19 [a#2,f3]@19 ~@4 [c3,a3]@19 ~@3]/2", // A#5 F
  S: "[~@2 d3@19 ~@4 [a2,e3]@20 ~@4 f3@19 ~@5 g3@17 ~@6, ~ g2@20 ~@27 a#2@18 ~@6 c3@19 ~@5]/3", // A5
  T: "[~ d3@18 ~@4 [a2,e3]@19 ~@4 [a#2,f3]@18, g2@9 ~@23]/2", // A5 A#5
  U: "[~@5 [c3,g3]@19 ~@5 d3@19 ~@3 e3@22 ~@3 f3@19 ~, ~@5 a3@2 ~@21 g2@19 ~@3 a2@21 ~@4 a#2@18 ~@3]/3", // C5
  V: "[~@2 [c3,g3]@20 ~@5 d3@21 ~@3 e3@20 ~@3 [a#2,f3]@21 ~, ~@13 g2@11 ~ a2@10 ~@13]/3", // C5 A#5
  W: "[~@3 g3@16 ~@3 [g2,d3]@19 ~@3 [a2,e3]@20, ~ c3@8 ~@23]/2", X: "[~@4 [a#2,f3]@19 ~@3 [c3,g3]@19 ~@3 [g2,d3]@16]/2",
  Y: "[~@6 [a2,e3]@16 ~@4 [a#2,f3]@21 ~@3 [c3,g3]@18 ~@6 [g2,d3]@17 ~@3 [a2,e3]@20 ~@4 [a#2,f3]@21 ~@2 [c3,g3]@30 ~@13 [e2,b2]@31 ~@9]/7", // A5 A#5 C5 G5 A5 A#5 C5 E5
})).s("gm_distortion_guitar").gain(0.51)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@3 A B@2 C@4 D E F@3 G H I J@2 K@2 L M N@2 O P Q@6 R@5 S@4 T U@2 V W@2 X Y Z AA AB AC AD@2 AE@2 AF AG AH AI AJ@3 AK
  AL@3 AM AN AO@7
>`.pickRestart({
  A: "~@13 a3@6 ~ f2 [e2,f3] [d2,e3] [c2,d3] ~@8, ~@12 a2@7 [g2,g3]@2 ~@11", // Fmaj7 Dsus2 Csus2 G
  B: "[~@7 f#3@9 ~ [e3,f3] d2 ~@12 [a2,a3]@7 [g2,g3]@2 f3@2 [e2,f2,e3] [d2,d3] ~@12 [f#2,f#3]@6 f3@2, ~@3 f#2@4 ~ e2 ~@23]/2", // Fmaj7 A G Fmaj7 D F#
  C: "[e3 [d2,d3] [c2,c3] b2 a2 ~@10 g2@6 g2@3 ~@2 g2@10 ~ g2@2 ~ g2@3 a2@4 ~ a2@4 ~@2 a2@5 ~ a2@2 ~ a2@2 ~ a2@4 ~@2 a#2@4 a#2@3 ~ a#2@6 ~@2 a#2@2 ~ a#2@2 ~ a#2@4 a2@4 ~ a2@4 ~ a2@5 ~@2 a2@2 ~ a2@2 ~ a2@4 g2@3, e2 ~@63]/4", // D C
  D: "~@2 g2@4 ~ g2@6 ~ g2@2 ~ g2@2 ~ g2@3 ~ a2@4 ~ a2@3", E: "~@2 a2@6 ~ a2@2 ~ a2@2 ~ a2@2 ~@2 a#2@13",
  F: "[~@3 a#2@2 a#2 ~ a#2 ~ a#2 ~ a#2@3 ~@2 c3@3 ~ d3@3 c3@3 d3@2 c3@19 ~@5 g2@2 g2 f2@2 ~@6 c3@3 a2 [f2,g2] ~ f#2 ~@2 a2@2 ~ a2@2 ~@2 g2@2 ~ g2@2 f#2@3 d3@2 a2@2 g2@2 f#2@2 ~]/3", // Fsus2
  G: "~ c3@2 ~ c3 ~@2 a2@2 ~ g2@2 f#2@3 c3@2 a2@2 g2@2 f#2@2 ~@3 a2@2 ~ a2@2 ~",
  H: "~ g2@2 ~ f#2@5 ~@3 g2@3 f#2@3 ~ a2@2 ~@2 a2@2 g2@2 ~@2 f#2@3, ~@9 c3@4 ~@19, ~@11 a2@3 ~@18",
  I: "~ c3@3 a2@2 g2@2 f#2@3 ~@2 a2@2 ~ a2@2 ~ g2@3 f#2@5 d3@3 a2@2",
  J: "[g2@2 f#2@3 ~ c3@2 ~@2 a2@2 ~ g2@2 f#2@5 ~@2 a2@2 g2@2 f#2@4 ~ a2@2 ~ a2@2 ~ g2@3 f#2@5 ~@2 a2@2 g2@3 f#2@4 ~@3 a2@2 ~ a2@2, ~@20 c3@4 ~@21 c3@4 ~@15]/2",
  K: "[~ g2@2 f#2@4 ~ c3@3 a2@2 g2@2 f#2@3 ~ a2@2 ~ a2@4 g2@3 f#2@5 d3@3 a2@2 ~ f#2@5 ~@2 c3@2 ~ a2@2 g2@3 f#2@5 ~ c3@3, ~@39 g2@2 ~@23]/2",
  L: "a2@2 g2@2 f#2@3 a2@2 ~@2 a2@3 g2@2 f#2@5 ~@4 g2@3 f#2@4, ~@21 c3@4 ~@7, ~@23 a2@4 ~@5",
  M: "~ g2@4 ~ g2@3 ~@2 g2@5 ~ g2@2 ~ g2@2 ~@2 g2@2 ~ a2@4 ~",
  N: "[a2@4 a2@4 ~@2 a2@2 ~ a2@2 ~ a2@2 ~ a#2@3 ~@2 a#2@4 ~ a#2@5 ~ a#2@2 ~ a#2@2 ~ a#2@4 a2@4 ~ a2@4 ~ a2@5 ~ a2@2 ~]/2",
  O: "a2@2 ~ a2@3 g2@4 ~ g2@4 ~@2 g2@5 ~ g2@2 ~ g2@2 ~ g2@2 ~", P: "~ a2@3 ~@2 a2@4 ~ a2@5 ~@2 a2@2 ~ a2@5 ~ a#2@3 ~@2",
  Q: "[~ a#2@4 ~ a#2@4 ~@2 a#2@2 ~ a#2@5 ~@2 c3@2 ~ c3@4 ~@2 c3@5 a#2@3 a2@4 ~@2 g2@5 ~ g2@3 ~@2 g2@5 ~@2 g2@2 ~ g2@2 ~ g2@3 a2@4 ~ a2@4 ~@2 a2@5 ~ a2@2 ~@2 a2@5 ~@2 a#2@4 a#2@4 ~@4 a#2@4 ~ a#2@2 a#2 ~@2 a#2@3 ~ c3@4 ~ d3@3 c3@3 e3@2 c3@2 ~@2 c3@15 ~ b1@4 ~@12 e2@2 ~@2 d2 ~@2 e2@5 ~ e2@4, ~@71 e3 ~@24]/6",
  R: "[~ e2@9 ~@4 e2@31 ~ e2@2 ~ e2@2 ~ e2@4 ~@3 e2@14 ~ e2@2 ~@2 e2@2 ~ e2@3 ~@3 e2@4 ~ e2@2 ~ e2@18 ~@3 e2@7 ~@2 e2@6 ~ e2@2 ~ e2@5 ~@2 e2@14 ~@4]/5",
  S: "[~ e2@9 ~@2 e2@6 ~ e2@2 ~ e2@6 ~ d2@5 ~@2 d2@2 ~ d2@5 ~ d2@2 ~ d2@4 b1@6 ~ b1@11 c2@7 ~ c2@3 ~ c2@5 ~ c2@2 ~ b1@2 ~ e2@9 ~@2 e2@2 ~ e2@6 e2@2 ~ e2@3 b1@3 d2@5]/4",
  T: "~@2 d2@2 ~ d2@5 ~ d2@2 ~ d2@3 b1@3 ~@3 b1@4 ~@2 b1@2 ~",
  U: "[b1@5 ~ b1@2 ~ b1@5 ~ c2@5 ~ c2@2 ~ c2@5 ~@2 b1@4 ~@3 f3@4 ~@2 e3@3 e3@6 ~@2 e3@2 e3@2 ~@2 e3@3]/2",
  V: "~ d3@5 ~ d3@2 ~ d3@5 ~@2 d3@2 ~ d3@2 ~ d3@3 ~ d3@2 ~ [e3,f3]@2", // Fmaj7
  W: "[~@3 g3@3 ~ a3@5 ~@2 a3@2 ~ a3@2 ~@2 a3@2 ~@2 a3@3 ~ a3@2 a2@2 ~@2 [a2,a3]@5 a2@2 ~@2 a2@2 a2@2 ~@2 a2@8 ~@2 a2@4, ~@6 g2 ~@9]/2", // A
  X: "~@2 a2@2 ~ a2@2 ~ a2@2 ~ a2@4 ~@2 a2@4 a2@5 ~ a2@2 ~ a2@2",
  Y: "~ a2@2 ~ a2@3 ~@2 a2@2 ~ a2@6 ~@2 a2@2 ~ a2@2 ~ a2@2 ~ a2@3",
  Z: "~ a2@2 ~@3 a2@5 ~ a2@2 ~@2 a2@2 ~ a2@2 ~ a2@2 ~ a2@2 a2@2 ~ a2@2",
  AA: "~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~@2 a2@2 ~ a2@2 ~ a2@2 ~",
  AB: "a2@2 ~ a2@2 ~ g2@3 ~ g2@4 ~ g2@4 ~@2 g2@2 ~ g2@2 g2@2 ~ a2@3",
  AC: "~@2 a2@4 ~ a2@4 ~ a2@2 ~ a2@4 ~ a#2@3 ~ a#2@4 ~ a#2@3",
  AD: "[~@3 a#2@2 a#2@4 ~@2 c3@2 ~ c3@3 ~@3 c3@5 a#2@3 a2@2 ~ g2@2 ~ g2@4 ~ g2@3 ~ g2@4 ~ g2@2 ~ g2@2 ~ g2@2 ~ a2@4 ~ a2@2]/2",
  AE: "[~@2 a2@4 ~ a2@2 ~ a2@4 ~@2 a#2@2 ~ a#2@3 ~@4 a#2@4 ~ a#2@4 ~@4 c3@2 ~ c3@2 ~ c3@2 ~ e3@3 d3@3 c3@2 ~@2 a#2@2 ~ a2 ~@2]/2",
  AF: "g2@3 g2@3 ~@2 g2@4 ~ g2@2 ~ g2@2 g2@3 ~@2 a2@3 ~ a2@4 ~",
  AG: "a2@4 ~ a2@2 ~@2 a2@2 ~ a2@2 ~ a#2@2 ~@2 a#2@4 ~ a#2@4 ~@2 a#2@2",
  AH: "~ a#2 ~ a#2@2 ~ c3@3 ~ c3@3 ~@2 c3@4 ~ c3@2 ~ c3 ~ c3@2 ~ g2@3 ~",
  AI: "~ g2@3 ~ g2@3 ~@2 g2@2 ~ g2 ~@2 g2@2 a2@3 ~@2 a2@4 ~ a2@4",
  AJ: "[~@3 a2 a2@2 ~ a2@2 ~ a#2@3 ~@3 a#2@4 ~ a#2@4 ~ a#2@2 ~ a#2@5 ~ c3@3 ~ c3@4 ~@2 c3@4 ~ c3@2 ~ c3@2 ~ c3@2 ~ g2@4 g2@3 ~ g2@5 ~@2 g2@2 ~ g2@2 ~ g2@2 ~ a2@3 ~ a2@3 ~@2 a2@4]/3",
  AK: "~ a2@2 ~ a2@2 ~ a2@2 ~ a#2@2 ~@2 a#2@2 ~@2 a#2@4 ~@2 a#2@2 ~ a#2@2 ~@3",
  AL: "[~ c3@3 ~ c3@3 ~ c3@4 ~ c3@2 ~ c3@4 ~ g2@3 ~ g2@2 ~@2 g2@4 ~@2 g2@2 ~ g2@2 ~ g2@2 ~ a2@3 ~ a2@3 ~@2 a2@4 ~ a2@2 ~ a2 a2@2 ~@2 a#2@3 ~ a#2@3 ~@2 a#2@4 a#2@2 ~ a#2@2 ~ a#2@3 c3@3 ~ c3@3]/3",
  AM: "~@2 c3@4 ~ c3@2 ~ c3@4 ~ g2@3 ~ g2@3 ~ g2@3 ~@3 g2@2 ~",
  AN: "g2@2 g2@2 ~ a2@3 ~ a2@3 ~@2 a2@4 ~ a2@2 ~ a2@3 ~@2 a#2@3 ~@2",
  AO: "[a#2@3 ~ a#2@4 ~ a#2@2 ~@2 a#2@2 a#2@2 ~ c3@3 ~@2 c3@3 ~ c3@3 ~ c3@2 ~ c3 ~ c3@4 ~ g2@3 ~ g2@3 ~ g2@3 ~@2 g2@2 ~ g2@2 g2@3 ~ a2@3 ~@2 a2@2 ~@2 a2@2 ~@2 a2@2 ~ a2@5 ~@2 a#2@17 ~@6 c3@4 d3@3 c3@2 ~ c3@3 d3@5 c3@22 d2@3 ~@3 d2 ~@68, ~@118 d3@2 ~@34 e2@41 ~@29]/7",
})).s("gm_electric_bass_finger").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  ~@12 A B C D E F G H I J K ~@2 L M ~@4 N ~ O P Q R S T U V W X Y Z AA AB ~@6 AC AD AE AF AG ~ AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW ~@4
>`.pickRestart({
  A: "~@11 x ~@20", B: "~@11 x ~ x ~@2", C: "~ x ~@7 x ~@8 x ~@6 x ~@6", D: "~ x ~@8 x ~@7 x ~@8 x ~@4",
  E: "~@4 x ~@7 x ~@8 x ~@7 x ~@2", F: "~@5 x ~@8 x ~@7 x ~@7 x ~", G: "~ x!3", H: "~ x ~@7 x ~@7 x ~@9 x ~@4",
  I: "~@3 x ~@9 x ~@5 x ~@9 x ~@2", J: "~@5 x ~@7 x ~@9 x ~@8", K: "x ~@2 x ~@12", L: "~@5 x ~@4 x ~@5",
  M: "~ x ~@5 x ~@7 x", N: "~@27 x ~@4", O: "~ x ~@3 x ~@5 x ~@4", P: "~ x ~@4 x ~@9 x ~@6 x ~@6 x ~",
  Q: "~@3 x ~@4 x ~@2 x ~@3 x", R: "~@3 x ~@2 x ~@4 x ~@3 x", S: "~@2 x ~@3 x ~@8 x ~@10 x ~@3 x ~",
  T: "~@4 x ~@9 x ~@6 x ~@10", U: "~@6 x ~@7 x ~@4 x ~@8 x ~@3", V: "~@3 x ~@3 x ~@3 x ~@9 x ~@5 x ~@3 x",
  W: "~@3 x ~@8 x ~@5 x ~@3 x ~@9", X: "~@4 x ~@5 x ~@6 x ~@8 x ~@5", Y: "~ x ~@2 x ~@4 x ~@9 x ~@5 x ~@2 x ~@3",
  Z: "~ x ~@8 x ~@6 x ~@7 x ~@6", AA: "~@3 x ~@9 x ~@3 x ~@3 x ~@9 x", AB: "~@6 x ~@2 x ~@4 x ~@17",
  AC: "~@12 x ~@14 x ~@4", AD: "~@5 x ~@12 x ~@8 x ~@4", AE: "~@8 x ~@10 x ~@12", AF: "~@4 x ~@6 x ~@4",
  AG: "x ~@6 x ~@4 x ~@3", AH: "~@3 x ~@6 x ~@4 x", AI: "~@13 x ~@8 x ~@9", AJ: "~@4 x ~@8 x ~@18",
  AK: "~@4 x ~@12 x ~@8 x ~@5", AL: "~@7 x ~@10 x ~@13", AM: "~@2 x ~@8 x ~@20", AN: "~@2 x ~@12 x ~@11 x ~@4",
  AO: "~@4 x ~@4 x ~@6", AP: "x ~@8 x ~@21 x", AQ: "~@5 x ~@3 x ~@6", AR: "~ x ~@7 x ~@13 x ~@8", AS: "~ x ~@9 x ~@4",
  AT: "~ x ~ x ~@4", AU: "~ x ~@13 x ~@10 x ~@5", AV: "~@17 x ~@10 x ~@3", AW: "~@3 x ~@21 x ~@6",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ~ AA AB AC AD AB AE AF AG AH AI AJ AK AL AM ~@5 AN AO AP AQ AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL ~@2
>`.pickRestart({
  A: "~@10 x!2 ~@4", B: "~@3 x!2 ~@11", C: "x!2 ~@16 x ~@4 x ~@3 x ~ x ~@2", D: "~@13 x ~@6 x ~@2 x!2 ~@7",
// … 85 more lines

More by Pearl Jam