Strudelify
Love Bites cover art

Hysteria

Love Bites

Def Leppard

KeyF majorTempo130 bpm
0:00/0:00
// Love Bites — Def Leppard
// 130 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 11 "Guitar 6" overdriven guitar (copy of ch 9 "Guitar 5" electric guitar muted)
// note: Full arrangement: all 171 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · "Bass"
const bass = note(`<
  ~@24 A@2 B@2 C ~ D ~ E ~ F ~ G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O P Q R O P Q S O P Q T C ~ D ~ U ~ V ~ W ~ X ~ E ~ Y ~ C
  ~ D ~ E ~ F ~ G@2 H@2 I@2 Z@2 O P Q R O P Q S O P Q T AA AB AC AD AE AF AG AH C ~ D ~ E ~ F ~ G@2 H@2 I@2 J@2 K@2 L@2
  M@2 N@2 O P Q R O P AI@2 AJ P Q R O P Q S O P Q T AK AL AM AL AM AN AO AN ~@3
>`.pickRestart({
  A: "[d1@11 ~ d1@4]/2", B: "[f1@21 ~ f1 ~ f1@2 ~@2 f1@3 ~]/2", C: "d2 d1 d2 d1 ~@2 d2 d1",
  D: "g2@2 g1@2 g2@2 g1@3 ~@3 g2@2 g1@2", E: "c2 c1 c2 c1 ~@2 c2 c1", F: "f2 f1 f2 f1 ~@2 f2 f1",
  G: "[eb2@22 bb1@2 eb2 ~ eb2@6]/2", H: "[ab1@11 ~ ab1@2 g1@2]/2", I: "[f1@23 ~ f1@7 ~]/2",
  J: "[bb1@10 f1@2 bb1 ~ bb1@10 ab1@8]/2", K: "[eb2@2 bb1 ~ eb1@6 bb1@2 eb2 ~ eb1@7 ~ bb1@2 eb2 ~ d2@6]/2",
  L: "[ab1@23 ~ ab1@8]/2", M: "[f1@11 ~ f1 ~ f1@17 ~]/2", N: "[bb1@10 f1@2 bb1 ~ bb1@18]/2", O: "c2", P: "ab1", Q: "f1",
  R: "bb1@6 f1@2 bb1 ~ bb1@6", S: "bb1 ~ bb1@4 f1@2 bb1 ~ bb1@6", T: "bb1", U: "c2@2 c1@2 c2@2 c1@3 ~@3 c2@2 c1@2",
  V: "f2@2 f1@2 f2@2 f1@3 ~@3 f2@2 f1@2", W: "d2@2 d1@2 d2@2 d1@3 ~@3 d2@2 d1@2", X: "g2 g1 g2 g1 ~@2 g2 g1",
  Y: "f2 f1 ~ f1 ~@2 f2 f1, ~ f2 ~@2", Z: "[bb1@10 f1@2 bb1 ~ bb1@10 ~@8]/2", AA: "d2@2 ~ d2@2 ~@3",
  AB: "~ d2 ~ d2@2 ~@3", AC: "g2@3 ~@3 g2@4 ~@6", AD: "~@2 g2@2 ~@2 g2@3 ~@7", AE: "c2@3 ~@3 c2@4 ~@6",
  AF: "~ c2 ~ c2@2 ~@3", AG: "f2@3 ~@3 f2@3 ~@7", AH: "~@2 f2@2 ~@2 f2@3 ~@7", AI: "[f1 ~ f1@3 ~@3 bb1@22 ~@2]/2",
  AJ: "c2@13 ~@3", AK: "d2@4 ~@2 d2@3 ~@7", AL: "~@2 d2@2 ~@2 d2@3 ~@7", AM: "d2@3 ~@3 d2@3 ~@7", AN: "~ d2 ~ d2 ~@4",
  AO: "d2@3 ~@3 d2@2 ~@8",
})).s("gm_electric_bass_finger").gain(0.43)

