Strudelify

All The Love In The World

Dionne Warwick

KeyE majorTempo93 bpm
0:00/0:00
// All The Love In The World — Warwick, Dionne
// 93 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 12, 4/4 at bar 12, 2/4 at bar 32, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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 · epiano2 · "E.Piano"
const epiano2 = note(`<
  ~@2 A@2 ~@6 B C@2 D@2 E F G H I J K@4 I J L@5 A@2 ~@6 B C@2 D@2 E F G H I J M@8 N O@2 P Q R S T@8 U V W R S X@6
>`.pickRestart({
  A: "[~@2 b4@2 [g#4,e5]@2 [a4,f#5]@2 [b4,g#5]@15 ~@9]/2", B: "~@3 [g#4,b4]", C: "[[a4,c#5]@13 ~ [a4,c#5]@2]/2",
  D: "[[g#4,b4]@27 ~ [g#4,b4]@4]/2", E: "[a4,c#5]", F: "[c#5,a5] [b4,g#5] [a4,f#5]@2", G: "[c#5,e5]@15 ~",
  H: "[b4,d#5]@7 ~", I: "[g#4,b4,e5]", J: "[e4,g#4,b4]@15 ~",
  K: "[[e4,g#4,c#5]@14 [c#5,g#5]@4 [g#4,e5]@6 [f#4,b4,d#5]@16 [e4,g#4,c#5]@15 ~ [f#4,b4,d#5]@8]/4", // C#m C#5 C#m B C#m B
  L: "[[e4,g#4,c#5]@7 [c#5,g#5]@2 [g#4,e5]@2 [f#4,b4,d#5]@9 [e4,g#4,c#5]@8 [f#4,b4,d#5]@7 ~@5]/5", // C#m C#5 C#m B C#m B
  M: "[[e4,g#4,c#5]@14 [c#5,g#5]@4 [g#4,e5]@6 [f#4,b4,d#5]@16 [e4,g#4,c#5]@15 ~ [f#4,b4,d#5]@12 [f#4,b4,d#5]@4 [g#4,b4,e5]@15 ~ [e4,g#4,b4]@15 ~ [g#4,c#5,e5]@19 ~ [g#4,c#5,e5]@4]/8", // C#m C#5 C#m B C#m B E C#m
  N: "[f#4,b4,d#5]@11 ~ [f#4,b4,d#5]@3 ~", O: "[e5@13 ~@9 a4@9 ~, a4@21 ~@11, c#5@17 ~ c#5@13 ~, ~@7 e5@8 ~]/2",
  P: "[g#4,c#5,e5]@15 ~", Q: "[a#4,d5,f5]@7 ~ [a#4,d5,f5]@4 [a#4,d5,g5]@3 ~", R: "[a4,c5,f5]", S: "[f4,a4,c5]@15 ~",
  T: "[[f4,a4,d5]@14 [d5,a5]@4 [a4,f5]@6 [g4,c5,e5]@16 [f4,a4,d5]@15 ~ [g4,c5,e5]@12 [g4,c5,e5]@4 [a4,c5,f5]@16 [f4,a4,c5]@15 ~ [f4,a4,d5]@14 [d5,a5]@4 [a4,f5]@6]/8", // Dm D5 Dm C Dm C F Dm …
  U: "[g4,c5,e5]", V: "[f4,a4,d5]@15 ~", W: "[g4,c5,e5]@3 [g4,c5,e5]",
  X: "[[f4,a4,d5]@14 [d5,a5]@4 [a4,f5]@6 [g4,c5,e5]@16 [f4,a4,d5]@15 ~ [g4,c5,e5]@12 [g4,c5,e5]@4 [a4,c5,f5]@20 ~@4]/6", // Dm D5 Dm C Dm C F
})).s("gm_epiano2").gain(0.64).pan(0.8)

// bass · electric bass finger · "Bass Gtr"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y T U V W X Y Z C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB
  AC AD AE AF V AG AH AI AJ AK AL AM AN AO AP AQ AR AJ AR AH AI AJ AK AL AM AS@2
