Strudelify
Piano Man cover art

1973 · Piano Man

Piano Man

Billy Joel

KeyC majorTempo146 bpm
0:00/0:00
// Piano Man — Billy Joel
// 146 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 266 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(146/3)

// 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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F G D A B C D E H I@3 J K L M N O P Q R I L S N O R I T U V W X Y V W Z R AA AB N I L S N O P AC AD AE L
  AF AG O AH AI@2 I N K L M N AA AB AC N K L M N AA R AJ@2 I AK I L S N O P AC AD I L S R AA R I AL S N AM O S N AM AN N
  O P AO I L S N O P AM N I L S N O AP I@3 N K L M N AA AB AC N K L M N AA R AJ@2 I AK I L S N O P AC AD I L S R AA R I
  AL S N AM O S N AM AN N O P AO I L S N O P AM N I L S N O AP I@3 N K L M N AA AB AC N K L M N AA R AJ@2 I AK I L S N O
  P AC AD I L S R AA R I AL S N AM O S N AM AN N O P AO I L S N O P AM N I L S N O AP I@3 N AQ@8 ~
>`.pickRestart({
  A: "c3", B: "b2", C: "a2", D: "g2", E: "f2", F: "e2", G: "d2", H: "g2@10 g1@5 ~", I: "c2@15 ~",
  J: "c2@5 c2@4 ~@2 c2@4 ~", K: "c2@10 ~ c2@5", L: "b1@15 ~", M: "a1@10 ~ a1@5", N: "g1@15 ~", O: "f1@15 ~", P: "e1",
  Q: "d1@9 ~ d1@5 ~", R: "g1@9 ~@2 g1@5", S: "a1@15 ~", T: "c2@11 b1@5", U: "a1@5 e2@4 ~@7", V: "g1@5 e2@5 ~@6",
  W: "f#1@5 d2@6 ~@5", X: "f1@5 c2@5 ~@6", Y: "a1@5 e2@5 ~@6", Z: "d1@5 d2@6 ~@5", AA: "f1@10 ~ f1@5",
  AB: "e1@9 ~@2 e1@5", AC: "d2@10 ~ a1@5", AD: "g1@5 a1@5 ~ b1@5", AE: "c2@13 ~ c2 ~", AF: "a1@5 e2@8 ~@3",
  AG: "g1@5 e2@7 ~@4", AH: "g1@7 ~ g1@7 ~", AI: "[c2@31 ~]/2", AJ: "c2@13 c1@3", AK: "f1@5 g1@4 ~@2 g1@5",
  AL: "c2@9 ~@2 b1@5", AM: "f#1@15 ~", AN: "d1@5 e1@5 ~ f#1@5", AO: "d1@15 ~", AP: "g1@10 ~ g1@5", AQ: "c2/8",
})).s("gm_fretless_bass").gain(0.4)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D E F G H I J@2 K@2 L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF@2 AG@2 AH AI AJ AK AL@3 AM AN AO AP AQ AR@2
  AS AT AU AV AW AX AY B AZ BA BB@2 BC BD BE BF D E F BG BH BI BJ@2 BK@2 L M N O P Q BL S BM@2 V BN X Y Z AA AB BO BP BQ
  BR@2 BS@2 BT AI BU@2 BV@3 BW AN AO BX AQ BY@2 AS BZ AU AV AW AX CA CB CC CD CE@2 CF BD BE BF D E F CG BH BI CH@2 BK@2
  L M N O P Q BL S BM@2 V BN X Y Z AA AB BO BP CI CJ@2 BS@2 BT AI BU@2 BV@3 BW AN AO BX AQ BY@2 AS BZ AU AV AW AX CA CB
  CC CD CE@2 CF CK BE BF D E F BG BH BI CL@2 BK@2 L M N O P Q BL S BM@2 V BN X Y Z AA AB BO BP CI CJ@2 BS@2 BT AI BU@2
  BV@3 BW AN AO BX AQ BY@2 AS BZ AU AV AW AX CA CB CC CD CE@2 CF CM CN@2 ~@7
>`.pickRestart({
  A: "~@10 g4@3 ~@3", B: "~@10 g4@5 ~", C: "g4@5 f4@10 ~", D: "f4@2 e4@3 c4@11", E: "~@10 c4@5 ~",
  F: "c4@5 c4@8 c4@2 ~, ~@5 a3@10 ~", G: "c4@5 ~@3 d4@8", H: "~@10 c4@5 ~, d4", I: "~@10 g4@3 ~@3, b3",
  J: "[g4@2 ~@27 e4@3, ~@5 g4@26 ~, ~@26 f4@5 ~]/2", K: "[~@2 e4@3 c4@15 ~@9 a3@2 ~, f4@5 ~@27]/2",
  L: "~@10 f4@3 f4@2 ~, a3", M: "[a3,f4]@5 ~@5 c4@5 ~, ~@5 e4@11", N: "~@11 c5@5, c4, ~@5 e4@11, ~ g4",
  O: "~@11 c5@5, ~@5 f4@11", P: "~@10 c5@5 ~, ~@5 g4@10 ~", Q: "~@8 g5@2 ~ g5@5, a4@5 ~@3, ~@5 g4@11",
  R: "[e5,g5]@2 ~@3 g5@5 [e5,g5]@5 ~", S: "[e5,g5]@5 ~@5 e5@5 ~, ~@5 f5@10 ~", T: "~@2 e5@3 c5@11, f5 ~@3",
  U: "~@10 c5@5 ~", V: "c5@5 [a4,c5]@5 ~ [a4,c5]@5, a4@3 ~@13", W: "~@10 d5@3 d5@3, c5", X: "~@11 c5@5, d5, ~@5 f#4@11",
  Y: "~@13 f5@3, b4, ~@5 g4@11, ~@10 e5@5 ~", Z: "[e5,g5]@3 ~@2 g5@8 g5@3, ~@5 e5@11",
  AA: "~@13 e5@3, g5, e5@13 ~@3, ~@11 f5@5", AB: "~@5 [c5,e5]@5 ~ [c5,e5]@5, f5", AC: "e5@5 ~@5 c5@5 ~",
  AD: "c5@5 ~@8 e5@3, ~@5 c5@11", AE: "f5@5 ~@6 c5@5, ~ e5", AF: "[~@11 g4@4 ~@17, c5@31 ~]/2",
  AG: "[a4@10 a4@3 ~@16 c5@3, ~@13 a4@19, ~@21 c4@11, ~@26 b4@5 ~]/2", AH: "[c4,b4]@2 ~@9 c4@5, ~@2 a4@13 ~",
  AI: "~@11 c4@4 ~, a4@15 ~, ~@5 f4@9 ~@2", AJ: "~@10 a4@3 a4@3, c4, ~@5 e4@11",
  AK: "~@13 c5@3, a4, ~@5 e4@11, ~@10 b4@5 ~",
  AL: "[~@37 d4@5 [b3,d4]@6, b4@19 ~@2 g4@8 g4@19, ~@5 d4@26 ~@17, ~@16 f#4@15 ~@17, ~@27 a4@4 ~@17]/3", // Bm
  AM: "d5@5 d5@5 [b4,d5]@6", AN: "[g4,e5]@5 [g4,e5]@5 ~ [g4,e5]@5", AO: "[b4,f5]@5 [b4,f5]@5 ~ [b4,f5]@5",
  AP: "g5@3 ~@2 g5@8 g5@2 ~, ~@5 e5@10 ~", AQ: "~@13 e5@2 ~, g5, e5@13 ~@3, ~@5 f5@10 ~",
  AR: "[f5@3 ~@18 g4@5 g4@5 ~, ~@3 e5@13 ~@16, ~ c5@3]/2", AS: "a4@5 c5@8 c5@3, ~@5 a4@10 ~", AT: "~@10 d5@5 ~, c5",
  AU: "~@11 c5@5, [f#4,d5], ~@5 a4@11", AV: "~@11 [b4,f5]@5, b4@11 ~@5, ~@5 [g4,e5]@11",
  AW: "g5@5 g5@8 g5@3, ~@5 e5@11", AX: "~@5 f5@8 f5@2 ~, [e5,g5]", AY: "f5@2 e5@3 c5@10 ~", AZ: "a4@5 c5@5 c5@6",
  BA: "~@10 c5@5 ~, f5, a4@11 ~@5, ~@5 e5@11", BB: "[~@11 g4@5 ~@5 f4@11, c5]/2", BC: "~@5 g4@10 ~, b4@15 ~",
  BD: "~@5 g4@5 ~ f4@4 ~, [c4,a4]@10 [c4,g4]@5 ~", BE: "~@10 g4@5 ~, g4@5 ~@3, ~@5 e4@11",
  BF: "[e4,g4]@5 ~@8 e4@3, ~@5 f4@11", BG: "c4@5 ~@3 d4@8, ~@5 [g3,c4]@11", BH: "~@10 c4@5 ~, d4, ~@5 f#3@11",
  BI: "~@11 g4@2 g4@3, b3, ~@5 g3@11",
  BJ: "[g4@2 ~@3 e4@5 ~ [c4,e4]@6 ~@12 e4@3, ~@5 g4@26 ~, ~@21 b3@11, ~@21 e4@8 ~@3, ~@27 f4@5]/2", // C
  BK: "[~@2 e4@3 c4@15 ~@7 a3@2 a3@2 ~, f4@5 ~@27]/2", BL: "[e5,g5]@2 ~@3 [e5,g5]@5 ~ [e5,g5]@5",
  BM: "[f5@3 e5@2 a4@14 ~@7 c5@5 ~, ~@5 c5@11 ~@16]/2", BN: "~@11 d5@2 d5@3, c5, ~@5 g4@11",
  BO: "e5@5 ~@6 c5@5, ~@5 [e4,g4]@11", BP: "c5@5 ~@8 e5@3, ~@5 [a4,c5]@11",
  BQ: "f5@5 ~@6 c5@5, ~@5 [a4,c5]@6 ~@5, ~ e5", BR: "[~@5 g4@5 ~ [e4,g4]@5 ~@5 [e4,g4]@5 ~ [e4,g4]@5, c5@31 ~]/2",
  BS: "[~@11 a4@2 ~@16 c5@3, a4@11 ~@2 a4@19, ~@5 [c4,e4]@12 ~@4 [c4,e4]@11, ~@27 b4@5]/2", // C
  BT: "[c4,b4]@3 ~@8 [c4,d4]@5, ~@3 a4@13", // Cmaj7 Csus2
  BU: "[~@11 a4@2 ~@16 c5@3, c4@16 ~@5 [c4,e4]@11, ~@5 e4@11 ~@11 b4@5, ~@13 a4@19]/2", // C
  BV: "[~@37 [b3,d4]@5 ~ [b3,d4]@5, b4@19 ~@2 g4@8 g4@19, ~@5 [c4,d4]@26 ~@17, ~@16 f#4@15 ~@17, ~@27 a4@4 ~@17]/3", // Bm Csus2
  BW: "[b4,d5]@5 [b4,d5]@5 ~ [b4,d5]@5", BX: "e5@5 g5@8 g5@2 ~, g5@3 ~@2 e5@10 ~",
  BY: "[f5@3 c5@5 e4@8 ~@5 [e4,g4]@5 ~ [e4,g4]@5, ~@3 e5@13 ~@16, ~ c5@3]/2", BZ: "~@11 d5@5, c5, ~@5 [c4,g4]@11",
  CA: "f5@3 ~@2 [a4,c5]@10 ~, ~@3 e5@4 ~@9", CB: "[c4,e4]@3 ~@8 g4@5, ~@5 [c4,e4]@11", CC: "a4@5 [a4,c5]@5 ~ [a4,c5]@5",
  CD: "~@11 [a4,c5]@5, f5, a4@11 ~@5, ~@5 e5@11", CE: "[~@11 g4@6 ~@10 a4@5, c5, ~@5 e4@11 ~@5 f4@11]/2",
  CF: "~@11 e4@5, b4@15 ~, ~@5 g4@10 ~", CG: "c4@5 ~@3 d4@8, ~@5 c4@11",
  CH: "[g4@2 ~@3 e4@5 ~ [c4,e4]@6 ~@12 e4@3, ~@5 g4@26 ~, ~@21 e4@8 ~@3, ~@27 f4@5]/2", // C
  CI: "f5@5 ~@6 [a4,c5]@5, ~@5 [a4,c5]@6 ~@5, ~ e5", // Am
  CJ: "[~@5 [e4,g4]@5 ~ [e4,g4]@5 ~@5 [e4,g4]@5 ~ [e4,g4]@5, c5@31 ~]/2", // Em
  CK: "~@5 g4@5 ~ [c4,f4,g4]@4 ~, [c4,a4]@5 ~@3", // Csus4 F
  CL: "[g4@2 ~@3 [c4,e4]@5 ~ [c4,e4]@6 ~@12 e4@3, ~@5 g4@26 ~, ~@21 b3@11, ~@21 e4@8 ~@3, ~@27 f4@5]/2", // C
  CM: "~@5 g4@5 ~ [c4,f4]@5, [c4,a4]@5 ~@3", CN: "[[c4,e4]@27 ~@5]/2",
})).s("gm_piano").gain(0.64).pan(0.6)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~ A B ~@3 C D E F G ~ H ~@6 I ~ J@2 ~ K ~@5 L M N O P Q R S ~@2 T U@2 V W ~@2 X ~ Y Z ~ AA ~@4 M AB AC AD R AD AE ~@9
  AF ~@22 AD AG ~@36 AH ~@2 AF AI ~@127
