Strudelify

Heaven Is

Def Leppard

KeyG majorTempo116 bpm
0:00/0:00
// Heaven Is — Def Leppard
// 116 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 1"
const distortion_guitar = note(`<
  A B A C@2 D E F G D E F G H I J K L M N O@8 P@3 D E F G D E F G L M N O@8 Q@6 ~@3 R S T@3 U@2 V W X Y Z AA AB L M N
  O@8 AC@8 P@3 AD@2 AE@3
>`.pickRestart({
  A: "~@3 d4 ~@3 d4, d3 c3, ~ a3 ~ g3", B: "~@3 d4 ~@3 d4, g2@2 ~ a3, ~ g3 d3@2", C: "[g2,d3,g3,d4,g4]/2",
  D: "[b2,f#3]@4 ~@4 [b2,f#3]@4 [b2,f#3] ~ [b2,f#3] ~", E: "[e3,b3]!2 ~ [b2,f#3]@3 [b2,f#3]!2",
  F: "~@2 [b2,f#3]@2 ~@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3] ~ [b2,f#3] ~", // B5
  G: "[e2,b2]@2 [e2,b2]@2 ~@2 [b2,f#3]@6 [b2,f#3] ~ [b2,f#3] ~", H: "[e2,b2]@4 [e2,b2] ~ [e2,b2] ~ [e2,b2]@4 ~@4",
  I: "[a2,e3]@2 ~ [e2,b2]@3 [e2,b2]!2", J: "[b2,f#3] ~ [b2,f#3]@2 ~@2 [b2,f#3]@6 ~@4",
  K: "[e3,b3]!2 ~ [b2,f#3]@2 [b2,f#3]!3", L: "[b3,e4] ~ [b3,e4]@2 ~@2 [b3,e4] ~@3 b3@2 ~@2 [b3,e4] ~, ~@2 d#4 ~",
  M: "[b3,e4]@2 [b3,e4]@2 ~@2 [b3,d#4]@2 ~@2 [b3,d#4] ~ [b3,d#4,e4]@2 [b3,e4]@2", // E5 B Emaj7 E5
  N: "~@2 [b3,e4]@2 ~@2 [b3,e4] ~@3 b3@2 ~@2 [b3,e4] ~, ~@2 d#4 ~", // E5
  O: "[[b3,e4]@2 [b3,e4]@4 [b3,d#4]@4 b3 ~ d#4 ~ [c3,g3,d4,e4]@16 [g2,d3,g3,d4,g4]@16 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 g2@2, ~@23 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 ~, ~@25 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~]/8", // E5 B C G5
  P: "[~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4@2, ~ g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@3, ~@5 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@5]/3",
  Q: "[~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 d3@4 ~@5, ~ g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 ~@9, ~@5 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@9]/6",
  R: "[b3,c4,b4,c5]!2 [b3,b4] [b3,c4,b4,c5]!13", S: "[b3,c4,b4,c5] [c4,c5] [b3,c4,b4,c5]!14",
  T: "[c4 ~ a4 ~ f4 ~ c4 ~ g4 ~ f4 ~ c4 ~ [f4,a4]@4 c4 ~ f4 ~ f4 ~ [f4,g4] ~ [f4,g4] ~ [f4,a4] ~ [f4,a#4]@4 a4 ~ f4 ~ c4 ~ g4 ~ f4 ~ c4 ~ f4 ~]/3", // F Fsus2 F A#5
  U: "[~@2 f4 ~ f4 ~ c4 ~ g4 ~ c4 ~ f4 ~ [g3,c4]@4 b3 ~ a3 ~ g3 ~ a3 ~ g3 ~ d3 ~ g3 ~]/2", // C5
  V: "d3 ~ d3 ~ g3 ~ d3 ~ a3 ~ d3 ~ b3 ~ c4 ~", W: "~@2 b3 ~ a3 ~ g3 ~ a3 ~ g3 ~ d3 ~ g3 ~",
  X: "d3 ~ d3 ~ g3@2 d3@2 a3@2 d3@2 b3@2 g3@2", Y: "d#4 ~ f#4 ~ b4 ~ c#5 f#4", Z: "d#5 f#4 e5 e5@4 ~",
  AA: "f#5@2 d#5 b4 f4@2 c#4 ~ b3 c#4 f4@3 b4 c#5 ~", AB: "c#5@3 c#5@5",
  AC: "[~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 g2, ~ g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~, ~@5 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 ~]/8",
  AD: "[d3,a3,d4]/2", AE: "[~@2 g3 ~@2 g3 [g2,d3,g3,d4,g4] [g2,d3,g3,d4,g4]@17, c3 b2 ~@6, ~ d3@2 ~ d3@2 ~@18]/3",
})).s("gm_distortion_guitar").gain(0.57)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar_2 = note(`<
  ~@2 A B@2 C D E F C D E F G H I J K@3 L ~ M@8 N C D E F C D E F K@3 L ~ M@8 O@4 P Q@2 R@2 S@8 C D E F K@3 L ~ M@8 T@8
  N U@2 V@3
>`.pickRestart({
  A: "[d3,a3,d4]!2 [d3,a3,d4]@14", B: "[g2,d3,g3,d4,g4]/2", C: "[b2,f#3]@4 ~@4 [b2,f#3]@4 [b2,f#3] ~ [b2,f#3] ~",
  D: "[e3,b3]!2 ~ [b2,f#3]@3 [b2,f#3]!2", E: "~@2 [b2,f#3]@2 ~@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3] ~ [b2,f#3] ~",
  F: "[e2,b2]@2 [e2,b2]@2 ~@2 [b2,f#3]@6 [b2,f#3] ~ [b2,f#3] ~", G: "[e2,b2]@4 [e2,b2] ~ [e2,b2] ~ [e2,b2]@4 ~@4",
  H: "[a2,e3]@2 ~ [e2,b2]@3 [e2,b2]!2", I: "[b2,f#3] ~ [b2,f#3]@2 ~@2 [b2,f#3]@6 ~@4",
  J: "[e3,b3]!2 ~ [b2,f#3]@2 [b2,f#3]!3", K: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  L: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ [c3,g3,d4,e4]@2", // C
  M: "[~@10 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 g2, ~@7 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~, ~@9 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 ~]/8",
  N: "~@2 d4 ~@3 d4@2, ~ g3@2 d3@5, ~@5 a3@3",
  O: "[~@4 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 [g2,d3,g3,d4,g4]!2, ~ g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~, ~@5 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 ~]/4", // G5
  P: "[g2,d3,g3,d4,g4]@14 [g2,d3,g3,d4,g4]!2", Q: "[[a2,e3,a3]@15 [a2,e3,a3]]/2", R: "[a2,e3,a3]/2",
  S: "[[c4,f4] ~@5 [c4,f4] ~ [c4,f4] ~@3 [c4,f4] ~ [f4,c5]@14 [f4,a4]@2 [f4,a#4]@14 [f4,a#4]@2 [c4,f4]@16 [g2,d3,g3,d4,g4]@16 [g4,d5]@4 [g4,d5]@2 [g4,d5]@2 [g4,d5]@2 [g4,d5]@4 [g4,d5]@2 [g4,c5]@4 [g4,c5]@2 [g4,c5]@4 [g4,c5]@2 [g4,d5]@2 [g4,c5]@2 [d4,g4]@4 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2]/8", // F5 F A#5 F5 G5 C5 G5 C5 …
  T: "[~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 g2, ~ g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~, ~@5 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 ~]/8",
  U: "[d3,a3,d4]/2", V: "[~@2 g3 ~@2 g3 [g2,d3,g3,d4,g4] [g2,d3,g3,d4,g4]@17, c3 b2 ~@6, ~ d3@2 ~ d3@2 ~@18]/3",
})).s("gm_distortion_guitar").gain(0.4)

