Strudelify
Little Lies cover art

1987 · Tango in the Night

Little Lies

Fleetwood Mac

KeyA majorTempo124 bpm
0:00/0:00
// Little Lies — Fleetwood Mac
// 124 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 "E.PIANO" epiano1 (copy of ch 5 "E.PIANO" epiano1)
// note: Full arrangement: all 120 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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@7 A B C@2 D E@2 F G B C@2 D E@2 F H I J K L I J K L I J K M B C@2 D E@2 F G B C@2 D E@2 F H I J K L I J K L I J K M
  N@8 B C@2 D E@2 F G B C@2 D E@2 F H I J K L I J K L I J K L I J K L I J K L I O ~@10
>`.pickRestart({
  A: "d3", B: "f#2@3 ~ f#2@3 ~ f#2 ~ f#2@3 ~ f#2 ~", C: "f#2@3 ~ f#2@3 ~ f#2 ~ f#2@3 ~ e2 ~",
  D: "e2@3 ~ e2@3 ~ e2 ~ e2@3 ~ d2 ~", E: "d2@3 ~ d2@3 ~ d2 ~ d2@3 ~ c#2 ~", F: "d2@3 ~ d2@3 ~ d2 ~ d2@3 ~ a1 ~",
  G: "a1@3 ~ a1@3 ~ a1@4 ~@2 e2 ~", H: "a1@3 ~ a1@3 ~ a1@4 ~@2 a1 ~", I: "f#1@3 ~ f#1@3 ~ f#1 ~ f#1 ~ f#1 ~ g#1 ~",
  J: "a1@3 ~ a1@3 ~ a1 ~ a1@2 b1@2 c#2@2", K: "d2@3 ~ d2@3 ~ d2 ~ d2@2 c#2@2 a1@2", L: "e2!4",
  M: "e2@5 ~ e2 ~ e2@5 ~ e2 ~", N: "d2 e2", O: "a1@3 ~ a1@3 ~ a1 ~ a1@2 b1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.24)

// other · marimba
const marimba = note(`<
  ~@8 A B A B C D C E A B A B C D C E ~@12 F B A B C D C E A B A B C D C E ~@20 A B A B C D C E A B A B C D C E ~@32
