Strudelify
When You're in Love With a Beautiful Woman cover art

With Love

When You're in Love With a Beautiful Woman

Dr. Hook

KeyA majorTempo112 bpm
0:00/0:00
// When You're in Love With a Beautiful Woman — Dr. Hook
// 112 bpm, 2/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/2)

// 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 · "Bass"
const bass = note(`<
  ~@4 A B C D E F G H A B C D E I G H A B C D E I G H A B C D E I G H J K J K L M N@2 A B C D E I G H A B C D E I G H J
  K J K L M N@2 A B C D E I G H O P A Q R S T U A V W X@2 Y Z@3 AA@4 A B C D E I G H A B C D E I G H J K J K L M N@2 A B
  C D E F G H A B C D E I G H A B C D E F G H A B C D E I G H A B C D E F G H J K J K L M N@2 A B C D E F G H A B C D E
  I G H AB@3
>`.pickRestart({
  A: "d2@2 ~ d2 a1@2 b1@2", B: "d2@5 ~ a1 b1", C: "d2@5 ~ d2@2 a1@3 ~ b1@3 ~", D: "d2@6 a1 ~", E: "a1@4 ~@2 a1 ~",
  F: "a1@6 e1 f#1", G: "a1@9 ~@3 a1 ~@3", H: "a1@11 ~ a1@2 ~@2", I: "a1@11 ~ e1@2 f#1@2", J: "f#1@2 ~ f#1 c#2@3 ~",
  K: "f#2@7 ~ c#2@6 ~@2", L: "d2@9 ~@3 d2@4", M: "c#2@9 ~@3 c#2@4", N: "[b1 c#2 d2 e2@2 ~@3]/2",
  O: "g1@5 ~ g1@2 b1@6 ~@2", P: "c#2@3 ~ c#2@3 ~ d2@6 ~@2", Q: "d2@7 ~ d2@6 ~@2", R: "a1@3 ~ c#2@2 e2@2",
  S: "a1@7 ~ c#2@4 e2@4", T: "d2@10 ~@2 d2@3 ~", U: "e2@7 ~ e2@6 ~@2", V: "d2@7 ~ a1@7 ~",
  W: "a1@4 ~@2 a1@2 e1@4 a1@3 ~", X: "[f#1@31 ~]/2", Y: "b1", Z: "d2/3", AA: "[e2@7 ~]/4", AB: "[a1@13 ~@3]/3",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · epiano1 · "E Piano"
const epiano1 = note(`<
  ~@3 A B C@7 B D@5 E@2 B C@7 B F@7 G@2 H@2 I J K@2 B C@7 B F@7 G@2 H@2 I J K@2 B F@7 ~@21 B C@7 B F@7 G@2 H@2 I J K@2 B
  F@7 B C@7 B F@7 B C@7 B F@7 G@2 H@2 I J K@2 B F@7 B F@7 L@3
>`.pickRestart({
  A: "~ e4 f#4 a4", B: "[f#4,b4]@3 ~ [f#4,b4]@2 a4@2",
  C: "[b4@4 a4@5 ~@3 [f#4,b4]@8 [a4,c#5]@20 e4@2 ~@2 [e4,a4] ~ [e4,a4]@25 ~ [e4,a4]@2 ~@2 [e4,a4] ~ e4@26 f#4@4 a4@3 ~, f#4@9 ~@69 a4@22 ~@12]/7", // B5 A A5
  D: "[b4@4 a4@5 ~@3 [f#4,b4]@8 [a4,c#5]@20 [c#5,e5]@4 [a4,c#5] ~ [a4,c#5]@4 [f#4,b4]@2 [e4,a4]@18 ~@2 [f#4,b4]@8, f#4@9 ~@71]/5", // B5 A C#m A B5 A5 B5
  E: "[a4@11 ~@5, e4@19 ~@13]/2",
  F: "[b4@4 a4@5 ~@3 [f#4,b4]@8 [a4,c#5]@20 e4@2 ~@2 [e4,a4] ~ [e4,a4]@25 ~ [e4,a4]@2 ~@2 [e4,a4] ~ e4@31 ~@3, f#4@9 ~@69 a4@22 ~@12]/7", // B5 A A5
  G: "[[c#4,e4,f#4,a4]@11 ~ c#4@13 ~ c#4@5 ~, ~@12 [e4,f#4,a4]@19 ~]/2", // F#m7
  H: "[[c#4,e4,f#4,a4]@5 ~ c#4@5 ~ c#4@4, ~@12 [e4,f#4,a4]@19 ~]/2", I: "[d4,f#4]", J: "[c#4,e4]@15 ~",
  K: "[[b3,d4]@4 [c#4,e4]@4 [d4,f#4]@4 [e4,g#4]@19 ~]/2", L: "[[a3,c#4,e4]@7 ~]/3",
})).s("gm_epiano1").gain(0.38)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@4 A@16 ~@15 B C@3 B D E F ~ A@8 G@8 C@3 B D E F ~ A@8 H@4 I@3 J K@5 ~@8 A@8 G@8 C@3 B D E F ~ A@32 G@8 C@3 B D E F ~
  A@16 L@3
>`.pickRestart({
  A: "[b4@31 ~@33 [c#4,e4]@63 ~, [d4,f#4] ~, ~ a4@3]/8", B: "[c#5,c#6] [e5,e6]", C: "[f#5,f#6]/3", D: "[d5,d6]",
  E: "[c#5,c#6]", F: "[b4,b5] [c#5,c#6] [d5,d6] [e5,e6]",
  G: "[b4@31 ~@81 [c#5,c#6]@8 [e5,e6]@8, [d4,f#4]@64 [c#4,e4]@63 ~, ~ a4@3]/8", // C# E D C#m
  H: "[b4@32 [f#4,a4]@31 ~, d5@63 ~, g4@29 ~@35]/4", I: "[[c#5,e5]@31 ~ [d5,f#5]@16, a4@15 ~]/3", J: "[b4,e5,g#5]",
  K: "[f#4@8 e4@4 f#4@7 ~, a4@37 ~@3, d4@29 ~@3 c#4@43 ~@5]/5", L: "[[c#4,e4]@5 ~]/3",
})).s("gm_string_ensemble_1").gain(0.22)

// other · electric guitar clean · "Cle Guitar"
const electric_guitar_clean = note(`<
  ~@44 A B C D E F G H A B C D E F G H I J K L M N O@2 A B C D E F G H P@4 Q@2 R S R T U V@2 W X@2 Y Z@3 ~ A B C D E F G
  H A B C D E F G H I J K L M N O@2 A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H I J
  K L M N O@2 A B C D E F G H A B C D E F G H AA@3
>`.pickRestart({
  A: "a3 ~@3 a3 ~@3 a3 ~@3 a3 ~ a3@2", B: "~@2 a3 ~@3 a3 ~ a3@2 ~@2 a3 ~@3", C: "a3 ~@3 a3 ~@3 a3@2 ~@2 a3 ~ a3 ~",
  D: "~@2 a3@2 ~@4 a3@3 ~ e3@2 f#3@2", E: "a3@3 ~ a3 ~@3 a3@2 ~@2 a3 ~ a3@2", F: "~@2 a3@2 ~@2 a3 ~ a3@2 ~@2 a3 ~ a3 ~",
  G: "~@2 a3 ~ a3 ~@3 a3@2 ~@2 a3 ~ a3@2", H: "~@2 a3@2 ~@2 a3 ~ a3@3 ~@5", I: "f#3 ~@3 f#3 ~@3 f#3 ~@3 f#3 ~ f#3@2",
  J: "~@2 f#3 ~@3 f#3 ~ f#3@2 ~@2 f#3 ~@3", K: "f#3 ~@3 f#3 ~@3 f#3@2 ~@2 f#3 ~ f#3 ~",
  L: "~@2 f#3@2 ~@4 f#3@3 ~ e3@2 d#3@2", M: "d3@3 ~ d3 ~@3 d3@2 ~@2 d3 ~ d3@2",
  N: "~@2 c#3@2 ~@2 c#3 ~ c#3@2 ~@2 c#3 ~ c#3 ~", O: "[b2@4 c#3@4 d3@3 ~ e3@8 e3@2 ~@2 e3@3 ~ e3@4]/2",
  P: "[~@8 [b3,d4,g4]@14 ~@2 [b3,d4,g4]@13 ~@3 [a3,d4,f#4]@14 ~@2 [a3,d4,f#4]@8]/4", // G D
  Q: "[~@8 [a3,c#4,e4]@13 ~@3 [a3,c#4,e4]@8]/2", R: "~ [a3,d4,f#4]", S: "~ [b3,e4,g#4]", T: "~@8 [a3,d4,f#4]@7 ~",
  U: "~@8 [a3,c#4,e4]@7 ~", V: "[~@8 [a3,c#4,f#4]@21 ~@3]/2", W: "~ f#4@14 ~, [b3,d4]@7 ~", X: "[a3,d4,f#4]/2",
  Y: "[a3,d4,f#4]@13 ~@3", Z: "[[b3,e4,g#4]@7 ~]/3", AA: "[[a3,c#4,e4]@11 ~@5]/3",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.3)

// other · electric guitar muted · "Mut Guitar"
const electric_guitar_muted = note(`<
  ~@4 A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H I J K L M N O@2 ~@144
>`.pickRestart({
  A: "a3 ~@3 a3 ~@3 a3 ~@3 a3 ~ a3@2", B: "~@2 a3 ~@3 a3 ~ a3@2 ~@2 a3 ~@3", C: "a3 ~@3 a3 ~@3 a3@2 ~@2 a3 ~ a3 ~",
  D: "~@2 a3@2 ~@4 a3@3 ~ e3@2 f#3@2", E: "a3@3 ~ a3 ~@3 a3@2 ~@2 a3 ~ a3@2", F: "~@2 a3@2 ~@2 a3 ~ a3@2 ~@2 a3 ~ a3 ~",
  G: "~@2 a3 ~ a3 ~@3 a3@2 ~@2 a3 ~ a3@2", H: "~@2 a3@2 ~@2 a3 ~ a3@3 ~@5", I: "f#3 ~@3 f#3 ~@3 f#3 ~@3 f#3 ~ f#3@2",
  J: "~@2 f#3 ~@3 f#3 ~ f#3@2 ~@2 f#3 ~@3", K: "f#3 ~@3 f#3 ~@3 f#3@2 ~@2 f#3 ~ f#3 ~",
  L: "~@2 f#3@2 ~@4 f#3@3 ~ e3@2 d#3@2", M: "d3@3 ~ d3 ~@3 d3@2 ~@2 d3 ~ d3@2",
  N: "~@2 c#3@2 ~@2 c#3 ~ c#3@2 ~@2 c#3 ~ c#3 ~", O: "[b2@4 c#3@4 d3@3 ~ e3@8 e3@2 ~@2 e3@3 ~ e3@4]/2",
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.6)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@41 A B ~@22 A B ~@3 C D@5 ~@23 C D@5 ~@2 C D@5 ~@5 A B ~@3 C D@5 ~@2 C D@5 ~@2 C D@5 ~@2 C D@5 ~@2 C D@5 ~@5 A B ~@3
  C D@5 ~@2 C D@5 ~@3
>`.pickRestart({
  A: "~ c#4", B: "[b3,b4] [c#4,c#5] [d4,d5] [e4,e5]", C: "~@8 f#4@2 a4@3 ~@3", D: "[a4@39 ~]/5",
})).s("gm_brass_section").gain(0.5)

// other · electric guitar jazz · "Jaz Guitar"
const electric_guitar_jazz = note(`<
  ~@73 A B C D E@2 F G@2 H I ~@10 J K@2 ~@29 A B L M N@7 O P Q@5 ~ R S@3 T@3 U V W@2 X@3 Y@2 ~@13 A B ~@6 A B C ~@3
>`.pickRestart({
  A: "~@2 f#4 b4", B: "a4@15 ~", C: "c#5@15 ~", D: "~@2 [g4,b4] [f#4,a4]",
  E: "[~@4 [e4,g4]@17 ~@3 [f#4,a4]@4 [e4,g4]@4]/2", F: "~@4 [d4,f#4]@11 ~", G: "[~ a4@3, c#4@15 ~, ~ e4@7]/2",
  H: "~ a4, d4@7 ~, ~ f#4@3", I: "~ b4, e4@15 ~, ~@4 g#4@11 ~", J: "[f#5,b5]@3 [e5,g#5]@3 c#5@2",
  K: "[[b4,d5]@6 [g#4,b4]@6 [e4,g#4]@17 ~@3]/2", L: "~@2 e4@2 f#4@2 a4 ~, c#5@15 ~", M: "b4@3 ~ b4@2 a4@2, a4 ~@15",
  N: "[b4@4 a4@2 ~@2 f#4 ~@3 b4@8 c#5@19 ~ a4@5 ~ a4@25 ~ a4@5 ~ a4@21 ~ e4@4 f#4@4 a4@3 ~]/7", O: "b4@3 ~ b4@2 a4@2",
  P: "b4@4 a4@3 ~ f#4 ~@3 b4@4", Q: "[~@4 c#5@15 ~ c#5@4 e5@5 ~ c#5@10 b4@4 a4@28 ~@8]/5",
  R: "a5@2 g#5@2 f#5@2 e5@2 f#5@2 e5@2 d5@2 c#5 ~",
  S: "[d5@2 c#5@2 b4@2 a4@2 b4@2 a4 ~ g#4 ~ f#4@21 ~ e4@2 f#4@2 a4@3 ~ b4@3 ~, ~@40 g#4 ~@3 a4 ~@3]/3",
  T: "[c#5@4 b4@2 a4@18 e4@2 f#4@2 a4 ~ a4@17 ~]/3", U: "b4@4 a4@2 b4@3 ~ c#5@4 ~@2, a4 ~@15",
  V: "a5 g#5 f#5 e5 f#5 e5 d5 c#5", W: "[d5@2 c#5@2 b4@2 a4@2 b4@2 a4 ~ g#4 ~ f#4@14 e4@2 f#4@2]/2",
  X: "[a4@3 ~ b4@2 ~@2 c5@3 ~ b4@2 a4@22 a4 ~@3 a5@7 ~, ~@8 b4 ~@31 g5 ~@7]/3", Y: "[a5@7 ~]/2",
})).s("gm_electric_guitar_jazz").gain(0.35).pan(0.6)

// chords · overdriven guitar · "Ovd Guitar"
const overdriven_guitar = note(`<
  ~@8 A B A C ~@4 D@3 E ~@4 A B A C ~@4 A B A C ~@12 A B A C ~@4 A B A C ~@41 A B A C ~@4 A B A C ~@20 A B A C ~@4 A B A
  C ~@4 A B A C ~@4 A B A C ~@27
>`.pickRestart({
  A: "~ [b4,d5]", B: "[a4,c#5]", C: "[a4,c#5]@15 ~",
  D: "[~@6 b4@2 a4@11 ~ [f#4,b4]@4, ~@8 e4@31 ~@9, ~@5 f#4@3 ~@16]/3", E: "[e4,a4]@15 ~",
})).s("gm_overdriven_guitar").gain(0.27)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A C@10 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B D
  ~@2
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@2 x", C: "x!2", D: "x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@7 B A@7 C A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@3 ~@10 A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7
  B A@7 B A@7 B A@7 B ~@3
>`.pickRestart({
  A: "~ x", B: "~ x!2 ~", C: "~@2 x!3 ~@3",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  A@2 ~@2 B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@3 ~@10 B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C
  B@7 C B@7 C B@7 C B@7 C ~@3
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x!3 ~",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 [~ x ~ x] ~@76 [~ x ~ x] ~@91>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@11 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@20 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A
  ~@7 A ~@7 A ~@3
>`.pickRestart({
  A: "~@3 x",
})).gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@19 [~@3 x ~@4] ~@76 [~@3 x ~@4] ~@91>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@42 A ~@23 A ~@29 B@2 ~@21 A ~@9 B ~@15 B ~@21 A ~@17 B ~@2>".pickRestart({
  A: "x ~@2 x", B: "x",
})).gain(0.56)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@36 A ~@23 A ~@52 A ~@47 A ~@26>".pickRestart({
  A: "x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@89 x!2 ~@2 x!2 [x!2] x ~@91>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@36 A@8 ~@16 A@8 ~@8 A@11 B@2 ~@24 A@8 ~@40 A@8 ~@19>".pickRestart({
  A: "x!8", B: "x!16",
})).gain(0.4)

// drums · cowbell
const cowbell = s("cb").struct("<~@76 [x!2]!11 ~@101>").gain(0.56)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A B ~@8 A B A B A
  B A B ~@11 C@10 A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B ~@8 A B A B A B A B A B A B A B A B ~@3
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "~ x ~ x", C: "x!3 ~",
})).gain(1.79)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@4 [~ x]!83 ~@10 [~ x]!88 ~@3>").gain(3.24)

// drums · shaker
const shaker = s("sh").struct("<~@4 [~@3 x ~@4]!83 ~@10 [~@3 x ~@4]!88 ~@3>").gain(0.4)

stack(
  bass, epiano1, string_ensemble_1, electric_guitar_clean, electric_guitar_muted, brass_section, electric_guitar_jazz,
  overdriven_guitar, kick, snare, hihat, mid_tom, open_hat, high_tom, crash, crash_soft, ride, tambourine, cowbell,
  congas, cabasa, shaker
)

More by Dr. Hook