// chords · distortion guitar · "Guitar 3"
const distortion_guitar_3 = note(`<
  ~@17 A B C D E F G@8 ~@8 A B C D E F H@8 I@3 J K@2 L@2 ~@8 M N O P A B C D E F H@8 G@8 Q@2 R@3
>`.pickRestart({
  A: "~ e4!3 d#4 b3!2 c#4", B: "e4!2 d#4 b3 d#4 b3 d#4 e4", C: "~ e4!3 d#4 b3!3", D: "e4!4 [d#4,e4] b3 c#4 ~",
  E: "~ e4 d4 g3 e4 d4 g3 d4", F: "g3 e4 d4 g3 e4 d4 g3 d4",
  G: "[~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4@2, ~ a3@2 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@5, ~@5 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@3]/8",
  H: "[~@2 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 ~@3 d4 d3, ~ a3@2 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 ~, ~@5 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 g2@4 ~@2 a3@2 ~]/8",
  I: "[~@4 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 ~@6 d4@2 [g2,d3,g3,d4,g4]!2, ~ a3@2 c3@4 g2@4 ~@2 a3@2 ~@2 a3@2 ~@2 g3@2 ~, ~@5 g3@2 ~@2 g3@2 d3@4 d3@4 c3@4 ~]/3", // G5
  J: "[g2,d3,g3,d4,g4]@14 [g2,d3,g3,d4,g4]!2", K: "[[a2,e3,a3]@15 [a2,e3,a3]]/2", L: "[a2,e3,a3]/2",
  M: "[b2,f#3]@4 ~@4 [b2,f#3]@4 [b2,f#3] ~ [b2,f#3] ~", N: "[e3,b3]!2 ~ [b2,f#3]@3 [b2,f#3]!2",
  O: "~@2 [b2,f#3]@2 ~@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3] ~ [b2,f#3] ~", // B5
  P: "[e2,b2]@2 [e2,b2]@2 ~@2 [b2,f#3]@6 [b2,f#3] ~ [b2,f#3] ~", Q: "[d3,a3,d4]/2",
  R: "[~@2 g3 ~@2 g3 [g2,d3,g3,d4,g4] [g2,d3,g3,d4,g4]@17, c3 b2 ~@6, ~ d3@2 ~ d3@2 ~@18]/3", // G5
})).s("gm_distortion_guitar").gain(0.4)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@5 A B A C A B A C D E A B F@3 G H I J K J K J K J K A B A C A B A C F@3 G H I J K J K J K J K J K J L M@4 N@3 O P@4
  A B A C F@3 G H I J K J K J K J K J K J K J K J K Q@2 R@3
