Strudelify
Sweet Dreams cover art

2014 · Nostalgia

Sweet Dreams

Annie Lennox

KeyE♭ majorTempo124 bpm
0:00/0:00
// Sweet Dreams — Annie Lennox
// 124 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 string ensemble 1 (copy of ch 7 synth brass 1)
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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.

// other · pad poly
const pad_poly = note(`<
  A B A B A B A B A B A B A B A B A B A B C D E F C G A B A B A B A B C D E F C G H@8 A B A B A B A B A B A B A B A B I
  J E F K L 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 H@8
>`.pickRestart({
  A: "c2 ~@3 c3 ~ c2 ~@3 c3 ~ c2 ~ c3 ~", B: "ab2 ~@3 ab2 ~ ab2 ~ g2 ~ g2 ~ bb2 ~ bb2 ~",
  C: "ab1 ~@3 ab2 ~ ab1 ~@3 ab2 ~ ab1 ~ ab2 ~", D: "g1 ~@3 g2 ~ g1 ~@3 g2 ~ g1 ~ g2 ~",
  E: "c2 ~@3 c3 ~ c2 ~ c3 ~ c2 ~ eb2 ~@3", F: "f2 ~@3 f3 ~ f2 ~@3 f3 ~ f2 ~ f3 ~",
  G: "g1 ~@3 g2 ~ g1 ~ g2 ~ g1 ~ bb2 ~@3", H: "[c1@57 ~@7]/8", I: "f1 ~@3 ab2 ~ f1 ~@3 ab2 ~ f1 ~ ab2 ~",
  J: "f1 ~@3 ab2 ~ g1 ~@3 g2 ~ g1 ~ g2 ~", K: "ab2 ~@3 ab2 ~ ab1 ~@3 ab2 ~ ab1 ~ ab2 ~",
  L: "g1 ~@3 g2 ~ g1 ~ g2 ~ g1 ~ b2 ~@3",
})).s("gm_pad_poly").gain(0.55).pan(0.2)

// other · synth strings 1
const synth_strings_1 = note(`<
  A B C B A B C B A B C B A B C B A B C B ~@6 A B C B A B C B ~@6 D@8 A B C B A B C B A B C B A B C B E@2 F G H I A J C
  J A J C J ~@8 A J C J A J C J A J C J A J C J A J C J A J C J D@8
>`.pickRestart({
  A: "c2@2 ~@2 c4 ~ c4 ~@3 eb4 ~@3 c4 ~", B: "~@4 ab3 ~ c4 ~@5 g3 ~ c4 ~", C: "c2 ~@3 c4 ~ c4 ~@3 eb4 ~@3 c4@2",
  D: "[c1@57 ~@7]/8", E: "[f2@3 g2]/2", F: "c2@3 eb2", G: "f2@15 ~", H: "ab2", I: "g2 b2",
  J: "~@4 ab3 ~ c4 ~@3 g3 ~ bb3 ~ c4 ~",
})).s("gm_synth_strings_1").gain(0.45).pan(0.8)

// other · pad poly
const pad_poly_2 = note(`<
  A B A B A B A B A B A B A B A B A B A B ~@6 A B A B A B A B ~@6 C D E F G H I J A B A B A B A B A B A B A B A B ~@6 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 C D E F G H I J
>`.pickRestart({
  A: "c2 ~ c2 ~ c3 ~ c3 ~ eb3 ~@3 c3 ~@3", B: "ab2 ~ ab3 ~@5 g2 ~ g2 ~@5", C: "c3", D: "d3", E: "eb3", F: "f3", G: "g3",
  H: "a3", I: "bb3", J: "c4 ~ c4 ~@13",
})).s("gm_pad_poly").gain(0.49).pan(0.7)

// chords · piano
const piano = note("<~@40 A@4 B@3 C ~@62 A@4 B@3 D>".pickRestart({
  A: "[[c3,eb3,g3,c4]@16 [d3,f3,a3,d4]@16 [eb3,g3,c4,eb4]@15 ~ [f3,a3,d4,f4]@16, [c1,c2]@61 ~@3]/4", // Cm Dm Cm Dm C
  B: "[[g3,c4,eb4,g4]@4 [a3,d4,f4,a4]@4 [bb3,eb4,g4,bb4]@3 ~, [c1,c2]@15 ~]/3", // Cm Dm Eb C
  C: "[c4,f4,c5] [c1,c2,c4,f4,a4,c5] ~@6, [c1,c2,a4] ~@15", D: "[c4,eb4,c5] [c1,c2,c4,eb4,g4,c5] ~@6, [c1,c2,g4] ~@15",
})).s("gm_piano").gain(0.49).pan(0.4)

// other · synth brass 1
const synth_brass_1 = note("<~@47 A B C D@6 ~@29 A B E F@8 G@6 H@8 ~@8>".pickRestart({
  A: "~@10 bb3 c4 eb4 d4 c4 bb3", B: "c4", C: "eb3@3 f3 ~ g3 eb3@2",
  D: "[c3@26 g3@2 bb3@2 c4@26 gb4@2 f4@2 eb4@2 c4@33 ~]/6", E: "eb3@5 ~ f3@2 ~@2 g3@2 eb3@4",
  F: "[c3@23 ~@3 g3@2 bb3@2 c4@25 ~ gb4@2 f4@2 eb4@2 c4@27 ~ g4@2 bb4@2 c5@28 bb4@2 eb5@2 bb4@2]/8",
  G: "[c5@26 g4@2 bb4@2 c5@25 ~ gb5@2 f5@2 eb5@2 c5@27 ~ bb4 c5 eb5 d5 c5 bb4]/6",
  H: "[c5@24 gb5@2 f5@2 eb5@2 c5@27 ~ g5@2 bb5@2 c6@26 gb6@2 f6@2 eb6@2 c6@33 ~]/8",
})).s("gm_synth_brass_1").gain(0.38).pan(0.4)

