Strudelify
Some Guys Have All the Luck cover art

Some Guys Have All the Luck

Some Guys Have All the Luck

Rod Stewart

KeyD majorTempo118 bpm
0:00/0:00
// Some Guys Have All the Luck — Rod Stewart
// 118 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 7 "Bell" named as a mallet, played on tubular bells (its pad new age patch is not one); ch 9 "String2" named as a string part, played on string ensemble 1 (its pad choir patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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@2 A@2 B@2 C@2 E@2 A@2 B@2 C D E@2 A@2 B@2 C D E@2 A@2 B@2 C@2 E@2 A@2 B E A@2 B@2 C D E@2 A@2 B@2 C D
  E@2 A@2 B@2 C@2 E@2 A@2 B@2 F@2 E@2 G H I J K L M N O@2 P@2 O@2 Q@2 A@2 B@2 C D E@2 A@2 B@2 C D E@2 A@2 B@2 C@2 E@2
  A@2 B@2 C@2 E@2 A@2 B@2 F@2 E@2 A@2 B@2 F@2 E ~
>`.pickRestart({
  A: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", B: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", D: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  E: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", F: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  G: "b1 ~ b1 a1 b1 f#1 a1 b1", H: "b1@3 ~ b1@2 a1@2 b1@2 a1@2 f#1@2 b1@2", I: "a1@3 ~ a1@2 f#1@2 a1@3 ~ a2@4",
  J: "~@2 a2 ~ a2@2 f#2@2 a2@2 f#2@2 e2@2 a1@2", K: "b1 ~ b1 a1 b1 a1 f#1 a1",
  L: "b1@2 ~@2 b1@2 a1@2 b1@2 a1@2 f#1 ~ f#1 ~", M: "a1@3 ~ a1@2 f#1@2 a1@2 ~@2 a2@4", N: "~ a2!2 f#2 a2 f#2 e2 a1",
  O: "[b1@3 ~ b1@2 a1@2 b1@3 ~ b2@7 ~ b2@2 a2@2 b2@2 a2@2 f#2@2 b1@2]/2",
  P: "[a1@3 ~ a1@2 f#1 ~ a1@4 a2@6 a2 ~ a2@2 f#2@2 a2@2 f#2@2 e2@2 a1@2]/2",
  Q: "[a1@3 ~ a1@2 f#1 ~ a1@4 ~@4 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~, ~@6 a2@3 ~@7]/2",
})).s("gm_fretless_bass").gain(0.41)

// other · kalimba · "mar"
const kalimba = note(`<
  ~ A B A B A B A ~@9 A B A B A B A B A B A B A B A ~@13 A B A B A B A B A B A B A B A ~@33 A B A B A B A B A B A B A B
  A ~@33
>`.pickRestart({
  A: "~@6 e5 ~ e5 ~ f#5 ~ d5 ~@3", B: "~@2 e5 ~ e5 ~ f#5 ~ d5 ~@7",
})).s("gm_kalimba").gain(0.36).pan(0.6)

// chords · synth brass 1 · "Brass"
const synth_brass_1 = note(`<
  ~ A@2 B@2 C D E@2 ~@8 F@2 B@2 G H I@2 F@2 B@2 G H I@2 ~@12 F@2 B@2 G H I@2 F@2 B@2 G H I@2 ~@15 J@4 K@2 L@8 M@2 N F@2
  B@2 G H I@2 F@2 B@2 G H I@2 ~@32