>`.pickRestart({
  A: "b1!8", B: "e2!3 b1!5", C: "e1!3 b1!5", D: "e1!8", E: "a1!3 e1!5", F: "e2!8", G: "e2!7 c2", H: "c2!7 g1",
  I: "g1!7 d2", J: "d2!3 c2!4 g1", K: "g1!3 d2!5", L: "g1!8", M: "a1!8", N: "f2!8", O: "f2!7 g2", P: "g2!8", Q: "d2/2",
  R: "[c2@3 b1@3 g1 g1@17]/3",
})).s("gm_fretless_bass").gain(0.4)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@44 A ~@23 B ~@9 C ~@11 D ~@6 E ~@2>".pickRestart({
  A: "~@11 x ~@4", B: "~ x ~@6", C: "~@5 x ~@2", D: "~@3 x", E: "x ~ x ~@3 x!2",
})).gain(0.57)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@7 B ~@25 B ~@5 C ~@11 D ~@3 E ~@7 F ~@3 G ~@5 H ~@7 I ~@13>".pickRestart({
  A: "~@3 x", B: "~@5 x!3", C: "~@5 x ~@2", D: "~@4 x!3 ~", E: "~@9 x ~@6", F: "~@3 x!2 ~@5 x ~@5", G: "~@7 x",
  H: "~@9 x ~ x ~@4", I: "~ x ~@3 x ~@2",
})).gain(0.57)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A B@7 A B@3 A B@2 C@2 D E@8 A B@7 A B@2 C@2 D E@11 F A B@3 G H@2 C G H@2 E I E@3 A B@2 C@2 D E@7 B E@8 B@3 ~@2
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "~ x!4 ~@3", E: "x!2 ~ x!5", F: "x!5 ~@3", G: "~ x!5 ~ x", H: "x!6 ~ x",
  I: "~ x ~ x!5",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@7 A ~@3 A ~@2 B@2 ~ C@8 A ~@7 A ~@2 B@2 ~ C@11 ~ A ~@3 D E@2 B D E@2 ~ F C@3 A ~@2 B@2 ~ C@7 ~ C@8 ~@5
>`.pickRestart({
  A: "x", B: "~@7 x", C: "~ x ~@2", D: "x ~@2 x", E: "~@3 x", F: "x!2 ~@2",
})).gain(0.43)

stack(distortion_guitar, distortion_guitar_2, distortion_guitar_3, bass, kick, snare, low_tom, mid_tom, open_hat, crash)

More by Def Leppard