Strudelify

You're the One That I Want

Olivia Newton-John

KeyC majorTempo105 bpm
0:00/0:00
// You're the One That I Want — Olivia Newton-John
// 105 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · alto sax
const alto_sax = note(`<
  ~@3 A B C D E F@4 ~@7 G H I J I J I K L M ~@9 N O P ~ Q R S ~ G H I J I J I K L T I J I J I K L T I J I J I K L M
>`.pickRestart({
  A: "~@12 e4 g4 ~@2", B: "a4@7 ~@3 d#4 ~ d4 ~ c4 d4", C: "~ c4@8 ~@3 e4@2 g4@2", D: "a4@9 ~ a4 ~ g4 ~ f4 g4",
  E: "~ e4@6 ~@5 e4@2 g4@2", F: "[g#4@3 g#4@8 ~ d4 ~ c4 d4@2 c4@8 ~@3 a5 ~ a5 a5@2 a3 ~ a3 a3@17 ~@11]/4",
  G: "~@4 a4 a4@2 a4 a4@3 ~ a4 a4@2 a4", H: "a4 ~ g4 ~ g4 f4 ~ f4@6 ~ g4!2", I: "g4!3 g4@2 ~@11", J: "~@12 a4 f4 g4!2",
  K: "~@12 a4 g4 f4 ~", L: "g4@8 ~ g4 ~ g4 a4 ~ b4 ~", M: "b4@3 a4 g4@10 ~@2", N: "~@11 d4 d#4 e4 g4 ~",
  O: "g4@10 ~@2 e4 g4@2 ~", P: "a4@2 b4 g4@12 ~", Q: "~@11 d#4 e4 g4@2 ~", R: "a4@3 g4@8 ~ e4 g4@2 ~",
  S: "a4@2 b4 g4@11 ~@2", T: "b4@3 a4 g4@10 g4!2",
})).s("gm_alto_sax").gain(0.73).pan(0)

// chords · piano · "Piano 1"
const piano = note(`<
  A B C D E F G H I J K L ~@8 M N O P Q R S T U E L E F G H I J K L ~@8 M P O P Q R S T U P O P Q R S T V P O P Q R S T
  U
>`.pickRestart({
  A: "[e4,a4]@3 ~@8 d#4 d4 c4 d4 ~, d#4 ~@11 a4@3 ~", B: "a4@2 ~ [c4,a4] ~@6 [c4,a4] ~@2 [c4,a4] ~@2, c4 ~@15",
  C: "[d#4,e4] g4 [e4,g4]!2 e4 [e4,g4]!3 ~@3 d#4 d4 c4 d4 ~, a4@9 ~@3 a4@3 ~", // Emaj7 Em
  D: "[c4,a4] g4 e4 [e4,g4] g4 [e4,g4]!4 ~@7", // F Em
  E: "~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~@2 [e4,a4]@2 ~ [c4,e4,a4] ~@4, ~@8 c4 ~@7", // Am A5 Am
  F: "~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~@2 [c4,a4] ~@2 [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4], ~@4 e4 ~@3", // Am F Am
  G: "[c4,f4,a4] ~@2 [c4,f4,g#4] [c4,f4,a4] ~ [c4,f4,a#4] ~ [c4,f4,a4] ~@2 [c4,f4,a4] ~@4", // F Fm F Fsus4 F
  H: "~@3 [c4,d#4,g4] [c4,e4,g4] ~ [c4,f4,g4] ~ [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~", // Cm C Csus4 C
  I: "~@2 [e4,g#4,b4] ~@2 [e4,g#4,b4] ~@2 [e4,g#4,b4] ~@2 [e4,g#4,b4] ~@2 [e4,g#4,b4] ~", // E
  J: "~@3 [e4,a4,c5]!2 ~ [e4,a4,c5] ~ [e4,a4,c5] ~@2 [e4,a4,c5] ~@4", // Am
  K: "[e4,a4,c5] ~@2 [e4,a4,c5] ~@2 [e4,a4] g4 e4 [e4,g4]!6 ~, ~@3 c5@4 ~", // Am A5 Em
  L: "[e4,a4,c5] ~ [d4,d#4,g4,c5] ~ [c4,g4,c5] ~ [d4,d#4,g4,c5] ~ [c4,g4,c5] ~ [d4,d#4,g4,c5] ~ [c4,g4,c5] ~@3", // Am Cm C5 Cm C5 Cm C5
  M: "~@10 [a6,b6,c7,d7,e7] [b5,c6,d6,e6,f6,g6] [c5,d5,e5,f5,g5,a5] [f4,g4,a4,b4] [b3,c4,d4,e4] [e3,f3,g3,a3]", // Am Cmaj7 Dm7 G7 Cmaj7 Fmaj7
  N: "[c3,d3] ~@9 g4@2 a4@2 c5 ~", O: "~@2 c5@2 ~ a#4 ~@3 f4@2 ~@5", P: "~@10 g4@2 a4@2 c5 ~",
  Q: "~@2 e5 ~@2 d5 ~@2 c5@4 ~@4", R: "[g4,c5]!2 ~@8 g4@2 a4@2 c5@2", S: "~@2 e5@2 ~ d5 ~@2 c5@5 ~@3",
  T: "[g4,b4,d5] ~ [g4,b4,d5] ~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  U: "~@4 [g3,b3,d4]!2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~@2 [b3,d4]@2 ~@2, ~@12 g3 ~@3", // G Bm
  V: "~@4 [g3,b3,d4]!2 ~ [g3,b3,d4] ~@2 [a6,b6,c7,d7,e7] [b5,c6,d6,e6,f6,g6] [c5,d5,e5,f5,g5,a5] [f4,g4,a4,b4] [b3,c4,d4,e4] [e3,f3,g3,a3]", // G Am Cmaj7 Dm7 G7 Cmaj7 Fmaj7
})).s("gm_piano").gain(0.4).pan(0)

