Strudelify
No More "I Love You"s cover art

1995 · Medusa

No More "I Love You"s

Annie Lennox

KeyE♭ majorTempo91 bpm
0:00/0:00
// No More "I Love You"s — Annie Lennox
// 91 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(91/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 · piano
const bass = note("<~@3 A B A B A B@2 C A B A B A B@2 C A B A B ~@86>".pickRestart({
  A: "eb1@5 ~ eb1@9 ~", B: "eb1@3 eb2@5", C: "eb1@3 eb1@3 ~@2",
})).s("gm_piano").gain(0.4)

// bass · fretless bass
const bass_2 = note(`<
  ~@3 A B@3 A B@2 C A B@3 A B@2 C A B@3 ~ D@2 ~@8 B@4 E@3 F E@4 ~ D@2 G H I J K L M J G H I J N O P Q R O P S T G H I J
  K L M J G H I J ~@4 G H I J G H I J K L M J A B@3 A B@2 C U@3
>`.pickRestart({
  A: "eb1@3 eb1@3 eb1@2", B: "eb1@3 eb1@5", C: "eb1@6 eb1@9 ~", D: "f1/2", E: "eb1@3 eb2@2 bb1 eb2@2",
  F: "eb1@3 eb2@3 g2 bb2", G: "eb2@5 ~ eb2@9 ~", H: "d2@5 ~ d2@9 ~", I: "c2@6 c2@9 ~", J: "bb1@5 ~ bb1@10",
  K: "eb2@5 ~ eb2@10", L: "d2@5 ~ d2@10", M: "f2@3 f2@5", N: "bb2", O: "db2@3 db2!3 db3@2", P: "c2@3 c2!3 c3@2",
  Q: "bb2@3 bb1!3 bb2@2", R: "ab2@3 ab1!5", S: "bb1@3 bb1!3 bb2@2", T: "ab1@3 ab1!3 ~@2", U: "[eb2@3 ~]/3",
})).s("gm_fretless_bass").gain(0.43)

// bass · fretless bass
const bass_3 = note("<~@50 A B ~@19 A B ~@6 A B ~@5 C D ~@2 C E F ~ G E H ~@12>".pickRestart({
  A: "~@7 f3", B: "eb3@7 ~@9", C: "~@3 g3", D: "f3@11 ~@5", E: "f3@11 ~ f3@4", F: "eb3@5 ~@3", G: "g3@11 ~ g3@4",
  H: "eb3@9 ~@7",
})).s("gm_fretless_bass").gain(0.36)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A@6 B C A@6 B C A@4 ~@11 A@6 B C ~ A B C ~@3 D@2 ~@2 E@3 ~ D@2 ~@11 D@2 ~@2 E@3 ~ D@2 ~@6 D@2 ~@2 D@2 ~@2 E@3 ~
  A@6 B C ~@3
>`.pickRestart({
  A: "bb3", B: "c4", C: "d4", D: "bb4/2", E: "[bb4@11 ~@5]/3",
})).s("gm_string_ensemble_2").gain(0.29).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@26 A@2 B@2 A@2 C@2 D@8 E F G F ~@3 A@2 B@2 A@2 C@2 A@2 B@2 H I J K L M N O P A@2 B@2 A@2 C@2 A@2 B@2 ~@4 Q@2 R@2 Q@2
  R@2 A@2 C@2 ~@8 S@3
>`.pickRestart({
  A: "[eb2@2 ~ d4, eb4@3 ~, ~ d2]/2", B: "[c2@2 ~ d4, eb4@3 ~, ~ bb1]/2", C: "[f2@2 ~ d4, eb4@3 ~, ~@16 bb1@13 ~@3]/2",
  D: "[g4 f4 ab4 f4 g4 f4 ab4 f4, bb4]/8", E: "g4", F: "f4", G: "ab4", H: "g4 ab4", I: "bb4 c5", J: "db5 eb5",
  K: "gb5 ab5", L: "bb5 c6", M: "db6 eb6", N: "g6 ab6", O: "bb6 c7", P: "db7@8 eb7@7 ~",
  Q: "[[eb2,eb6]@2 f6 [d4,d6], eb4@3 ~, ~ d2]/2", R: "[eb6@2 ab6 g6 f6@2 [d4,d6]@2, eb4@3 ~, c2 bb1]/2",
  S: "[[eb2,g3,eb4]@17 ~@7]/3", // Eb
})).s("gm_string_ensemble_1").gain(0.24).pan(0.4)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~ A@2 B@16 C@4 D@3 E@2 F@2 E@2 G@2 B@8 H I J I D@3 E@2 F@2 E@2 G@2 E@2 F@2 K L@8 E@2 F@2 E@2 G@2 E@2 F@2 ~@4 E@2 F@2
  E@2 F@2 M@2 ~@2 B@8 N@3
