Strudelify
The Boys Are Back In Town cover art

New Jersey

The Boys Are Back In Town

Bon Jovi

KeyA♭ majorTempo160 bpm
0:00/0:00
// The Boys Are Back In Town — Bon Jovi
// 160 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 191 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/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
const bass = note(`<
  ~@2 A B@12 C@3 D@8 E@8 A F@8 G@3 H I J K H I J L D@8 E@8 A F@8 G@3 H I J K H I J L M N O@4 P Q M N O@4 P Q D@8 E@8 A
  F@12 G@3 R@3 S T U V W R@3 S T U V W H I J K H I J L H I J K H I J L H I J K H I J L H I J K H I J X@3 Y@3
>`.pickRestart({
  A: "ab1", B: "[f2@4 eb2@3 c2 eb2@2 ~ eb2 f2@2 ~ bb1@16 db2@16 ab1@17]/4",
  C: "[f2@4 eb2@3 c2 eb2@2 ~ eb2 f2@2 ~ bb1@16 db2@16 ~]/3",
  D: "[ab1@14 ~ c2@16 db2@16 f2@16 c2@16 f2@15 ~ bb1@15 ~ bb1@16 ab1]/8",
  E: "[~@15 c2@16 db2@16 e2@16 eb2@16 f1@16 bb1@15 ~ bb1@7 ~ bb1@3 ~ bb1@3 ~@2]/8",
  F: "[ab1@4 ab1@3 ab1 ab1@3 ab1 ab1@3 bb1@16 db2@16 ab1@17]/4",
  G: "[ab1@4 ab1@3 ab1 ab1@3 ab1 ab1@3 bb1@16 db2@16 ~]/3", H: "ab1@3 ab1 ab1@3 ab1 ab1@3 ab1 ab1@3 ab1",
  I: "bb1@3 bb1 bb1@3 bb1 bb1@3 bb1 bb1@3 bb1", J: "c2@3 c2 c2@3 c2 c2@3 c2 c2@3 c2",
  K: "eb2@3 eb2 eb2@3 eb2 eb2@3 eb2 eb2@3 eb2", L: "eb2@3 eb2@2 eb2@3 eb2@3 c2@2 bb1@3",
  M: "gb2!2 ~ gb2!3 ~ gb2!3 ~ gb2!3 ~ gb2", N: "db2!2 ~ db2!3 ~ db2 db2@3 db2@2 db2@3",
  O: "[c2@14 ~ f1@16 bb1@16 eb2@15 ~@2]/4", P: "f1@3 f1 f1@3 f1 f1@3 f1 f1@3 f1", Q: "f1@3 f1 f1@3 f1 f1@3 f1 f1@2 ~@2",
  R: "[ab1@2 ~@2 c2@2 ~ c2 db2 ~@2 db2 eb2 ~@3 ab1@2 ~@2 c2@2 ~ c2 db2@2 ~ db2 eb2 ~@3 gb1@2 ~ bb1!2 ~@2 bb1 bb1@2 ~ bb1 bb1@2 ~ bb1, ~@3 ab1@2 ~@10 eb2@2 ~@2 ab1@2 ~@10 eb2@2 ~@15]/3",
  S: "f1@2 ~ f1 c2@2 ~ c2 bb1@2 ~ bb1 ab1 ~@2 ab1", T: "gb1@2 ~ bb1 bb1@2 ~ bb1 bb1@2 ~ bb1 bb1@2 ~ bb1",
  U: "f1@2 ~ f1 c2@2 ~ c2 bb1@2 ~@2 ab1@2 ~ ab1, ~@11 bb1@2 ~@3", V: "db1 ~@2 db1!2 ~@2 db1!2 ~@2 db1!2 ~@2 db1",
  W: "eb1 ~@2 eb1!2 ~@2 eb1!2 ~@2 eb1!2 ~@2 eb1", X: "eb2@2 ~ eb2@2 eb2@2 ~ eb2@2 ~ c2@2 bb1@2 ~", Y: "[ab1@35 ~@13]/3",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@2 A@7 B@4 C@5 D@7 E@2 F@7 A@7 C@5 ~@8 D@7 E@2 F@7 A@7 C@5 ~@8 G H I@4 J@2 G H I@4 J@2 D@7 E@2 F@7 A@7 K@7 L@2 ~@6
  M@2 ~@6 M@2 ~@12 N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@2 AI@3
>`.pickRestart({
  A: "[[ab2,eb3,ab3]@30 ~ [bb2,f3,bb3]@15 ~ [db3,ab3,db4]@16 [ab2,eb3,ab3]@31 ~ [bb2,f3,bb3]@15 ~ [db3,ab3,db4]]/7", // Ab5 Bb5 Db5 Ab5 Bb5 Db5
  B: "[~@15 [ab2,eb3,ab3]@31 ~ [bb2,f3,bb3]@15 [db3,ab3,db4]@2]/4", // Ab5 Bb5 Db5
  C: "[~@15 [ab2,eb3,ab3]@31 ~ [bb2,f3,bb3]@15 ~ [db3,ab3,db4]@16 ~]/5", // Ab5 Bb5 Db5
  D: "[[ab2,eb3,ab3]@14 ~ c4@5 [c4,eb4]@2 ~ [c4,eb4] c4@3 [c3,g3,c4,eb4]@2 ~@2 [db3,ab3,db4]@12 [db3,ab3,db4]@2 ~@2 [c3,f3]@12 [bb3,eb4,g4]@2 ~@2 [bb3,eb4,g4]@12 [bb3,eb4,g4]@2 ~@2 [f2,c3,f3]@16 [ab3,db4,f4]@5 [ab3,db4,f4]@3 [ab3,db4,f4] [ab3,db4,f4]@3 [db4,f4] ~@3 [f3,ab3,db4,f4], ~@15 [c3,g3]@12 ~@20 f2@16 ~@32 f3@13 ~@4]/7", // Ab5 Cm Db5 F5 Eb F5 Db C5
  E: "[~@4 [f3,ab3,db4,f4]@2 ~ [ab3,db4,f4] [ab3,db4,f4]@3 [db4,f4] ~@3 [ab2,eb3,ab3]@15 ~ [c3,g3,c4], ~@3 f3@3 ~@10]/2", // Db Ab5 C5
  F: "[~@4 [c4,eb4]@2 ~ [c4,eb4] [c4,eb4]@3 [c3,g3,c4,eb4]@2 ~@2 [db3,ab3,db4]@12 [db3,ab3,db4]@2 ~@2 [b3,e4,ab4]@12 [b3,e4,ab4]@2 ~@2 [bb3,eb4,g4]@12 [bb3,eb4,g4]@2 ~@2 [f2,c3,f3]@16 [bb2,f3,ab3,db4,f4]@12 [ab3,db4,f4] ~@3 [bb2,f3,ab3,db4,f4]@12 [ab3,db4,f4] ~@4]/7", // Cm Db5 E Eb F5 Bbm7 Db Bbm7 …
  G: "[gb3,db4,gb4]!2 ~ [gb3,db4,gb4]!3 ~ [gb3,db4,gb4]!3 ~ [gb3,db4,gb4]!3 ~ [gb3,db4,gb4]", // Gb5
  H: "[ab3,db4,f4]!2 ~ [ab3,db4,f4]!3 ~ [ab3,db4,f4] [ab3,db4,f4]@3 [ab3,db4,f4]@2 [ab3,db4,f4]@3", // Db
  I: "[[c3,g3,c4]@14 ~ [f2,c3,f3]@16 [f3,ab3,db4,f4]@5 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4]@2 ~@2 [f3,ab3,db4,f4]@5 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4]@2 ~@3]/4", // C5 F5 Db
  J: "[[f2,c3,f3]@31 ~]/2", // F5
  K: "[~@15 [ab2,eb3,ab3]@31 ~ [bb2,f3,bb3]@15 ~ [db3,ab3,db4]@16 [ab2,eb3,ab3]@31 ~ [bb2,f3,bb3]]/7", // Ab5 Bb5 Db5 Ab5 Bb5
  L: "[~@15 [db3,ab3,db4]@16 ~]/2", M: "[[db3,ab3,db4]@13 ~@2 [eb3,bb3,eb4]@17]/2",
  N: "eb4@6 ~ c4@2 ~@2 c4 ~ db4 ~ eb4, ~@6 c4 ~", O: "eb4@6 ~ c4 ~@3 c4 ~ db4 ~ eb4, ~@6 c4 ~",
  P: "ab4@6 ~ c4@2 ~@2 c4 ~ db4 ~ eb4, ~@12 c4@3 ~", Q: "f4@2 ~ f4@2 f4@2 ~ f4@3 eb4@2 db4@2 ~",
  R: "ab4@6 ~ eb4@2 ~@2 eb4!2 f4 ~ ab4", S: "ab4@7 eb4@2 ~@2 eb4!2 f4 ~ ab4",
  T: "bb4@6 ~ eb4 ~@3 eb4 ~ f4 ~ ab4, ~@6 eb4 ~", U: "~ bb4@2 ~ bb4!2 ~@2 bb4@3 ab4@2 f4@2 ~",
  V: "c5@6 ~ [ab4,c5]@2 ~@2 ab4!2 bb4 ~ c5", W: "c5@7 ab4 ~@3 ab4 ~ bb4 ~ c5, ~@6 ab4 ~",
  X: "eb5@6 ~ ab4 ~@3 ab4!2 bb4@2 c5", Y: "db5@2 ~ db5 ~ db5 ~@2 db5@3 c5@2 bb4@2 ~",
  Z: "[ab4,eb5]@7 [eb4,c5]@2 ~@2 [eb4,c5]!2 [f4,db5]@2 [ab4,eb5]", // Ab5 Cm Db Ab5
  AA: "[ab4,eb5]@7 [eb4,c5]@2 ~@2 [eb4,c5] ~ [f4,db5] ~ [ab4,eb5], ~@6 [eb4,c5] ~", // Ab5 Cm Db Ab5 Cm
  AB: "[bb4,ab5]@6 ~ [eb4,c5] ~@3 [eb4,c5] ~ [f4,eb5] ~ ab4, ~@6 [eb4,c5,db5] ~", // Bb7 Cm F7 Cm
  AC: "~ bb4@2 ~ bb4 [bb4,f5]@2 ~ [bb4,f5]@3 [ab4,eb5]@2 [f4,db5]@2 ~, f5@2 ~ f5@2 ~@11", // Bb5 Ab5 Db
  AD: "[c5,eb5]@7 [ab4,c5]@2 ~@2 [ab4,c5] ~ [bb4,db5]@2 [c5,eb5], ~@6 [ab4,c5] ~", // Cm Ab Bbm Cm Ab
  AE: "[c5,eb5]@7 [ab4,c5] ~@3 [ab4,c5] ~ [bb4,db5] ~ [c5,eb5], ~@6 [ab4,c5] ~", // Cm Ab Bbm Cm Ab
  AF: "[eb5,ab5]@6 ~ [ab4,c5] ~@3 [ab4,c5] ~ [bb4,db5]@2 c5, ~@6 [ab4,c5] ~", // Ab5 Ab Bbm Ab
  AG: "[db5,f5]@2 ~ [db5,f5]@2 [db5,f5] ~@2 [db5,f5]@3 [c5,eb5]@2 [bb4,db5]@2 ~", // Db Cm Bbm
  AH: "db5@2 ~ [db5,f5]@2 [db5,f5] ~@2 [db5,f5]@3 [c5,eb5]@2 [bb4,db5]@2 ~", AI: "[[ab2,eb3,ab3,c5]@17 ~@7]/3",
})).s("gm_overdriven_guitar").gain(0.3)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@3 A ~@3 B ~@3 C ~@3 A ~@29 D E@2 F G E@2 F H ~@27 D E@2 F G E@2 F H ~@7 I ~@7 I ~@32 J K L M L M N@2 J K L M L M O@2
  E@2 F G E@2 F H E@2 F G E@2 F H E@2 F G E@2 F H E@2 F G E@2 F H@3 P@3
>`.pickRestart({
  A: "f3!2 ~ f3 eb3@2 ~ c3 eb3@2 ~@2 f3@2 ~@2, ~@11 eb3@2 ~@3", B: "f3!2 ~ f3 eb3@2 ~ c3 eb3 ~@2 eb3 f3@3 ~",
  C: "f3!2 ~ f3 eb3@2 ~ c3 eb3@2 ~@2 f3@3 ~, ~@11 eb3@2 ~@3", D: "~@11 eb3!2 f3 ~ ab3",
  E: "ab3@6 ~ eb3@2 ~@2 eb3!2 f3 ~ ab3", F: "bb3@6 ~ eb3@2 ~@2 eb3!2 f3 ~ ab3",
  G: "bb3@2 ~ bb3@2 bb3@2 ~ bb3@3 ab3@2 f3@3", H: "bb3@2 ~ bb3 ~ ab3@2 ~ f3@3 c3@2 bb2 ~@2",
  I: "f3@2 ~@2 c3@2 ~ c3 f3 c3 ~ f3 c3@4, ~@3 f3@2 ~@11", J: "c4", K: "ab3", L: "gb3@6 ab3@5 ~ bb3@4", M: "ab3 f3@15",
  N: "[db3@14 eb3@17 ~]/2", O: "[db3@14 eb3@12 ~ eb3!2 f3 ~ ab3]/2", P: "[ab3@35 ~@13]/3",
})).s("gm_distortion_guitar").gain(0.4).pan(0)

// other · distortion guitar
const distortion_guitar_2 = note(`<
  ~@45 A B@2 C D B@2 C E ~@27 A B@2 C D B@2 C E ~@48 F G H I H I ~@2 F G H I H I ~ A B@2 C D B@2 C E B@2 C D B@2 C E B@2
  C D B@2 C E B@2 C D B@2 C E@3 J@3
>`.pickRestart({
  A: "~@11 ab3!2 bb3 ~ c4", B: "c4@6 ~ ab3@2 ~@2 ab3!2 bb3 ~ c4", C: "eb4@6 ~ ab3@2 ~@2 ab3!2 bb3 ~ c4",
  D: "db4@2 ~ db4@2 db4@2 ~ db4@3 c4@2 bb3@3", E: "db4@2 ~ db4 ~ db4@2 ~ db4@3 c4@2 bb3 ~@2", F: "eb4", G: "c4@15 ~",
  H: "c4@3 db4@3 eb4@2", I: "ab3", J: "[c4@35 ~@13]/3",
})).s("gm_distortion_guitar").gain(0.35).pan(1)

// other · trumpet
const trumpet = note(`<
  ~@33 A@2 ~@2 B@2 ~@2 C@2 D@2 ~@24 A@2 ~@2 B@2 ~@2 C@2 E@2 ~@40 F G ~@2 H@2 I ~ J@2 ~@2 K@3 ~@55
>`.pickRestart({
  A: "[~@13 f4 ~ f4@5 eb4 ~@2 eb4@3 c4 ~ eb4 f4@2 ~]/2", B: "[~@12 f4 ~@2 f4@5 eb4 ~@2 eb4@4 c4 eb4 ~ f4@2]/2",
  C: "[~@12 f4 ~ f4@6 eb4 ~ eb4@2 c4@2 eb4 f4@2 ~@3]/2", D: "[~@13 f4 ~ f4@6 eb4 ~ eb4@2 c4 eb4 ~ f4@4]/2",
  E: "[~@13 f4 ~ f4@5 ~ eb4 ~ eb4@2 c4 eb4 ~ f4@4]/2", F: "~@15 eb4", G: "f4@4 ~ eb4 ~ eb4@4 c4 eb4 ~ f4@2",
  H: "[~@12 f4 ~ f4@5 ~ eb4 ~ eb4@4 c4 ~ f4@4]/2", I: "eb4@3 c4 f4@4 eb4@3 ~@5",
  J: "[~@12 f4 ~ f4@6 eb4 ~ eb4@4 ~ c4 eb4 f4@2 ~]/2", K: "[~@12 f4 ~@2 f4@5 eb4 ~ eb4@4 ~ c4 eb4 f4@11 ~@8]/3",
})).s("gm_trumpet").gain(0.54)

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

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@17 A ~@73 B ~@7 B ~@21 C ~@31 A ~@36 D>".pickRestart({
  A: "~@12 x!2 ~ x", B: "~@11 x ~ x ~@2", C: "~@8 x ~@2 x!3 ~ x", D: "~@3 x ~@12",
})).gain(0.5)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A ~@27 B ~@23 C ~@21 D ~@7 D ~@21 E ~@31 A ~@36 F>".pickRestart({
  A: "~@8 x!2 ~ x ~@4", B: "~@12 x!2 ~ x", C: "~@8 x ~@2 x!3 ~ x", D: "x!2 ~ x!3 ~ x!2 ~@7", E: "~@3 x!3 ~ x ~@8",
  F: "~ x ~@6",
})).gain(0.5)

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

// drums · high tom
const high_tom = s("ht").struct("<~@153 [x ~@2 x!3 ~ x ~@8] ~@36 [~ x ~@14]>").gain(0.5)

stack(
  bass, overdriven_guitar, distortion_guitar, distortion_guitar_2, trumpet, kick, snare, hihat, low_tom, open_hat,
  mid_tom, crash, high_tom
)

More by Bon Jovi