Strudelify

Lukin

Pearl Jam

KeyE minorTempo120 bpm
0:00/0:00
// Lukin — Pearl Jam
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Ooo!" voice oohs (copy of ch 2 "Ooo Guitar" electric guitar clean)
// note: Full arrangement: all 30 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.

// chords · distortion guitar · "Guitar"
const distortion_guitar = note("<A@6 B@2 C@2 D E@3 F@4 G@4 H I J K L M@2 N>".pickRestart({
  A: "[~@13 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ e3@2 ~ e3@2 ~ d3@2 ~ d3@2 ~ [d3,a3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ e3@2 ~ b3 ~ c3@2 ~ c3@5 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ b3@2 [e3,b3]@2 ~@2 a3@2 [d3,a3]@3 ~@3 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ b3@2 ~ [c3,g3]@2 [c3,g3]@3 ~@3 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 ~ [e3,b3]@2 ~ a3 [d3,a3]@2 ~ a3@2 d3 [d3,a3]@2 [d3,a3] [e3,b3]@2 ~ b3@2 [e3,b3]@2 ~ e3 b3@2 [e3,b3]@2 ~@2 c3 ~ [c3,g3]@4 ~@2 [e3,b3]@2 ~ [e3,b3]@2 ~ b3@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3]@2 d3 [d3,a3]@2 [d3,a3]!2 ~@2 b3@2 ~ [e3,b3]@2 ~ b3@2 [e3,b3]@2 ~@2 b3 ~@2, ~@22 b3@5 ~ a3@5 ~@3 [d3,a3]@3 ~@6 b3@2 ~ e3@2 ~ g3@7 ~@10 e3@2 ~@4 [d3,a3]@2 ~@4 [d3,a3]@2 a3@2 ~@60 g3@2 ~@46, ~@81 d3@2 ~@11 e3@3 ~@26 d3@2 ~@7 e3@2 ~@24 e3@3 ~@15 [d3,e3,a3]@2 ~@4 e3@2 ~@4 e3@2 ~@2]/6", // E5 D5 E5 D5 E5 C5 E5 D5 …
  B: "[[c3,g3]@2 ~ c3@3 ~@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3]@2 ~ a3@3 ~ a3 ~@2 b3 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ b3@3 ~ [c3,g3]@2 ~ [c3,g3]@3 ~@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2, ~@2 g3@4 ~@20 d3@2 ~ d3@2 [d3,a3]@2 ~@31, ~@32 e3@2 ~@9 e3@2 ~@19]/2", // C5 E5 D5 E5 C5 E5 D5
  C: "[~ [e3,b3]@2 [e3,b3]@2 ~ d3 [d3,a3]@2 d3 [d3,a3]@2 ~ [d3,a3]@2 ~ b3@2 ~ [e3,b3]@2 ~ b3@2 ~ [e3,b3]@2 ~ b3 ~@2 [c3,g3]@2 ~ g3@3 ~@2 [e3,b3] ~ e3 b3 ~ [e3,b3] ~@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 d3 [d3,a3] ~@2 b3@2, ~@15 [d3,e3,a3]@2 ~@4 e3@2 ~@4 e3@2 ~@4 c3@3 ~@25 [d3,e3,a3]@2 ~]/2", // E5 D5 E5 C5 E5 D5 Dsus2
  D: "~ [e3,b3] ~@2 b3@2 [e3,b3]@2 ~ [e3,b3] ~@2 [c3,g3]@2 ~@2 c3@2 ~@3 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3] ~, ~@3 e3@2 ~@10 g3@3 ~@14", // E5 C5 E5
  E: "[~ [e3,b3] ~ [d3,a3] a3@2 [d3,a3]!2 ~@2 a3 ~@2 d3 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ b3 ~@2 [c3,g3]@2 ~ g3@4 ~ e3@6 ~ e3@3 ~@2 [e3,b3]@5 e3@2 ~ e3@5 ~ e3@2 ~ e3@4 ~@4 e3@2 ~ e3@3 ~@3 [d3,a3]@5 d3@5 d3@5, ~@9 [d3,a3]@2 [d3,a3]@2 ~@16 c3@4 ~@36 e3@2 ~@25, ~@12 [e3,b3]@2 ~@9 e3@2 ~@10 b3@10 ~@7 b3@8 ~ b3@7 ~@2 b3@9 ~@7 a3@10]/3", // E5 D5 E5 C5 E5 D5 E5
  F: "[~ d3@2 d3@5 ~ d3@2 ~ d3@2 ~ d3@4 ~@2 d3@2 ~ d3@4 ~ c3@4 ~ c3@8 ~@2 c3@3 c3@4 ~ c3@2 ~ c3@4 ~ c3@2 ~ c3@2 ~ c3@3 ~@2 d3@4 ~ d3@4 ~@2 d3@4 ~ d3@2 ~ d3@4 ~ d3@2 ~ d3@4 ~ [d3,a3]@4 ~ [d3,a3]@4 ~@2 [e3,b3]@2 ~ b3@2 [e3,b3]@2 ~ [e3,b3]@2 ~ e3@2 ~, ~ a3@19 ~ a3@7 ~ g3@13 ~@2 g3@25 ~@2 a3@23 ~ a3@7 ~@14 e3@2 ~@6 b3@3 ~]/4", // D5 E5
  G: "[~ d3!2 [d3,a3]@2 [d3,a3]!2 [d3,a3]@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ e3 ~ [e3,b3] ~@2 [c3,g3]@2 ~ [c3,g3]@4 ~@2 b3@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ e3@2 d3 [d3,a3]@2 ~ a3@2 [d3,a3]!2 ~@2 b3@2 [e3,b3]@2 ~ [e3,b3]@2 ~ b3@3 e3@2 ~ [c3,g3]@2 ~ [c3,g3]@3 ~@3 [e3,b3] ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3] [d3,a3]@2 [d3,a3]@2 ~ a3@2 [d3,a3] [d3,e3,a3,b3]@2 ~ b3@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [c3,g3]@2 ~ [c3,g3]@3 ~@3 [e3,b3]@2 [e3,b3]@2, a3@2 ~@15 b3@2 ~@12 e3@2 ~@9 b3@2 ~@4 [d3,a3]@2 ~@4 e3@2 ~@7 e3@2 ~@32 d3@2 ~@4 e3@2 ~@23]/4", // D5 E5 C5 E5 D5 E5 C5 E5 …
  H: "~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 [d3,a3] [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ b3@2 [e3,b3]@2, ~@27 e3@2 ~@3", // E5 D5 E5
  I: "~ [c3,g3]@2 ~ [c3,g3]@4 ~@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 b3 e3 ~ [e3,b3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2", // C5 E5 D5
  J: "~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 ~@2 [c3,g3]@2 [c3,g3]@3 ~@3 [e3,b3]@2 ~ [e3,b3]@2 ~ b3@2, [d3,a3]@2 ~@27 e3@2 ~", // E5 C5 E5 D5
  K: "[e3,b3]@2 ~ e3@2 ~ [d3,a3]@2 ~ [d3,a3]@2 a3 [d3,a3] ~ [d3,a3] [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3] ~@2 [c3,g3]@2, ~ b3 ~@14", // E5 D5 E5 C5
  L: "~ g3@3 ~@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ b3 ~ [d3,a3]@2 ~ [d3,a3]@2 ~ [d3,a3]!2 ~ [d3,e3,b3]@2 ~, c3@3 ~@14 e3@2 ~@9 a3@3 ~", // E5 D5 E7
  M: "[[e3,b3]@2 ~ [e3,b3]@2 ~ [e3,b3]@2 [e3,b3]@2 ~ [c3,g3]@2 ~@2 g3@3 ~@2 [e3,b3] ~@2 b3@2 ~ b3@2 [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 [d3,a3]!2 a3 ~ [d3,a3] ~ [e3,b3]@2 ~ [e3,b3]@2 ~ e3@2 e3@2 ~@2 [c3,g3]@2 ~ [c3,g3]@3 ~, ~@14 c3@3 ~@5 e3@2 ~ e3@2 ~@15 [d3,e3,b3]@2 ~@7 b3@5 ~@8]/2", // E5 C5 E5 D5 E5 C5 E7
  N: "~ [e3,b3]@7 d3 c3 b2 [g2,a2] ~@20", // E5 Gsus2
})).s("gm_distortion_guitar").gain(0.51)

