Strudelify

One Wild Night (2001 version)

Bon Jovi

KeyC minorTempo145 bpm
0:00/0:00
// One Wild Night (2001 version) — Bon Jovi
// 145 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 127 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 29.
setcpm(145/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 · piano
const piano = note(`<
  ~@24 A@2 B C@3 D@3 E F G ~@5 H@2 ~@3 I J@2 ~@2 A@2 B C@3 K@5 L M@2 N@3 O P Q R S ~@11 T@4 U@2 V A@2 B C@3 W@3 X@2 L
  M@2 Y@3 ~ Z AA AB@2 ~ AC AD AE B C@3 AF O P Q R S
>`.pickRestart({
  A: "[~@4 [c4,eb4,g4]@7 eb4@5]/2", B: "f4 eb4 [c4,eb4,g4]@2",
  C: "[[bb3,d4,f4]@3 d4@4 eb4@2 c4@3 [c4,eb4,g4]@7 eb4@5]/3", D: "[f4 eb4@8 d4@4 eb4@2 d4@2 c4@7]/3", E: "eb4 d4",
  F: "c4 bb3", G: "c4", H: "[g4@6 eb4 g4@6 eb4@3]/2", I: "~@6 eb4 d4",
  J: "[eb4@2 d4@2 eb4@2 d4@2 eb4@2 d4@4 g4@9 ~@9]/2",
  K: "[f4 eb4@8 d4@4 eb4@2 d4@2 c4@3 [c4,eb4,g4]@7 eb4@4 f4@2 eb4@3 [c4,eb4,g4]@4]/5", L: "[bb3,d4,f4]@3 d4@4 c4",
  M: "[d4@2 eb4@2 [c4,eb4,g4]@7 eb4@5]/2", N: "[f4 eb4@8 d4@5 eb4 d4@2 c4@2 g3@5]/3", O: "[eb4,c5] [d4,bb4]",
  P: "[c4,g4] [bb3,f4]", Q: "[g3,eb4] [f3,d4]", R: "[eb3,c4] [d3,bb3]", S: "[c3,c4]",
  T: "[eb4@4 d4 eb4@2 d4@2 eb4@3 g4@2 eb4 d4]/2", U: "[g4@4 f4 g4@2 f4@2 g4@3 bb4@2 g4 f4]/2", V: "g4",
  W: "[f4 eb4@8 d4@4 eb4@2 d4@2 c4@3 [c4,eb4,g4]@4]/3", X: "[[c4,eb4,g4]@3 eb4@4 f4@2 eb4@3 [c4,eb4,g4]@4]/2",
  Y: "[f4 eb4@8 d4@5 eb4 d4@2 c4@2 ~ [c4,eb4,g4]@4, ~@38 g3@5 ~@5]/3", Z: "~ [c4,eb4,g4]", AA: "[bb3,d4,f4] ~@3",
  AB: "[~@2 [c4,eb4,g4]@3 ~@3]/2", AC: "[g3,c4,eb4] [f3,bb3,d4]", AD: "[g3,c4,eb4] [c4,eb4,g4]",
  AE: "[c4,eb4,g4]@3 eb4@5", AF: "f4 eb4@7",
})).s("gm_piano").gain(0.05)

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

// chords · drawbar organ
const drawbar_organ = note(`<
  A B@2 C D@2 E C F ~@16 G@2 C D@2 E C F ~@19 G@2 C D@2 E C F G@2 C D@2 E C F ~@3 A B@2 C D@2 E C F H@4 ~@8 G@2 C D@2 E
  C F G@2 C D@2 E C F G@2 C D@2 E C F G@2 C D@2 E ~@5
>`.pickRestart({
  A: "~@14 e4 [f4,g4,a4]", B: "[g4 ab4, [eb4,c5], b4 ~@31]/2", C: "[d4,f4,bb4]", D: "[eb4,g4,c5]/2", E: "[eb4,g4,bb4]",
  F: "[eb4,g4,c5]", G: "[g4 ab4, [eb4,c5]]/2", H: "[f4,bb4]/4",
})).s("gm_drawbar_organ").gain(0.17)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@24 A B C D E F G H I J K L ~@5 M N ~@3 O P@2 ~@2 A B C D E F G H Q R S T U V W X Y Z AA AB AC AD ~@11 AE AF AG AH AI
  AJ AK A B C D E F G H Q R S T U V W X AL AM A AN A AO ~ AP AQ B C D E F AR Z AA AB AC AD
>`.pickRestart({
  A: "~@4 [c4,eb4,g4] ~ [c4,eb4,g4] ~", B: "[c4,eb4,g4]@3 ~@3 eb4@2 ~@2 eb4 ~ eb4 ~ eb4@2",
  C: "f4@3 ~ eb4@3 ~ [c4,eb4,g4]@2 ~@2 [c4,eb4,g4]@2 ~@2", D: "[bb3,d4,f4]@3 ~@3 d4@3 ~ d4 ~ d4 ~ eb4@2",
  E: "~@2 c4 ~ c4 ~ c4@2 [c4,eb4,g4]@2 ~@2 [c4,eb4,g4]@2 ~@2", F: "[c4,eb4,g4]@2 ~@4 eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~",
  G: "f4 ~ eb4@3 ~ eb4@3 ~ eb4 ~ eb4 ~ eb4@2", H: "~@2 d4@2 ~@2 d4@2 ~@2 eb4@3 ~ d4@2", I: "~@2 c4@3 ~ c4@3 ~@7",
  J: "eb4 d4", K: "c4 bb3", L: "c4 ~@7", M: "g4 ~ g4@2 ~@2 g4@2 ~@4 eb4 ~ g4@2", N: "~@2 g4@3 ~ g4 ~ g4@2 eb4 ~@5",
  O: "~@12 eb4 ~ d4 ~", P: "[eb4 ~ d4 ~ eb4 ~ d4 ~ eb4 ~ d4 ~ d4 ~ g4@5 ~@13]/2",
  Q: "~@2 c4@3 ~ c4@2 [eb4,g4]@2 ~@2 [c4,eb4,g4]@2 ~@2, ~@8 c4 ~@7", R: "[c4,eb4,g4]@3 ~@3 eb4@2 ~@2 eb4 ~ eb4@2 f4@2",
  S: "~ eb4@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~", T: "[bb3,d4,f4]@3 ~@3 d4@2 ~ d4 ~@2 d4@2 c4@2",
  U: "d4@4 eb4@3 ~ [c4,eb4,g4]@2 ~@2 [c4,eb4,g4]@2 ~@2", V: "[c4,eb4,g4]@2 ~@4 eb4@2 ~@2 eb4 ~ eb4 ~ eb4@2",
  W: "f4@2 eb4@2 ~@2 eb4@3 ~ eb4 ~ eb4 ~ eb4 ~", X: "eb4@2 d4@2 ~@2 d4@3 ~@3 eb4@2 d4@2", Y: "~@2 c4@3 ~ g3@5 ~@5",
  Z: "[eb4,c5] [d4,bb4]", AA: "[c4,g4] [bb3,f4]", AB: "[g3,eb4]@7 ~ d4@8, ~@7 f3@8 ~", AC: "[eb3,c4] [d3,bb3]",
  AD: "[c3,c4] ~@7", AE: "eb4 ~@3 eb4@2 ~@2 d4 ~ eb4@3 ~ d4@2", AF: "~@2 eb4@2 ~@2 eb4 ~ g4@4 eb4@2 d4 ~",
  AG: "eb4@2 ~@2 eb4@2 ~@2 d4 ~ eb4@2 ~@2 d4@2", AH: "~@2 eb4@2 ~@2 eb4 ~ g4@3 ~ eb4 ~ d4 ~",
  AI: "g4@2 ~@2 g4@3 ~ f4 ~ g4@3 ~ f4@2", AJ: "~@2 g4@2 ~@2 g4 ~ bb4@4 g4@2 f4 ~", AK: "g4@3 ~ g4@3 ~@9",
  AL: "~@2 c4@3 ~@3 [c4,eb4,g4]@2 ~@2 [c4,eb4,g4]@2 ~@2, ~@6 g3@5 ~@5", AM: "[c4,eb4,g4]@3 ~@13",
  AN: "[bb3,d4,f4]@3 ~@13", AO: "[c4,eb4,g4] ~@7", AP: "[g3,c4,eb4]@7 ~ [f3,bb3,d4]@7 ~",
  AQ: "[g3,c4,eb4]@2 ~@2 [c4,eb4,g4] ~ [c4,eb4,g4] ~", AR: "f4 ~ eb4@3 ~ eb4@3 ~@7",
})).s("gm_synth_brass_1").gain(0.46)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@8 A ~ B ~@3 B ~ C@3 ~@3 B D@2 ~@5 E ~@2 F G H ~@2 B ~ I@3 ~ C@3 ~@3 B J ~@5 E ~@7 E ~@2 F G K L ~@7 A ~@17 E ~@7 E
  ~@7 E ~@7 E F G K L ~
>`.pickRestart({
  A: "~@5 g2 ~@2", B: "~@3 bb2 ~@4", C: "[~@7 [bb3,eb4]@12 bb2 ~@4]/3", D: "[~ [c4,f4]@15]/2", E: "~@5 eb4 ~@2",
  F: "eb4@7 ~ bb3@7 ~", G: "eb4@7 ~ d4@7 ~", H: "f4@9 ~@7", I: "[~@7 [c4,eb4]@17]/3", J: "f4", K: "eb4@7 ~ [g3,d4]@7 ~",
  L: "eb4@7 ~ [g3,d4]@8", // G5
})).s("gm_overdriven_guitar").gain(0.16).pan(0.1)