>`.pickRestart({
  A: "[[a3,d4,f#4]@22 ~@2 [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~]/2", B: "[[b3,d4,f#4]@31 ~]/2",
  C: "[b3,e4,g4]@11 ~ [b3,e4,a4]@4", D: "[c4,e4,g4]@11 ~ [c4,e4,a4]@3 ~", E: "[[d4,e4,a4]@5 ~ [c#4,e4,a4]@25 ~]/2",
  F: "[[a3,d4,f#4]@23 ~ [a3,d4,f#4]@4 [a3,c#4,e4]@3 ~]/2", G: "[b3,e4,g4]", H: "[c4,e4,g4]@15 ~",
  I: "[[d4,e4,a4]@7 ~ [c#4,e4,a4]@24]/2", J: "[~@7 [b3,f#4]@15 a3@10]/4", K: "[~@7 [b3,f#4]@9]/2",
  L: "[~@12 [a3,e4]@33 ~ [b3,f#4]@30 [a3,e4]@33 ~ [b3,f#4]@18]/8", M: "[~@3 [a3,e4]@5]/2", N: "[g3,d4]",
})).s("gm_synth_brass_1").gain(0.23).pan(0.6)

// chords · distortion guitar · "GT"
const distortion_guitar = note(`<
  ~ A@2 B C D E F G H@2 I@2 J@2 K@2 ~@15 L H@2 I@2 J@2 K@2 ~@4 A@2 B C D E F M A@2 B C D E F N H@2 I@2 J@2 K@2 ~@7 O@6
  P@8 Q@3 ~@10 B C D E F N H@2 I@2 J@2 R@2 H@2 I@2 J@2 K@2 ~@16
>`.pickRestart({
  A: "[~@6 [a3,d4]@2 ~@4 [b3,e4]@17 ~@3]/2", B: "~@6 [a3,d4,f#4]@2 ~@4 [d4,g4]@3 ~", C: "[d4,f#4]@15 ~",
  D: "~@4 g3@2 [d4,g4] ~@3 [g3,b3] ~ [d4,a4]@3 ~", E: "~@4 c4@2 [c4,g4]@2 ~@4 [c4,a4]@3 ~",
  F: "~@2 [a3,e4,a4] ~@5 [a3,e4,a4] ~@3 [a3,e4,a4] ~ [a3,e4,a4] ~", G: "~@2 [a3,e4,a4] ~@5 g4@4 f#4@4",
  H: "[e4@4 d4 ~ d4@13 ~ a4@4 ~@4 f#4@4]/2", I: "[e4@4 d4@2 f#4@12 ~@2 a4@4 g4@4 f#4@3 ~]/2",
  J: "[f#4@4 g4 ~ g4@13 ~ a4@4 g4@4 f#4@3 ~]/2", K: "[f#4 e4 f#4 e4 g4@12]/2", L: "~ a4 g4 f#4",
  M: "~@2 [a3,e4,a4] ~@5 [c#4,e4,a4]@2 ~@2 [c#4,e4,a4] ~ [c#4,e4,a4]@2", // A5 A
  N: "~@2 [a3,e4,a4] ~ a4@4 [c#4,a4]@2 ~@2 [c#4,e4] ~ [c#4,e4,a4]@2, ~@2 g4 f#4, ~@8 e4 ~@3 a4@2 ~@2", // A5 F#m C#m A
  O: "[~@7 [f#3,b3]@15 [e3,a3]@17 [f#3,b3]@9]/6", P: "[~@6 [e3,a3]@17 [f#3,b3]@15 [e3,a3]@17 [f#3,b3]@9]/8",
  Q: "[~@3 [e3,a3]@5 [d3,g3]@4]/3", R: "[f#4 e4 f#4 e4 g4@6 a4@2 g4@2 f#4@2]/2",
})).s("gm_distortion_guitar").gain(0.27).pan(0.4)

// chords · distortion guitar · "GT" · soft notes
const distortion_guitar_soft = note(`<
  ~@5 A B ~@3 C ~@23 C ~@14 A B ~@6 A B ~@3 C ~@42 A B ~@3 C ~@7 C ~@22
>`.pickRestart({
  A: "~@2 b3 ~@5", B: "~@4 g3@2 ~@4 [g3,c4] ~@5", C: "~@2 g4 ~",
})).s("gm_distortion_guitar").gain(0.18).pan(0.4)

// chords · electric guitar muted · "GT2"
const electric_guitar_muted = note(`<
  ~ A B A B A B A ~ C D E F G H I J A B A B A B A B A B A B A B A ~ C D E F G H I J K@2 L M A B A B A B A B A B A B A B
  A ~ C D E F G H I J N@2 O@2 P@2 Q@2 R@2 S T R@2 S T R@2 S T R@2 S U A B A B A B A B A B A B A B A ~ C D E F G H I ~ C
  D E F G H I J V@2 O@2 P@2 W@2 V@2 X@2 Y@2 N ~
