Strudelify
Someday I'll Be Saturday Night cover art

Cross Road

Someday I'll Be Saturday Night

Bon Jovi

KeyE majorTempo126 bpm
0:00/0:00
// Someday I'll Be Saturday Night — Bon Jovi
// 126 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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 · fretless bass · "Bass"
const bass = note(`<
  ~ A@2 B@2 C D E F E G H I J K L M E N E G H I J K M@2 O P E G H Q R S E T J U E V W X J Y Z AA AB B E AC J AD E G H I
  J K M@2 O P E G H Q R S E T J U E V W X J Y Z AA AB B E AE J AF AG AH J AI AJ A B AF AJ A B AF AK@2 AL AM AN@2 B AO E
  T J U E V W X J Y Z AA AB B E AP AQ AR E AE AS AT E AE AS AT E AE AS AT E AE AS AT E AE AS AT
>`.pickRestart({
  A: "e2", B: "a2", C: "b2", D: "b2@4 b2 ~ b2 ~", E: "e2@5 e2@2 e2", F: "e2@4 b2 c#3 b2@2", G: "e2@5 e2@2 f#2",
  H: "g#2@5 g#2@2 g#2", I: "g#2@5 g#2 b2@2", J: "a2@5 a2@2 a2", K: "a2@5 a2 g#2 f#2", L: "e2@5 f#2 g#2 c#3",
  M: "b2@4 f#2 g#2 f#2@2", N: "e2@3 e2 b2 c#3 b2@2", O: "c#3@5 c#3@2 b2", P: "a2@5 a2!2 b2", Q: "g#2@5 f#2 g#2 b2",
  R: "a2@2 a2@2 a2 b2 c#3 e3", S: "f#3!5 b2!3", T: "e2@2 c#3 b2", U: "e3 c#3 b2 a2", V: "a2 g#2@2 f#2@2 e2@3",
  W: "b2@5 b2@2 b2", X: "b2@3 b2@3 b2@2", Y: "b2@2 g#2 f#2", Z: "e2@4 e2 f#2 g#2@2", AA: "c#3@5 c#3 g#2@2",
  AB: "b2@4 b2 c#3 d#3@2", AC: "e2@4 e2 f#2 g#2 e2", AD: "a2@2 c#3 b2", AE: "e2@3 e2 f#2@2 g#2@2",
  AF: "a2@3 b2 c#3 e3 f#3@2", AG: "e3@5 e3@2 e3", AH: "e3@4 b2 c#3 b2@2", AI: "a2@3 a2 b2@2 b2@2", AJ: "e3",
  AK: "[e3@7 e3]/2", AL: "a2@7 e2", AM: "a2@4 a2 e2 e2@2", AN: "e2!4", AO: "a2!4", AP: "e2@2 g#2 a2",
  AQ: "b2@4 b2@2 f#2 g#2", AR: "a2@4 a2 g#2 f#2@2", AS: "a2@5 a2@2 e2", AT: "a2@3 b2 c#3 d#3 c#3@2",
})).s("gm_fretless_bass").gain(0.64)