>`.pickRestart({
  A: "~@5 e4@11, g4@5 ~@3", B: "e4@4 ~@9 e4@3", C: "~@5 [g3,c4]@11", D: "~@5 f#3@11", E: "~@13 g4@3, ~@5 g3@11",
  F: "~@5 [c4,e4]@5 ~ c4@5, ~@5 e4@3", G: "~@5 b3@11, ~@5 e4@8 ~@3", H: "~@10 a3@3 ~@3", I: "~@5 e5@5 ~@6",
  J: "[~@5 a4@14 ~@13]/2", K: "~@5 g4@11", L: "~@5 [e4,g4]@11", M: "~@5 a4@11", N: "~@5 [a4,c5]@6 a4@5",
  O: "~@5 g4@2 ~@4 e4@4 ~, ~@5 e4 ~@10", P: "~@5 [e4,g4]@5 [e4,g4]@5 ~", Q: "~@5 [c4,e4]@11", R: "~@5 e4@11",
  S: "~@10 d4@5 ~", T: "~@5 c4@11", U: "[~@5 c4@26 ~]/2", V: "~@5 b3@5 ~@6", W: "b4@5 b4@5 ~@6", X: "e5@5 ~@11",
  Y: "~@3 c5@5 e4@8", Z: "~@5 e4@5 ~ e4@5", AA: "~@5 [c4,g4]@11", AB: "[c4,e4]@3 ~@2 [c4,e4]@11", AC: "~@5 a4@5 ~ a4@5",
  AD: "~@11 a4@5", AE: "~@10 e4@5 ~", AF: "~@5 c4@5 ~@6", AG: "~@5 e4@5 ~@6", AH: "~@5 g3@11", AI: "~@5 b3@11",
})).s("gm_piano").gain(0.4).pan(0.6)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@35 A B C D E@4 F G H I J K L M N@2 O P Q R L S T U V W X Y Z@2 AA@2 AB@4 AC@2 AA@2 AD AE AF AG AH AI AJ@2 AA AK AL
  AK AM AN Z AO AA@2 AE@2 AP@2 A B C D E@4 F G H I J K L M N@2 O P Q R L S T U V W X AQ ~@14 AR AS AT AU AV@2 AW AX AY
  AZ BA@2 BB@4 BC BD BE@2 BF BG BH BI BJ BK BL@2 BM BN BO BP BQ BR BS@2 BT BU BV@2 BW BX BY@2 BZ CA CB@4 Z@2 AA@2 AB@4
  CC@2 AA@2 AD AE AF AG AH AI CD CE AA AK AL AK AM AN Z AO AA@2 AE@2 AP@2 ~@8 CF CG CH CI J K L M N@2 O CJ Q R L S T U
  CK CL CM CN CO@2 ~@7
>`.pickRestart({
  A: "[a5,e6]@15 ~", B: "[g5,e6]", C: "[f#5,d6]", D: "[f5,c6]",
  E: "[a5@16 g5@16 d6@15 ~ d6@16, e6@32 f#5@29 ~@3, ~@48 d5@13 ~@3]/4", F: "[g4,d5,g5,d6]@15 ~",
  G: "[f4,d5,g5]@15 ~, [b5,d6]@13 ~@3", H: "[g5,c6,e6]@3 ~, [e4,c5]@15 ~", I: "[g3,d4,g4,b5,g6]@13 ~@3, d6@11 ~@5",
  J: "[c5,c6,e6,g6]@15 ~, [d#6,f#6] ~@15", K: "[b5,e6,g6]@3 ~, b4", L: "[a4,c6,e6]@15 ~, a5@13 ~@3",
  M: "[c6,e6]@5 d6@5 ~ c6@2 ~@3, g4, g5@11 ~@5", N: "[g#5 ~@15 [e5,g5]@11 ~@5, f4 e4, [f5,a5]@7 ~@9, ~@3 c6@24 ~@5]/2",
  O: "[f#4,f#5], [a5,d6]@3 ~", P: "[b5,d6]@4 ~ [c6,e6]@3 ~@3 [b5,d6]@4 ~, g4, g5@7 ~, a#5 ~@10 [a#5,c#6] ~@4",
  Q: "[c5,g5,c6,e6]@15 ~", R: "[b4,e6], [g5,b5]@13 ~@3", S: "[c6,e6]@5 d6@5 ~ c6@2 ~@3, g4, g5@3 ~",
  T: "g#5 ~@2 c6@11 f4 ~, [f5,a5]@15 ~, f4@5 ~@3", U: "[g5,a5,c6]@9 ~@2 [g5,a5,c6]@4 ~, g4@11 ~@5",
  V: "~@5 c6@3 e6@2 g6@2 ~ c7 ~@2, [c5,g5]@15 ~, e5@13 ~@3", W: "c7@5 c6@3 f6@3 a6@2 c7 ~@2, [c5,a5]@15 ~, f5@13 ~@3",
  X: "c7@5 c6@3 g6@3 b6@2 g6 ~@2, [c5,g5,b5], c#5 ~@7", // Cmaj7
  Y: "[g5,e6,g#6] ~@4 [e6,g6]@3 ~@2 c6 [d5,d6,f6]@4 ~, f5@5 e5@5 ~@6, [f6,a6] ~@3", Z: "[e5,g5]@15 ~",
  AA: "[c5,e5]@7 ~", AB: "[f5@15 ~ e5@16 ~@16 b4@12 ~@4, c5@47 ~@17, ~@8 d5@7 ~]/4",
  AC: "[d#5 [e5,g5]@14 ~ g5@16, c5@9 ~@7, ~@16 e5@13 ~@3]/2", AD: "f5@7 ~, c5@11 ~@5", AE: "[c5,f5]@7 ~",
  AF: "[c5,e5]@5 ~@3 e5@3 g5@2 c6 ~@2, ~@6 c5@9 ~", AG: "[c5,c6]@4 ~@4 f5@2 ~ a5 ~ c6 ~@2, ~@5 c5@8 ~@3",
  AH: "[c5,c6]@5 c5@3 g5@2 ~ b5@2 g5 ~@2", AI: "[f5,a5]@5 [e5,g5]@5 ~ [d5,f5]@4 ~",
  AJ: "[[c5,e5]@13 ~@2 g5@17, ~@15 e5@13 ~@4]/2", AK: "e5@15 ~, c5@11 ~@5", AL: "f5, c5@13 ~@3", AM: "[c5,d5]@7 ~",
  AN: "b4, d5@7 ~", AO: "[e5,g5]@7 ~", AP: "[[c5,e5]@15 ~]/2",
  AQ: "[g5,e6,g#6] ~@5 [e6,g6]@3 ~ c6 [d5,d6,f6]@4 ~, f5@5 e5@5 ~@6, [f6,a6] ~@3", // C Em Dm F
  AR: "~@6 c5@2 e5@2 ~ g5 ~ c6 ~@2, c4@7 ~", AS: "c6@2 ~@3 c5@2 ~ f5@2 ~ a5 ~ c6 ~@2, c4@3 ~",
  AT: "c6@3 ~@2 c5@2 ~ g5@2 ~ b5@2 g5 ~@2, c4@15 ~", AU: "[f4,a5]@5 [e4,g5]@5 ~ [d4,f5]@4 ~",
  AV: "[c5@15 ~ b4@16, g5@31 ~]/2", AW: "[a4,e5]", AX: "[g4,e5]@15 ~", AY: "[f4,c5]", AZ: "[e4,c5]@15 ~",
  BA: "[[f#4,a4,c5]@15 ~ [g4,b4]@15 ~, d5@29 ~@3]/2", BB: "[~ b4 a4 g4, e5, g4@17 ~@15 c5@29 ~@3, ~@3 g5@13 ~@16]/4",
  BC: "[f4,a4,c5]", BD: "[g4,b4]@3 [f4,a4]@5, d5", BE: "[[g4,c5,e5]@29 ~@3, b4 ~@15]/2",
  BF: "a5@10 ~ a5@4 ~, [a4,e5]@15 ~", BG: "[e5,a5]@11 b5@3 c6@2, g4@15 ~", BH: "b5@2 ~ a5@3 ~@5 d#6@2 d6 c6 ~, f#4",
  BI: "d6@2 c6 ~ a5 ~@2 a5 ~@3 a5@4 ~, f4@9 ~@7, ~@6 c6@2 ~@3 g5 ~@4", BJ: "a5@10 ~ a5@4 ~, a4@15 ~",
  BK: "a5@10 ~ b5@2 ~ c6@2, g4@15 ~", BL: "[f#4@16 ~@11 a5@3 [a3,b3,c4] [e4,f4,g4,a4,b4], b5@13 ~@3, ~@16 d4@15 ~]/2",
  BM: "[b5,d6,g6]@15 ~, [c5,d5,e5] ~@15", BN: "~ [d6,g6]@13 ~@2, b6@3 ~, f6@9 ~@7", BO: "[e6,g6,c7]@3 ~",
  BP: "[g6,b6,d7]@3 ~, c7 ~@7", BQ: "~ [g5,g6]@3 ~@2 [g5,g6]@6 ~ [g5,g6] ~@2",
  BR: "[g5,g6]@4 ~@2 [f5,f6]@4 ~ [e5,e6]@4 ~", BS: "[[f5,f6] ~@2 [e5,e6] ~@2 [c5,c6]@23 ~@3]/2",
  BT: "[a4,a5]@3 ~@3 c5@7 ~ [c5,c6] ~, [b4,g#5] ~@4 c6@7 ~@4", BU: "~ c6@8 ~@2 c#6 ~@4, c5@4 ~ [d5,d6]@2 ~",
  BV: "[[d5,d6]@19 ~@3 [e5,e6]@4 ~ [f5,f6]@4 ~, ~@22 d#6 ~@9]/2", BW: "[g5,g6]@3 ~@3 [g5,g6]@7 ~ [g5,g6] ~",
  BX: "~ g5@3 ~@2 [f5,f6]@4 ~ [e5,e6]@3 ~@2, g6@3 ~@8 d#6 ~@4", // F E
  BY: "[[f5,f6] ~@2 [e5,e6] ~ [c5,c6]@17 ~@5 [g4,g5]@3 ~@2, ~@27 f#5 ~@4]/2", // F E C G
  BZ: "~ g#5 ~@4 [c5,c6]@3 ~@2 c5@5, [a4,a5]@3 ~@8 c6@3 ~@2", CA: "~ [f5,f6]@5 [e5,e6]@4 ~ [c5,c6]@4 ~, ~ f#6 ~@14",
  CB: "[~ [c5,c6]@54 ~@2 [g5,a5] [d5,e5,f5] [f4,g4,a4,b4,c5] [a3,b3,c4,d4,e4] b3 ~@2, ~@28 b5 ~@3]/4", // C Gsus2 Dm F Am
  CC: "[~ [e5,g5]@14 ~ g5@16, ~ c5@18 ~@13, ~ d#5 ~@14 e5@13 ~@3]/2", CD: "[c5,e5]@13 ~@3", CE: "g5, e5@13 ~@3",
  CF: "[b4,d5,g5]@13 ~@3, g4@15 ~", CG: "[f4,g5,b5]@7 ~, d5@3 ~, f5 ~@15", CH: "[e5,g5,c6]@13 ~@3, e4@15 ~",
  CI: "[f5,a#5] [b5,d6]@14 ~, [d4,g5]@7 ~, ~ c#6 ~@14", // A#5 Bm G5
  CJ: "[b5,d6]@4 ~@2 [c6,e6]@3 ~@2 [b5,d6]@4 ~, g4, g5@7 ~, a#5 ~@10 [a#5,c#6] ~@4", // Bm C Bm A#m
  CK: "~@5 c6@3 e6@2 ~ g6@2 c7 ~@2, [c5,g5]@15 ~", CL: "c7@5 ~ c6@2 f6@3 a6@2 ~ c7 ~, c5@15 ~, f5@13 ~@3",
  CM: "c7@5 ~ c6@2 g6@3 b6@3 g6 ~, [c5,g5]@15 ~", CN: "[a5,f6]@4 ~@2 [g5,e6]@3 ~@2 [f5,d6]@4 ~, e6 ~@15",
  CO: "[c6@27 ~@5]/2",
})).s("gm_rock_organ").gain(0.25).pan(0.1)