// other · electric guitar clean · "Ooo Guitar"
const electric_guitar_clean = note("<A@2 B C D E F ~@11 G H I@2 J K ~@5 L>".pickRestart({
  A: "[~@31 b4@5 ~@19 b4@5 ~@4]/2", B: "~@13 b4@6 ~@13", C: "~@5 b4@5 ~@18 b4@4", D: "~@19 b4@5 ~@8",
  E: "~@11 b4@5 ~@16", F: "~@3 b4@4 ~@25", G: "~@3 b4@4 ~@19 b4@4 ~@2", H: "~@17 b4@3 ~@12",
  I: "[~@8 b4@3 ~@20 b4@4 ~@19 b4@4 ~@6]/2", J: "~@13 b4@3 ~@16", K: "~@5 b4@4 ~@23",
  L: "~@2 b4@2 a4 [f4,g4] [d4,e4] [b3,c4] ~@24", // Fsus2 Dsus2 Cmaj7
})).s("gm_electric_guitar_clean").gain(0.51).pan(0)

// bass · electric bass finger · "Bass"
const bass = note("<~@3 A B@3 C D@2 E F G H I@2 J@2 K L M@3 N@2 O P Q@2 R>".pickRestart({
  A: "~@10 e2 ~@2 e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ d2 ~@2 d2 ~ d2@2",
  B: "[~ e2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ c2@2 ~ c2@5 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~@2 d2@2 d2@2 ~ d2@3 ~ e2@2 ~ e2@2 e2@2 ~ e2@2 ~ e2@3 c2@3 ~ c2@4 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~ e2 ~@2 d2@2 ~ d2@2 ~]/3",
  C: "~ e2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@3 c2@3 c2@3 ~@3 e2 ~@2 e2@2 ~ e2@2",
  D: "[~ e2 ~@2 e2@2 ~ d2@2 ~ d2 ~ d2@3 ~ e2@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@2 c2@2 ~@2 c2@2 ~@2 e2@2 ~ e2@2 ~ e2 ~@2 e2 ~@5 d2@2 ~ d2 ~ d2 ~ e2@2 ~]/2",
  E: "~ e2 ~ e2@2 ~ e2@2 ~@2 c2 ~@2 c2@2 ~ c2@3 ~@2 e2 ~@2 e2@2 ~ e2 ~@2 e2 ~",
  F: "~ e2 ~ d2@2 ~ d2@2 ~ d2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2 ~@2 e2@2 ~ c2@2 ~ c2@2",
  G: "~@3 e2@8 ~@2 e2@4 ~@2 e2@2 ~ e2@6 ~@2 e2@2", H: "~ e2@3 ~@2 e2@2 ~ e2@2 ~ e2@5 d2@4 ~ d2@3 ~@3 d2@2 ~@2",
  I: "[~@2 d2 ~@2 d2@3 ~@3 d2 ~ d2@3 ~@2 d2 ~@2 d2 ~@2 d2 ~ d2@3 ~ c2@4 ~ c2@4 ~ c2@4 ~@2 c2 ~ c2@4 ~ c2@2 ~ c2@3 ~@2 c2@3]/2",
  J: "[~ c2@3 ~@4 d2@4 ~ d2@5 d2@3 ~@2 d2@2 ~ d2@4 ~ d2@2 ~ d2@3 ~@2 d2@2 ~ d2@2 ~ d2@3 ~@2 e2 ~@2 e2@2 ~ e2 ~@2 e2 ~ e2@2 ~]/2",
  K: "~ d2 ~ d2 ~ d2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 c2@2 ~@2 c2@4 ~@2",
  L: "~ e2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~@2 d2@2 ~ d2@2 ~ d2 ~@2 e2@2 ~ e2@2 ~ e2@2",
  M: "[~ e2@2 ~@2 c2@3 ~ c2@3 ~@2 e2 ~@2 e2@2 ~ e2@2 e2 ~@2 e2@2 ~ d2@2 ~ d2@5 d2 e2@3 e2@2 ~ e2 ~ e2 ~@2 e2@2 ~ c2@2 ~ c2@3 ~@3 e2 ~@2 e2@2 ~ e2@2 e2 ~@2 e2@2 ~ d2@2 ~ d2 ~@2 d2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2 ~ e2@2]/3",
  N: "[~ c2@2 ~ c2@3 ~@3 e2 ~@2 e2 ~@2 e2@2 ~@3 e2@2 ~ d2 ~@2 d2@2 ~@2 e2@2 e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@3 c2@2 ~ c2@3 ~@2 e2@2 ~ e2@2 ~ e2@2]/2",
  O: "~ e2 ~ e2@2 ~@2 d2 ~ d2@2 ~ d2 ~ d2 ~ e2@2 ~ e2@2 ~ e2@2 e2 ~@2 e2 ~@2 c2@2",
  P: "~ c2@3 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ d2@2 ~ d2@2 ~ d2@2 e2@2 ~",
  Q: "[~ e2 ~ e2@2 ~ e2 ~@2 e2 ~@2 c2@2 ~ c2@3 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~@2 d2 ~ d2@2 ~ d2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 c2@2 ~ c2@3 ~]/2",
  R: "~ e2@3 ~@12",
})).s("gm_electric_bass_finger").gain(0.51).pan(1)