// chords · pad halo · "Keyboard 1"
const pad_halo = note(`<
  A@2 B@2 C@4 A@2 B@2 C@4 A@2 B@2 C@4 ~@4 A@2 B@2 C@4 D@2 E@2 F@2 G@2 H@2 I@2 F@2 J@2 K L M N K L M N K L M N A@2 B@2
  C@4 A@2 B@2 C@4 A@2 B@2 C@4 D@2 E@2 F@2 O@2 K L M N K L M N K L M N ~@8 A@2 B@2 C@4 D@2 E@2 F@2 G@2 H@2 I@2 F@2 J@2 K
  L M N K L ~@2 K L M N K L M N K L M N P@8 Q@3
>`.pickRestart({
  A: "[f4,a4,c5,d5]/2", B: "[d4,f4,g4,bb4]/2", C: "[bb4@32 a4@31 ~, [c4,f4,g4]]/4", D: "[[g3,bb3,eb4]@15 ~]/2",
  E: "[[ab3,c4,eb4]@31 ~]/2", F: "[[ab3,c4,f4]@15 ~]/2", G: "[[bb3,d4,f4]@3 [ab3,c4,eb4]]/2",
  H: "[[g3,bb3,eb4]@31 ~]/2", I: "[[ab3,c4,eb4]@15 ~]/2", J: "[[bb3,d4,f4]@29 ~@3]/2", K: "[c4,eb4,g4]@15 ~",
  L: "[c4,eb4,ab4]@13 ~@3", M: "[c4,f4,a4]@7 ~", N: "[d4,f4,bb4]", O: "[[bb3,d4,f4]@3 ~]/2",
  P: "[d5 c5 d5 c5, [f4,a4]]/8", Q: "[d5@17 ~@7]/3",
})).s("gm_pad_halo").gain(0.12).pan(0.6)

// chords · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  A@2 B@2 C@2 D@2 A@2 E@2 F@2 D@2 G@2 H@2 I@2 J@2 ~@4 A@2 E@2 F@2 D@2 ~@28 A@2 B@2 C@2 D@2 A@2 E@2 F@2 D@2 A@2 E@2 F@2
  D@2 ~@21 K L M N O P Q R K L M N O P ~@48
>`.pickRestart({
  A: "[~ [c4,d4,f4]@6 ~, d3@7 ~, ~ a3@13 ~@2]/2", B: "[~ [f3,g3,bb3]@6 ~, g2@7 ~, ~@2 d3@27 ~@3]/2",
  C: "[~@6 f4@23 ~@3, c3@29 ~@3, ~@2 g3@27 ~@3, ~@4 bb3@25 ~@3]/2",
  D: "[~@2 c3@5 ~, f2@7 ~, ~ c3@2 g3@11 ~@2, ~ f3@6 ~]/2", E: "[~ [f3,g3,bb3]@6 ~, g2@7 ~, ~ d3@13 ~@2]/2",
  F: "[~@6 f4@21 ~@5, c3@27 ~@5, ~@2 g3@25 ~@5, ~@4 bb3@23 ~@5]/2", G: "[~@4 [c4,d4,f4]@23 ~@5, d3@7 ~, ~ a3@13 ~@2]/2",
  H: "[~@4 [f3,g3,bb3]@25 ~@3, g2@29 ~@3, ~@2 d3@27 ~@3]/2", I: "[~@3 f4@11 ~@2, c3@7 ~, ~ g3@13 ~@2, ~ bb3@6 ~]/2",
  J: "[~@8 c3@23 ~, f2@31 ~, ~@2 c3@4 g3@25 ~, ~@4 f3@27 ~]/2", K: "~@10 c4@2 ~ c4 ~@2", L: "c4@2 ~ d4@4 ~",
  M: "~@8 f4@3 d4@2 ~ a3 ~", N: "~ bb3@8 ~@7, d4 ~", O: "~@8 d4@3 a3@3 f3@2", P: "~ d3@6 ~@9",
  Q: "~@8 f4@2 e4@2 c4@2 a3 ~", R: "d4@3 ~",
})).s("gm_electric_guitar_clean").gain(0.42).pan(0.4)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar = note(`<
  ~@24 A@2 B@2 ~@8 C@2 D@2 E@2 F@2 G@2 H I J@2 K@2 L M N O L M N O L P Q R ~@24 C@2 D@2 E@2 S@2 L M N O L M N O L P Q R
  ~@16 C@2 D@2 E@2 F@2 G@2 H I J@2 K@2 L M N O L M T@2 L M N O L M N O L P Q R ~@11