// chords · acoustic guitar nylon · "Guitar 1 acoustique"
const acoustic_guitar_nylon = note(`<
  A B C D@2 E@2 B C B C F G H@2 C I B C B C F G H@2 I@2 J H C K F@2 H L C@2 H@2 C@2 M N O P Q R S T C@2 H@2 B C F G H@2
  I@2 J H C K F@2 H L C@2 H@2 C@2 M N O P Q R S U C@2 H@2 C@2 H@2 V@16 C@2 H@2 C@2 M N O P Q R S T Q@2 S O Q@2 O@2 Q@2
  O@2 Q@2 O@2 Q@2 O@2 Q@2 O@2
>`.pickRestart({
  A: "~ e4 ~@5 g#4, ~ f#4 c#5 f#4, ~@3 b4@2 b4@2 ~", B: "e3@2 [e3,b3,e4,g#4,b4,e5]@3 [e3,b3,e4,g#4,b4,e5]!3",
  C: "[e3,b3]@2 [e3,b3,e4,g#4,b4,e5]@3 [e3,b3,e4,g#4,b4,e5]!3", // E5 E
  D: "a3@2 [a3,e4,a4,b4,e5]@2 [a3,e4,a4] [a3,e4,a4,b4,e5]!3", E: "[[b3,f#4,b4,e5]@6 [b3,f#4,b4,e5]!2]/2",
  F: "g#3@2 [g#3,d#4,g#4,b4,d#5,g#5]@3 [g#3,d#4,g#4,b4,d#5,g#5]!3", // G#m
  G: "g#3@2 [g#3,d#4,g#4,b4,d#5,g#5]@3 [g#3,d#4,g#4,b4,d#5,g#5]!2 g#4", // G#m
  H: "[a3,e4]@2 [a3,e4,a4,c#5,e5]@3 [a3,e4,a4,c#5,e5]!3", // A5 A
  I: "[b3,f#4,b4]@2 [b3,f#4,b4,e5]@2 [b3,f#4,b4]!2 [b3,f#4,b4,e5] [b3,f#4,b4]", // B5 Bsus4 B5 Bsus4 B5
  J: "[c#4,g#4,c#5,e5,g#5]@2 [c#4,g#4,c#5,e5,g#5]@3 [c#4,g#4,c#5,e5,g#5]!3", // C#m
  K: "[e3,b3]@2 [e3,b3,e4,a4,b4,e5]@3 [e3,b3,e4,g#4,b4,e5]!3", // E5 Esus4 E
  L: "f#3!2 [f#3,c#4]!2 [f#3,c#4,f#4]!2 [f#3,c#4,f#4,a4]!2", // F#5 F#m
  M: "[b3,f#4,b4,e5,f#5]@2 [b3,f#4,b4,e5,f#5]@3 [b3,f#4,b4] [b3,f#4,b4,e5,f#5]!2", // Bsus4 B5 Bsus4
  N: "[b3,f#4,b4,d#5] [b3,f#4,b4,e5,f#5]!3 [b3,f#4,b4,d#5,f#5]!4", // B Bsus4 B
  O: "[a3,e4,a4,c#5]@2 [a3,e4,a4,c#5,e5]@2 [a3,e4,a4,c#5]!2 [a3,e4,a4,c#5,e5]@2", // A
  P: "[b3,f#4,b4,d#5]@2 [b3,f#4,b4,d#5,f#5]@2 [b3,f#4,b4,d#5]!2 [b3,f#4,b4,d#5,f#5] ~", // B
  Q: "[e3,b3,e4,g#4,b4]@2 [e3,b3,e4,g#4,b4,e5]@2 [e3,b3,e4,g#4,b4]!2 [e3,b3,e4,g#4,b4,e5]@2", // E
  R: "[c#4,g#4,c#5,e5]@2 [c#4,g#4,c#5,e5,g#5]@2 [c#4,g#4,c#5,e5]!2 [c#4,g#4,c#5,e5,g#5]@2", // C#m
  S: "[b3,f#4,b4,e5,f#5]@2 [b3,f#4,b4,e5,f#5]@2 [b3,f#4,b4,d#5]!2 [b3,f#4,b4,d#5,f#5]@2", // Bsus4 B
  T: "~ e5@7, [a3,e4], ~ [a4,b4]@15", U: "~ g#3 f#3 e3 g#3 f#3 e3@2",
  V: "a5 g#5 e5!2 a5 g#5 e5!2 a5 g#5 e5!2 a5 g#5 e5!2",
})).s("gm_acoustic_guitar_nylon").gain(0.64)

