Strudelify
Jeremy cover art

1992 · Ten

Jeremy

Pearl Jam

KeyA minorTempo100 bpm
0:00/0:00
// Jeremy — Pearl Jam
// 100 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "gtr 1" named as a guitar, played on electric guitar clean (its dulcimer patch is not one); ch 3 "gtr 2 (overdriven)" named as a guitar, played on overdriven guitar (its percussive organ patch is not one); ch 5 "gtr 4 (acoustic)" named as a guitar, played on acoustic guitar steel (its music box patch is not one)
// note: Full arrangement: all 128 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · electric guitar clean · "gtr 1"
const electric_guitar_clean = note(`<
  A B@6 C D E@2 F@2 G H I J ~@3 K@2 ~@2 L@2 M N O P M N ~ P M N O P M N ~ G H I J G H I J E@2 F@2 G H I J ~@3 K@2 ~@2
  L@2 M N O P M N ~ P M N O P M N ~ P M N O ~@7 Q@3 P M N O P M N R@4 S T U@2 S T U@2 S T U@2 V@4 ~@6
>`.pickRestart({
  A: "~@10 [a1,a2]@2 [d2,d3] [e2,e3] [a1,a2]@2", // A D E A
  B: "[[a2,a3]@4 [a1,a2]@2 [g2,g3]@20 [a1,a2]@2 [d2,d3] [e2,e3] [a1,a2]@2]/2", // A G A D E A
  C: "[a2,a3]@2 [a1,a2] [g2,g3]@3 [g2,g3]!2", // A G
  D: "[g2,g3]@2 [g2,g3]@2 [g2,g3]@2 [g2,g3]@2 [g2,g3]@2 [a1,a2]@2 [d2,d3] [e2,e3] [a1,a2]@2", // G A D E A
  E: "[a3@4 a2@2 ~@20 a2@2 d3 e3 a2@2, ~@3 g3@12 ~]/2", F: "[a3@4 a2@2 c#3@16 c#3@4 a2@2 d3 e3 a2@2]/2",
  G: "a3@3 a3 a2@2 g3@10", H: "[a2,g3,d4] [g4,a4]@8 a2@2 d3 e3@2 g3@2", I: "a3 [a3,d4,e4]@2 [a3,d4,e4,a4]@5",
  J: "[d4,e4,a4] [a3,d4,e4,a4]!2 [a3,d4,e4,a4]@2 [a3,d4,e4,a4] [a3,c#4,e4,a4]@4 a2@2 d3 e3 g3@2", // Dsus2 Asus4 A
  K: "[b4 ~ e4 b4@2 a4@4 ~@7, ~@4 a4@7 ~@53]/2",
  L: "[b4 ~ e4 b4@2 ~@3 [e3,e4] [a3,a4] [c4,c5] [e4,e5]@2 [c4,c5] [a3,a4]!2, ~@4 a4@7 ~@9 a4@16 ~@28]/2", // E A C E C A
  M: "[a3,a4] [e3,e4]@2 [a3,a4]@3 [a3,a4] [b3,b4]", // A E A B
  N: "[b3,b4] [c#4,c#5] ~ [b3,b4] [a3,a4]@4 [b3,b4]@8 [a3,a4]@8 [a3,a4]@4 [b3,b4] [c#4,c#5] ~ [b3,b4]", // B C# B A B A B C# …
  O: "[a3,a4]@2 [b3,b4]@2 [a3,a4]@2 [a3,a4]!2", P: "[e3,e4] [a3,a4] [c4,c5] [e4,e5]@2 [c4,c5] [a3,a4]!2",
  Q: "[a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [d4,d5] [e4,e5] [g4,g5]@2", // A D E G
  R: "~ [a3,e4,a4] ~ [a3,e4,a4] ~ [a3,e4,a4] ~ [a3,e4,a4]", S: "[f3,c4,f4]!8",
  T: "[g3,d4,g4] ~@7 [g3,d4,g4]@4 [g3,d4,g4]@4 [g3,d4,g4]@4 [g3,d4,g4]@4 [g3,d4,g4]@4 [g3,d4,g4]@4", U: "[a3,e4,a4]!8",
  V: "[d5,d6]!8", // D
})).s("gm_electric_guitar_clean").gain(0.36)