>`.pickRestart({
  A: "[[d3,a3]@15 ~]/2", B: "[f2,c3]/2", C: "[[eb3,bb3]@15 ~]/2", D: "[ab2@23 ~ ab2@4 g2@4, eb3]/2",
  E: "[~@2 [c3,f3]@13 ~, f2@15 ~]/2", F: "[bb2@12 ab2@3 ~, f3@15 ~]/2", G: "[[eb3,bb3]@29 ~@3]/2", H: "eb3, ab2@7 ~",
  I: "~ eb3 ~ ab2 ~ eb3 ab3@2, ab2@2 ab3@3 ~@3, ~@8 g2@7 ~", J: "[f2 ~@3 [c3,f3]@11 ~, ~@4 f2@27 ~]/2",
  K: "[[bb2,f3]@15 ~]/2", L: "[c3,g3]", M: "[ab2,eb3]", N: "[f2,c3]", O: "[bb2,f3]", P: "ab2", Q: "f2", R: "bb2",
  S: "[f3@15 ~, bb2@3 ~]/2", T: "[[f2,c3] ~ [f2,c3]@4 ~@2 [bb2,f3]@23 ~]/2",
})).s("gm_distortion_guitar").gain(0.25).pan(0.3)

// other · electric guitar muted · "Guitar 5"
const electric_guitar_muted = note("<~@108 A B A B A B A B A B A B A B A B C ~@46>".pickRestart({
  A: "d4@2 c4@2 a3 ~ a3 ~ f4 ~ e4 ~ c4 ~ a3@2", B: "d4@2 c4 ~ a3 ~ a3@2 f4 ~ e4 ~ c4@2 a3 ~", C: "d4 ~@7",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.7)

// other · electric guitar clean · "Echo 1"
const electric_guitar_clean_2 = note("<~@110 A@3 B C D E@2 A@3 B C ~@48>".pickRestart({
  A: "[c4@2 ~ c4 ~@2 c4@4 ~@2 d4@8 ~@10 f4@3 d4@2 ~ a3 ~@2 bb3@8 ~, ~@19 d4@4 ~]/3", B: "~@7 d4",
  C: "~ a3@3 f3@2 ~ d3@6 ~@3", D: "~@7 f4", E: "[e4@2 c4@2 a3 ~ d4@12 ~@14]/2",
})).s("gm_electric_guitar_clean").gain(0.36).pan(1)

// other · electric guitar clean · "Echo 2"
const electric_guitar_clean_3 = note("<~@110 A B C@2 D@2 E@2 A B C@2 D@2 ~@47>".pickRestart({
  A: "~@6 c4@2 ~ c4 ~@2 c4@4", B: "~ d4@4 ~@3", C: "[~@4 f4@3 d4@2 ~ a3 ~@2 bb3@8 ~@11, ~@3 d4@2 ~@3]/2",
  D: "[~@4 d4@3 a3@3 f3@2 ~ d3@6 ~@13]/2", E: "[~@4 f4@2 e4@2 c4@2 a3 ~ d4@12 ~@8]/2",
})).s("gm_electric_guitar_clean").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A@26 B C A@3 D A D A E F G H I H I H I H I H I H I H J K G K L K G K L M F@2 E F G N K F G N K F G N K F G N K F G N K
  F G N O F G H I H I H J K G K L K G K L M F@2 E G P G P G P G P F G N K F G N O F G H I H I H I H I H I H I H J K G K
  L K G Q ~ K G K L K G K L M F@2 E G P G P G P G P ~@3
>`.pickRestart({
  A: "~ x", B: "x!2", C: "~@3 x!2 ~ x ~", D: "~@3 x!2 ~@3", E: "x ~@2 x ~ x ~@2", F: "x", G: "x ~@2 x ~@4",
  H: "x ~ x ~@3 x!2", I: "~@3 x ~@4", J: "~@2 x ~@4 x", K: "x!2 ~@2", L: "x ~@2 x ~ x ~ x", M: "x ~@2 x", N: "x ~@6 x",
  O: "~@3 x ~ x ~@2", P: "~ x ~ x ~@4", Q: "x ~ x ~@6 x ~@6",
})).gain(0.54)

