Strudelify
It's My Life cover art

2000 · Crush

It's My Life

Bon Jovi

KeyE♭ majorTempo120 bpm
0:00/0:00
// It's My Life — Bon Jovi
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
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
const distortion_guitar = note(`<
  A ~ B ~ C ~ D ~ B ~ D ~ E@2 F ~@2 G H I J G K L M G H I N G H L M A ~ B ~ C ~ D ~ B ~ D ~ E@2 O@2 ~ G H I J G K L M G
  H I N G H L M P Q R@2 Q@2 S T U@4 V G H I J G K L M G H I N G H L M G H I J G K L M G H I N G H L W ~
>`.pickRestart({
  A: "[g2,c3]!2 ~@2", B: "[g2,c3]@4 [g2,c3]@3 ~@9", C: "[g2,c3] ~@3",
  D: "[g2,c3]@4 [g2,c3]@3 ~ [g2,c3] ~ [g2,c3] ~ [g2,c3]@2 [g2,c3]@2", E: "[[g2,c3]@31 ~]/2",
  F: "[c3,f3]@3 ~ [c3,f3]@3 ~@9", G: "[g2,c3]@11 ~ [g2,c3] ~ [g2,c3] ~", H: "[ab2,c3]@13 ~ [ab2,c3] ~",
  I: "[bb2,eb3]@11 ~ [bb2,eb3] ~ [bb2,eb3] ~", J: "[bb2,d3]@13 ~ [bb2,d3] ~", K: "[ab2,c3]@12 ~@2 [ab2,c3] ~",
  L: "[f2,bb2]@15 ~", M: "bb2 b2", N: "[bb2,d3]@12 ~@2 [bb2,d3] ~", O: "[c3,f3]/2",
  P: "[eb2,ab2]@2 ab2 ~@3 [eb2,ab2] ~ [eb2,ab2]@2 [eb2,ab2] ~@3 [eb2,ab2] ~", // Ab5
  Q: "[eb2,ab2]@2 [eb2,ab2] ~@3 [eb2,ab2] ~ [eb2,ab2]@2 [eb2,ab2] ~@3 [eb2,ab2] ~", // Ab5
  R: "[f2,bb2]@2 [f2,bb2]@2 ~@2 [f2,bb2] ~ [f2,bb2]@2 [f2,bb2]@2 ~@2 [f2,bb2] ~", // Bb5
  S: "[c2,f2]@2 [c2,f2]@2 ~@2 [c2,f2] ~ [c2,f2]@2 [c2,f2]@2 ~@2 [c2,f2] ~", // F5
  T: "[c2,f2] ~ [c2,f2] ~ [c2,f2] ~ [c2,f2] ~ [c2,f2] ~ [c2,f2] ~ [c2,f2] ~ [c2,f2] ~", U: "[[g2,c3]@63 ~]/4",
  V: "[g2,c3]@3 ~ [g2,c3]@3 ~@9", W: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
})).s("gm_distortion_guitar").gain(0.49).pan(0.7)

// bass · distortion guitar
const bass = note("<~@49 [d4 eb4 d4 eb4 d4 eb4 d4 eb4] ~@62>").s("gm_distortion_guitar").gain(0.49).pan(0.3)

// other · distortion guitar
const distortion_guitar_2 = note("<~@66 A@3 B@3 C@2 D ~ E@2 ~@7 F@2 ~@14 F@2 ~@9>".pickRestart({
  A: "d3 eb3 d3 eb3 d3 eb3 d3 eb3",
  B: "[d3@2 eb3@2 d3@2 eb3@2 d3@2 eb3@2 d3@2 c3@6 bb3 ~ c4 eb4 g4@10 g4@2 ~ g4@2 ~ g4@6 f4 eb4]/3",
  C: "[f4 bb3 c4@10 ~ bb2 eb3 bb2]/2", D: "c3", E: "d5 eb5 d5 eb5 d5 eb5 d5 eb5", F: "eb5 d5 eb5 d5 eb5 d5 eb5 d5",
})).s("gm_distortion_guitar").gain(0.4)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<A ~ B ~ C ~ D ~@3 E ~@22 A ~ B ~ C ~ D ~@3 D ~@34 F ~@33>".pickRestart({
  A: "c2!2 ~@2", B: "c2@4 c2@3 ~@9", C: "c2 ~@3", D: "c2@4 c2@3 ~@5 c2@4", E: "c2@4 c2@3 ~@5 c2@3 ~",
  F: "c2@3 ~ c2@3 ~@9",
})).s("gm_lead_2_sawtooth").gain(0.49)

