Strudelify
An Innocent Man cover art

1984 · An Innocent Man

An Innocent Man

Billy Joel

KeyC majorTempo96 bpm
0:00/0:00
// An Innocent Man — Billy Joel
// 96 bpm, 4/4, key C major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · piano
const piano = note(`<
  ~@4 A B C ~ D@3 E F G@3 H@4 I@2 J@2 K@2 B L M N@3 O P Q R@2 S@3 T@2 U@2 V@2 W X@3 ~@2 A B C ~ Y@2 Z E F AA AB@2 H@4
  I@2 J@2 K@2 B L M AC@3 O P Q AD@2 AE@3 T@2 U@2 V@2 W AF T@2 U@2 AG AH AG AI ~ AJ@2 AK@3 AL@5 AM@3 AN@4 AO@2 AP@2 AQ AR
  AS@2 AT@2 AU@5 ~@4
>`.pickRestart({
  A: "~ [f4,c#5]!3 c#5@2 [f4,c#5]!2", B: "[d#4,c5] [f4,c#5] [f#4,d#5] [f4,c#5]@2 d#4!2 f4",
  C: "[g#3,f4]@2 [a#3,f#4]@2 [g#3,f4]@2 [a#3,f#4]@2 [a#3,f#4]@2 [c4,g#4]@2 f#4 f4 d#4@2, ~@6 a#3 ~", // C# D#m C# D#m Fm
  D: "[~ [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]@2 [g#4,c5]@3 [c#4,a#4] [c#4,a#4]@2 [c4,g#4]!2 [c4,g#4]@2 [a#3,f#4] [g#3,f4] [a#3,f#4]]/3", // F# G# A#m G# F# Fm D#m C# …
  E: "[g#3,f4] ~@3", F: "~ [f4,c#5]!3 [f4,c#5]@2 [f4,c#5]!2",
  G: "[[d#4,c5] [f4,c#5] [f#4,d#5] [f4,c#5]@2 f4 d#4 [g#3,f4]@2 [a#3,f#4] [g#3,f4] [a#3,f#4] [g#3,f4] [a#3,f#4] [c4,g#4] f#4 d#4@2 ~@6, ~@5 a#3 ~@2]/3", // Cm C# D#m C# D#m C# D#m C# …
  H: "[~ [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]@2 [g#4,c5]@2 [c#4,a#4]@2 [c#4,a#4]@2 [c4,g#4]!2 [c4,g#4]@2 [c#4,g#4] [d#4,g#4] [f4,g#4]@3 ~@6]/4", // F# G# A#m G# F# Fm C#5 G#5 …
  I: "[~ [f#4,c5,d#5,f#5]!6 [g#4,c#5,f#5]@2 f5 d#5 [g#4,c#5,f5] c#5@2 ~@2]/2", // Cdim C#sus4 C#
  J: "[~ [f#4,c5,d#5,f#5]!6 [f#4,a#4,c#5,f#5]@2 f5 d#5 [f#4,a#4,f5] [f#4,a#4,c#5]@2 ~@2]/2", // Cdim F# F#maj7 F#
  K: "[~ d#5!4 c#5!2 [d#4,c5]@2 [f4,c#5] [f#4,d#5] [f4,c#5]@3 [f4,c#5]!2]/2", // Cm C# D#m C#
  L: "[g#3,f4] [a#3,f#4]!2 [g#3,f4] [a#3,f#4] [c4,g#4] [a#3,f#4] d#4", M: "~@6 f#3 g#3",
  N: "[a#3 [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]@2 [g#4,c5]@2 [c#4,a#4]!2 [c#4,a#4]@2 [c4,g#4]@2 [c4,g#4]@2 [a#3,f#4]!3]/3", // F# G# A#m G# F# Fm D#m
  O: "[g#3,f4]@2 ~@3 [f3,c#4]@2 [f#3,d#4]", P: "[g#3,f4] [f4,c#5]!3 [f4,c#5]@2 [d#4,c5] [f4,c#5]",
  Q: "[d#4,c5] [f4,c#5] [f#4,d#5] [f4,c#5]@2 f4 d#4 f4", // Cm C# D#m C#
  R: "[[g#3,f4] [a#3,f#4]!2 [g#3,f4] [a#3,f#4] [g#3,f4] [c4,g#4] f#4 d#4@2 ~@4 f#3 g#3, ~@7 a#3@3 ~@6]/2", // C# D#m C# D#m C# Fm
  S: "[a#3 [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]@2 [g#4,c5]@2 [c#4,a#4]!2 [c#4,a#4]@2 [c4,g#4]!2 [a#4,f#5]@2 [g#4,f5] [f#4,d#5]@2]/3", // F# G# A#m G# F# Fm D#m C# …
  T: "[[g#3,c#4,f4]@3 [a#3,c#4,f#4]@3 [g#3,c#4,f4]@3 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [c4,d#4,g#4]@3]/2", // C# F# C# F# G#
  U: "[[c4,f4,g#4]@3 [a#3,c#4,f#4]@3 [g#3,c#4,f4]@3 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [c#4,g#4]@3]/2", // Fm F# C# F# C#5
  V: "[[c#4,f#4,a#4]@3 [c#4,f#4,a#4]@3 [c#4,f#4,a#4]@3 [c#4,f#4,a#4]@3 [c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2]/2", // F#
  W: "[d#4,f#4,c5]@3 [c#4,f#4,a#4]@3 [c#4,f#4,a#4]@2", // Cdim F#
  X: "[[c#4,f#4,a#4] [d#4,g#4,c#5]@2 [d#4,g#4,c#5] [d#4,g#4,c#5]@3 [c#4,f4,g#4]@17]/3", // F# C#sus2 C#
  Y: "[~ [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]!2 [g#4,c5]@3 [c#4,a#4]!2]/2", // F# G# A#m G# F#
  Z: "[c#4,a#4] [c4,g#4]!2 [c4,g#4]@2 [a#3,f#4] [g#3,f4] [a#3,f#4]", // F# Fm D#m C# D#m
  AA: "[d#4,c5] [f4,c#5] [f#4,d#5] [f4,c#5]@2 f4 d#4 [g#3,f4]", // Cm C# D#m C#
  AB: "[[g#3,f4] [a#3,f#4] [g#3,f4] [a#3,f#4]@2 [a#3,f#4] [c4,g#4] f#4 d#4@2 ~@6, ~@7 a#3@3 ~@6]/2", // C# D#m C# D#m Fm
  AC: "[a#3 [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]!2 [g#4,c5]@2 [c#4,a#4]!2 [c#4,a#4]@2 [c4,g#4]!2 [c4,g#4]@2 [a#3,f#4]!3]/3", // F# G# A#m G# F# Fm D#m
  AD: "[[g#3,f4] [a#3,f#4]!2 [g#3,f4] [a#3,f#4]@2 [c4,g#4] f#4 d#4@2 ~@4 f#3 g#3, ~@7 a#3@3 ~@6]/2", // C# D#m C# D#m Fm
  AE: "[a#3 [f#4,a#4]!4 [g#4,c5] [a#4,c#5] [a#4,c#5]@2 [g#4,c5]!2 [g#4,c5]@2 [c#4,a#4]!2 [c#4,a#4]@2 [c4,g#4]!2 [a#4,f#5]@2 [g#4,f5] [f#4,d#5]@2]/3", // F# G# A#m G# F# Fm D#m C# …
  AF: "[c#4,f#4,a#4] [d#4,g#4,c#5]@2 [d#4,g#4,c#5] [d#4,g#4,c#5]@3 [c#4,f4,g#4]", AG: "[g#3,c4,d#4,f#4]",
  AH: "[f3,g#3,c#4,f4]", AI: "[f#3,a#3,c#4,f#4]",
  AJ: "[~@7 d#5@2 d#5@2 d#5@2 d#5@2 c#5@2 [d#4,c5]@2 [d#4,c5]@4 [f4,c#5]@2 [f#4,d#5]@2 [f4,c#5]@5]/2", // Cm C# D#m C#
  AK: "[~ [f4,c#5]@2 [f4,c#5]@2 [d#4,c5]@2 [f4,c#5]@2 [f#4,d#5]@2 [f4,c#5]@4 d#4@2 d#4@2 f4@2 [g#3,f4]@2 [a#3,f#4]@2 [a#3,f#4]@2 [g#3,f4]@2 [a#3,f#4]@2 [c4,g#4]@2 [a#3,f#4]@2 d#4@2 ~@11]/3", // C# Cm C# D#m C# D#m C# D#m …
  AL: "[~ f#3@2 g#3@2 a#3@2 [f#4,a#4]@2 [f#4,a#4]@2 [f#4,a#4]@2 [f#4,a#4]@2 [g#4,c5]@2 [a#4,c#5]@2 [a#4,c#5]@4 [g#4,c5]@2 [g#4,c5]@2 [g#4,c5]@4 [c#4,a#4]@2 [c#4,a#4]@2 [c#4,a#4]@4 [c4,g#4]@2 [c4,g#4]@2 [c4,g#4]@4 [a#3,f#4]@2 [a#3,f#4]@2 [a#3,f#4]@2 [g#3,f4]@4 ~@6 [f3,c#4]@4 [f#3,d#4]@2 [g#3,f4]@2 [f4,c#5]@2 [f4,c#5]@2 [f4,c#5]@2 [f4,c#5]@3]/5", // F# G# A#m G# F# Fm D#m C# …
  AM: "[~ [d#4,c5]@2 [f4,c#5]@2 [d#4,c5]@2 [f4,c#5]@2 [f#4,d#5]@2 [f4,c#5]@4 f4@2 d#4@2 f4@2 [g#3,f4]@2 [a#3,f#4]@2 [a#3,f#4]@2 [g#3,f4]@2 [a#3,f#4]@2 [g#3,f4]@2 [c4,g#4]@2 f#4@2 d#4@4 ~@7, ~@35 a#3@6 ~@7]/3", // Cm C# Cm C# D#m C# D#m C# …
  AN: "[~ f#3@2 g#3@2 a#3@2 [f#4,a#4]@2 [f#4,a#4]@2 [f#4,a#4]@2 [f#4,a#4]@2 [g#4,c5]@2 [a#4,c#5]@2 [a#4,c#5]@4 [g#4,c5]@2 [g#4,c5]@2 [g#4,c5]@4 [c#4,a#4]@2 [c#4,a#4]@2 [c#4,a#4]@4 [c4,g#4]@2 [c4,g#4]@2 [a#4,f#5]@4 [g#4,f5]@2 [f#4,d#5]@4 [g#3,c#4,f4]@6 [a#3,c#4,f#4]@5]/4", // F# G# A#m G# F# Fm D#m C# …
  AO: "[~ [g#3,c#4,f4]@6 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [c4,d#4,g#4]@6 [c4,f4,g#4]@6 [a#3,c#4,f#4]@5]/2", // C# F# G# Fm F#
  AP: "[~ [g#3,c#4,f4]@6 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [c#4,g#4]@6 [c#4,f#4,a#4]@6 [c#4,f#4,a#4]@5]/2", // C# F# C#5 F#
  AQ: "~ [c#4,f#4,a#4]@6 [c#4,f#4,a#4]@6 [c#4,f#4,a#4]@3", AR: "~ [c#4,f#4,a#4]@4 [d#4,f#4,c5]@6 [c#4,f#4,a#4]@5",
  AS: "[~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [d#4,g#4,c#5]@4 [d#4,g#4,c#5]@2 [d#4,g#4,c#5]@6 [c#4,f4,g#4]@2 [g#3,c#4,f4]@6 [a#3,c#4,f#4]@5]/2", // F# C#sus2 C# F#
  AT: "[~ [g#3,c#4,f4]@6 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [c4,d#4,g#4]@6 [g#3,c#4,f4]@6 [a#3,c#4,f#4]@5]/2", // C# F# G# C# F#
  AU: "[~ [g#3,c#4,f4]@6 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [c#4,g#4]@6 [d#4,g#4,c#5]@2 c5@2 g#4@2 d#4@10 ~@4 [f#4,d#5]@2 [f#4,d#5]@2 [f#4,d#5]@2 [f4,c#5]@2 [d#4,c5]@4 [f4,c#5]@16 ~@11]/5", // C# F# C#5 C#sus2 D#m C# Cm C#
})).s("gm_piano").gain(0.32)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A B A B A B C D E F G B A B C D H I J K L@2 M@2 N A@2 C O H P J B A@2 C Q H R S T@2 U@2 V@2 W@2 A B A B A B C D E F G
  B A B C D H I J K L@2 M@2 N A@2 C O H P J B A@2 C Q H R S T@2 U@2 V@2 W@2 T@2 U@2 X@2 Y@2 Z ~ AA@4 AB@4 AC@4 AD@3 AE
  AF@2 AG@2 AH AI AJ@2 AF@2 AK@5 AL@2 AM@2