// drums · kick
const kick = s("bd").struct("<~@5 A B ~@4 C ~@4 B D ~@4 E ~@5 F ~>".pickRestart({
  A: "~@27 x ~ x ~@2", B: "~ x ~@6", C: "~@22 x ~@4 x ~@4", D: "~@2 x ~@2 x ~@10", E: "~@29 x!2 ~", F: "~@6 x!2",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@5 A B C D E F G H I J K L M F N O P Q R S H T K U ~>".pickRestart({
  A: "~@13 x ~@2", B: "~ x ~@12 x ~@11 x ~@5", C: "~@3 x ~@5 x ~@5 x", D: "~@10 x ~@10 x ~@10",
  E: "~ x ~@11 x ~@11 x ~@6", F: "~@3 x ~@11 x ~@10 x ~@5", G: "~@7 x ~@10 x ~@6 x ~@4 x ~", H: "~@9 x ~@11 x ~@10",
  I: "x ~@11 x ~@10 x ~@8", J: "~@2 x ~@10 x ~@10 x ~@7", K: "~@3 x ~@10 x ~@10 x ~@6", L: "~@7 x",
  M: "~@2 x ~@4 x ~@4 x ~@10 x ~@8", N: "~@3 x ~@4 x ~@5 x ~", O: "~@8 x ~@10 x ~@11 x", P: "~@5 x ~@5 x ~@4",
  Q: "~ x ~@5 x ~@4 x ~ x ~", R: "~ x ~@14 x ~@10 x ~@4", S: "~@7 x ~@10 x ~@10 x ~@2", T: "~ x ~@10 x ~@11 x ~@7",
  U: "~@6 x ~@14 x!2 ~@6 x ~@2",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@3 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 ~>".pickRestart({
  A: "~@11 x ~@4 x ~@6 x ~@4 x ~@3", B: "~@2 x ~@5 x ~@5 x ~@4 x ~@6 x ~@5", C: "x ~@5 x ~@4 x ~@5 x ~@4 x ~@9",
  D: "~@9 x ~@2 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2", E: "~ x ~ x ~@5 x ~@2 x ~@3 x ~@5 x ~@2 x ~@2 x ~@3",
  F: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~ x ~@5 x ~@3 x ~@2 x", G: "~@8 x ~@2 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x",
  H: "~ x ~@4 x ~@2 x ~@2 x ~@7 x ~@2 x ~@6 x ~", I: "~ x ~@2 x ~@5 x ~@2 x ~ x ~@16",
  J: "~@3 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~ x ~@2", K: "~@3 x ~@2 x ~@2 x ~@5 x ~ x ~@2 x ~@5 x ~@2 x ~ x",
  L: "~@5 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@4 x ~@2 x ~", M: "~ x ~@4 x ~@2 x ~@2 x ~@4 x ~@2 x ~ x ~@5 x ~@2 x",
  N: "~@2 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~@8", O: "~@17 x ~@2 x ~@5 x ~@2 x ~@2",
  P: "~ x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~ x ~@6 x ~", Q: "~ x ~ x ~@4 x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@5 x",
  R: "~@2 x ~@2 x ~@7 x ~@3 x ~@5 x ~@2 x ~ x ~@3", S: "~@4 x!2 ~@7 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2",
  T: "x ~@4 x ~@2 x ~@2 x ~@5 x ~ x ~@12", U: "~@11 x ~@2 x ~@4 x ~@2 x ~@2 x ~@4 x ~",
  V: "~@2 x ~ x ~@5 x ~@2 x ~ x ~@5 x ~@2 x ~@2 x ~@4", W: "~ x ~@2 x ~@2 x ~@4 x ~@3 x ~ x ~@6 x ~@2 x ~ x ~",
  X: "~@6 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~", Y: "~ x ~@4 x ~@2 x ~ x ~@8 x ~ x ~@6 x ~@2",
  Z: "x ~@2 x ~@5 x ~ x ~@4 x ~@15",
})).gain(0.51)

// drums · china
const china = s("cr").struct("<~@23 [~ x ~@6] ~@5 [~ x ~@14]>").gain(0.51)

stack(distortion_guitar, electric_guitar_clean, bass, kick, snare, hihat, china)

More by Pearl Jam