// bass · electric bass finger
const bass_2 = note(`<
  A B C ~ D ~ E F G F E F H@2 I@2 ~ J K L M J N O P J K L M J N Q R S ~ C ~ D ~ E F G F E F H@2 I@2 ~ J K L M J N O P J
  K L M J N Q R T@2 U@2 T@2 V@2 W@4 X J K L M J N O P J K L M J N Q R J K L M J N O P J K L M J N Q R ~
>`.pickRestart({
  A: "c1@3 ~ c1@4 ~@8", B: "~@5 g1 eb1 c2", C: "c1 ~ c1 ~ c1@3 ~@9", D: "c1 ~@3", E: "c1@4 c1@3 ~ c1 ~ c1 ~ bb1@2 c2@2",
  F: "c1@3 ~ c1@3 ~ bb1@2 g1@2 eb2@2 c2@2", G: "c1@3 ~ c1@3 ~ c1 ~ c1 ~ bb1@2 c2@2",
  H: "c1@3 ~ c1@3 ~ c1 ~ c1 ~ c1@3 ~", I: "f1@3 ~ f1@3 ~ f1 ~ f1 ~ f1@3 ~",
  J: "c1 ~ c1@2 c2@2 c1 ~ c1@2 eb1@2 f1@2 g1@2", K: "ab1 ~ ab1@2 eb2@2 ab1 ~ ab1@2 bb1@2 c2@2 bb1@2",
  L: "eb1 ~ eb1@2 eb2@2 eb1 ~ eb1@2 f1@2 g1@2 f1@2", M: "d1 ~ d1@2 d2@2 d1 ~ d1@2 eb1@2 f1@2 eb1@2",
  N: "ab1 ~ ab1@2 eb2@2 ab1 ~ ab1@2 bb1@2 c2@2 bb1 ~", O: "bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1 ~ bb1@2 bb1@2",
  P: "bb1@2 bb1@2 bb1 ~ bb1@2 b1@2 b1 ~ b1 ~ b1 ~", Q: "bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2 bb1@2 bb1@2",
  R: "bb1 ~ bb1 ~ bb1 ~ bb1@2 b1@2 b1@2 b1@2 b1@2", S: "c1!2 ~@2", T: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  U: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", V: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", W: "[c1@63 ~]/4",
  X: "c1@2 ~@2 c1@3 ~@9",
})).s("gm_electric_bass_finger").gain(0.54)

// other · piano
const piano = note("<A B A B ~@2 C ~@3 C ~ D@3 E ~@17 A B A B F D A B ~@2 A B D@3 E ~@63>".pickRestart({
  A: "~@5 c4 eb4 g4", B: "ab4 g4", C: "~@12 c4@2 c4 ~", D: "~@4 c4@3 ~@5 c4@3 ~", E: "~@4 c4@3 ~@9", F: "~@12 c4@3 ~",
})).s("gm_piano").gain(0.7).pan(0.7)

