Strudelify
What's Love Got To Do With It cover art

1984 · Tina!

What's Love Got To Do With It

Tina Turner

KeyA♭ majorTempo98 bpm
0:00/0:00
// What's Love Got To Do With It — Tina Turner
// 98 bpm, 4/4, key G# major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · "Chords1"
const epiano2 = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C E C F C G A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C E C F C G A@2
  B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C E C F C G C D C E C F C G C D C E C F C G C H ~@6
>`.pickRestart({
  A: "[eb3,gb3,ab3,b3]/2", B: "[[eb3,gb3,bb3,db4]@7 ~]/2", C: "[gb3,ab3,b3,eb4]@7 ~ [gb3,bb3,db4]@7 ~",
  D: "[ab3,b3,eb4]@7 ~ ab3@4 gb3@3 ~, ~@8 [bb3,db4]@7 ~", E: "[ab3,b3,eb4]@7 ~ [ab3,b3,db4]@3 ~ [gb3,bb3,db4]@3 ~",
  F: "[ab3,b3,db4]@9 ~ [gb3,bb3,db4]@5 ~", G: "[ab3,b3,db4]@7 ~ [ab3,b3,db4]@3 ~ [gb3,bb3,db4]@3 ~",
  H: "[b3,eb4]@7 ~ db4@7 ~", // B
})).s("gm_epiano2").gain(0.41)

// chords · epiano2 · "Chords1" · soft notes · Abm7 Gb Abm Db7 Gb Abm7 Gb Db7 …
const epiano2_soft = note(`<
  ~@97
  [ab3@7 ~ ab3@4 gb3@3 ~, ~@8 bb3@7 ~]
  [[gb3,ab3,b3,eb4]@7 ~ [gb3,bb3,db4]@7 ~]
  [[ab3,b3,eb4]@7 ~ [ab3,b3,db4]@3 ~ [gb3,bb3,db4]@3 ~]
  [[gb3,ab3,b3,eb4]@7 ~ [gb3,bb3,db4]@7 ~]
  [[ab3,b3,db4]@9 ~ [gb3,bb3,db4]@5 ~]
  [[gb3,ab3,b3,eb4]@7 ~ [gb3,bb3,db4]@7 ~]
  [[ab3,b3,db4]@7 ~ [ab3,b3,db4]@3 ~ [gb3,bb3,db4]@3 ~]
>`).s("gm_epiano2").gain(0.15)

// chords · electric guitar clean · "Chords2"
const electric_guitar_clean = note(`<
  A B@2 C@4 D@8 E@8 F@3 ~ G ~ G ~ H I J@6 K@8 F@3 ~ H ~ G ~@2 I J@6 L@8 F@3 ~ H ~ G ~@3 G ~ H ~ G ~@3 G ~ H ~ G ~@3 M
  ~@6