// chords · overdriven guitar · "gtr 2 (overdriven)"
const overdriven_guitar = note(`<
  ~@2 A@2 B@2 C@2 ~@8 D E F G@2 E F G@2 H I J K L@2 J M H I J N O@2 P M ~@8 Q R S T Q R S T E F G@2 E F G@2 H I J K L@2
  J M H I J N O@2 P M H I J K U V W X U V W X ~@2 H I J K ~@2 Y@2 ~@3 Z AA AB AC AD AE AF AG AD AE AF AG ~@10
>`.pickRestart({
  A: "[[d4,d5]@2 ~ [g3,g4]@8 ~@5]/2", B: "[[d5,d6]@3 ~ [a4,a5]@8 ~@4]/2",
  C: "[[d5,d6]@6 ~@2 [g4,g5]@6 ~ [a4,a5]@12 ~@5]/2", D: "~@10 [a1,a2,a3]@2 [d2,d3,d4] [e2,e3,e4] [a1,a2,a3]@2",
  E: "[a2,e3,a3,e4,a4,e5] [a1,a2,a3] [a2,d3,a3,d4,a4,d5]@4 [a1,a2,a3]@2", // A5 A D5 A
  F: "[g2,d3,g3,d4,g4,d5]@8 [g2,d3,g3,d4,g4,d5]@2 [a1,a2,a3]@2 [d2,d3,d4] [e2,e3,e4] [a1,a2,a3]@2", // G5 A D E A
  G: "[[a2,d3,a3,d4,a4,d5]@2 [a1,a2,a3]@2 [a2,a3]@22 [a1,a2,a3]@2 [d2,d3,d4] [e2,e3,e4] [a1,a2,a3]@2, ~ [e3,e4,a4,e5]@6 ~]/2", // D5 A D E A A5
  H: "[f4,c5,f5]!2 [f4,c5,f5]@6", I: "[d4,a4,d5]@3 [d4,a4,d5]@3 [f4,c5,f5]@2", J: "[a3,e4,a4]",
  K: "[a3,e4,a4]@8 [a3,e4,a4]@2 a3@2 d4 e4 a3!2", // A5
  L: "[[f4,c5,f5]!2 [f4,c5,f5]@2 [f4,c5,f5]@2 ~@2 [d4,a4,d5]@3 [e4,b4,e5]@3 [c4,g4,c5]@2, ~@6 [f4,c5,f5]@3 ~@7]/2", // F5 D5 E5 C5 F5
  M: "[a3,e4,a4]@2 a5 ~ [e5,a5]@2 ~@2", N: "a3@3 a3@5 [a3,e4,a4]@2 a3@2 d4 e4 a3!2, [e4,a4] ~",
  O: "[[f4,c5,f5]@4 [f4,c5,f5]@4 [f4,c5,f5]@7 ~ [f4,c5,f5]@8 ~@16 c4@4 [d4,d5]@8 ~@8 [d4,d5]@4, ~@15 [b3,b4]@25 ~@12 [a3,a4]@7 [e4,e5]@2 ~@3, ~@24 [f4,c5,f5]@12 ~@3 c5@5 ~@14 [d4,d5]@2 ~@4, ~@8 [d4,a4,d5]@3 [e4,b4,e5]@3 [c4,g4,c5]@2]/2", // F5 D B A E F5 D D5 …
  P: "[a3,a4] [a3,a4]@12 ~@3, e4", Q: "a3@3 a3 a2@2 g3@10", R: "[a2,g3,d4] [g4,a4]@8 a2@2 d3 e3@2 g3@2",
  S: "a3 [a3,d4,e4]@2 [a3,d4,e4,a4]@5", // Asus4
  T: "[d4,e4,a4] [a3,d4,e4,a4]!2 [a3,d4,e4,a4]@2 [a3,d4,e4,a4] [a3,c#4,e4,a4]@4 a2@2 d3 e3 g3@2", // Dsus2 Asus4 A
  U: "a4@3 a3 a3@2 g4@4 a3@2 d4 e4 a3@2", V: "a4@2 a3@2 d4 e4 g4@4 a3@2 d4 e4 a3@2",
  W: "a4@4 a3@2 g4@4 a3@2 d4 e4 a3@2", X: "a4@2 a3 c#4 d4 e4 g4@4 a3@2 d4 e4 a3@2",
  Y: "[b4 c#5 b4 a4@2 g5@2 b4@4 a4@4 a4@2 b4 c#5 b4 a4 e5 b4@4 a4@4 a4@2]/2",
  Z: "[f2,c3,f3]!8, [a3,a4]@3 [b3,b4]@3 [e4,e5]@2", // F5 A B E
  AA: "[g2,d3,g3] ~@7 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4, [a3,a4]@3 [b3,b4]@3 [c4,c5]@2", // G5 A B C
  AB: "[a2,e3,a3] [a2,e3,a4] [a2,e3,a3,e4,e5] [a2,e3] [a2,e3,a3] [a2,e3,a4] [a2,e3,a3]!2, ~@4 a3 ~@7 a4@8 ~@4 [e4,e5]@8, ~@12 a3 ~@7 a3 ~@11", // A5 E
  AC: "[a2,e3,a4]!2 [a2,e3,a3,e4,e5] [a2,e3] [a2,e3,a3] [a2,e3,a4] [a2,e3,a3,e4,e5] [a2,e3,a4], a3 ~@3 a3 ~@7 a4@8 ~@12, ~@12 a3 ~@7 a3 ~@7 a3 ~@3", // A5
  AD: "[f2,c3,f3]!8, a3@3 b3@3 e4@2", // F5
  AE: "[g2,d3,g3] ~@7 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@4, a3@3 b3@3 c4@2", // G5
  AF: "[a2,e3,a3] [a2,e3] [a2,e3,a3,e4] [a2,e3] [a2,e3,a3] [a2,e3] [a2,e3,a3]!2, ~@4 a3 ~@7 a3 ~@7 a3 ~@3 e4@8", // A5
  AG: "[a2,e3]!2 [a2,e3,a3,e4] [a2,e3] [a2,e3,a3] [a2,e3] [a2,e3,a3,e4] [a2,e3], a3 ~@3 a3 ~@7 a3 ~@7 a3 ~@7 a3 ~@3", // A5
})).s("gm_overdriven_guitar").gain(0.36)