>`.pickRestart({
  A: "~@8 e1@5 ~ e1@2", B: "c#2@4 b1@2 c#2@2 e1@5 ~ e1@2", C: "c#2@4 b1@4 e1@5 ~ e1@2",
  D: "c#2@4 b1@3 ~ a1@2 e1 ~ f#1@2 a1@2", E: "~@8 a1@2 e1 ~ f#1@2 a1@2", F: "~@3 b1 e1 b1 c#2 e1",
  G: "~@8 e1@2 b1 ~ c#2@2 e1@2", H: "~@3 b1 f#1 c#2 f#2 f#1", I: "~@8 f#1@2 c#2@2 f#2@2 f#1 ~",
  J: "a1@7 ~ c#2@2 g#1@2 b1@2 c#2@2", K: "~@6 g#1 ~ c#2@4 e1@3 ~", L: "a1 e1 f#1 a1 ~@4", M: "a1 e1 f#1 a1 ~@3 b1",
  N: "e1 b1 c#2 e1 ~@4", O: "e1 b1 c#2 e1 ~@3 b1", P: "f#1 c#2 f#2 f#1 ~@4", Q: "f#1@2 c#2@2 f#2@2 f#1@7 ~ g#1@2",
  R: "a1@5 ~ a1 ~ a1@7 ~", S: "b1@5 ~ b1@2 f#2@4 b1@4", T: "e2@5 ~ e2@2 c#2@4 b1@2 g#1@2",
  U: "c#2@5 ~ c#2@2 g#1@4 b1@2 c#2@2", V: "a1@5 ~ a1@2 f#2@4 e2@2 f#2@2", W: "a1@5 ~ a1@2 b1@5 ~ b1@2",
  X: "g#2@4 f#2@2 g#2@2 a1@5 ~ a1@2", Y: "f#2@4 e2@2 f#2@2 b1@5 ~ b1@2", Z: "g#2@4 f#2@2 g#2@2 e1@5 ~ e1@2",
  AA: "c#2@4 b1@2 g#1@2 c#2@5 ~ c#2@2", AB: "g#1@4 b1@2 c#2@2 a1@5 ~ a1@2", AC: "f#2@4 e2@2 f#2@2 a1@5 ~ a1@2",
  AD: "b1@5 ~ b1@2 g#2@4 f#2@2 b1@2", AE: "f#1@5 ~ f#1@2 c#2@4 e2@2 f#2@2", AF: "f#1@5 ~ f#1@2 c#2@4 f#2@2 f#1@2",
  AG: "g1@5 ~ g1@2 c2@5 ~ c2@2", AH: "f2@5 ~ f2@2 d2@4 c2@2 a1@2", AI: "d2@5 ~ d2@2 a1@4 c2@2 d2@2",
  AJ: "a#1@5 ~ a#1@2 g2@4 f2@2 g2@2", AK: "a#1@5 ~ a#1@2 c2@5 ~ c2@2", AL: "a2@4 g2@2 a2@2 a#1@5 ~ a#1@2",
  AM: "g2@4 f2@2 g2@2 c2@5 ~ c2@2", AN: "a2@4 g2@2 a2@2 f2@5 ~ f2@2", AO: "d2@4 c2@2 a1@2 d2@5 ~ d2@2",
  AP: "a1@4 c2@2 d2@2 a#1@5 ~ a#1@2", AQ: "g2@4 f2@2 g2@2 a#1@5 ~ a#1@2", AR: "c2@5 ~ c2@2 a2@4 g2@2 a2@2",
  AS: "[a2@2 g2 a2 f1@10 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · string ensemble 1 · "StringPad"
const string_ensemble_1 = note("<~@19 A@6 B@8 ~@16 C@5 D@5 E F@2 G H I@5 J@5 K L K M@8>".pickRestart({
  A: "[[b3,e4,g#4]@7 [b3,d#4,f#4]@2 [e4,g#4]@2 [b3,d#4,f#4]]/6", // E B E B
  B: "[[b3,e4,g#4]@7 [b3,d#4,f#4]@2 [c#4,e4,g#4]@2 [d#4,f#4]@2 [e4,g#4]@3, ~@11 b3@5]/8", // E B C#m D#m E
  C: "[[b3,e4,g#4]@7 [b3,d#4,f#4]@2 [e4,g#4]]/5", D: "[~ [b3,d#4,f#4]@2 [b3,e4,g#4]@7]/5", E: "[b3,d#4,f#4]",
  F: "[a3,c#4,e4]/2", G: "[g#3,c#4,e4]", H: "[a#3,d4,f4]", I: "[[c4,f4,a4]@7 [c4,e4,g4]@2 [f4,a4]]/5",
  J: "[~ [c4,e4,g4]@2 [c4,f4,a4]@7]/5", K: "[c4,e4,g4]", L: "[f4,a4]",
  M: "[[c4,f4,a4]@14 [c4,e4,g4]@4 [f4,a4]@4 [c4,e4,g4]@4 [f4,a4]@5 ~]/8", // F C F C F
})).s("gm_string_ensemble_1").gain(0.42).pan(0.3)

// chords · string ensemble 1 · "StringPad" · soft notes
const string_ensemble_1_soft = note("<~@23 A@2 ~@28 A@2 ~@13 B@2 ~@5 C ~@5 B@2 ~@2>".pickRestart({
  A: "[~@8 c#4@15 ~@9]/2", B: "[~@8 d4@15 ~@9]/2", C: "d4@15 ~",
})).s("gm_string_ensemble_1").gain(0.3).pan(0.3)

// chords · piano
const piano = note(`<
  A@3 B@6 C@2 D@2 E@2 F@2 G H I J K@4 I L M@6 B@6 C@2 D@2 E@2 F@2 G H I J N@8 O P Q J R S T U@8 V W X S T Y@6