// other · distortion guitar
const distortion_guitar = note(`<
  A B C D E F G H I J K L M L K L M L K L M L N O ~ P Q R S T U V S W X Y S J K Z M Z K Z M Z K Z M Z N O P Q R S T U V
  AA P Q R S T U V S W X AB AC B C D E F G H I AD@3 AE AF ~ AF ~ AF ~ AF ~ P Q R S T U V AA P Q R S T U V S P Q R S T U
  V AG P Q R S T U W X AB AC AH
>`.pickRestart({
  A: "[a2,e3]!4 [e2,a2]!4 [a2,e3]!4 [e2,a2]!4", B: "c4 ~ c4@3 g3 bb3 ab3", C: "~@2 ab3@3 ~ ab3@2 bb3 ~ bb3@2 c4@4",
  D: "bb3@2 ~@2 bb3@6 g3@2 bb3@2 c4 ~", E: "~@2 c4@4 bb3@2 g3 ~ g3@2 bb3@2 g3 ~", F: "c4 ~ c4@3 bb3 c4 eb4",
  G: "~@2 eb4@4 c4@2 eb4 ~ eb4@2 c4@4", H: "bb3 ~ bb3@2 ~ g3 bb3 c4", I: "~@2 c4@3 ~ bb3@2 g3@4 bb3 ~ g3 ~",
  J: "[g3,c4] ~ [g3,c4] ~@2 g2 bb2 c3", K: "~@2 c3@2 ~@2 g2 ~ [eb3,eb4,g4]@4 [c3,c4]@2 bb2@2, ~@4 [g3,bb3]@3 ~",
  L: "c3 ~ c3 ~@2 g2 bb2 c3", M: "~@2 c3 ~ c3@2 bb2 ~ g2 ~ g2@2 bb2@2 g2 ~",
  N: "~@2 c3@2 ~@2 g2 ~ [eb3,eb4,g4]@4 [c3,c4]@2 bb2 ~, ~@4 [g3,bb3]@3 ~", O: "[g3,c4] ~@7",
  P: "c4@2 ~@2 c4@5 ~ g3@2 bb3@2 ab3@2", Q: "~@2 ab3@3 ~ ab3@2 bb3 ~ bb3@2 c4@3 ~",
  R: "bb3@2 ~@2 bb3@5 ~ g3@2 bb3@2 c4@2", S: "~@2 c4@4 bb3@2 g3 ~ g3@2 bb3@2 g3@2", T: "c4 ~@3 c4@5 ~ bb3@2 c4@2 eb4@2",
  U: "~@2 eb4@3 ~ c4@2 eb4@4 c4@2 ~@2", V: "bb3 ~ bb3@3 g3 bb3 c4", W: "[f3,bb3] [d3,f3]", X: "[f3,bb3]!2",
  Y: "c4@2 ~@2 c4@5 ~ g3@2 bb3@2 c4@2", Z: "[c3,c4] ~ [c3,c4] ~@2 g2 bb2 c3", AA: "~ c4@2 bb3 g3@2 eb4@2",
  AB: "[d3,g3]@7 ~ [f3,bb3]@7 ~", AC: "[d3,g3]@7 ~ [f3,bb3]@8", AD: "[bb2,f3]", AE: "[bb2,f3]!4",
  AF: "[c3,g3]@3 ~ [c3,g3]@3 ~@9", AG: "~ c4@2 bb3 g3@2 bb3@2", AH: "[c3,g3]@3 ~@13",
})).s("gm_distortion_guitar").gain(0.4).pan(0.9)