>`.pickRestart({
  A: "[~@8 eb4@23 ~]/2", B: "[g4 f4 ab4 f4 g4 f4 ab4 f4, bb4]/8", C: "[g4 f4 ab4 f4, bb4]/4",
  D: "[[c3,bb4,eb5]@8 [d3,a4]@5 ~@2 f2@33, ~@13 [f3,c5]@35, ~@7 f5@17]/3", E: "[eb2@2 ~ d4, eb4@3 ~, ~ d2]/2",
  F: "[c2@2 ~ d4, eb4@3 ~, ~ bb1]/2", G: "[f2@2 ~ d4, eb4@3 ~, ~@16 bb1@13 ~@3]/2", H: "g4", I: "f4", J: "ab4",
  K: "~ bb3", L: "[~@3 c5 db5@3 c5 db5@7 c5 db5@7 c5 db5@6 eb5@2, ab3, ~ ab4@15]/8", M: "[eb4@3 ~, eb2 ~]/2",
  N: "[[eb2,eb3]@35 ~@13]/3", // Eb
})).s("gm_synth_strings_2").gain(0.18)

// other · synth brass 2
const synth_brass_2 = note(`<
  ~@3 A B C B A B C B A B C B A B C B A B C B ~@3 D E F E D E F E G H I H G H I H G H I H J@3 D E F E D E F E D E F E
  ~@9 D E F E D E F E D E F E ~@4 D E F E D E F E D E F E A B C B A B C B ~@3
>`.pickRestart({
  A: "g4", B: "f4", C: "ab4", D: "g3", E: "f3", F: "ab3", G: "[eb4,g4]", H: "[d4,f4]", I: "[c4,ab4]",
  J: "[c4@8 d4@5 ~ bb3@34]/3",
})).s("gm_synth_brass_2").gain(0.29).pan(0.6)

// other · synth brass 2 · soft notes
const synth_brass_2_soft = note("<~@62 ab4 [ab4@15 ~]!2 ab4 [ab4@15 ~] ab4!2 [ab4@15 ~] ~@39>")
  .s("gm_synth_brass_2").gain(0.15).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@26 A B C D C B C D E@3 F E@2 F E@3 F E G H@2 A B C D C B C D A B C D ~ I J K L I J K M N O P D Q R S D N O T D U V@3
  N O P D N O P D Q R S D ~@11
>`.pickRestart({
  A: "~@2 eb3 ~ [eb3,bb3] ~@3 [eb3,bb3] ~ [eb3,bb3] ~@5", B: "~@2 [d3,bb3] ~ [d3,bb3] ~@3 [d3,bb3] ~ [d3,bb3] ~@5",
  C: "~@2 [eb3,bb3] ~ [eb3,bb3] ~@3 [eb3,bb3] ~ [eb3,bb3] ~@5", // Eb5
  D: "~@2 [f3,bb3] ~ [f3,bb3] ~@3 [d3,bb3] ~ [d3,bb3] ~@5", E: "~@2 eb2 ~ eb2 ~@3 eb2 ~ eb2 ~@5",
  F: "~@2 eb2 ~ eb2 ~@2 bb1 eb2 ~ eb2 ~@5", G: "~@2 c2 ~ c2 ~@3 d2 ~ d2 ~@5", H: "~@2 f2 ~ f2 ~@3 f2 ~ f2 ~@5",
  I: "~@2 db2 ~ db2 ~@2 db2!2 ~ db2 ~@5", J: "~@2 c2 ~ c2 ~@2 c2!2 ~ c2 ~@5", K: "~@2 bb1 ~ bb1 ~@2 bb1!2 ~ bb1 ~@5",
  L: "~@2 ab1 ~ ab1 ~@2 ab1!2 ~ ab1 ~@5", M: "~@2 db2 ~ db2 ~@2 db2 eb2 ~ eb2 ~@5",
  N: "bb4@2 eb3 ~ [eb3,bb3] ~ eb4@2 [eb3,bb3] ~ [eb3,bb3] ~@5, ~@3 g4@2 ~@11", // Eb5
  O: "~@2 [d3,bb3] ~ [d3,bb3] ~ f4!2 [d3,bb3] ~ [d3,bb3] d4@2 ~ d4@2, ~@4 f4 ~@3", // Gm
  P: "eb4@2 [eb3,bb3] bb3 [eb3,bb3] ~ bb3@2 [eb3,bb3]@2 bb3@3 ~@3, ~@10 eb3 ~@5", // Eb5
  Q: "bb4@2 [eb3,bb3] ~ [eb3,bb3] ~@3 [eb3,bb3] ~ [eb3,bb3] ~@5, ~@3 g4@2 ~ eb4@4 ~@6", // Eb5
  R: "~@2 [d3,bb3] ~ [d3,bb3] ~@3 [d3,bb3,bb4] ~ [d3,bb3,g4] ~ ab4 ~ f4@2", // Gm
  S: "g4@2 [eb3,bb3] ~ [eb3,bb3] ~@3 [eb3,bb3] ~ [eb3,bb3] ~@5, ~@3 eb4@2 ~ eb4@5 ~@5", // Eb5
  T: "eb4@2 [eb3,eb4] bb3 [eb3,bb3] ~ eb4@2 [eb3,eb4]@2 eb4@3 ~@3, ~@10 eb3 ~@5", // Eb Eb5 Eb
  U: "bb4@2 eb2 ~ eb2 ~@3 eb2 ~ eb2 ~ eb2 ~@3", V: "~@2 eb2 ~ eb2 ~@3 eb2 ~ eb2 ~ eb2 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.27).pan(0.9)

// other · flute
const flute = note(`<
  ~@47 A@2 B C B D B E F D B C B D ~@9 B C B D B E F D B C B D ~@4 B C B D B C B D ~@15
>`.pickRestart({
  A: "[~@8 [eb6,f6] g5@2 bb5@2 ~ c6@7 bb5@7 ~@4, ~@9 bb5 ~@22]/2", B: "eb5 bb4 eb5 bb4 eb5 bb4 eb5 bb4",
  C: "d5 bb4 d5 bb4 [bb4,d5] [c5,eb5] [d5,f5] bb4", D: "d5 bb4 d5 bb4 d5 bb4 d5 bb4",
  E: "d5 bb4 d5 bb4 [bb4,d5] [c5,eb5] [d5,f5] [bb4,d5]", F: "eb5 bb4 eb5 bb4 c5 d5 eb5 f5",
})).s("gm_flute").gain(0.22)

// other · synth drum
const synth_drum = note(`<
  ~@34
  [c2 ~@5 c2 ~@9]!27
  ~@9
  [c2 ~@5 c2 ~@9]!12
  [c2 ~@5 c2 ~@3 c2 ~@5]
  [c2 ~@2 c2 ~@2 c2 ~@3 c2 ~@5]!3
  [c2 ~@5 c2 ~@9]!20
  ~@3
>`).s("gm_synth_drum").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@3 A@20 B A@10 C@15 D@6 C D@11 C D C D@6 C D@19 C D ~@11>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@2 x ~@3 x ~@5", D: "x ~@2 x ~@2 x ~ x ~ x ~@5",
})).gain(0.7)