>`.pickRestart({
  A: "[~@8 [e3,g#3,b3]@11 ~ g#3@2 a3@2 [e3,g#3,b3]@11 ~ g#3@2 a3@2 [e3,g#3,b3]@8, ~@5 [e3,b3] ~@3 [e3,b3] ~@2]/3", // E E5
  B: "[~@4 [f#3,b3,d#4]@4 [e3,a3,c#4]@27 ~ [e3,a3,c#4]@4 [e3,g#3,b3]@27 ~ [e3,g#3,b3]@4 [f#3,a3,c#4]@22 ~@2]/6", // B A E F#m
  C: "[[e3,a3,c#4]@7 ~ [e3,g#3,c#4]@15 ~ [e3,g#3,c#4]@3 ~ [e3,g#3,b3]@3 ~]/2", D: "[[e3,a3,c#4]@27 ~ [e3,a3,c#4]@4]/2",
  E: "[[e3,g#3,b3]@27 ~ [e3,g#3,b3]@4]/2", F: "[[f#3,a3,c#4]@27 ~ [f#3,a3,c#4]@3 ~]/2",
  G: "[e3,g#3,c#4]@11 ~ [e3,g#3,c#4]@3 ~", H: "[f#3,b3,d#4]@3 [f#3,b3,d#4]", I: "[g#3,b3,e4]@11 ~ [g#3,b3,e4]@4",
  J: "[g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@3 ~", // C#m
  K: "[[g#3,c#4,e4]@20 [g#3,c#4,e4]@4 [f#3,b3,d#4]@11 ~ [f#3,b3,d#4]@4 [g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@4 [f#3,b3,d#4]@7 ~]/4", // C#m B C#m B
  L: "[g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@4", // C#m
  M: "[[g#3,c#4,e4]@20 [g#3,c#4,e4]@3 ~ [f#3,b3,d#4]@11 ~ [f#3,b3,d#4]@3 ~ [g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@3 ~ [f#3,b3,d#4]@11 ~ [f#3,b3,d#4]@4 [e3,g#3,b3]@11 ~ g#3@2 a3@2 [e3,g#3,b3]@8, ~@21 [e3,b3] ~@2]/6", // C#m B C#m B E E5
  N: "[[g#3,c#4,e4]@20 [g#3,c#4,e4]@4 [f#3,b3,d#4]@11 ~ [f#3,b3,d#4]@4 [g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@4 [f#3,b3,d#4]@12 [f#3,b3,d#4]@4 [g#3,b3,e4]@11 ~ [g#3,b3,e4]@3 ~ [g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@19 ~ [g#3,c#4,e4]@4]/8", // C#m B C#m B E C#m
  O: "[f#3,b3,d#4]@11 ~ [f#3,b3,d#4]@3 ~", P: "[a3,c#4,e4]", Q: "[a3,c#4,e4]@11 ~ [a3,c#4,e4]@4",
  R: "[f3,a#3,d4]@7 ~ [f3,a#3,d4]@8", S: "[a3,c4,f4]@11 ~ [a3,c4,f4]@4", T: "[a3,d4,f4]@11 ~ [a3,d4,f4]@3 ~",
  U: "[[a3,d4,f4]@20 [a3,d4,f4]@4 [g3,c4,e4]@11 ~ [g3,c4,e4]@4 [a3,d4,f4]@11 ~ [a3,d4,f4]@4 [g3,c4,e4]@12 [g3,c4,e4]@4 [a3,c4,f4]@11 ~ [a3,c4,f4]@4 [a3,d4,f4]@11 ~ [a3,d4,f4]@3 ~ [a3,d4,f4]@20 [a3,d4,f4]@4]/8", // Dm C Dm C F Dm
  V: "[g3,c4,e4]@11 ~ [g3,c4,e4]@4", W: "[a3,d4,f4]@11 ~ [a3,d4,f4]@4", X: "[g3,c4,e4]@3 [g3,c4,e4]",
  Y: "[[a3,d4,f4]@20 [a3,d4,f4]@4 [g3,c4,e4]@11 ~ [g3,c4,e4]@4 [a3,d4,f4]@11 ~ [a3,d4,f4]@4 [g3,c4,e4]@12 [g3,c4,e4]@4 [a3,c4,f4]@20 ~@4]/6", // Dm C Dm C F
})).s("gm_piano").gain(0.8).pan(0.3)

// chords · electric guitar clean · "E.Guitar"
const electric_guitar_clean = note(`<
  ~@4 A ~ B ~ A ~@3 C ~ D ~@4 E@3 ~ F ~ E@3 ~ F ~@4 A ~ B ~ A ~@3 C ~ D ~@4 E@3 ~ F ~ G H I J ~@5 K@3 ~ L ~ L@3 ~@2 K ~
  K@3 ~ L ~@3