>`.pickRestart({
  A: "c#2@3 g#2@5", B: "c#2@3 g#2 g#2@2 g#1@2", C: "d#2@3 a#2@5", D: "d#2@3 a#2 a#2@2 a#1@2", E: "f#2@3 c#3@5",
  F: "g#2@3 d#3 d#3@2 d#2@2", G: "g#2@3 d#3@5", H: "f#2@3 c#2@5", I: "g#2@3 d#2 d#2@2 d#2@2", J: "g#2@3 d#2@5",
  K: "c#2@3 g#2!5", L: "[g#1,g#2]@3 [g#1,g#2] [g#1,g#2]@4", M: "[f#1,f#2]@3 [f#1,f#2] [f#1,f#2]@4", N: "[g#1,g#2] ~@3",
  O: "d#2@3 a#2@3 d#2 f2", P: "g#2@3 d#2 d#2@4", Q: "d#2@3 a#1 a#1@2 d#2 f2", R: "g#1@3 d#2 d#2@4",
  S: "g#1@3 g#1 g#1@2 g#1@2", T: "[c#2@3 c#2 c#2@2 c#2@3 a#1@2 a#1@2 c2@2 g#1]/2",
  U: "[c#2@3 c#2 c#2@2 c#2@3 d#2@2 d#2@2 f2@2 c#2]/2", V: "[f#1@3 f#1 f#1@2 f#1@3 f#1@2 f#1 f#1@2 f#1@2]/2",
  W: "[f#1@3 f#1 f#1@2 f#1@3 g#1@2 g#1@2 c2@2 g#1]/2", X: "[~ g#2, g#1]/2", Y: "[~ f#2, f#1]/2", Z: "g#2 ~@3",
  AA: "[~@5 c#2@6 ~@10 c#2@6 ~@10 d#2@6 a#2@10 d#2@6 a#2@5, ~@11 g#2@26 ~@27]/4",
  AB: "[~ d#2@2 f2@2 f#2@6 c#2@10 g#2@6 d#2@2 d#2@8 g#2@6 d#2@10 c#2@6 g#2@2 g#2@3]/4",
  AC: "[~ g#1@4 c#2@6 g#2@10 c#2@6 g#2@10 d#2@6 a#2@10 d#2@6 a#1@2 a#1@3]/4",
  AD: "[~ d#2@2 f2@2 f#2@6 c#2@10 g#1@6 d#2@2 d#2@8 g#1@6 g#1@2 g#1@3]/3", AE: "~ g#1@4 c#2@6 c#2@2 c#2@3",
  AF: "[~ c#2@6 a#1@4 a#1@4 c2@4 g#1@2 c#2@6 c#2@2 c#2@3]/2",
  AG: "[~ c#2@6 d#2@4 d#2@4 f2@4 c#2@2 f#1@6 f#1@2 f#1@3]/2", AH: "~ f#1@6 f#1@4 f#1@2 f#1@3",
  AI: "~ f#1@4 f#1@6 f#1@2 f#1@3", AJ: "[~ f#1@6 g#1@4 g#1@4 c2@4 g#1@2 c#2@6 c#2@2 c#2@3]/2",
  AK: "[~ c#2@6 d#2@4 d#2@4 f2@4 c#2@2 [g#1,g#2]@32 c#2@6 g#2@10 c#2@6 g#2@2 g#2@3]/5", // G#
  AL: "[~ g#1@4 c#2@6 g#2@10 c#2@6 g#2@2 g#2@3]/2", AM: "[~ g#1@4 c#2@16 ~@11]/2",
})).s("gm_electric_bass_finger").gain(0.32)

// other · melodic tom · "Toms"
const melodic_tom = note(`<
  A B A B A B C D E F G B A B C D H I J K L@2 M@2 N A@2 C O H P J B A@2 C Q H R S T@2 U@2 V@2 W@2 A B A B A B C D E F G
  B A B C D H I J K L@2 M@2 N A@2 C O H P J B A@2 C Q H R S T@2 U@2 V@2 W@2 T@2 U@2 X@2 Y@2 Z ~ AA@4 AB@4 AC@4 AD@3 AE
  AF@2 AG@2 AH AI AJ@2 AF@2 AK@5 AL@2 AM@2