// other · distortion guitar
const distortion_guitar_2 = note(`<
  ~ A@2 B@6 ~@35 C ~@3 C ~@22 D@3 B@6 E F G H ~ C ~ C ~ C I@2 ~@16 J@2 K@2 J@2 K@2 ~@11
>`.pickRestart({
  A: "[c5@10 g4@2 bb4@17 ~@3]/2",
  B: "[bb4@9 ~ g4@2 bb4@18 eb5@6 c5@2 eb5@6 c5@2 eb5@6 c5@2 eb5@6 c5@2 bb4@12 g4@2 bb4@2 c5@18]/6", C: "~@6 c3!10",
  D: "[~@12 bb4@13 ~ g4@2 bb4@17 ~@3]/3", E: "g4 f4", F: "eb4 d4", G: "c4 bb3", H: "g3 f3", I: "c3!16", J: "c5/2",
  K: "[bb4@10 g4@2 bb4@2 c5@17 ~]/2",
})).s("gm_distortion_guitar").gain(0.41).pan(0.3)

// other · whistle
const whistle = note("<~@80 [g6 f6] [eb6 d6] [c6@9 bb5@7] [g5@8 f5@7 ~] ~@43>").s("gm_whistle").gain(0.07).pan(1)

// drums · rim
const rim = s("rim").struct("<~@40 [~@5 x ~@2] ~@86>").gain(0.64)

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

// drums · snare
const snare = s("sd").struct("<~ A@7 B A@14 ~ C A@26 D A@19 E A@15 F A@2 G H A@15 E A@7 I A@9 E ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~ x ~@2", D: "x", E: "~@2 x ~ x!4", F: "~@2 x ~@3 x!2", G: "x!8",
  H: "x ~@2 x ~ x ~@2 x ~@7", I: "x!4 ~@4",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@84 [x!2 ~ x!3 ~ x]!6 [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x] ~@36>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@7 B A@6 C ~@11 D E A@7 B A@6 C ~@75>".pickRestart({
  A: "x!8", B: "x!5 ~ x!2", C: "x", D: "~@2 x!6", E: "x!5 ~ x ~",
})).gain(0.48)

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

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~ B ~@18 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@4 A ~ A ~ A ~ A ~ B ~@3 B ~@7 A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A C A ~ A ~ A ~ B@5
>`.pickRestart({
  A: "x!2 ~@2", B: "x", C: "~@5 x!3",
})).gain(0.48)

stack(
  piano, bass, drawbar_organ, synth_brass_1, overdriven_guitar, distortion_guitar, distortion_guitar_2, whistle, rim,
  kick, snare, low_tom, hihat, open_hat, crash
)

More by Bon Jovi