// drums · snare
const snare = s("sd").struct(`<
  ~@35 A@16 B A@11 ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ C A@7 B A@11 ~@4 D ~@3 D ~ A ~ A ~ A ~ C A@15 B A@6 ~
  E A@11 ~@4 D ~@3 D ~@3
>`.pickRestart({
  A: "~ x", B: "x!2 ~ x ~ x!2 ~", C: "x!2", D: "x", E: "~@7 x!2 ~ x ~@5",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct(`<
  A@4 B A B A@3 B@2 A@4 B A B A@3 B@2 A@4 B A B A@4 ~ C@15 D C@11 ~ A@4 B A B A@3 B@2 A@4 B A B A@4 E C@7 D C@11 ~ A@3 F
  B A B F B A B A@4 E C@15 D C@6 ~@2 C@11 ~ A@3 F B A B F B A ~
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@4 x!2 ~ x", C: "~ x", D: "x!2 ~ x ~ x!2 ~", E: "x", F: "x ~@3 x!2 ~@2",
})).gain(0.42)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  A@4 B A B A@3 B@2 A@4 B A B A@3 B@2 A@4 B A B A@4 ~@29 A@4 B A B A@3 B@2 A@4 B A B A@4 ~@21 A@4 B A B A B A B A@4 ~@37
  A@4 B A B A B A ~
>`.pickRestart({
  A: "~@6 x!2", B: "~@3 x",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@115 [~@7 x] ~@31 [~@6 x!2] ~@19 [~@7 x] ~@3>").gain(0.6)

// drums · mid tom
const mid_tom = s("mt").struct("<~@115 [~@4 x!3 ~] ~@51 [~@4 x!3 ~] ~@3>").gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@24 A ~ A ~@8 B ~@51 B ~@35 B ~@22 C ~@24>".pickRestart({
  A: "x", B: "~ x", C: "~ x ~@2 x ~@3",
})).gain(0.6)

// drums · ride bell
const ride_bell = s("rd").struct("<[x!4]!35 x [x!4]!51 x [x!4]!35 x [x!4]!46 x>").gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct(`<
  A ~ B ~ B ~ C ~ A ~ A ~ A ~ B ~ B ~ C ~ A ~ A ~ A ~ B ~ B ~ C ~ A ~ B ~@29 A ~ B ~ B ~ C ~ A ~ A ~ A ~ B ~ B ~ C ~ A ~
  B ~@21 A ~ B ~ B ~ C ~ B ~ C ~ A ~ B ~@37 A ~ B ~ B ~ C ~ C ~ D
>`.pickRestart({
  A: "x!4 ~@4", B: "x!2 ~ x ~@4", C: "x!2 ~@6", D: "x",
})).gain(0.42)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@2 A ~ A ~ B ~@7 A ~ A ~ B ~@7 A ~ A ~ B ~@3 A ~@31 A ~ A ~ B ~@7 A ~ A ~ B ~@3 A ~@23 A ~ A ~ B ~ A ~ B ~@3 A ~@39 A
  ~ A ~ B ~ B ~@2
>`.pickRestart({
  A: "~ x ~@2", B: "~@2 x!2 ~@4",
})).gain(0.24)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~ A ~ A ~ B ~ C ~ C ~ B ~ A ~ A ~ B ~ C ~ C ~ B ~ A ~ A ~ B ~ C ~ A ~ D ~@29 A ~ A ~ B ~ C ~ C ~ B ~ A ~ A ~ B ~ C ~ A
  ~ D ~@21 A ~ A ~ B ~ C ~ B ~ C ~ A ~ D ~@37 A ~ A ~ B ~ C ~ C ~
>`.pickRestart({
  A: "x!4 ~@4", B: "x!2 ~@6", C: "x!2 ~ x ~@4", D: "x",
})).gain(0.24)

// drums · cowbell · soft notes
const cowbell_soft = s("cb").struct(`<
  ~@5 A ~ B ~@3 B ~@5 A ~ B ~@3 B ~@5 A ~ B ~@37 A ~ B ~@3 B ~@5 A ~ B ~@29 A ~ B ~ A ~ B ~@45 A ~ B ~ B ~
>`.pickRestart({
  A: "~@2 x!2 ~@4", B: "~ x ~@2",
})).gain(0.18)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A@35 ~ B@28 A@23 ~ B@20 A@15 ~ B@22 C B@13 A@8 D A ~>".pickRestart({
  A: "x!4 ~ x!3", B: "x!4", C: "~ x!3", D: "~ x!3 ~ x!3",
})).gain(1.83)

// drums · shaker
const shaker = s("sh").struct("<A@35 ~ B@28 A@23 ~ B@20 A@15 ~ B@36 A@10 ~>".pickRestart({
  A: "~ x", B: "~ x ~ x ~ x ~ x",
})).gain(0.3)

stack(
  bass, pad_halo, electric_guitar_clean, distortion_guitar, electric_guitar_muted, electric_guitar_clean_2,
  electric_guitar_clean_3, kick, snare, clap, clap_soft, low_tom, mid_tom, crash, ride_bell, tambourine,
  tambourine_soft, cowbell, cowbell_soft, cabasa, shaker
)

More by Def Leppard