Strudelify

She's Always a Woman to Me

Billy Joel

KeyE♭ majorTempo100 bpm
0:00/0:00
// She's Always a Woman to Me — Billy Joel
// 100 bpm, 12/8, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (12/8 at bar 1, 6/8 at bar 3, 9/8 at bar 4, 6/8 at bar 4, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: ch 2 "Clarinet" named as a reed, played on clarinet (its piano patch is not one); ch 3 "Bass Guitar" named as a bass, played on electric bass finger (its piano patch is not one); ch 4 "Oboe" named as a reed, played on oboe (its piano patch is not one)
// note: Full arrangement: all 49 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/6)

// 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 · piano · "Piano Left hand"
const piano = note(`<
  A@3 B C D E F G H@2 I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN X Y AO@3 ~
>`.pickRestart({
  A: "[~@6 [g3,bb3,eb4]@3 [ab3,bb3,eb4]@3 [g3,bb3,eb4]@3 [bb1,f3,bb3,d4]@2 [bb1,bb3,d4,f4] [bb3,eb4,g4]@3 [c4,eb4,ab4]@3 [bb3,eb4,g4]@2 ~ [bb2,bb3,d4]@3 [eb2,bb3,eb4]@3 [g2,bb3,d4]@3, ~@6 eb2@9 ~@3 eb2@10 ~@8]/3", // Eb Absus2 Eb Bb Eb Ab Eb Bb …
  B: "bb3@2 ~ eb2 ~@2 eb2 f2 g2 [ab2,ab3]@2 ~, eb2 ~@3, ~@2 g3@2 ~@2 eb4@3 eb4@3", // Ab
  C: "[eb4,g4] [ab2,f3] [ab2,g3] [bb2,ab3,d4], [ab2,g3]@2 ~ [eb4,ab4]@5 ~@4", D: "[eb2,bb3] [bb2,d4] [g2,b3]@2",
  E: "[c3,c4]@6 [bb2,c4]@6 [ab2,c4]@6 d4@2 c4@3 bb3, ~@3 bb2", // C Bbsus2 Ab
  F: "g3 bb3 g3 bb3 eb4 bb3 ab3 bb3 eb4 bb3 ab3 bb3 g3 bb3 g3 bb3 f4!3 d4 g4 d4 bb4 d4, eb2!3 bb2",
  G: "g4 eb4 bb3 eb4 f4 eb4 f4 d4 g4 d4 bb4 d4 g4 bb3 eb4 bb3 eb4 bb3 g4 bb3 f4 bb3 eb4@2, eb2 bb2 eb2@2",
  H: "[bb4 eb4 c5 eb4 eb5 eb4 c5 eb4 bb4 eb4 ab4 eb4 bb4 eb4 c5 eb4 eb5 eb4 c5 eb4 bb4 eb4 ab4 eb4 [eb3,c4]@6 f4 d4 g4 d4 bb4 d4 g4 bb3 f4 bb3 eb4 bb3 f4 d4 g4 d4 bb4 d4, eb2 f2 g2 [ab2,ab3]@3 [ab2,g3]@3 ab2@6 [bb2,ab3]@3 ~@3 [bb2,ab3]@3, ~@3 f3 ~@2 [eb3,g3] ~]/2", // Cm Ab Abmaj7 Bb7 Eb
  I: "g4 d4 b3 d4 b3 d4 g4@4 ~@2 f4 c4 eb4 c4 g4 c4 f4 c4 eb4 c4 g4 c4, [g2,g3] g3, ~@2 c3 bb2", // G
  J: "f4 c4 eb4 c4 eb4 g4 f4 c4 eb4 c4 eb4 d4 g3 bb3 g3 bb3 eb4 bb3 ab3 bb3 eb4 bb3 ab3 bb3, [ab2,f3] [bb2,ab3] eb2!2", // Db Bb7
  K: "g3 bb3 eb4 bb3 g3 bb3 eb4 bb3 g4 eb4 bb4 g4 eb5 g4 eb4 g4 eb4 g4 eb4 g4 eb4 g4 eb4 g4, eb2 d3 c3 bb2",
  L: "eb4 g4 c5 eb4 d5 eb4 eb5 f4 f5 f4 c5 f4 d5 bb4 f4 d4 f4 bb4 f4 d4 f4 bb4 f4 d4, a2 f2 bb2 a2",
  M: "f4 d4 bb4 f4 c5 f4 d5 g4 eb5 g4 bb4 g4 c5 ab4 eb4 c4 eb4 ab4 eb4 c4 eb4 ab4 eb4 c4, g2 eb2 ab2 g2",
  N: "eb4 c4 ab4 f4 bb4 f4 c5 d4 bb4 d4 ab4 d4 bb4 g4 eb4 bb3 eb4 g4 ab4 eb4 ab4 eb4 ab4 eb4, f2 bb2 eb2!2",
  O: "g4 eb4 bb3 eb4 g4 eb4 g4 eb4 bb4 g4 eb5 bb4 gb5 eb5 bb4 gb4 bb4 gb4 bb4 gb4 bb4 gb4 bb4 gb4, eb2!2 eb3 db3",
  P: "bb4 gb4 eb5 gb4 f5 gb4 gb5 bb4 ab5 bb4 eb5 gb4 f5 db5 ab4 f4 ab4 f4 ab4 f4 ab4 f4 ab4 f4, c3 ab2 db3 c3",
  Q: "ab4 f4 db5 f4 eb5 f4 f5 bb4 gb5 bb4 db5 bb4 eb5 b4 gb4 eb4 bb4 eb4 gb4 eb4 gb4 eb4 gb4 eb4, bb2 gb2 b2 bb2",
  R: "gb4 eb4 c5 f4 d5 f4 eb5 a4 d5 a4 c5 a4 bb4 f4 d4 f4 d4 f4 g4 f4 d4 f4 d4 f4, a2 f2 [bb2,f3] [bb2,g3]", // Bb5 Eb
  S: "ab4 f4 d4 ab4 f4!3 d4 g4 d4 bb4 d4 g4 bb3 eb4 bb3 f4 eb4 f4 d4 g4 d4 bb4 d4, [bb2,ab3] bb2 ~ bb2, ~@3 g3@2 f3 eb3@3 ~@3", // Bb7
  T: "g4 eb4 bb3 g3 eb4 g3 g4 bb3 f4 bb3 bb4 bb3 bb4 g4 c5 g4 eb5 g4 c5 eb4 bb4 eb4 ab4 eb4, eb3@3 eb3@3 eb2 f2 g2 [ab2,ab3]@3", // Ab
  U: "bb4 eb4 c5 eb4 eb5 eb4 c5 ab4 eb4 c4 ab4 c4 eb4 c4 eb4 c4 f4!3 d4 g4 d4 bb4 d4, [ab2,g3] [ab2,f3] [ab2,eb3] [bb2,ab3]", // Abmaj7 Db Ab5 Bb7
  V: "g4 bb3 f4 bb3 eb4 bb3 f4 d4 g4 d4 bb4 d4 g4 d4 b3 d4 b3 d4 g4@4 ~@2, [eb3,g3] [bb2,ab3] [g2,g3]@2", // Eb Bb7 G
  W: "f4 c4 eb4 c4 g4 c4 f4 c4 eb4 c4 g4 c4 f4 c4 eb4 c4 eb4 g4 f4 c4 eb4 c4 eb4 d4, g3 ~, c3 bb2 [ab2,f3] [bb2,ab3]", // Db Bb7
  X: "eb4 bb3 g3 bb3 eb4 bb3 ab3 bb3 eb4 bb3 ab3 bb3 eb4 bb3 g3 bb3 f4 bb3 f4 d4 g4 d4 bb4 d4, eb3 eb2 eb3 bb2",
  Y: "g4 eb4 bb3 eb4 f4 bb3 f4 d4 g4 d4 bb4 d4 g4 d4 b3 d4 b3 d4 g4 d4 b3 d4 g4 d4, eb3 bb2 g2!2",
  Z: "[c3,eb4] [bb2,eb4] [ab2,ab3,c4] [bb2,ab3,bb3]", // Cm Eb5 Ab Bb7
  AA: "g3 bb3 g3 bb3 g3 bb3 ab3 bb3 eb4 bb3 ab3 bb3 g3 bb3 eb4 bb3 g3 bb3 [bb3,eb4] bb3 g4 eb4 bb4 g4, eb2!3 ~", // Eb5
  AB: "eb5 g4 eb4 g4 eb4 g4 eb4 g4 eb4 g4 eb4 g4 eb4 g4 c5 eb4 d5 eb4 eb5 f4 f5 f4 c5 f4, c3 bb2 a2 f2",
  AC: "d5 bb4 f4 d4 f4 bb4 f4 d4 f4 bb4 f4 d4 f4 d4 bb4 f4 c5 f4 d5 g4 eb5 g4 bb4 g4, bb2 a2 g2 eb2",
  AD: "c5 ab4 eb4 c4 eb4 ab4 eb4 c4 eb4 ab4 eb4 c4 eb4 c4 ab4 f4 bb4 f4 c5 d4 bb4 d4 ab4 d4, ab2 g2 f2 bb2",
  AE: "bb4 g4 eb4 bb3 eb4 g4 ab4 eb4 ab4 eb4 ab4 eb4 g4 eb4 bb3 eb4 g4 eb4 g4 eb4 bb4 g4 eb5 bb4, eb2!4",
  AF: "gb5 eb5 bb4 gb4 bb4 gb4 bb4 gb4 bb4 gb4 bb4 gb4 bb4 gb4 eb5 gb4 f5 gb4 gb5 bb4 ab5 bb4 eb5 gb4, eb3 db3 c3 ab2",
  AG: "f5 db5 ab4 f4 ab4 f4 ab4 f4 ab4 f4 ab4 f4 ab4 f4 db5 f4 eb5 f4 f5 bb4 gb5 bb4 db5 bb4, db3 c3 bb2 gb2",
  AH: "eb5 b4 gb4 eb4 bb4 eb4 gb4 eb4 gb4 eb4 gb4 eb4 gb4 eb4 c5 f4 d5 f4 eb5 a4 d5 a4 c5 a4, b2 bb2 a2 f2",
  AI: "bb4 f4 d4 f4 d4 f4 g4 f4 d4 f4 d4 f4 ab4 f4 d4 ab4 f4!3 d4 g4 d4 bb4 d4, [bb2,f3] [bb2,g3] [bb2,ab3] bb2, ~@9 g3@2 f3", // Bb5 Eb Bb7
  AJ: "g4 bb3 eb4 bb3 f4 eb4 f4 d4 g4 d4 bb4 d4 g4 eb4 bb3 g3 eb4 g3 g4 bb3 f4 bb3 bb4 bb3, eb3 bb2 eb3!2",
  AK: "bb4 g4 c5 g4 eb5 g4 c5 eb4 bb4 eb4 ab4 eb4 bb4 eb4 c5 eb4 eb5 eb4 c5 ab4 eb4 c4 ab4 c4, eb2 f2 g2 [ab2,ab3]@3 [ab2,g3]@3 [ab2,f3]@3", // Ab Abmaj7 Db
  AL: "eb4 c4 eb4 c4 f4!3 d4 g4 d4 bb4 d4 g4 bb3 f4 bb3 eb4 bb3 f4 d4 g4 d4 bb4 d4, [ab2,eb3] [bb2,ab3] [eb3,g3] [bb2,ab3]", // Ab5 Bb7 Eb Bb7
  AM: "g4 d4 b3 d4 b3 d4 g4@4 ~@2 [c3,eb4]@6 [bb2,eb4]@6, [g2,g3] ~", // Cm Eb5 G
  AN: "[ab2,eb4] [g2,bb3] [f2,ab3,c4] [bb2,ab3,bb3]", // Ab5 Gm Fm Bb7
  AO: "[[c3,eb4]@7 [bb2,eb4]@6 [ab2,ab3,c4]@7 ~ [bb2,ab3,bb3]@7 ~@2 eb4@6 ~ [bb3,eb4]@6 ~@4 [bb3,eb4]@12 ~@13, ~@28 [eb2,g3]@7 ~ [eb2,ab3]@7 eb2@15 ~@14, ~@29 bb3@7 ~@8 bb2@14 ~@14, ~@45 eb3@13 ~@14, ~@23 g3@6 ~@7]/3", // Cm Eb5 Ab Bb7 Eb5 Eb Ab5
})).s("gm_piano").gain(0.26)