>`.pickRestart({
  A: "c#3@3 g#3@5", B: "c#3@3 g#3 g#3@2 g#2@2", C: "d#3@3 a#3@5", D: "d#3@3 a#3 a#3@2 a#2@2", E: "f#3@3 c#4@5",
  F: "g#3@3 d#4 d#4@2 d#3@2", G: "g#3@3 d#4@5", H: "f#3@3 c#3@5", I: "g#3@3 d#3 d#3@2 d#3@2", J: "g#3@3 d#3@5",
  K: "c#3@3 g#3!5", L: "[g#2,g#3]@3 [g#2,g#3] [g#2,g#3]@4", M: "[f#2,f#3]@3 [f#2,f#3] [f#2,f#3]@4", N: "[g#2,g#3] ~@3",
  O: "d#3@3 a#3@3 d#3 f3", P: "g#3@3 d#3 d#3@4", Q: "d#3@3 a#2 a#2@2 d#3 f3", R: "g#2@3 d#3 d#3@4",
  S: "g#2@3 g#2 g#2@2 g#2@2", T: "[c#3@3 c#3 c#3@2 c#3@3 a#2@2 a#2@2 c3@2 g#2]/2",
  U: "[c#3@3 c#3 c#3@2 c#3@3 d#3@2 d#3@2 f3@2 c#3]/2", V: "[f#2@3 f#2 f#2@2 f#2@3 f#2@2 f#2 f#2@2 f#2@2]/2",
  W: "[f#2@3 f#2 f#2@2 f#2@3 g#2@2 g#2@2 c3@2 g#2]/2", X: "[~ g#3, g#2]/2", Y: "[~ f#3, f#2]/2", Z: "g#3 ~@3",
  AA: "[~@5 c#3@6 ~@10 c#3@6 ~@10 d#3@6 a#3@10 d#3@6 a#3@5, ~@11 g#3@26 ~@27]/4",
  AB: "[~ d#3@2 f3@2 f#3@6 c#3@10 g#3@6 d#3@2 d#3@8 g#3@6 d#3@10 c#3@6 g#3@2 g#3@3]/4",
  AC: "[~ g#2@4 c#3@6 g#3@10 c#3@6 g#3@10 d#3@6 a#3@10 d#3@6 a#2@2 a#2@3]/4",
  AD: "[~ d#3@2 f3@2 f#3@6 c#3@10 g#2@6 d#3@2 d#3@8 g#2@6 g#2@2 g#2@3]/3", AE: "~ g#2@4 c#3@6 c#3@2 c#3@3",
  AF: "[~ c#3@6 a#2@4 a#2@4 c3@4 g#2@2 c#3@6 c#3@2 c#3@3]/2",
  AG: "[~ c#3@6 d#3@4 d#3@4 f3@4 c#3@2 f#2@6 f#2@2 f#2@3]/2", AH: "~ f#2@6 f#2@4 f#2@2 f#2@3",
  AI: "~ f#2@4 f#2@6 f#2@2 f#2@3", AJ: "[~ f#2@6 g#2@4 g#2@4 c3@4 g#2@2 c#3@6 c#3@2 c#3@3]/2",
  AK: "[~ c#3@6 d#3@4 d#3@4 f3@4 c#3@2 [g#2,g#3]@32 c#3@6 g#3@10 c#3@6 g#3@2 g#3@3]/5", // G#
  AL: "[~ g#2@4 c#3@6 g#3@10 c#3@6 g#3@2 g#3@3]/2", AM: "[~ g#2@4 c#3@16 ~@11]/2",
})).s("gm_melodic_tom").gain(0.27)

// drums · cowbell
const cowbell = s("cb").struct("<~@105 x ~@35>").gain(0.3)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@105 x ~@35>").gain(3.53)

// drums · bongos
const bongos = s("bongo:4").struct("<~@105 x ~@35>").gain(0.79)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@105 [x!2 ~@14] ~@35>").gain(0.79)

// drums · congas
const congas = s("conga:18").struct("<~@105 [~ x ~@14] ~@35>").gain(0.96)

// drums · ht
const ht = s("ht").struct("<~@105 [~ x ~@14] ~@35>").gain(0.3)

// drums · mt
const mt = s("mt").struct(`<
  A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A
  C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~@5 D E F G F E F G F E F G F E F G
  F E F G F E F G F E F G F H ~@6