// chords · acoustic guitar steel · "gtr 4 (acoustic)"
const acoustic_guitar_steel = note(`<
  ~@25 A B@2 C ~@36 A B@2 C ~@26 D E F G ~@7 H I J K ~@8 L M N O P Q R S@3
>`.pickRestart({
  A: "[c4,f4,a4,c5,f5]!2 [c4,f4,a4,c5,f5]@6", // F
  B: "[[f4,g4,c#5,f5]@3 [f4,g4,b4,f5]@3 [f4,g4,c#5]@2 [a3,e4,a4,e5]@8, ~@6 f5@3 ~@7]/2", C: "[a3,e4,a4,c#5,e5]",
  D: "[f4,c5,f5]!2 [f4,c5,f5]@4 [f4,c5,f5]@2", E: "[f4,c5,f5]@3 [f4,c5,f5]@3 [f4,c5,f5]@2", F: "[a3,e4,a4]",
  G: "[a3,e4,a4]@2 a5 ~ [e5,a5]@4", H: "a4@3 b4@3 e5@2", I: "a4@3 b4@3 c5@2", J: "~ a4 e5 a4@2 a4 e5@2",
  K: "a4!2 e5 a4@2 a4 e5 a4", L: "~ [d4,d5] [g4,g5] [d4,d5] ~ [d4,d5] [f#4,f#5] [d4,d5], [a2,a3]!2",
  M: "~ [d4,d5] [f#4,f#5] a2 ~ [c4,c5] [e4,e5] [c4,c5], a3 ~, a2@3 ~ [a2,a3]@4", // D F# C E C A
  N: "[c4,c5] [g3,g4] [b3,b4] a2 a4 [c#4,c#5]@2 ~, a3 ~, a2@3 ~ [a2,a3]@4", // C G B C# A
  O: "~ [g3,g4] [b3,b4] a2 ~ a4 [c4,c5] a4, a3 ~, a2@3 ~ [a2,a3]@4", // G B C A
  P: "~ [e4,e5] [g4,g5] a2 ~ [d4,d5] [f#4,f#5] [d4,d5], a3 ~, a2@3 ~ [a2,a3]@4", // E G D F# D A
  Q: "~ [b3,b4] [d4,d5] a2 ~ [c4,c5] [e4,e5] [c4,c5], a3 ~, a2@3 ~ [a2,a3]@4", // B D C E C A
  R: "~@4 [g3,g4]@4 [b3,b4]@4 [g3,g4]@4 a2 ~@7 a4@4 [c4,c5]@4, [a2,a3] a3", // G B G C A
  S: "[a4@4 ~@8 b4@4 [a2,a3] ~@6 a5@12 d5@6 g5@39 ~@16, [a2,a3] ~@5, ~ g3@4 ~@7, ~ g4@3 ~@8, ~@6 b3@11 ~@31]/3", // A
})).s("gm_acoustic_guitar_steel").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@40 [~@3 x ~@12] ~@39 [~@3 x ~@12] ~@47>").gain(0.26)

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