// chords · electric guitar clean · "Guitar 2 Clean"
const electric_guitar_clean = note(`<
  ~@7 A B C@2 ~@6 A B C@2 ~@14 D@2 E@2 F@2 G@2 H I J K L H A B M@2 ~@16 D@2 E@2 F@2 G@2 H I J K L H D@2 E@2 N O ~@2 P
  ~@15 D@2 E@2 F@2 G@2 H I J K L H A B ~@2 A B M@2 A B M@2 A B M@2 A B M@2 A B M@2
>`.pickRestart({
  A: "e4 e3!2 d#4 e3!2 c#4 e3", B: "e3 b3 e3!2 a3@2 g#3@2", C: "[[e3,b3]@3 ~]/2",
  D: "[[e3,b3,e4,g#4,b4,e5]@11 [e3,b3,e4,g#4,b4,e5]@2 [e3,b3,e4,g#4,b4,e5]@3]/2", // E
  E: "[~ e5@15, [a3,e4], ~ [a4,b4]@31]/2", // A5 Asus2
  F: "[~ [b4,e5]@8 [e3,b3,e4,g#4,b4,e5]@2 ~ [e3,b3,e4,g#4,b4,e5]@2 ~@2, [e3,b3]@9 ~@7, ~ [e4,g#4]@17 ~@14]/2", // E5 E E5 E
  G: "[~ [b4,e5]@17 [b3,f#4,b4,e5]@2 [b3,f#4,b4,e5]@2 [b3,f#4,b4,e5]@2 [b3,f#4,b4,d#5]@4 [b3,f#4,b4,d#5]@4, [b3,f#4]@9 ~@7]/2", // E5 Bsus4 B B5
  H: "~ e5@7, [a3,e4], ~ [a4,b4]@15", I: "~ [b4,e5]@9 [b3,f#4,b4,e5]@2 [b3,f#4,b4,e5]@2 ~@2, [b3,f#4]@5 ~@3",
  J: "~ [b4,e5]@5 [e3,b3,e4,g#4,b4,e5]@2, [e3,b3]@3 ~, ~ [e4,g#4]@11 ~@4", K: "~ [c#5,e5]@15, [c#4,g#4]",
  L: "~ [b4,e5]@15, [b3,f#4]", M: "[g#3 a3@2 e4@13]/2", N: "~@2 g#3 f#3", O: "e3",
  P: "~@5 e5@11, e3 b4@3, ~ b3@15, ~ e4@7, ~@3 g#4@13",
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · acoustic guitar steel · "Guitar 3 Acoustic steel"
const acoustic_guitar_steel = note(`<
  ~@38 A ~@36 B C ~@7 D ~@6 E F G H E F G H E F G H E F G H ~@6 I J ~@30
>`.pickRestart({
  A: "~ c#5 b4 f#4 c#5@2 b4 g#4", B: "~@7 d#5", C: "c#5 b4 d#5 c#5 b4@4", D: "b5 g#5!2 b5@3 f#5 e5",
  E: "[e3,b3] ~@5 [e3,b3] ~@5 [e3,b3] ~@3", F: "~@2 [e3,b3] ~@5 [e3,b3] ~@3 [e3,b3] ~@3",
  G: "[a3,e4] ~@5 [a3,e4] ~@5 [a3,e4] ~@3", H: "~@2 [a3,e4] ~@5 [a3,e4] ~@3 [a3,e4] ~@3", I: "~@7 b4",
  J: "d#5 c#5 b4 d#5 ~ c#5 b4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// other · electric guitar jazz · "Guitar 4 Clean"
const electric_guitar_jazz = note("<~@70 [~ g#3 f#3 e3 g#3 f#3 e3@2] ~@7 [~@2 g#3 f#3] e3 ~@65>")
  .s("gm_electric_guitar_jazz").gain(0.64)

// other · electric guitar clean · "Guitar 5 Clean"
const electric_guitar_clean_2 = note(`<
  ~@83 A B C D E F G H ~@31 I J K ~ L M@2 N O@2 P Q R S T U V W X Y Z AA@2
>`.pickRestart({
  A: "c#4@3 ~ e4@2 c#4@2 e4@4 f#4@4, b3 ~@15", B: "g#4@4 ~@4 g#4@5 ~ f#4@2, ~@8 f#4 ~@7", C: "e4 f#4 c#4@6",
  D: "~ [g#5,b5]@3 [g#5,b5] f#5 e5 ~", E: "e5 f#5 g#5 g#5@2 c#6 g#5 f#5",
  F: "e5@4 c#5@2 [d4,g4]@2 [g#5,b5]@4 e5!2 c#5@2", G: "e5@2 f#5 [g5,b5] [c#5,e5,a5]@4",
  H: "[c#5,e5] b4 g#4 f#4 e4 f#4 g4 f#4", I: "~@2 g#5@5 f#5 g#5@4 g#5 f#5 e5 ~", J: "f#5@3 g#5", K: "e5",
  L: "~ c#6@3 c#6 b5 g#5 f#5", M: "[e5@4 f#5 ~@3 c#5@14 [g4,b4]@2 d4@2 g#4@2 c#5@2 g#4@2]/2",
  N: "[c#5,e5] b4 g#4 [e5,g#5] b4 f#5 b4 g#5", O: "[b4 b5 e5 c#6 e5 f#6@5 e6@5 f#6]/2",
  P: "e6 c#6 b5 g#5!3 c#6 g#5 c#6 ~ c#6 b5 g#5 f#5 c#6 g#5",
  Q: "b5 g#5 f#5 g#5!2 b5 c#6 g#5 b5 g#5 f#5 g#5 g5 f#5 e5 c#5", R: "e5@4 c#6@2 ~@4 b4 c#5 e5@2 f#5@2",
  S: "g#5@2 c#6@2 g#5@2 f#5@2 e5@2 f#5@2 g#5@2 f#5 e5", T: "c#5@3 ~@5", U: "c#4 e4!2 c#4 e4 g#4 b4!2",
  V: "g#4 b4!2 g#4 b4!2 g#4 b4", W: "b4@2 g#4@2 b4@2 b4@2 b4 c#5 ~ e5 g#5@2 f#5@2", X: "e5@2 e5 f#5 g#5@2 [g#5,b5] f#5",
  Y: "g#5@2 [g#5,b5]!2 ~@2 f#5 g#5, ~@3 b5", Z: "~@2 [g#5,b5]@2 [g#5,b5] f#5 ~ e5 c#5@2 e5@2 ~@4",
  AA: "[~ g#5 f#5 e5 c#5 g#5 c#5@3 ~@2 g#4 b4 c#5 ~ g#4]/2",
})).s("gm_electric_guitar_clean").gain(0.64)

// chords · sitar · "Guitar 6 slide"
const sitar = note("<~@99 A@2 B C D ~ E@2 ~@38>".pickRestart({
  A: "[~@7 [b4,e5,g#5]@7 [b4,e5]@2]/2", B: "[e4,a4,c#5]", C: "~ c#5@4 e3 g#3@2", D: "e3 [g#5,c#6]@2 ~",
  E: "[~@3 [c#5,e5,a5]@2 [c#5,e5,a5]@3 e5@2 c#5@2 g#5@12 ~@2 e3@2 g#3@2 f#3@2]/2", // A
})).s("gm_sitar").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@6 A B@27 C B@13 D B@19 C B@13 D B@8 ~@15 E B@38>".pickRestart({
  A: "~@2 x!2", B: "x ~@2 x ~ x ~ x", C: "x!8", D: "x ~ x!2", E: "~ x",
})).gain(0.61)

// drums · snare
const snare = s("sd").struct("<~@6 A B@27 C B@7 D B@5 E B@19 F B@13 G B@8 ~@15 H B@38>".pickRestart({
  A: "~@7 x!2 ~@2 x!2 ~@3", B: "~ x ~ x", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "~@4 x ~@7 x ~ x!2", E: "x ~ x!2",
  F: "x ~ x ~ x ~ x ~ x!3 ~ x!4", G: "x ~@7 x ~@3 x ~ x!2", H: "~@10 x ~ x ~ x!2",
})).gain(0.61)

// drums · hihat
const hihat = s("hh").struct("<~ A@5 ~ B@41 C B@19 ~ B@13 ~ B@8 D@16 B@38>".pickRestart({
  A: "~ x ~ x", B: "x!8", C: "x", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(0.61)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@61 x ~@83>").gain(0.61)

// drums · cowbell
const cowbell = s("cb").struct("<~@27 [x!4]!3 ~@115>").gain(0.61)

// drums · ride
const ride = s("rd").struct("<~@7 A@27 ~ A@13 B A@19 ~ A@13 ~ A@8 C@16 A@38>".pickRestart({
  A: "x!8", B: "x ~ x!2", C: "x!4",
})).gain(0.61)

stack(
  bass, acoustic_guitar_nylon, electric_guitar_clean, acoustic_guitar_steel, electric_guitar_jazz,
  electric_guitar_clean_2, sitar, kick, snare, hihat, crash, tambourine, cowbell, ride
)

More by Bon Jovi