// other · french horn
const french_horn = note(`<
  ~@21 A@2 B C@3 ~@8 D E F@2 G@2 ~@24 H@2 I@4 ~@4 J@2 ~@2 K L@2 M N O P@2 Q R S@2 T U V@2 ~@23
>`.pickRestart({
  A: "[~@12 g4 f4 eb4 f4@7 gb4 f4 eb4@6 f4 ~]/2", B: "eb4 f4 eb4 f4 ~ eb4 c4@2 ~@8",
  C: "[~@15 bb4@4 g4@2 gb4@2 ~ f4@2 ~ f4 eb4@6 c4@5 ~@9]/3", D: "~@8 d6@5 d6 ~ c6", E: "d6@6 ~ d6@2 c6@7",
  F: "[~@9 c4 ~ eb4 g4 f4 ~ eb4@11 gb4 f4 eb4@4]/2", G: "[g4@2 bb4@3 ~@3]/2", H: "[~@14 eb5@6 d5 c5 ~ bb4 c5@6 g4@2]/2",
  I: "[f4@2 eb4@3 gb4@2 f4@2 eb4 f4@2 eb4@7 g4@6 f4@2 g4@8 ~@3 g4@2 bb4@2 c5@12 ~@10]/4",
  J: "[~@9 gb4@2 ~@2 eb4@2 ~ eb4@7 ~@9, ~@12 f4@2 ~ f4@2 ~@15]/2", K: "~@8 c5@3 g4@2 gb4 ~ f4",
  L: "[eb4@6 f4@2 eb4@4 f4@2 c4@5 ~@7 bb3@2 c4@2 eb4@2]/2", M: "~ c4@2 ~@5", N: "~@5 bb3 c4 eb4",
  O: "~ c4@2 bb3@2 c4@2 ~", P: "[~@6 g4@3 ~ f4@4 eb4@4 c4@5 ~@9]/2", Q: "~@5 g4 ~ g4", R: "~@2 g4@2 ~@2 g4@9 ~",
  S: "[~@10 f4@2 eb4@2 c4@9 ~@9]/2", T: "~@3 c4@2 bb3@2 c4", U: "~ c4 ~ c4 ~ c4 ~ c4",
  V: "[~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@9 ~@9]/2",
})).s("gm_french_horn").gain(0.38).pan(0.6)

// chords · string ensemble 2 · Cm7
const string_ensemble_2 = note("<~@39 [~@3 [c4,d4,eb4,g4,bb4,eb5]@10 ~@3] ~@78>")
  .s("gm_string_ensemble_2").gain(0.01).pan(0.6)

// other · taiko drum
const taiko_drum = note(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9
>`.pickRestart({
  A: "c3 ~@15",
})).s("gm_taiko_drum").gain(0.32)

// drums · kick
const kick = s("bd").struct("<A@20 B@6 A@8 B@6 A@7 C A@16 B@6 A@47 C>".pickRestart({
  A: "x!4", B: "x!2", C: "x!2 ~@6",
})).gain(0.55)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@20 [~ x ~@3 x ~@2]!6 ~@8 [~ x ~@3 x ~@2]!6 ~@24 [~ x ~@3 x ~@2]!6 ~@48>")
  .gain(0.33)

// drums · snare
const snare = s("sd").struct("<~@20 A@6 ~@8 A@6 ~@4 A@3 B A@30 ~@8 A@24 ~@4 A@3 B>".pickRestart({
  A: "~ x ~ x", B: "x!2 ~@6",
})).gain(0.49)

// drums · clap
const clap = s("cp").struct("<~@20 A@6 ~@8 A@6 ~@4 A@3 B A@30 ~@8 A@24 ~@4 A@3 B>".pickRestart({
  A: "~ x ~ x", B: "x!2 ~@6",
})).gain(0.33)

// drums · hihat
const hihat = s("hh").struct("<~@20 A@6 ~@8 A@6 B@7 C ~@16 A@6 ~@40 B@7 C>".pickRestart({
  A: "x!8", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", C: "~ x ~@6",
})).gain(0.16)

// drums · open hat
const open_hat = s("oh").struct("<~@40 [~ x ~ x ~ x ~ x]!7 x ~@62 [~ x ~ x ~ x ~ x]!7 x>").gain(0.38)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
  ~@41 A@6 ~@24 B ~ B ~ C ~ B ~@9 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~ C ~ C ~@3 A@6 ~
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@7 x", C: "~@6 x!2",
})).gain(3.14)

// drums · agogo bells · soft notes
const agogo_bells_soft = s("agogo:2").struct(`<
  ~@71 A ~ A ~ B ~ A ~@9 C ~ C ~ A ~@3 C ~ C ~ A ~@3 A ~ B ~ B ~@10
>`.pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~@5 x!2 ~",
})).gain(1.74)

// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct("<~@41 A B A B A B ~@56 C ~@7 A B A B A B ~>".pickRestart({
  A: "~@9 x ~ x ~ x!2 ~", B: "~@9 x ~ x ~ x ~@2", C: "~@5 x ~@2",
})).gain(3.14)

// drums · agogo bells · soft notes
const agogo_bells_soft_2 = s("agogo:4").struct("<~@99 [~@5 x ~@2] ~@18>").gain(1.74)

stack(
  pad_poly, synth_strings_1, pad_poly_2, piano, synth_brass_1, french_horn, string_ensemble_2, taiko_drum, kick,
  kick_soft, snare, clap, hihat, open_hat, agogo_bells, agogo_bells_soft, agogo_bells_2, agogo_bells_soft_2
)

More by Annie Lennox