>`.pickRestart({
  A: "[b3,db4,gb4]@15 ~", B: "[~@16 [eb4,gb4]@13 ~@3, ~@15 [bb3,db4]@14 ~@3]/2",
  C: "[~@15 b3 [b3,db4]@20 ~@12 [eb4,gb4]@13 ~@3, ~@15 ab3@21 ~@11 [bb3,db4]@14 ~@3, ~@16 gb4@15 ~@33]/4", // Bsus2 Ebm Bbm
  D: "[~@16 [db4,gb4]@21 ~@11 [eb4,gb4]@25 ~@7 [b3,db4,gb4]@19 ~@13 [eb4,gb4]@16, ~@15 [ab3,b3]@21 ~@11 [bb3,db4]@26 ~@6 ab3@21 ~@11 [bb3,db4]@17]/8", // Gb5 Ebm Bsus2 Ebm Abm Bbm
  E: "[~@16 db4@23 ~@9 gb4@18 ~@14 db4@23 ~@9 [eb4,gb4]@16, ~@15 [ab3,b3]@24 ~@8 [bb3,db4]@20 ~@12 [ab3,b3]@24 ~@8 [bb3,db4]@17, ~@16 gb4@19 ~@13 eb4@16 ~@16 gb4@19 ~@29]/8", // Ebm Abm Bbm Abm Bbm
  F: "[~@16 db4@23 ~@3 [db3,gb3,bb3]@2 ~@2 [db3,gb3,bb3]@2, ~@5 [ab3,b3]@8 ~@3]/3", // Gb Abm
  G: "~@5 [db3,gb3,bb3] ~ [db3,gb3,bb3]", H: "~@10 [db3,gb3,bb3]@2 ~@2 [db3,gb3,bb3] ~", I: "gb4",
  J: "[~@16 [eb4,gb4]@25 ~@7 [b3,db4,gb4]@19 ~@13 [eb4,gb4]@16, ~@15 [bb3,db4]@26 ~@6 ab3@21 ~@11 [bb3,db4]@17]/6", // Ebm Bsus2 Ebm Bbm
  K: "[~@16 db4@23 ~@9 gb4@18 ~@14 [db4,gb4]@19 ~@13 [eb4,gb4]@16, ~@15 [ab3,b3]@24 ~@8 [bb3,db4]@20 ~@12 [ab3,b3]@24 ~@8 [bb3,db4]@17, ~@16 gb4@19 ~@13 eb4@16 ~@64]/8", // Gb5 Ebm Abm Bbm Abm Bbm
  L: "[~@16 [db4,gb4]@19 ~@13 gb4@18 ~@14 db4@23 ~@9 [eb4,gb4]@16, ~@15 [ab3,b3]@24 ~@8 [bb3,db4]@20 ~@12 [ab3,b3]@24 ~@8 [bb3,db4]@17, ~@48 eb4@16 ~@16 gb4@19 ~@29]/8", // Gb5 Ebm Abm Bbm Abm Bbm
  M: "~@5 gb3 ~ bb3",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · electric guitar clean · "Chords2" · soft notes · Gb Gb5 Gb
const electric_guitar_clean_2 = note(`<
  ~@97
  [~@5 [db3,bb3] ~ [db3,gb3]]
  ~
  [~@5 [db3,gb3,bb3] ~ [db3,gb3,bb3]]
  ~
  [~@5 [db3,gb3,bb3] ~ [db3,gb3,bb3]]
  ~@2
>`).s("gm_electric_guitar_clean").gain(0.15)

// chords · electric guitar muted · "GuitarPerc"
const electric_guitar_muted = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C D C D C D A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C D C D C D A@2
  B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D C D C D C D ~@4 C D C D C D C D C D C D C E ~@6
>`.pickRestart({
  A: "~@2 b3!2 ~@2 b3!2 ~@2 b3!2 ~@2 b3!2", B: "~@2 bb3!2 ~@2 bb3!2 ~@2 bb3!2 ~@2 bb3!2",
  C: "b2 ~ [gb3,b3,eb4]!2 ~@2 [gb3,b3,eb4]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2", // B Gb
  D: "~@2 [e3,ab3,b3]!2 ~@2 [e3,ab3,b3]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2", // E Gb
  E: "~@2 b3 ~@7 db4 ~@3 [bb3,db4] db4", // Bbm
})).s("gm_electric_guitar_muted").gain(0.41)