>`.pickRestart({
  A: "~@6 e4 ~ e4 ~ f#4 ~ d4 ~@3", B: "~@2 e4 ~ e4 ~ f#4 ~ d4 ~@7", C: "d3 ~ a3 ~ f#3 ~ a3 ~ d3 ~ a3 ~ f#3 ~ a3 ~",
  D: "d3 ~ a3 ~ f#3 ~ a3 ~ d3 ~ a3@2 f#3 ~ a3 ~", E: "b2 ~ a3@2 f#3 ~ a3 ~ b2 ~ a3 ~ f#3 ~ a3 ~",
  F: "b2 ~ a3 ~ f#3 ~ a3 ~ b2 ~ a3 ~ f#3 ~ a3 ~", G: "e3 ~ a3 ~ g3 ~ a3 ~ e3 ~ a3 ~ g3 ~ a3@2",
  H: "e3 ~ a3@2 g3 ~ a3@2 e3 ~ a3@2 g3 ~ a3@2", I: "e3 ~ a3 ~ g3 ~ a3@2 g3@2 ~@2 g3@2 a3 ~",
  J: "e3 ~ a3 ~ g3 ~ a3@2 e4 ~@3 d4 ~ c#4 ~",
  K: "[~@7 a3@2 ~@6 a3, ~ a4@8 a4@7, ~@2 e4@3 e4@4 ~ e4@3 e4@3, ~@3 d4@3 d4@3 ~@2 d4@3 d4@2]/2",
  L: "~@7 a3, a3@4 a3@3 ~, ~ d4@2 d4@3 d4@2, ~@2 e4@3 e4@3", M: "~@7 a3, ~ a3@3 a3@3 ~, ~@2 e4@3 e4@3, ~@3 d4@3 d4@2",
  N: "~@3 a3, ~ e4@3 e4@4, ~@2 d4@3 d4@3, ~@3 a3@3 ~@2",
  O: "[~@7 e4@2 ~@5 a3@2, ~ e4@3 e4@3 ~@2 e4@3 e4@4, ~@2 d4@3 d4@5 d4@3 d4@3, ~@3 a3@3 a3@5 a3@3 ~@2]/2",
  P: "[~@7 e4@2 ~@6 e4, ~ e4@3 e4@3 ~@2 e4@3 e4@3 ~, ~@2 d4@3 d4@5 d4@3 d4@3, ~@3 g3@3 g3@5 g3@3 g3@2]/2",
  Q: "[~@7 a3, ~ e4@3 e4@5 e4@3 e4@4, ~@2 d4@3 d4@11, ~@3 a3@3 a3@5 a3@3 ~@2, ~@10 c#4@3 c#4@3]/2",
  R: "~@2 [d4,f#4,b4]!2 ~@2 [d4,f#4,b4]!2 ~@2 [d4,f#4,b4]!2 ~@2 [d4,f#4,b4]!2", // Bm
  S: "~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!2", // A
  T: "~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4] [c#4,e4,a4]@2 ~ [c#4,e4,a4]!2", // A
  U: "~@2 [d4,g4,b4] [d4,g4,b4]@2 ~ [d4,g4,b4]!2 ~@2 [d4,g4,b4]!2 ~@2 [d4,g4,b4]!2", // G
  V: "[~@7 a3, ~ e4@3 e4@5 e4@3 e4@4, ~@2 d4@3 d4@5 d4@3 d4@3, ~@3 a3@3 a3@5 a3@3 ~@2]/2",
  W: "[~@15 c#4, ~ e4@3 e4@7 a3@3 d4@2, ~@2 d4@3 d4@7 e4@4, ~@3 a3@3 a3@3 a3 g3@6, ~ e3]/2",
  X: "[~@7 e4@2 ~@5 a3@2, ~@2 e4@6 e4@6 ~@4 e4@6 e4@7 ~, ~@4 d4@6 d4@10 d4@6 d4@5 ~, ~@3 a3@3 a3@5 a3@3 ~@2]/2",
  Y: "[~@7 e4@2 ~@6 e4, ~ e4@3 e4@3 ~@2 e4@3 e4@3 ~, ~@4 d4@6 d4@10 d4@6 d4@5 ~, ~@3 g3@3 g3@5 g3@3 g3@2]/2",
})).s("gm_electric_guitar_muted").gain(0.28).pan(0.4)

// other · tubular bells · "Bell"
const tubular_bells = note(`<
  ~@8 A B C D E F G H ~@16 A B C D E F G H ~@16 I J ~@2 A B C D E F G H ~@36 I J ~@2 A B C D E F G H A B C D E F G H
  ~@17