>`.pickRestart({
  A: "~@8 [e3,a3] ~@2 [e3,a3] ~@2 [e3,a3] ~", B: "~@8 [e3,g#3] ~@3 a3@2 [e3,g#3] ~, ~@11 [e3,g#3]@2 ~@3",
  C: "[e3,a3] ~@2 [e3,a3] ~@2 [e3,a3] ~@9", D: "[e3,g#3] ~@3 a3@2 [e3,g#3] ~@9, ~@3 [e3,g#3]@2 ~@11",
  E: "~@2 [b3,e4,g#4] ~@13", F: "~@10 [b3,e4,g#4] ~@5", G: "~@2 [e3,e4] [b2,b3]",
  H: "[g#3,g#4]@3 [f#3,f#4]@3 [e3,e4]@2 [d#3,d#4]@4 [e3,e4]@4", // G# F# E D# E
  I: "[d#3,d#4]@3 [c#3,c#4]@3 [b2,b3]@2 [c#3,c#4]@6 [g#3,g#4]@2", J: "[g#3,g#4]", K: "~@2 [c4,f4,a4] ~@13",
  L: "~@10 [c4,f4,a4] ~@5", // F
})).s("gm_electric_guitar_clean").gain(0.42).pan(0.7)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B@2 C D E@2 F C E G C D@2 G C D@2 G E B@2 C@2 F E B@2 C F@2 E B F D E@2 F C E G C D@2 C@2 D@2 G E B@2 C@2 F C B@2 D
  C E B@2 C E B@2 C@4 B@2 D C@3 E B@2 C@3 H ~
>`.pickRestart({
  A: "~@8 x ~ x ~ x ~ x!2", B: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2", C: "x!8", D: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
  E: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", F: "x!3 ~ x!4", G: "x!7 ~", H: "x!4 ~@4",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@24 A ~@6 B ~@16 C ~@6 B ~@3 A ~@3 D ~@21>".pickRestart({
  A: "~@3 x", B: "~@3 x ~@4", C: "~ x!2 ~@5", D: "~@2 x ~@2 x ~@2 x ~@2 x!2 ~@3",
})).gain(0.8)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A ~@5 B ~@23 A ~@5 C ~@4 D ~@8 E F ~@4 C ~ G ~@4 E F ~@2>".pickRestart({
  A: "~@4 x ~@2 x", B: "~@5 x ~@2", C: "~@7 x", D: "~@8 x ~@2 x ~@4", E: "~@3 x ~@4", F: "~@6 x!2", G: "~@2 x!2 ~@4",
})).gain(0.8)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@49 [x!16]!34 [x!8 ~@8] ~>").gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@55 A B C D E F G H I ~@21>".pickRestart({
  A: "~@14 x!2", B: "x!3 ~ x!3 ~", C: "x ~ x ~ x ~ x!3 ~ x ~ x ~@3", D: "~@4 x ~ x!3 ~ x ~ x ~@3", E: "x!4 ~@4",
  F: "~@6 x!3 ~ x ~ x ~@3", G: "x ~ x ~ x ~@3 x ~ x ~ x ~ x!2", H: "x ~ x ~ x ~@7 x ~ x!2", I: "x!3 ~ x!4",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct(`<
  ~@19 A ~ A ~ B ~ A ~ A ~ B ~@19 A ~ A ~ B ~@3 B ~@4 A ~ A ~ A ~ B ~ B ~ B ~@2 A ~ A ~ A ~ B ~@3
>`.pickRestart({
  A: "~@2 x!3 ~@11", B: "~@10 x!3 ~@3",
})).gain(0.56)

stack(
  epiano2, bass, string_ensemble_1, string_ensemble_1_soft, piano, electric_guitar_clean, kick, snare, hihat, low_tom,
  open_hat, mid_tom, crash, tambourine, ride, rim
)

More by Dionne Warwick