// drums · snare
const snare = s("sd").struct("<~@34 [~ x ~ x]!35 [~ x!2 ~ x ~@7 x ~@3] [~ x ~ x]!28 ~@11>").gain(0.49)

// drums · low tom
const low_tom = s("lt").struct("<~@69 [~@5 x!2 ~@7 x ~] ~@15 [~@4 x!4] ~@23>").gain(0.7)

// drums · hihat
const hihat = s("hh").struct("<[x!4] ~@33 [x ~ x ~ x!5 ~ x!6]!64 ~@11>").gain(0.49)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@34 [~@3 x ~@12]!64 ~@11>").gain(0.14)

// drums · mid tom
const mid_tom = s("mt").struct("<~@69 [~@10 x ~ x!2 ~@2] ~@15 [~@13 x ~@2] ~@23>").gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<~@34 [~@7 x]!64 ~@11>").gain(0.56)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@34 [~@3 x ~@12]!64 ~@11>").gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@69 [~@7 x!2 ~@7] ~@39>").gain(0.42)

// drums · china
const china = s("cr").struct("<~@49 A ~@7 A ~@3 A ~@8 A ~@7 A ~@3 A ~@3 A ~@3 A ~@18>".pickRestart({
  A: "x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@26 A B C A@2 D E A F@60 G@4 H I@2 J ~@7>".pickRestart({
  A: "x!4", B: "x ~ x!3 ~ x ~", C: "~ x ~ x", D: "x ~ x ~@2 x!3", E: "~ x!3", F: "x!7 ~", G: "x!6 ~@2", H: "x!3 ~ x!4",
  I: "~@2 x ~ x!2 ~@2", J: "~ x!2 ~ x!2 ~@2",
})).gain(0.35)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@26 A B C A@2 D E A F@60 G@4 H I@2 J ~@7>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@3 x ~ x", C: "x!2 ~ x!3 ~ x", D: "~ x ~ x!2 ~@3", E: "x!2 ~ x ~ x ~ x", F: "~@7 x",
  G: "~@6 x!2", H: "~@3 x ~@4", I: "x!2 ~ x ~@2 x!2", J: "x ~@2 x ~@2 x ~",
})).gain(0.21)

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

stack(
  bass, bass_2, bass_3, string_ensemble_2, string_ensemble_1, synth_strings_2, synth_brass_2, synth_brass_2_soft,
  acoustic_guitar_steel, flute, synth_drum, kick, snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, open_hat_soft,
  high_tom, china, tambourine, tambourine_soft, congas
)

More by Annie Lennox