>`.pickRestart({
  A: "~@4 [a5,a6]@3 ~ [g5,g6]@3 ~ f#6 g6 ~@2, ~@6 f#5 ~", B: "[e5,e6]@3 ~ [d5,d6] ~ [d5,d6]@10",
  C: "~@2 [a5,a6] ~ [g5,g6] ~ [f#5,f#6] ~", D: "[e5,e6]@2 ~@2 [d5,d6] ~ [f#5,f#6]@10",
  E: "~@4 [a5,a6]@4 [g5,g6]@3 ~ [f#5,f#6]@3 ~", F: "[f#5,f#6]@3 ~ [g5,g6] ~ [g5,g6]@10",
  G: "~@4 [a5,a6]@3 ~ [g5,g6]@3 ~ [f#5,f#6]@3 ~", H: "[f#5,f#6]@2 [e5,e6]@2 [f#5,f#6]@2 [e5,e6]@2 [g5,g6]@3 ~@5",
  I: "[b4,b5]@4 [c#5,c#6]@3 ~ [d5,d6]@3 ~ [f#5,f#6]@4", J: "[g5,g6]@15 ~",
})).s("gm_tubular_bells").gain(0.28).pan(0.7)

// other · string ensemble 1 · "String2"
const string_ensemble_1 = note(`<
  ~@32 A B@2 C D E@2 F G H G H ~@16 A B@2 C D E@2 F G H G H G H G I ~@32 A B@2 C D E@2 F A B@2 C D E@2 F G H G H G H G I
  G H G H G H G I ~
>`.pickRestart({
  A: "~ a3 g3 f#3", B: "[e3@3 ~ d3 ~ d3@13 ~ a3@4 g3@4 f#3@4]/2", C: "e3@2 d3 f#3@5", D: "~@4 a3@4 g3@4 f#3@3 ~",
  E: "[f#3@4 g3 ~ g3@12 ~@2 a3@4 g3@4 f#3@3 ~]/2", F: "f#3 e3 f#3 e3 g3@4",
  G: "~@2 f#4@2 d4@2 a3@2 f#4@2 d4@2 b3@2 a3 ~", H: "f#4 d4 ~@6", I: "f#4@3 ~ g4@2 e4@2 ~@8",
})).s("gm_string_ensemble_1").gain(0.28).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!2 ~ x!3 ~ x]!83 x [x!2 ~ x!3 ~ x]!56>").gain(0.53)

// drums · snare
const snare = s("sd").struct(`<
  [~@5 x!3]
  [~ x ~ x]!43
  [~@2 x ~@2 x!3]
  [~ x ~ x]!39
  [~ x!7]
  [~ x ~ x]!47
  [~ x ~@2]
  [~ x ~ x]!8
>`).gain(0.6)

// drums · clap
const clap = s("cp").struct("<~@132 [~@7 x] ~@8>").gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@132 [~@5 x!2 ~] ~@8>").gain(0.6)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@132 [~ x] ~@8>").gain(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~@3 A ~ A ~@7 A ~@6 A B ~@6 A C ~@6 A ~@3 A ~@97>".pickRestart({
  A: "~@7 x", B: "~@3 x ~ x ~@2", C: "~@5 x ~ x",
})).gain(0.33)

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

stack(
  bass, kalimba, synth_brass_1, distortion_guitar, distortion_guitar_soft, electric_guitar_muted, tubular_bells,
  string_ensemble_1, kick, snare, clap, low_tom, hihat, mid_tom, open_hat, crash
)

More by Rod Stewart