// drums · clap
const clap = s("cp").struct("<~@9 [~@7 x ~@8]!7 ~@30 [~@7 x ~@8]!7 ~@75>").gain(0.1)

// drums · low tom
const low_tom = s("lt").struct("<~@25 [~ x ~@6]!15 ~@25 [~ x ~@6]!15 ~@48>").gain(0.26)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@9 A@7 ~ B C B C B C B ~@22 A@7 ~ B C B C B C B ~ C B ~@17 D@10 E F@24 ~@12
>`.pickRestart({
  A: "~@11 x ~@4", B: "x ~ x!3 ~ x!2", C: "x ~ x!6", D: "x!8", E: "x ~ x!5 ~ x!5 ~ x!2",
  F: "x!2 ~@2 x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3 x ~ x ~",
})).gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A B C ~ D ~@6 E F G F G F G F H I@15 ~@6 D ~@6 E F G F G F G F H G F H I@15 ~ J@10 ~ K@24 ~@12
>`.pickRestart({
  A: "x ~@3 x ~ x!2 ~ x!2 ~@5", B: "x ~ x!3 ~@3", C: "~ x!3 ~ x!11", D: "x!3 ~", E: "x!2 ~ x!2 ~ x!2",
  F: "x!2 ~@4 x!2 ~ x ~@3 x ~@2", G: "~ x ~ x ~ x ~@3 x ~ x ~@3 x", H: "~@2 x ~ x!2 ~@2", I: "x!2",
  J: "~@2 x ~ x!3 ~ x!2 ~@2 x ~ x!2", K: "x!2 ~@2 x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3 x ~ x ~",
})).gain(0.26)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@9 [~@3 x] [x!4]!6 ~@30 [~@3 x] [x!4]!6 ~@75>").gain(0.1)

// drums · ride
const ride = s("rd").struct("<~@7 [~ x ~@7 x ~ x ~ x ~@2] ~@8 [~@2 x ~@2 x ~@2] ~@36 [~@2 x ~@2 x ~@2] ~@74>")
  .gain(0.26)

stack(
  electric_guitar_clean, overdriven_guitar, acoustic_guitar_steel, kick, snare, clap, low_tom, open_hat, crash,
  crash_soft, ride
)

More by Pearl Jam