// chords · accordion
const accordion = note(`<
  ~@15 A@3 B C@2 D E F G H I J K L M N O P@2 Q R S@2 Q R T@2 U@4 ~@18 V@3 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK V@3 W
  X Y Z AA AB AC AD AE AF AG AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO
  BP BQ ~@14 BR BS BT BU V@3 W X Y Z AA AB AC AD AE AF AG AL AM AN AO AP AQ AR AS AT AU AV AW AX AY BV BW BX BY BZ CA CB
  CC CD CE CF CG CH CI CJ CK CL CM ~@14 BR BS BT BU V@3 W X Y Z AA AB AC AD AE AF CN AL AM ~@8 CO CP CQ CR V@3 W X Y Z
  AA AB AC AD AE AF CN AH AI AJ AK CS@8 ~
>`.pickRestart({
  A: "[c5@4 ~ c5@3 e5@2 g5@2 ~ c6 ~@2 c6@5 ~@5 a5@3 c6 ~@2 c6@5 c5@3 g5@2 b5@3 g5@3, c4@47 ~, g4@14 ~@2 a4@13 ~@19, ~@21 c5@5 ~@6 b4@16, ~@24 f5@5 ~@19]/3",
  B: "[f4,a5]@5 [e4,g5]@5 [d4,f5]@5 ~", // F Em Dm
  C: "[[e5,g5]@5 ~@5 [e5,g5]@4 ~@2 [b4,e5,g5]@8 ~@3 e5@2 ~@3, c4@23 ~ c4@8, d#5 ~@4 c5@9 ~@12 [b4,g5]@2 ~@4]/2", // Em
  D: "[a4,c5,e5]@8 c4@3 [a4,c5,e5]@2 c4 ~@2", E: "[c5,e5]@5 d5@6 c5@5, g4@11 ~@5",
  F: "g#4 ~@4 c5@6 a4@4 ~, f4@15 ~, a4@9 ~@7", G: "c5@5 e5@3, e4, g4 ~", H: "d5@5 c5@11, f#4, a4@11 ~@5",
  I: "d5@11 e5@2 f5@3, g4@15 ~, b4@9 ~@7", J: "e5@5 ~@6 g5@2 ~ e5 ~, c5, g5@9 ~@4 a5@2 ~, d5 ~@5 e5@8 ~@2",
  K: "g5 ~ g5@3 f5@6 e5@3 ~@2, b4@15 ~, d5@5 ~@11", L: "c5@4 ~ c5@8 f5@3, a4, e5@13 ~@3, d#5 ~@15",
  M: "[c5,e5]@5 d5@5 ~ c5@4 ~, g4@7 ~", N: "c5@10 ~@3 a4 ~@2, [f4,a4]@13 ~@3, ~@11 c5@5", O: "[g4,a4,c5]",
  P: "[c5@27 b4@4 ~, [e4,g4]@31 ~, b4 ~@31]/2", Q: "[c5,a5]@13 ~ [c5,a5] ~", R: "[c5,a5]@10 [d5,b5]@3 [e5,c6]@3",
  S: "[[d5,b5]@3 [c5,a5]@19 ~@10]/2", T: "[[d5,b5]@26 [c5,a5]@5 ~]/2", U: "[g5@16 f5@16 e5@15 d5@14 ~@3, b4@63 ~]/4",
  V: "[~@5 [g4,c5,e5]@4 ~@2 c5@5 ~@5 [g4,b4,e5]@4 ~@2 [g4,b4]@5 ~@5 [a4,c5,e5]@4 ~@2 [a4,c5,e5]@5, c4@14 ~@2 b3@14 ~@2 a3@15 ~, ~@11 [g4,e5]@7 ~@9 e5@7 ~@14]/3", // C Em G Am C
  W: "~@5 [g4,c5,e5]@4 ~@2 [g4,e5]@4 ~, g3@15 ~, ~@11 c5@2 ~@3", // C
  X: "~@5 [f4,a4,c5]@4 ~@2 [f4,a4,c5]@5, f3, ~@5 g#4 ~@10", Y: "~@5 [e4,g4,c5]@4 ~@2 [e4,g4,c5]@3 ~@2, e3@15 ~",
  Z: "~@5 [f#4,c5,d5]@4 ~@2 [f#4,c5,d5]@3 ~@2, f#3@7 ~", AA: "~@5 [g4,d5]@4 ~@2 [g4,b4,d5]@4 ~, g3, ~@5 b4@2 ~@9",
  AB: "~@5 [g4,c5,e5]@3 ~@3 [g4,c5,e5]@4 ~, c4@15 ~", AC: "~@5 [g4,b4,e5]@3 ~@3 [g4,b4]@2 ~@3, b3@15 ~, ~@11 e5@5",
  AD: "~@5 [a4,c5,e5]@3 ~@3 [a4,c5,e5]@4 ~, a3@7 ~", AE: "~@5 [g4,c5,e5]@3 ~@3 [g4,e5]@4 ~, g3@15 ~, ~@11 c5@2 ~@3",
  AF: "~@5 [a4,c5,f5]@4 ~@2 [a4,c5,f5]@4 ~, f3@15 ~", AG: "~@5 [f4,a4,c5]@3 ~@3 [a4,c5]@2 ~@3, g3@15 ~, ~@11 f4 ~@4",
  AH: "[g4,c5]@3 ~@2 c5@3 e5@2 ~ g5 ~ c6 ~@2, c4@15 ~, e5@5 ~@11, ~@3 [e4,g4]@10 ~@3", // C5 Em
  AI: "c6@5 c5@3 f5@2 ~ a5@2 c6@2 ~, c4@15 ~, [f4,a4]@13 ~@3", AJ: "c6@5 c5@3 g5@3 b5@2 g5@2 ~, [c4,g4,b4]",
  AK: "[f4,a5]@5 [e4,g5]@5 ~ [d4,f5]@5", AL: "[c4,g4,c5,e5]@15 ~", AM: "[c4,c5]@15 ~, g4@13 ~@3",
  AN: "~@3 c4@2 e4@3 ~@3 e4@2 c4@3, a3@6 ~@2 a4@5 ~@3", AO: "g3@3 c4@2 e4@3 ~@3 e4@2 c4@3, ~@8 a4@5 ~@3",
  AP: "~@5 d4@3 f#4@3 d4@2 a3@2 ~, f#3@7 ~@9, ~@3 a3@4 ~@9", AQ: "f3@3 a3@2 c4@3 f4@3 c4@2 a3 ~@2",
  AR: "a3@3 c4@2 e4@3 a4@3 e4@2 c4@2 ~", AS: "g3@3 c4@2 e4@3 a4@3 e4@2 c4@3",
  AT: "f#3@3 a3@2 d4@3 f#4@3 d4@2 a3@3, ~@5 c4 ~@10", AU: "d3@3 a3@2 d4@3 f#4@3 d4@2 a3@2 ~",
  AV: "~@3 b3@2 d4@2 ~ g4@3 d4@2 b3@3, g3@5 ~@11, ~@3 c4 ~@12", AW: "f3@3 ~@2 d4@3 g4@3 ~@2 b3@2 ~, ~@3 b3@8 d4@4 ~",
  AX: "~@5 e4@3 g4@3 e4@2 g4@2 ~, e3@5 ~@11, ~@3 c4@13", AY: "~@8 g4@3 b4@5, d3@3 ~, ~@3 g3@9 ~@4, ~@5 d4@10 ~",
  AZ: "c4@5 e4@4 ~@2 g4@5", BA: "~@6 e4@4 ~ g4@4 ~, b3@5 ~@3", BB: "a3@5 c4@5 ~ e4@3 ~@2", BC: "g3@5 c4@5 e4@4 ~@2",
  BD: "f3@5 a3@5 c4@3 ~@3", BE: "e3@5 g3@5 ~ c4@3 ~@2", BF: "f#3@4 ~ a3@5 ~ d4@4 ~", BG: "g3@5 b3@4 ~@2 d4@4 ~",
  BH: "c4@5 e4@5 ~ g4@5", BI: "b3@5 e4@5 ~ g4@5", BJ: "a3@5 c4@6 e4@5", BK: "g3@5 c4@6 e4@5", BL: "f3@5 a3@5 ~ c4@5",
  BM: "f4@5 c4@6 a3@3 ~@2", BN: "c4@4 ~@2 c4@2 e4@3 g4@2 c5 ~@2", BO: "c5@5 c4@2 ~ f4@2 ~ a4@2 c5 ~@2",
  BP: "c5@5 c4@2 ~ g4@2 ~ b4@2 g4 ~@2", BQ: "[f4,a4]@5 [e4,g4]@5 ~ [d4,f4]@4 ~", BR: "[e4,g4]@7 ~@4 [e4,g4]@3 ~@2, c4",
  BS: "[f4,a4]@8 ~@3 [f4,a4]@3 ~@2", BT: "[g4,b4]@8 ~@3 [g4,b4]@4 ~", BU: "[f4,a4]@5 [g4,c5]@4 ~@2 [f4,a4]@5",
  BV: "c4@5 ~ [c5,e5,g5] ~@4 [c5,e5,g5]@2 ~@3", BW: "b3@5 ~ [e5,g5]@2 ~@3 [b4,e5,g5]@2 ~@3, ~@5 b4@2 ~@9",
  BX: "a3@5 ~ [c5,e5]@2 a3 ~@2 [a4,c5,e5]@2 g3 ~@2, ~@5 a4@2 ~@9", // C Am
  BY: "~@5 [g4,c5,e5]@2 ~@4 [g4,c5,e5]@3 ~@2, g3@9 ~@7", BZ: "f3@5 [f4,a4,c5]@3 ~@3 [f4,a4,c5]@3 ~@2",
  CA: "e3@5 [e4,g4,c5]@3 e3 ~@2 [e4,g4,c5]@2 ~@3", CB: "~@5 [f#4,a4,d5]@4 ~@2 [f#4,a4,d5]@4 ~, f#3@11 ~@5",
  CC: "g3@5 [g4,b4,d5]@3 g3 ~@2 [g4,b4,d5]@2 ~@3", CD: "c4@5 ~ c5@2 c4 ~@2 [g4,c5,e5]@5, ~@5 [g4,e5]@3 ~@8",
  CE: "b3@5 [g4,b4,d5]@3 ~@3 [g4,b4,d5]@4 ~", CF: "a3@5 [a4,c5,e5]@4 ~@2 [a4,c5,e5]@3 ~@2",
  CG: "g3@5 [g4,c5,e5]@3 g3 ~@2 [g4,c5,e5]@3 ~@2", CH: "f3@5 ~ [a4,c5]@3 f3 ~ [f4,a4,c5]@3 ~@2, ~@5 f4@3 ~@8",
  CI: "g3@5 ~ [a4,c5]@3 g3 ~ [a4,c5]@3 ~@2, ~@5 f4@3 ~@3 f4 ~@4", CJ: "~@3 [e5,g5]@5, c4@3 ~, ~@5 c5@10 ~",
  CK: "c4@5 ~ [f5,a5]@9 ~, ~@5 c5@9 ~@2", CL: "~@6 [c5,b5]@9 ~, c4@5 ~@3, ~@3 g5@3 ~@2",
  CM: "[f5,a5]@4 ~ [e5,g5]@4 ~@2 [d5,f5]@3 ~@2", CN: "~@6 [f4,a4,c5]@3 ~@2 [a4,c5]@2 ~@3, g3@15 ~, ~@11 f4 ~@4",
  CO: "g3@5 ~ [b4,d5]@5 g3@4 ~", CP: "f3@6 [b4,d5]@5 f3@4 ~", CQ: "e3@6 [c5,e5]@5 e3@2 ~@3", CR: "d3@3 [d5,f5,g5]@4 ~",
  CS: "[e4,c5]/8", // C
// … 138 more lines

More by Billy Joel