>`.pickRestart({
  A: "x!4", B: "x ~ x ~@2 x!2 ~", C: "x ~ x ~@2 x ~ x", D: "~@2 x ~@2 x ~@3 x ~@5 x", E: "~ x ~@3 x ~@3 x ~@3 x ~@2",
  F: "~ x ~@3 x ~@3 x ~@5 x", G: "~@3 x ~ x ~@3 x ~@3 x ~@2", H: "~ x ~@3 x ~@10",
})).gain(0.3)

// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<~@105 [~ x ~@6] ~@35>").gain(1.92)

// drums · shaker
const shaker = s("sh").struct("<~@105 [~@2 x ~@2 x ~@10] ~@35>").gain(0.3)

// drums · whistle
const whistle = s("ballwhistle:0").struct("<~@105 [~@2 x!2 ~@12] ~@35>").gain(0.39)

// drums · guiro
const guiro = s("guiro:0").struct("<~@105 [~@2 x!3 ~@11] ~@35>").gain(6.34)

// drums · claves
const claves = s("clave:2").struct("<~@105 [~@2 x!3 ~@11] ~@35>").gain(1.47)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@105 [~@3 x!2 ~@11] ~@35>").gain(0.44)

// drums · triangle
const triangle = s("triangles:30").struct("<~@105 [~@4 x!2 ~@10] ~@35>").gain(2.61)

stack(
  piano, bass, melodic_tom, cowbell, vibraslap, bongos, bongos_2, congas, ht, mt, agogo_bells, shaker, whistle, guiro,
  claves, woodblocks, triangle
)

More by Billy Joel