// bass · electric bass finger · "Bass Guitar"
const bass = note(`<
  A@3 B C D E F G H@2 I J K L M N O P Q R S T U V E W X E Y Z AA AB AC AD AE AF AG AH AI AJ I AB W X AK@3 ~
>`.pickRestart({
  A: "[~@6 eb2@9 bb1@2 bb1 ~@9 bb2@3 eb2@3 g2@3, ~@9 eb2@5 ~@4]/3", B: "eb2@3 eb2 ~@2 eb2 f2 g2 ab2@2 ~",
  C: "ab2@2 ~ ab2@3 ab2@3 bb2@3", D: "eb2 bb2 g2@2", E: "c3 bb2 ab2 bb2", F: "eb2!3 bb2", G: "eb2 bb2 eb2@2",
  H: "[eb2 f2 g2 ab2@3 ab2@3 ~@3 eb3@3 ab2@3 eb3@3 bb2@3, ~@3 ab2@2 ~@3]/2", I: "g2@2 c3 bb2", J: "ab2 bb2 eb2!2",
  K: "eb2 d3 c3 bb2", L: "a2 f2 bb2 a2", M: "g2 eb2 ab2 g2", N: "f2 bb2 eb2!2", O: "eb2!2 eb3 db3", P: "c3 ab2 db3 c3",
  Q: "bb2 gb2 b2 bb2", R: "a2 f2 bb2!2", S: "bb2@3 ~@2 f3 eb3@3 bb2@3, ~ bb2 ~@2", T: "eb3@3 eb3@3 eb2 f2 g2 ab2@3",
  U: "ab2!3 bb2", V: "eb3 bb2 g2@2", W: "eb3 eb2 eb3 bb2", X: "eb3 bb2 g2!2", Y: "eb2!3 bb3", Z: "c3 bb2 a2 f2",
  AA: "bb2 a2 g2 eb2", AB: "ab2 g2 f2 bb2", AC: "eb2!4", AD: "eb3 db3 c3 ab2", AE: "db3 c3 bb2 gb2", AF: "b2 bb2 a2 f2",
  AG: "bb2@3 bb2@3 bb2@3 ~@2 f3, ~@3 bb2", AH: "eb3 bb2 eb3!2", AI: "eb2 f2 g2 ab2@3 ab2@3 ab2@3",
  AJ: "ab2 bb2 eb3 bb2", AK: "[c3@7 bb2@6 ab2@7 ~ bb2@7 eb2@7 ~ eb2@7 eb2@29]/3",
})).s("gm_electric_bass_finger").gain(0.26)

