Strudelify

If Not for You

Olivia Newton-John

KeyG majorTempo130 bpm
0:00/0:00
// If Not for You — Olivia Newton-John
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "Chords Acoustic" acoustic guitar nylon (copy of ch 3 "Chords Acoustic" harpsichord)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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("<[~ c-1 ~@14] ~@103>").s("gm_piano").gain(0.05)

// chords · harpsichord · "Chords Acoustic"
const harpsichord = note(`<
  ~@2 A B A B A B A B A B C D A B A B A B C D A B A E F G H G F G C D@2 A B A B A B C D A B A B A B C D A B A E F G H G
  F G C D@2 A B A B A B C D A B A B A B C D A B A E F G H G F G C D@2 A B A E A B A E I@2 ~
>`.pickRestart({
  A: "[d4,g4,b4]@5 ~ [d4,g4,b4] ~ [d4,g4,b4]@3 ~ [d4,f#4,a4]@3 ~", // G D
  B: "[c4,e4,g4]@5 ~ [c4,e4,g4]@3 ~ [c4,e4,g4] ~ [c4,e4,g4]@2 ~@2", // C
  C: "~@2 e4@2 g4@2 a3@2 g4 ~@3 [e4,g4] ~ [a3,c4,e4,g4] ~, [a3,c4]@6 c4@7 ~@3, ~@3 e4@2 a3@2 ~", // Em Am7 Am
  D: "a3@2 [c4,d4]@2 f#4@2 [a3,c4,d4] ~ [a3,c4]@3 ~ [a3,f#4]@2 d4@2, ~@4 a3 ~@3 d4@4 c4 ~ c4 ~", // Csus2 D7 Am D
  E: "[g3,c4,e4] ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2 ~@2", // C D
  F: "[g3,c4,e4] ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4]@3 ~", // C
  G: "[g3,b3,d4] ~ [g3,b3,d4]@4 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]@2 ~@2", // G
  H: "[a3,c4] ~ [a3,c4] ~ [a3,c4,d4]@2 f#4 ~ [a3,c4,d4]@3 ~ [a3,c4,d4,f#4]@3 ~", I: "[b3,d4,g4]/2",
})).s("gm_harpsichord").gain(0.28).pan(0.6)

// bass · synth bass 1 · "Bass"
const bass_2 = note(`<
  ~@2 A B A B A B A B A B C D A B A B A B C D A B A E F G H I F G C J K A B A B A B C D A B A B A B C D A B A E F G H I
  F G C J K A B A B A B C D A B A B A B C D A B A E F G H I F G C J K A B A E A B A E L@2 ~
>`.pickRestart({
  A: "g2@5 ~ g2 ~ g2@3 ~ d2@4", B: "c2@5 ~ c2 ~ c2@4 d2@3 ~", C: "a2@5 ~ a2@4 ~@2 a2@4", D: "d2@5 ~ d2 ~ e2@4 d2@2 ~@2",
  E: "c2@5 ~ c2 ~ d2 ~ d2 ~ d2@3 ~", F: "c2 ~ c2@5 ~ c2@3 ~ c2@4", G: "g2 ~ g2@4 ~@2 g2@2 ~@2 g2@4",
  H: "d2 ~ d2@4 d2 ~ d2@3 ~ d2@3 ~", I: "g2@5 ~ g2@2 f2@4 g2@3 ~", J: "d2@5 ~ d2 ~ c2@4 ~@2 c2@2",
  K: "b1@4 ~@2 b1 ~ a1@4 ~@2 a1@2", L: "g2/2",
})).s("gm_synth_bass_1").gain(0.24).pan(0.4)

// chords · pad poly · "Polysynth?"
const pad_poly = note("<~ A@2 B@2 C ~@15 D@2 E@2 C ~@24 F@2 G@2 C ~@24 F@2 B@2 C ~@8 H@2 I@6 J@3 ~>".pickRestart({
  A: "[~@16 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@12 d4@9 ~@11]/2", // G F#m
  B: "[[e4,g4]@11 ~@5 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@3 d4@2 ~@3]/2", C: "[e4,g4]@11 ~@5",
  D: "[~@16 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@3 d4@2 ~@3]/2", // G F#m
  E: "[[e4,g4]@11 ~@5 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@6 d4@3 ~@7]/2", // Em G F#m
  F: "[~@16 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@6 d4@3 ~@7]/2", // G F#m
  G: "[[e4,g4]@11 ~@5 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@12 d4@9 ~@11]/2", // Em G F#m
  H: "[~@16 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@12 d4@7 ~@13]/2", // G F#m
  I: "[[e4,g4]@11 ~@5 [g4,b4]@5 ~ [g4,b4] ~ [g4,b4]@4 [f#4,a4]@4, ~@12 d4@7 ~@13]/2", // Em G F#m
  J: "[[e4,g4]@12 ~@4 g4@31 ~, ~ d4@3, ~@4 b3@7 ~]/3", // Em
})).s("gm_pad_poly").gain(0.4).pan(0.3)

stack(bass, harpsichord, bass_2, pad_poly)

More by Olivia Newton-John