// other · electric guitar muted · "Muted Gt"
const electric_guitar_muted = note(`<
  A@6 B C D A@3 C D A B C D A B@2 C E C E C E F@2 A@4 B C D A@3 C D A B C D A B@2 C E C E C E F@2 C E C E C E F@2 C E C
  E C E F@2
>`.pickRestart({
  A: "e3 ~ e3!3 ~ e3!2 ~ e3 ~ e3!5", B: "c3 ~ c3!3 ~ c3!2 ~ c3 ~ c3!5", C: "g3 ~ g3!3 ~ g3!2 ~ g3 ~ g3!5",
  D: "b3 ~ b3!3 ~ b3!2 ~ b3 ~ b3!5", E: "g3 ~ g3!2 f3 ~ f3!2 ~ c3 ~ c3!5", F: "d3 ~ d3!3 ~ d3!2 ~ d3 ~ d3!5",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0)

// bass · electric bass finger · "Fingered Bs."
const bass = note(`<
  A@6 B C D A@2 E F G H I F G H I@2 J K J K J K L M A@4 B C D A@2 E F G H I F G H I@2 J K J K J K L M J K J K J K L M J
  K J K J K L M
>`.pickRestart({
  A: "a1 ~@2 a1 e2@2 ~ e2 a2@2 ~ g2 e2 g2@3", B: "f1@2 ~ f1 c2 ~@2 c2 f2@2 ~ f2 c2 f2@3",
  C: "c3@2 ~ c3 g2@2 ~ g2 c3@2 ~ d#3 e3 g3@3", D: "e2@2 ~ e2 g#2@2 b2@2 e2@2 ~ e2 d2@2 c2@2",
  E: "a1 ~@2 a1 e2@2 ~ e2 a2@2 ~ g2 e2 g2 a2@2", F: "c2@2 ~ c2 e2@2 ~ e2 g2@2 ~ g2 a2 g2 e2 d2",
  G: "e2@2 ~ e2 g2@2 ~ g2 b2@2 ~ b2 c3 b2 g2@2", H: "a1@2 ~ a1 e2@2 ~ e2 a2@2 ~ b2 c3 b2 a2 g2",
  I: "f2@2 ~ f2 a2@2 ~ a2 c3@2 ~ c3 d3 c3 a2 g2", J: "c2@2 ~ c2 e2@2 ~ e2 g2@2 ~ g2 a2 c3 a2 g2",
  K: "c2@2 ~ c2 e2@2 ~ e2 f2@2 ~ f2 a2@2 c3@2", L: "g1 ~ g1@2 g2 g1 ~ g1 ~ g1@2 g1 g2@2 g1 ~",
  M: "g1 ~ g1@2 g2 g1 ~ g1 ~ g1 ~ g1 g2@2 g1 ~",
})).s("gm_electric_bass_finger").gain(0.58).pan(1)

// chords · synth brass 1 · "Synth Br.1"
const synth_brass_1 = note(`<
  ~ A@2 B C@2 D E F G H I ~@9 J K J K J K L@2 M B C@2 D E F G H I N O P Q R O S T U V W X Y Z AA AB AC V W X Y Z AA AB
  AC V W X Y Z AA AB AC
>`.pickRestart({
  A: "[~ [a3,c4,e4]@13 ~@2]/2", B: "[a3,c4,e4]@13 ~@3", C: "[a3,c4,e4]@7 ~", D: "[a3,c4,f4]@15 ~", E: "[g3,c4,e4]@15 ~",
  F: "[g#3,b3,e4]@15 ~", G: "[a3,c4,e4]@15 ~", H: "[a3,c4,e4]", I: "g4@13 ~@3", J: "~@2 e5@7 f5@4 e5@3, ~ [c5,g5]@7",
  K: "~@2 [c5,e5,g5] ~@2 [c5,e5,g5] ~@2 [c5,f5,g5]@6 ~@2", L: "[[g4,b4,d5]@15 ~]/2", M: "[a3,c4,e4]@3 ~",
  N: "~@2 [c5,e5,g5] ~@2 [c5,e5,g5] ~@2 [c5,e5,g5]@2 ~ [c5,e5,g5] ~@4", // C
  O: "~@2 [e5,g5,b5] ~@2 [e5,g5,b5] ~@2 [e5,g5,b5]@2 ~ [e5,g5,b5] ~@4", // Em
  P: "~@2 [e5,a5,c6] ~@2 [e5,a5,c6] ~@2 [e5,a5,c6]@2 ~ [e5,a5,c6] ~@4", // Am
  Q: "~@2 [f5,a5,c6] ~@2 [f5,a5,c6] ~@2 [f5,a5,c6]@2 ~ [f5,a5,c6] ~@4", // F
  R: "~@2 [e5,g5,c6] ~@2 [e5,g5,c6] ~@2 [e5,g5,c6]@2 ~ [e5,g5,c6] ~@4", // C
  S: "~@2 [e5,a5,c6] ~@2 [e5,a5,c6] ~@2 [a5,c6]@2 ~ [e5,a5,c6] ~@4, ~@8 e5 ~@7", T: "[f5,a5,c6]@3 ~ [f5,a5,c6]@3 ~",
  U: "[f5,a5,c6] ~ [f5,a5,c6] ~@5", V: "[g4,c5,e5]@2 ~ [g4,c5,e5]@3 ~@4 g4@2 a4 ~ [g4,c5,e5] ~",
  W: "~@2 [g4,c5,e5] ~@2 [f4,a#4,d5] ~@2 [f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~@3", // C A# F
  X: "[g4,c5,e5]@2 ~ [g4,c5,e5]@2 ~@5 [c5,e5]@2 [c5,e5]@2 [g4,c5,e5] ~, ~@10 g4 ~ a4 ~@3", // C
  Y: "~@2 e5@2 ~ [f4,a#4,d5] ~@2 [f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~@3", // A# F
  Z: "[g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 ~ [g4,c5,e5] ~@3 [g4,e5] ~ [c5,e5]@2 [g4,c5] ~, ~@12 a4 ~ e5@2", // C C5
  AA: "~@2 [g4,c5,e5] ~@2 [f4,a#4,d5] ~@2 [f4,a4,c5]@2 ~ [f4,a4,c5]@2 ~ [f4,a4,c5] ~", // C A# F
  AB: "[g4,b4,d5] ~ [g4,b4,d5]@2 ~ [g4,b4,d5]@2 ~ [g4,b4,d5]@2 [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  AC: "[g4,b4,d5] ~ [g4,b4,d5]@2 ~ [g4,b4,d5]@2 ~ [g4,b4,d5]@6 ~@2", // G
})).s("gm_synth_brass_1").gain(0.24).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!20
  [x ~@2 x!2 ~@3 x ~@7]
  [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!26
  [x ~@2 x!2 ~@3 x ~@7]
  [x ~@2 x!2 ~@3 x ~@2 x!2 ~@3]!24
>`).gain(0.8)

// drums · snare
const snare = s("sd").struct("<A@11 B A@8 C A@17 B A@8 C A@24>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x ~@3 x ~@3 x ~@2 x!2 ~", C: "~ x ~ x ~ x!3",
})).gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  [~ x ~ x ~ x ~ x]!11
  [~@2 x ~@3 x ~@3 x ~@2 x!2 ~]
  ~@17
  [~ x ~ x ~ x ~ x]!9
  [~@2 x ~@3 x ~@3 x ~@2 x!2 ~]
  ~@33
>`).gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@21 A ~@5 A ~ A ~@18 A ~@5 A ~ A ~@5 A ~ A ~@5 A ~>".pickRestart({
  A: "x",
})).gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@12
  [~ x ~ x ~ x ~ x]!8
  [~ x ~ x ~ x!3]
  [~ x ~ x ~ x ~ x]!8
  ~@10
  [~ x ~ x ~ x ~ x]!8
  [~ x ~ x ~ x!3]
  [~ x ~ x ~ x ~ x]!24
>`).gain(0.8)

stack(alto_sax, piano, electric_guitar_muted, bass, synth_brass_1, kick, snare, pedal_hat, crash, tambourine)

More by Olivia Newton-John