// other · oboe
const oboe = note("<~@2 A B C D E F G H I J K ~@7 L A M N O E P Q R S ~@7 T U V@2 W X P Q Y@3 ~>".pickRestart({
  A: "~@4 f3!2 f3@2 g3@2 bb3@2 g3@4 f3 eb3 f3@2 g3@2 bb3@2",
  B: "g3@3 f3 eb3@4 ~@2 bb3!2 bb3@2 c4@2 eb4@2 c4@2 bb3@2 ab3@2", C: "bb3@2 c4@2 eb4@2 c4@6 ~@4 f3!2 f3@2 g3@2 bb3@2",
  D: "g3 f3 eb3 f3 g3 bb3 g3@3 ~@2 f3", E: "f3@2 eb3@2 g3@2 f3@2 eb3@2 g3@2 f3@2 eb3@3 g3 f3@2 eb3@3 d3",
  F: "eb3@12 ~@4 f3!2 f3@2 g3@2 bb3@2", G: "g3@4 f3 eb3 f3@2 g3@2 bb3@2 g3@2 eb3@4 ~@4 bb3!2",
  H: "bb3 c4 eb4 c4 bb3 ab3 bb3 c4 eb4 c4 bb3@2", I: "~@4 f3!2 f3@2 g3@2 bb3@2 g3@2 f3@2 eb3@2 f3@2 g3@2 bb3@2",
  J: "g3@6 ~@4 f3!2 f3@2 eb3@2 g3@2 f3@2 eb3@2 g3@2", K: "f3@2 eb3@3 g3 f3@2 eb3@3 d3 eb3@12",
  L: "~ c4 d4 eb4 d4 c4 bb3@6", M: "g3@3 f3 eb3@2 ~@4 bb3!2 bb3@2 c4@2 eb4@2 c4@2 bb3@2 ab3@2",
  N: "bb3@2 c4@2 eb4@2 c4@4 ab3@4 ~@2 f3!2 f3@2 g3@2 bb3@2", O: "g3@2 f3@2 eb3@2 f3@2 g3@2 bb3@2 g3@6 ~@4 g3!2",
  P: "eb3@7 ~ f3!2 g3 bb3", Q: "g3@2 f3!2 g3 bb3 g3@5 g3",
  R: "c4@2 bb3@2 g3@2 c4@2 bb3@2 g3@2 f3@2 eb3@2 g3@2 f3@2 eb3@3 d3", S: "eb3 ~", T: "~@16 f3!2 f3@2 g3@2 bb3@2",
  U: "g3@4 f3 eb3 f3@2 g3@2 bb3@2 g3@3 f3 eb3@2 ~@4 bb3!2",
  V: "[bb3@2 c4@2 eb4@2 c4@2 bb3@2 ab3@2 bb3@2 c4@2 eb4@2 c4@4 ab3@4 ~@2 f3!2 f3@2 g3@2 bb3@2 g3@2 f3@2 eb3@2 f3@2 g3@2 bb3@2]/2",
  W: "g3@6 ~@4 g3!2 c4@2 bb3@2 bb3@2 bb3@2 bb3@2 eb4@2",
  X: "c4@2 bb3@2 g3@2 f3@2 eb3@2 g3@2 f3@2 eb3@3 g3 f3@2 eb3@3 d3",
  Y: "[c4@2 bb3@2 g3@2 ~ c4@2 bb3@2 g3@2 f3@2 ~ eb3@2 g3@2 ~ f3@2 eb3@2 ~ d3@2 eb3@30 ~@14]/3",
})).s("gm_oboe").gain(0.26)

stack(piano, bass, oboe)

More by Billy Joel