>`.pickRestart({
  A: "a4 ~ g#4 ~ f#4 ~ a4 ~@3 b4 ~@3 c#5 ~", B: "~@2 d5 ~@3 c#5 ~@3 b4 ~@3 a4 ~", C: "[d4,f#4] ~@7 [e4,g#4] ~@7",
  D: "[d4,f#4] ~@5 [e4,g#4] ~@9", E: "[e4,a4] ~@15", F: "~@2 g#4 ~ f#4 ~ a4 ~@3 b4 ~@3 c#5 ~",
})).s("gm_marimba").gain(0.19)

// other · celesta · "MARIMBA"
const celesta = note(`<
  ~@23
  [~@14 f#5 ~]
  [~@2 e5 ~ c#5 ~ b4 ~@3 c#5 ~ e5 ~ f#5 ~]!12
  ~@15
  [~@14 f#5 ~]
  [~@2 e5 ~ c#5 ~ b4 ~@3 c#5 ~ e5 ~ f#5 ~]!12
  ~@56
>`).s("gm_celesta").gain(0.19)

// other · epiano2 · "MARIMBA"
const epiano2 = note("<~@87 [~@14 f#5 ~] [~@2 e5 ~ c#5 ~ b4 ~@3 c#5 ~ e5 ~ f#5 ~]!21 [~@2 e5 ~ c#5 ~ b4 ~@9] ~@10>")
  .s("gm_epiano2").gain(0.12)

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  ~@8 A@4 B@3 C A@4 B@3 C D E F G D E F G D E F H@3 A@2 B@3 C A@4 B@3 C D E F G D E F G D E F I@2 J B K B J@2 L A@4 B@3
  C A@4 B@3 C D E F G D E F G D E F G D E F G D E F G D E F M ~@8
>`.pickRestart({
  A: "[~@7 c#5@9, ~@5 f#4@11, ~@3 a4@5]/2", B: "[d4,f#4,a4,c#5] [e4,g#4,b4]", C: "[c#4,e4,a4]",
  D: "a4@5 ~@2 c#5, c#5@3 a4, f#4@4 ~ f#4@3", E: "a4@5 ~@2 c#5, c#5@3 a4, e4@4 ~ e4@3",
  F: "f#4@5 ~@2 a4, a4@3 f#4, d4@4 ~ d4@3", G: "[e4,a4,c#5] [e4,g#4,b4]",
  H: "[a5 f#5 e5@2 a5 f#5 e5 f#5@2 ~@6 c#5@9, [e4,a4,c#5]@4 [e4,g#4,b4]@4 ~@5 f#4@11, ~@7 a4@5]/3", // A E
  I: "[a5 f#5 e5@2 a5 f#5 e5 ~ [d4,f#4,a4,c#5]@4 [e4,g#4,b4]@4, [e4,a4,c#5] [e4,g#4,b4] ~@2, ~@7 f#5@2 ~@7]/2", // Dmaj7 E A E
  J: "[d4,f#4,a4,c#5] [e4,g#4,c#5]", K: "[d4,f#4,a4,c#5]@2 [g#4,b4] a4, ~ e4", L: "[d4,f#4,a4,c#5]", M: "[e4,a4,c#5] ~",
})).s("gm_epiano1").gain(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B A C A B@2 D E@4 A@3 F E@4 A@3 F G@2 H@2 G@2 H@2 G@2 H@2 E@4 A@3 F E@4 A@3 F G@2 H@2 G@2 H@2 G@2 H@2 A B A C A B@2
  D E@4 A@3 F E@4 A@3 F G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 I@2 ~@10
>`.pickRestart({
  A: "[d3,f#3,a3,c#4] [e3,g#3,b3]", B: "[d3,f#3,a3,c#4] [e3,g#3,c#4]", C: "[d3,f#3,a3,c#4]@2 [g#3,b3] a3, ~ e3",
  D: "[d3,f#3,a3,c#4]", E: "[f#3,a3,c#4]/4", F: "[e3,a3,c#4]", G: "[f#3 e3, [a3,c#4]]/2",
  H: "[[d3,f#3]@2 c#4 [g#3,b3], a3@3 ~, ~ e3]/2", I: "[[a3,c#4], f#3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.17)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@8 A ~ A ~ B@3 C A ~ A ~ B@3 C D E F G D E F G D E F H A ~ A ~ B@3 C A ~ A ~ B@3 C D E F G D E F G D E F H ~@8 A ~ A
  ~ B@3 C A ~ A ~ B@3 C D E F G D E F G D E F G D E F G D E F G D E F I ~@8
>`.pickRestart({
  A: "~ f#4@3 [a3,f#4] ~@11, [a3,c#4]@4 c#4@3 ~@9", B: "c#4@2 b3 e4", C: "c#4",
  D: "[a3,c#4,f#4]@4 [a3,c#4,f#4] ~@3 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2", // F#m
  E: "[a3,c#4,e4]@4 [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2", // A
  F: "[a3,d4,f#4]@4 [a3,d4,f#4] ~@3 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2", // D
  G: "[a3,c#4,e4]@4 [a3,c#4,e4] ~@3 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2", // A E
  H: "a4@2 f#4@2 [a3,c#4] ~@3 [b3,e4,g#4,a4]@2 [b3,e4,f#4,g#4]@2 [b3,e4,g#4]@2 f#4 ~, [a3,c#4,e4] e4 ~@2", // A E A
  I: "[a3,c#4,e4]@4 [a3,c#4,e4] ~@11", // A
})).s("gm_electric_guitar_muted").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@7 x [x!2]!104 ~@8>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@15 C B@7 D B@4 E B@14 F B@7 D B@3 G B@3 H B@3 I B@3 H B@3 I J B@4 K L M B@7 D B@7 N B@7 O ~@8
>`.pickRestart({
  A: "x ~ x ~ x ~@5 x ~ x!3 ~", B: "~ x ~ x", C: "~@4 x ~@3 x!5 ~ x ~", D: "~@4 x ~@2 x!2 ~@3 x ~ x!2",
  E: "x!3 ~@3 x ~", F: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", G: "~@2 x ~@3 x!2", H: "~@2 x!2 ~@2 x ~",
  I: "~@4 x ~@3 x ~ x ~ x ~ x!2", J: "~ x!2 ~@3 x ~", K: "~@4 x ~@5 x ~ x ~ x!2", L: "~@2 x ~ x ~@3 x ~ x ~ x ~ x!2",
  M: "x!3 ~ x ~ x!2", N: "~@4 x ~@2 x!2 ~ x ~ x ~ x!2", O: "~ x ~@2",
})).gain(0.44)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@9 A ~ A@2 B@2 ~@2 A ~ A@2 B@2 ~@14 A ~ A@2 B@2 ~@2 A ~ A@2 B@2 ~@13 B@8 ~ B C A@2 B@2 ~@2 A ~ A@2 B@2 ~@33
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@3 x ~@2", C: "~ x ~@6",
})).gain(0.27)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@15 A ~@7 A ~@19 A ~@7 A ~@3 A ~@7 A ~@7 B ~@7 A ~@7 A ~@7 A ~@15>".pickRestart({
  A: "x", B: "~ x!2 ~@5",
})).gain(0.22)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@24 A@12 B ~@15 A@20 B ~@15 A@19 C ~@12>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x", C: "x!4",
})).gain(1.39)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
  ~@107
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!3
  [x ~ x!3 ~ x!3 ~@7]
  ~@8
>`).gain(0.28)

stack(
  bass, marimba, celesta, epiano2, epiano1, string_ensemble_1, electric_guitar_muted, kick, snare, hihat, open_hat,
  crash, cabasa, cabasa_soft
)

More by Fleetwood Mac