// chords · brass section
const brass_section = note(`<
  ~@16 A B C ~ D E F@2 ~ G H@2 I ~ J@2 K L ~@15 A B C ~ D E F@2 ~ G M@2 N@2 J@2 K ~@12 A B C ~ D E F@2 ~ G H@2 N@2 J@2 O
  P ~@3 E F@2 ~ G H@2 N@2 J@2 Q L
>`.pickRestart({
  A: "~@8 [c4,eb4]@3 ~ [eb4,g4]@3 ~", B: "[eb4,g4]@11 ~ [eb4,g4] ~ [eb4,ab4]@2",
  C: "~@2 [d4,ab4]@3 ~ [c4,ab4]@3 ~ [bb3,g4]@6", D: "f4@3 ~ [f4,bb4]@3 ~ [f4,bb4]@3 ~ bb4@2 ab4@2, ~@3 f4",
  E: "~@8 [eb4,g4]@2 [eb4,g4] ~ g4@2 [eb4,g4] ~, ~@12 eb4 ~@3", // Eb
  F: "[[eb4,ab4]@3 ~ [eb4,ab4] ~ [eb4,ab4]@6 [eb4,g4]@2 [d4,f4]@15 ~@3]/2", // Ab5 Eb Dm
  G: "~@8 [eb4,g4]@2 [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~", // Eb
  H: "[[eb4,ab4]@3 ~ [eb4,ab4]@3 ~ [eb4,ab4]@3 ~ [eb4,g4]@6 ~@14]/2", I: "~@8 [f4,bb4]@3 ~ [f4,ab4]@2 [eb4,g4]@2",
  J: "[[eb4,ab4]@3 ~ [eb4,ab4] ~ [eb4,ab4]@5 ~ [eb4,g4]@2 [d4,f4]@14 ~@4]/2", K: "[d4,f4] ~ [d4,g4] ~",
  L: "[eb4,g4] ~@3", M: "[[eb4,ab4]@3 ~ [eb4,ab4]@3 ~ [eb4,ab4]@3 ~ [eb4,g4]@8 ~@12]/2",
  N: "[~@8 [f4,bb4]@3 ~ [f4,ab4]@2 [eb4,g4]@4 ~@14]/2", O: "[bb3,eb4]@3 ~@5 [b3,d4]@4 ~@4", P: "[g3,c4] ~@3",
  Q: "[d4,f4]@3 ~@5 [d4,g4]@3 ~@5", // Dm G5
})).s("gm_brass_section").gain(0.59).pan(0.3)

// chords · brass section
const brass_section_2 = note(`<
  ~@21 A@2 B C D@2 ~@2 A@2 B E F ~@20 A@2 B C D@2 ~@2 A@2 B E ~@20 C G@3 ~ A@2 B C D@2 ~@2 A@2 B C D@2 ~@2 A@2 B H F
>`.pickRestart({
  A: "[g4@4 ab4@3 g4, eb4]/2", B: "[d4,f4]", C: "~@8 [g3,b3,eb4]@3 ~ [b3,eb4,g4]@3 ~",
  D: "[g4@4 ab4@3 g4, eb4, c4 ~@3]/2", E: "bb3 ~ b3 ~", F: "c4 ~@3", G: "[g4@8 ab4@6 g4@3 ~@7, eb4@17 ~@7, c4 ~@5]/3",
  H: "bb3@3 ~@5 b3@3 ~@5",
})).s("gm_brass_section").gain(0.59).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<~@2 A B C A B@10 ~ B@16 A B A B C A B@10 ~ B@23 D ~@5 B@32 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x", D: "~@2 x ~@2 x ~@2",
})).gain(0.7)

// drums · low tom
const low_tom = s("lt").struct("<A ~ A ~ B ~@11 A ~@16 A ~ A ~ B ~@11 A ~@28 A ~@33>".pickRestart({
  A: "x!2 ~@2", B: "x",
})).gain(0.78)

// drums · hihat
const hihat = s("hh").struct("<A B A C ~ D B@10 ~@17 E B E B ~@2 B@10 ~@63>".pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x ~ x ~ x ~ x ~ x!8", D: "~@7 x", E: "~@3 x!5",
})).gain(0.54)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~ A ~ B ~@11 A ~@16 A ~ A ~ B ~@11 A ~@28 A ~@33>".pickRestart({
  A: "x!2 ~@2", B: "x",
})).gain(0.78)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~@9 B ~@5 C D@7 C D@7 ~@9 B ~ B ~@3 B ~ C D@7 C D@7 C D@6 E ~@5 C D@14 E C D@7 C D@3 C D@3 ~
>`.pickRestart({
  A: "~@5 x ~ x", B: "~@3 x", C: "~@2 x!6", D: "x!8", E: "x!5 ~ x ~",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@7 A ~@24 A ~@7 A ~@7 A ~@7 A ~@4 A ~@15 A ~@3 A ~@3 A ~@3 A ~@4>".pickRestart({
  A: "x",
})).gain(0.62)

// drums · ride
const ride = s("rd").struct("<~@95 A B@3 A B@3 A B@3 A B@3 ~>".pickRestart({
  A: "~ x!3", B: "x!4",
})).gain(0.7)

stack(
  distortion_guitar, bass, distortion_guitar_2, lead_2_sawtooth, bass_2, piano, brass_section, brass_section_2, kick,
  snare, low_tom, hihat, mid_tom, open_hat, crash, ride
)

More by Bon Jovi