// chords · electric guitar muted · "GuitarPerc" · soft notes · E Gb B Gb E Gb B Gb …
const electric_guitar_muted_2 = note(`<
  ~@97
  [~@2 [e3,ab3] [e3,ab3,b3] ~@2 [e3,ab3,b3]!2 ~@2 [gb3,bb3] [gb3,bb3,db4] ~@2 gb3 [gb3,bb3]]
  [b2 ~ [gb3,b3,eb4]!2 ~@2 [gb3,b3,eb4]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2]
  [~@2 [e3,ab3,b3]!2 ~@2 [e3,ab3,b3]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2]
  [b2 ~ [gb3,b3,eb4]!2 ~@2 [gb3,b3,eb4]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2]
  [~@2 [e3,ab3,b3]!2 ~@2 [e3,ab3,b3]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2]
  [b2 ~ [gb3,b3,eb4]!2 ~@2 [gb3,b3,eb4]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2]
  [~@2 [e3,ab3,b3]!2 ~@2 [e3,ab3,b3]!2 ~@2 [gb3,bb3,db4]!2 ~@2 [gb3,bb3,db4]!2]
>`).s("gm_electric_guitar_muted").gain(0.15)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@4 A@14 B A@4 ~ C D E F E D G H A@6 ~@2 A@8 E D E F C D G H A@3 ~ A@10 B ~ E D C F C D G H ~@4 C D G H E D C F E D G
  H C D ~@6
>`.pickRestart({
  A: "ab1@4 ~@2 ab1 ~ ab1@4 ~@4", B: "~@6 ab1 ~ ab1@4 ~@4", C: "~@2 b1@2 bb1@2 ab1@2 gb1@2 ~@2 gb1@3 ~",
  D: "e1@2 ~@4 e1 ~ gb1@2 ~@6", E: "~@2 b1 ~ bb1@2 ab1@2 gb1@2 ~@2 gb1@3 ~", F: "e1@2 ~@4 e1 ~ gb1@2 gb2!2 eb2@2 gb2 ~",
  G: "~ b1 bb1 ~ gb1 ~ ab1 ~", H: "e1 ~@2 e1 gb1 ~ gb1 ~",
})).s("gm_fretless_bass").gain(0.46)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note(`<
  ~@98
  [~@2 b1@2 bb1@2 ab1@2 gb1@2 ~@2 gb1@3 ~]
  [e1@2 ~@4 e1 ~ gb1@2 gb2!2 eb2@2 gb2 ~]
  [~@2 b1 ~ bb1@2 ab1@2 gb1@2 ~@2 gb1@3 ~]
  [e1@2 ~@4 e1 ~ gb1@2 ~@6]
  [~ b1 bb1 ~ gb1 ~ ab1 ~]
  [e1 ~@2 e1 gb1 ~ gb1 ~]
>`).s("gm_fretless_bass").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@8 A@7 ~ A@2 B A@4 ~ A@22 B A@12 ~ A@11 ~ A@8 ~@8 A@8 C D ~@6>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "~@3 x!2 ~@3", C: "x!2", D: "~ x",
})).gain(0.46)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@96 [~@3 x ~@4] [x ~@2 x ~@4] [x ~@2 x!2 ~@3]!6>").gain(0.15)

// drums · snare
const snare = s("sd").struct("<~@7 A B@7 A B@7 A B@35 A B@11 A B@8 A@8 B@9 ~@7>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.46)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@97 [~ x ~ x]!7>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@10 B A@4 C A@22 B A@24 C A@8 D@8 A@9 E@2 D ~@4>".pickRestart({
  A: "x!8", B: "~@2 x!6", C: "~@6 x!2", D: "~@3 x", E: "x!4",
})).gain(0.31)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@97 [~ x ~ x ~ x ~ x]!2 [x!6 ~ x] [x!8]!4>").gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<x ~ x ~ x ~ x ~@97>").gain(0.51)

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

// drums · splash
const splash = s("cr").struct(`<
  ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@7 x",
})).gain(0.46)

// drums · claves
const claves = s("clave:2").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@8
>`.pickRestart({
  A: "x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~",
})).gain(2.26)

// drums · claves · soft notes
const claves_soft = s("clave:2").struct(`<
  ~@97
  [x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~]
  ~
  [x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~]
  ~
  [x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~]
  ~
  [x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~]
>`).gain(1)

stack(
  epiano2, epiano2_soft, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_muted, electric_guitar_muted_2,
  bass, bass_soft, kick, kick_soft, snare, snare_soft, hihat, hihat_soft, open_hat, tambourine, splash, claves,
  claves_soft
)

More by Tina Turner