Strudelify
Uptown Girl cover art

1983 · An Innocent Man

Uptown Girl

Billy Joel

KeyE majorTempo130 bpm
0:00/0:00
// Uptown Girl — Billy Joel
// 130 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X U V Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV AW AX I AY AZ BA U BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS AL BT BU BV BW AQ BX BY BZ CA CB CC CD
  CE CF C CG CH CI S CJ CA CB CC CD CE CF C CG CH CI S CJ
>`.pickRestart({
  A: "e1 ~@3 e1 ~@2 e1 e1@2 e1 ~@3 e1@2", B: "f#1@2 ~@2 f#1 ~@2 f#1 f#1@2 f#1 ~ f#1@2 f#1@2",
  C: "g#1 ~@3 g#1 ~@2 g#1 g#1@2 g#1@2 ~@2 g#1@2", D: "a1@2 ~@2 a1@2 ~ a1 b1 ~ b1 ~ b0 c#1 e1 ~",
  E: "e1@2 ~@2 e1 ~@2 e1 e1@2 e1 ~ e1@2 e1 ~", F: "f#1 ~@3 f#1 ~@2 f#1 f#1@2 f#1@2 ~@2 f#1@2",
  G: "g#1@2 ~@2 g#1 ~@2 g#1 g#1@2 g#1 ~ g#1@2 g#1 ~", H: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1@2 b0@2 c#1@2",
  I: "e1@2 ~@2 e1@2 ~ e1 e1@2 e1@2 ~@2 e1@2", J: "f#1 ~ f#1 ~ f#1@2 ~ f#1!2 ~ f#1 ~ f#1 ~ f#1 ~",
  K: "g#1 ~ g#1 ~ g#1 ~@2 g#1 g#1@2 g#1 ~ g#1@2 g#1 ~", L: "a1@2 a1@2 g#1@2 a1@2 b1 ~ b1@2 c#2@2 d#2@2",
  M: "e2@2 ~@2 e2 ~@2 b1 e1 ~ e1 ~ e1@2 e1@2", N: "f#1@2 ~@2 f#1 ~@2 f#1!2 ~ f#1 ~ f#1 ~ f#1 ~",
  O: "g#1 ~@3 g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 g#1 ~", P: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1@2 c#2@2 d#2 ~",
  Q: "e2@2 ~@2 e2@2 ~ b1 e1 ~ e1@2 e1@2 e1@2", R: "f#1@2 ~@2 f#1@2 ~ f#1!4 ~ f#1 ~ f#1!2",
  S: "g#1@2 ~@2 g#1 ~@2 g#1 g#1@2 g#1 ~@3 g#1@2", T: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1@2 f#1@2 b1@2",
  U: "c2@4 ~@2 c2 ~ c2@3 ~ c2@2 b1@2", V: "a1@4 ~@2 a1 ~ a1@3 ~ a1@2 e1@2", W: "d1@4 ~@2 d1 ~ d1@4 a1@2 d1@2",
  X: "g1@3 ~ g1@3 ~ g1@3 ~ g1@2 b1@2", Y: "d1@4 ~@2 d1 ~ b0@3 ~ b1@4", Z: "e1@2 ~@2 e1@3 ~ e1 ~ f#1 ~ g#1@2 e1@2",
  AA: "a1@3 ~ a1@3 ~ a1@2 ~@2 a1@2 g#1@2", AB: "f#1@3 ~ f#1@2 ~@2 f#1@2 ~@2 f#1 ~ f#1!2",
  AC: "b1@3 ~ b1@2 ~@2 b1@3 ~ b1@2 ~@2", AD: "b1@2 ~@2 b1@3 f#1 b1 f#1 b0@2 c#1@2 d#1 ~",
  AE: "e1@3 ~ e1 ~@2 e1!4 ~ e1 ~ e1!2", AF: "f#1@2 ~@2 f#1@2 ~ f#1!2 ~ f#1@2 f#1 ~ f#1 ~",
  AG: "g#1@2 ~@2 g#1 ~ g#1@2 g#1 ~ g#1 ~ g#1@3 ~", AH: "a1 ~ a1@2 g#1@2 a1@2 b1@2 a1@2 g#1@2 f#1@2",
  AI: "e1@2 ~@2 e1 ~@2 e1 e1@2 e1@2 e1@2 e1@2", AJ: "f#1@2 ~@2 f#1@2 ~ f#1 f#1@2 f#1 ~ f#1@2 f#1@2",
  AK: "g#1@2 ~@2 g#1@2 ~ g#1 g#1@2 g#1 ~ g#1@4", AL: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1@2 a1@2 b1@2",
  AM: "g1@2 g1@3 ~ g1 ~ g1 ~ g1@2 ~@2 g1@2", AN: "a1@2 a1@3 ~ a1 ~ a1 ~ a1@2 ~@2 a1@2",
  AO: "a#1@2 a#1@3 ~ a#1 ~ a#1@2 a#1@2 ~@2 a#1@2", AP: "b1@2 b1@2 ~@2 b1@2 a1@2 a1@3 ~ a1@2",
  AQ: "g1 ~ g1@2 ~@2 g1 ~ g1 ~ g1@2 ~@2 g1@2", AR: "a1 ~ a1@2 ~@2 a1 ~ a1@2 a1@3 ~ a1@2",
  AS: "a#1 ~ a#1@2 ~@2 a#1 ~ a#1 ~ a#1@3 ~ a#1@2", AT: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~",
  AU: "e1@2 ~@2 e1@2 ~ e1!4 ~ e1 ~ e1 ~", AV: "f#1@2 ~@2 f#1@2 ~ f#1 f#1@2 f#1@2 ~@2 f#1@2",
  AW: "g#1@2 ~@2 g#1 ~@2 g#1 g#1@2 g#1@2 ~@2 g#1@2", AX: "a1@2 a1@2 g#1@2 a1@2 b1 ~ b1@2 b0@2 c#1@2",
  AY: "f#1@2 ~@2 f#1@2 ~ f#1 f#1@2 f#1@2 f#1@2 f#1@2", AZ: "g#1@2 ~@2 g#1@2 ~ g#1@3 g#1@2 g#1 ~ g#1@2",
  BA: "a1 ~ a1@2 g#1@2 a1@2 b1@4 a1 ~ b1@2", BB: "a1@5 ~ a1 ~ a1@3 ~ a1@2 e1@2", BC: "d1@5 ~ d1 ~ d1@4 d2@2 a1@2",
  BD: "g1@3 ~ g1@3 d2 g2 d2 g1@2 a1@2 b1@2", BE: "c2@3 ~ c2 ~ c2 ~ c2@3 ~ c2@2 b1@2", BF: "a1@5 ~ a1 ~ a1@4 ~@2 a1@2",
  BG: "b1!2 ~ b1!3 ~ b1", BH: "e1 ~ e1 ~ e1@2 e1 ~ e1@2 e1 ~ e1@3 ~", BI: "a1@4 ~@2 a1 ~ a1 ~ a1@3 ~ g#1@2",
  BJ: "f#1@2 ~@4 f#1 ~ f#1 ~ f#1@2 ~@2 f#1 ~", BK: "b1 ~ b1 ~@3 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  BL: "b1 ~ b1 ~ b1 ~ b1 ~ b1!2 a1 ~ g#1@2 f#1@2", BM: "e1@2 ~@2 e1@3 e1!4 ~ e1 ~ e1 ~",
  BN: "f#1 ~@3 f#1@2 ~ f#1 f#1@2 f#1@2 ~@2 f#1@2", BO: "g#1@2 ~@2 g#1@2 ~ g#1!2 ~ g#1@2 ~@2 f#1 g#1",
  BP: "a1@3 ~ a1@2 g#1 a1 b1@2 a1 ~ g#1@2 f#1@2", BQ: "e1@2 ~@2 e1@2 ~ b1 e2 b1 e1 ~ e1@2 e1@2",
  BR: "f#1@3 ~ f#1 ~@2 f#1 f#1@2 f#1 ~@3 f#1@2", BS: "g#1@2 ~@2 g#1@2 ~ g#1@2 ~ g#1 ~@3 g#1@2",
  BT: "g1@4 ~@2 g1 ~ g1@4 ~@2 g1@2", BU: "a1@4 ~@2 a1 ~ a1 ~ a1@3 ~ a1@2", BV: "a#1@4 ~@2 a#1 ~ a#1@2 a#1@2 ~@2 a#1@2",
  BW: "b1 ~ b1 ~ b2 ~ b1 ~ a1 ~ a1@2 a2@2 a1 ~", BX: "a1 ~ a1@2 ~@2 a1 ~ a1@2 a1@2 ~@2 a1@2",
  BY: "a#1@2 a#1@2 ~@2 a#1 ~ a#1@2 a#1@2 ~@2 a#1@2", BZ: "b1 ~ b1@3 ~ b1@2 b2 a2 g#2 f#2 e2 d#2 c#2 b1",
  CA: "e2@3 ~ e2@2 ~ b1 e2 b1 e1@3 ~ e1@2", CB: "f#1@3 ~ f#1@2 ~ f#1!3 f#1@2 ~@2 f#1!2",
  CC: "g#1@2 ~@2 g#1@2 ~ g#1 g#1@2 g#1 ~@3 g#1@2", CD: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1 ~ b1 c#2 e2@2",
  CE: "e1@2 ~@2 e1 ~@2 e1 e1@2 e1@2 ~@2 e1@2", CF: "f#1@3 ~ f#1 ~@2 f#1 f#1@2 f#1@2 ~@2 f#1@2",
  CG: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1@2 c#2 d2 e2@2", CH: "e1@2 ~@2 e1 ~@2 e1!2 ~ e1@2 ~@2 e1@2",
  CI: "f#1 ~@3 f#1 ~@2 f#1 f#1@2 f#1 ~@3 f#1!2", CJ: "a1 ~ a1@2 g#1@2 a1@2 b1 ~ b1@2 c#2@2 e2@2",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~ A B C D E F G H I J K L M F N O P Q R S T U V W X U Y Z AA AB AC AD AE AF AE AG AE AF AE AG AH AI AJ AK AL AM AN AO
  AE AF AE AG AE AF AE AP AQ AR AS AT AU AV AW AX AY AZ BA BB AE AF AE AG AE AF AE AG BC BD AN BE BF BG BH BI AE AF AE
  AG AE AF AE AG AE AF AE AG AE AF AE AG AE AF AE AG AE AF AE AG
>`.pickRestart({
  A: "[g#4,b4]@2 ~@2 [e4,g#4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3, [e4,e5] ~@3 e5 ~@11", // G#m E
  B: "[e4,a4,c#5,e5]@2 ~@2 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5]@2 ~@2 [e4,a4,c#5,e5]@2 ~@2", // A
  C: "[e4,g#4,b4,e5]@2 ~@2 [e4,g#4,b4,e5]@2 ~@2 [e4,g#4,b4,e5]@2 ~@2 [e4,g#4,b4,e5]@3 ~", // E
  D: "[e4,a4,c#5,e5]@2 ~@2 [e4,a4,c#5,e5]@3 ~ [f#4,b4,d#5]@2 ~@2 [f#4,b4,d#5]@2 ~@2", // A B
  E: "[e4,g#4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3, e5 ~@11 e4@2 ~@2", // E
  F: "[a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3, e4 ~@7", // A
  G: "[g#4,b4]@2 ~@2 [g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4]@2 ~@2, [e4,e5] ~@3 e4@2 ~@6 e5 ~@3", // G#m E
  H: "[e4,a4,c#5,e5]@2 ~@2 [a4,c#5,e5]@2 ~@2 [f#4,b4,d#5]@2 ~@2 [f#4,d#5] ~@3, ~@4 e4 ~@7 b4@2 ~@2", // A B D#m
  I: "[e4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3, [g#4,e5] ~@7 e5 ~@7", // E5 E C#m
  J: "[e4,a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3, ~@2 e4 ~@5", // A
  K: "[e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [e4,b4]@2 ~@2, ~@12 [g#4,e5] ~@3", // E E5 C#m
  L: "[e4,a4,c#5] ~@3 [e4,a4,c#5]@2 ~@2 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@3", // A B
  M: "[e4,g#4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3, e5 ~@15", // E
  N: "[g#4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [e4,b4]@2 ~@2, [e4,e5] ~@7 e4@2 ~@2 [g#4,e5] ~@3", // G#m E E5 E C#m
  O: "[e4,c#5,e5]@2 ~@2 [e4,c#5,e5] ~@3 [f#4,d#5]@2 ~@2 [f#4,d#5] ~@3, a4 ~@3 a4@2 ~@2 b4 ~@3 b4@2 ~@2", // C#m D#m
  P: "[e4,g#4,b4,e5] ~@3 [g#4,b4]@2 ~@2 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3, ~@4 [e4,e5] ~@11", // E G#m E
  Q: "[e4,a4,c#5,e5] ~@3 [e4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3, ~@2 a4 ~@5", // A C#m A
  R: "[g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [e4,b4]@2 ~@2, e4@2 ~@2 e4@2 ~@2 e4@2 ~@2 [g#4,e5] ~@3", // E E5 C#m
  S: "[a4,c#5] ~@3 [e4,a4,c#5] ~@3 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@3, e4 ~@7", // A B
  T: "[c4,e4,g4]@5 ~ [c4,e4,g4] ~ [c4,e4,g4]@6 ~@2", U: "[a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4] ~ [a3,c4,e4,g4]@6 ~@2",
  V: "[a3,d4,f4]@4 ~@2 [a3,d4,f4] ~ [a3,d4,f4]@6 ~@2", W: "[g3,b3,d4,f4]@4 ~@2 [g3,b3,d4,f4] ~ [g3,b3,d4,f4]@6 ~@2",
  X: "[c4,e4,g4]@4 ~@2 [c4,e4,g4] ~ [c4,e4,g4]@6 ~@2", Y: "[a3,b3,d4,f4]@4 ~@2 [a3,b3,d4,f4] ~ [a3,b3,d4,f4]@5 ~@3",
  Z: "[e3,g#3,d4,e4]@4 ~@2 [e3,g#3,d4,e4] ~ [e3,g#3]@3 ~ [e3,g#3,d4]@3 ~, ~@2 e4 ~, ~@8 d4 ~@7", // E7 E E7
  AA: "[a3,c#4,e4]@5 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@7 ~", AB: "[a3,c#4,e4]@4 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4]@4 ~@4",
  AC: "[d4,f#4,d5]@3 ~ [c#4,f#4,c#5]@2 ~@2 [b3,d4,f#4,b4]@5 ~@3, b4 ~@15", // D F#5 Bm
  AD: "[d#4,f#4,b4,d#5]@3 ~ [c#4,f#4] ~@3 [b3,d#4,f#4,b4]@5 ~ e4 ~, ~@2 c#5 ~@5", // B F#5 B
  AE: "[e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3 [e4,g#4,b4,e5] ~@3", // E
  AF: "[e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3", // A
  AG: "[e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@3", AH: "[b3,d4]@7 ~, g4",
  AI: "[a3,c#4,e4]@15 ~, a4@13 ~@3", AJ: "[a#3,c#4,f#4]@7 ~", AK: "[b3,d4,f#4] [a3,c#4,e4]", AL: "[g3,b3,d4]",
  AM: "[c#4,e4]@15 ~, a3@13 ~@3", AN: "[f#3,c#4,f#4]@13 ~@3", AO: "[b3,e4] ~ b3 ~, f#4@13 ~@3, ~@4 d#4@9 ~@3",
  AP: "[e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@3", // A B
  AQ: "[e4,g4,c5]@4 ~@2 [c4,e4,g4] ~ [c4,e4,g4]@7 ~", AR: "[a3,c4,e4,g4]@5 ~ [a3,c4,e4] ~ [a3,c4,e4]@7 ~",
  AS: "[a3,f4]@5 ~ [f3,a3,d4] ~ [f3,a3,d4]@6 ~@2, d4@3 ~@13", AT: "[g3,d4,f4]@3 ~ [g3,c4,e4]@3 ~ [g3,b3,d4]@7 ~",
  AU: "[g3,c4,e4,g4]@5 ~ [g3,c4,e4] ~ [g3,c4]@6 ~@2, ~ e4", AV: "[g3,c4,e4,g4]@4 ~@2 [g3,c4,e4] ~ [g3,c4,e4]@7 ~",
  AW: "[a3,b3,f4]@6 [a3,b3,d4] ~ [a3,b3,d4]@7 ~, d4 ~@3", AX: "[g#3,b3,d4,f4]@4 [g#3,c4,e4]@4 [g#3,b3,d4]@5 ~@3",
  AY: "[e4,a4,c#5,e5]@15 ~", AZ: "[e4,a4,c#5]@7 ~", BA: "[d4,f#4,b4,d5]@2 [c#4,f#4,c#5] ~ [b3,f#4,b4]@2 ~@2",
  BB: "[d#4,b4,d#5]@2 [c#4,c#5] ~ [b3,d#4,f#4,b4]@2 ~@2", BC: "[b3,d4,g4]@15 ~", BD: "[a3,c#4,e4,a4]@15 ~",
  BE: "e4@2 d4@2 [b3,c#4]@2 b3 ~, [b3,f#4]@7 ~ f#4@7 ~", // Bsus2 B5
  BF: "g3@3 ~@5 b3@4 d4@3 ~, g4@13 ~@3, [b3,d4]@3 ~@5, ~@4 g3@9 ~@3", // Bm
  BG: "c#4@4 e4@4 a4@4 g4 ~@3, a3@7 ~, a4@7 ~@9, e4 ~@7", BH: "~@4 e4@3 ~ g4@4 f#4 ~@3, c#4@13 ~@3, [f#3,f#4]@7 ~@9",
  BI: "b3 ~ b3 ~, [f#4,b4]@13 ~@3, e4@3 ~ d#4@8 ~@4", // B5
})).s("gm_piano").gain(0.36).pan(0.3)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B@4 C@2 D E F G H I J K L M N O P Q R S T U V W X ~@4 Y@3 Z@2 AA@2 AB ~@8 AC AD AE AF@2 AG AH AI AJ AK AL AM AN AO
  AP AQ ~@3 AR AS AT AU AV@2 AW AX AY ~@8 AZ@2 BA BB@2 BC BD BE BF BG BH BI AZ@2 BA BB@2 BC BD BE BF BG BH BI
>`.pickRestart({
  A: "[e4,b4,e5] ~@3 [e4,b4,e5] ~@4 [b4,e5] ~@2 [e4,b4,e5] ~@2 e4, ~@9 e4@3 ~@4", // E5
  B: "[[a4,e5]@2 ~@2 [e4,a4,e5] ~ e5 ~@2 [a4,e5] ~@2 [a4,e5] ~ a4 ~ [b4,e5] ~@3 [e4,b4,e5] ~ b4 ~@2 [b4,e5] e4@2 [b4,e5] ~ [b4,e5] ~ [a4,e5] ~@3 [e4,a4,e5] ~ a4 ~@2 [b4,d#5] f#4 ~ [f#4,b4,d#5] ~@3 [b4,e5] ~@3 [e4,b4,e5] ~ [b4,e5] ~@2 [b4,e5] ~@2 [e4,b4,e5] ~ [b4,e5] e4, ~@8 e4@2 ~@5 e4@3 ~@6 e4@2 ~@5 e4@3 ~@13 e4@2 ~@15]/4", // A5 E5 A5 B E5
  C: "[[e4,a4,e5] ~@3 [e4,a4,e5] ~ a4 e4 ~ [e4,a4,e5] e4@2 [a4,e5] ~ [a4,e5] ~ [b4,e5] ~@3 [b4,e5] ~ e4@3 [b4,e5] e4!2 [b4,e5] ~ [b4,e5] e4, ~@15 e4@2 ~@15]/2", // A5 E5
  D: "[a4,e5]@2 ~@2 [a4,e5] ~ a4!2 e4 [f#4,b4,d#5] ~@2 [f#4,d#5] ~ [f#4,d#5] e4", // A5 B D#m
  E: "[b4,e5]@2 ~@2 [b4,e5] ~ b4 [e4,b4] e4 [b4,e5] e4 ~ [b4,e5] ~ b4 e4, ~@11 e4@2 ~@3", // E5
  F: "[a4,e5]@2 ~@2 [e4,a4,e5] ~ e4 ~ e4 [a4,e5] e4!2 [a4,e5] ~ [a4,e5] e4", // A5
  G: "[e4,b4,e5] ~@3 [e4,b4,e5] ~ [e4,b4,e5] e4!2 [e4,b4,e5] e4!2 [e4,b4,e5] ~ b4 e4", // E5
  H: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [e4,a4] [a4,e5] ~ [b4,d#5] ~ e4 [f#4,b4,d#5] ~ [f#4,b4,d#5] e4", // A5 B
  I: "[b4,e5]@2 ~@2 [e4,b4,e5] ~ [e4,b4] b4 ~ [e4,b4,e5] ~ e4 [b4,e5] ~@3", // E5
  J: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [e4,a4,c5,e5] e4!2 [e4,a4,e5] ~ e4 [e4,a4,e5] ~ a4 e4", // A5 Am A5
  K: "[e4,b4,e5] ~@3 [e4,b4,e5] ~ [e4,b4] ~ e4 [e4,b4] ~@2 [b4,e5] ~ b4 ~, ~@11 e4@2 ~@3", // E5
  L: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ a4 ~@2 [f#4,b4] b3@2 [f#4,b4]@2 [f#4,b4] ~", // A5 B5
  M: "[e4,b4,e5]@2 ~@2 [e4,b4,e5] ~ [e4,b4,e5] [b4,e5] e4 [e4,b4] ~ e4 [e4,b4,e5] ~ b4 e4", // E5
  N: "[e4,a4,e5] ~@3 [e4,a4,e5] ~ [e4,a4] [e4,a4,e5] e4 [e4,a4,e5] ~ e4 [e4,a4,e5] ~ a4 e4", // A5
  O: "[e4,b4,e5]@2 ~@2 [e4,b4] ~ [e4,b4] [b4,e5] e4 [e4,b4] ~ e4 [e4,b4,e5] ~ b4 e4", // E5
  P: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [e4,a4,e5] a4 b3 [f#4,b4] b3@2 [f#4,b4]@2 ~@2", Q: "~@4 e4@11 ~, c3, ~@2 g3@11 ~@3",
  R: "~@3 c4@5, a2, ~ e3@7, ~ g3@3", S: "~@4 f4@11 ~, d3@13 ~@3, ~ a3@7",
  T: "~@7 d3, ~ g3@3 g4@4, ~@4 b3@5 ~ g3@6, ~@3 d4@2 ~ d4@2", U: "~@4 e4@11 ~, c3@7 ~, ~ g3@7",
  V: "~@6 g4@9 ~, e3, ~@2 g3@13 ~, ~@4 c4@11 ~", W: "~@3 f4@5, b2, ~ f3@7, ~ a3@3",
  X: "~@6 e4@9 ~, e3@7 ~, ~@2 g#3@13 ~, ~@2 d4@5 ~",
  Y: "[[e4,e5] ~@3 [e4,b4,e5] ~@2 b4 e4 [e4,e5] ~@2 e5 ~@3 e5@2 ~@2 [e4,e5] ~ e4 e5 e4 [e4,e5] ~@2 e5 ~@3 e5@2 ~@2 [e4,e5] ~ e4 e5 e4 [e4,e5] ~ e4 [e4,e5] ~ [e4,e5] e4, ~@11 e4@2 ~@2 e4@3 ~@9 e4@2 ~@2 e4@3 ~@14]/3", // E E5 E
  Z: "[[e4,e5]@2 ~@2 [e4,e5] ~ [e4,e5] e5 e4 [e4,e5] e4 ~ e5 ~ e5 ~ e5@2 ~@2 [e4,e5] ~ [e4,e5] ~ e4 e5 ~ e4 [e4,e5] ~ [e4,e5] e4, ~@11 e4@2 ~@2 e4@3 ~@14]/2", // E
  AA: "[[e4,e5]@2 ~@2 [e4,e5] ~@2 [e4,e5] ~ e5 ~ e4 [e4,e5] ~ e5 ~ e5@2 ~@2 [e4,e5] ~@2 [e4,e5] e4 e5 e4!2 e4@2 e5 e4, ~@8 e4@2 ~@5 e4@3 ~@10 e5 ~@3]/2", // E
  AB: "[e4,e5]@2 ~@2 [e4,e5] ~@2 e5 ~ b4 ~@2 b4 ~ b3 ~", // E
  AC: "[e4,b4,e5] ~@3 [e4,b4,e5] ~ [b4,e5] [e4,b4,e5] e4 [e4,e5] e4!2 [e4,b4,e5] ~@2 e4", // E5 E E5
  AD: "[e4,a4,e5] ~@3 [e4,e5] ~@2 [e4,e5] e4 [e4,a4,e5] e4!2 [e4,a4,e5] ~ e5 ~", // A5 E A5
  AE: "[b4,e5] ~@3 [e4,b4,e5] ~ [e4,b4,e5] b4 e4 [e4,b4] e4!2 [e4,b4,e5] ~ b4 e4", // E5
  AF: "[[e4,a4,e5]@2 ~@2 [a4,e5] ~@2 [e4,a4,e5] e4 [e4,b4] ~@2 b4 ~ b4 ~ [b4,e5] ~@3 [e4,b4,e5] ~ b4 [b4,e5] e4 [e4,b4,e5] e4 ~ [b4,e5] ~ b4 e4, ~@15 e4@2 ~@10 e4@3 ~@2]/2", // A5 E5
  AG: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ a4 [e4,a4,e5] e4 [e4,a4,e5] ~ e4 [e4,a4,e5] ~@2 e4", // A5
  AH: "[e4,b4,e5]@2 ~@2 [e4,b4,e5] ~ b4 [e4,b4,e5] ~ [e4,b4,e5] ~@2 [b4,e5] ~ [b4,e5] e4, ~@11 e4@2 ~@3", // E5
  AI: "[a4,b4] ~@3 [e4,a4] ~@2 [e4,a4] b3 [f#4,b4] ~ b3 [f#4,b4]@2 g3 ~, e4@3 ~@13", // Asus2 A5 B5
  AJ: "~@3 g4@4 g3, c3@13 ~@3, ~@2 g3@11 ~@3, ~@4 c4@11 ~", AK: "~@3 e4@5, a2@7 ~, ~ e3@7",
  AL: "~@2 a3@5 ~, d3@3 ~, ~ f3@5 ~@2", AM: "~@4 f3@2 b3@2 a3 b3 a3@2 ~@2 d3@2, g2@9 ~@7, ~@2 d3@7 ~@3 g3@4",
  AN: "~@3 e4@5, c3, ~ g3@7, ~ c4@3", AO: "~@3 c4@5, a2@7 ~, ~ e3@7, ~ g3@3", AP: "~@3 d4@5, b2@7 ~, ~ f3@7, ~ a3@3",
  AQ: "~@6 e4@8 e3 ~, e3@3 ~, ~@2 g#3@13 ~, ~@4 d4@11 ~", AR: "~@7 b4",
  AS: "[e4,e5] ~@3 [e4,e5] ~@2 e5 e4 e5 ~ e4 [e4,e5]@2 ~@2", // E
  AT: "[e4,a4,e5] ~@3 [e4,e5] ~@2 [e4,e5] e4 [e4,e5] ~@2 e5 ~@2 e4, ~@11 e4@2 ~@3", // A5 E
  AU: "[e4,b4,e5]@2 ~@2 [e4,b4,e5] ~ [b4,e5] [e4,b4,e5] e4 [e4,b4] ~ e4 [e4,b4,e5] ~ b4 e4", // E5
  AV: "[[e4,a4,e5] ~@3 [e4,a4,e5] ~ [a4,e5]!2 e4 [e4,b4] ~ e4 [e4,b4,e5] ~ [b4,e5] ~ [b4,e5]@2 ~@2 [e4,b4,e5] ~ [e4,b4,e5] [b4,e5] e4 [e4,b4,e5] ~@2 [e4,b4,e5] ~ [b4,e5] e4, ~@15 e4@4 ~@13]/2", // A5 E5
  AW: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [a4,e5]!2 e4 [e4,a4,e5] ~ e4 [e4,a4,e5] ~@2 e4", // A5
  AX: "[e4,b4,e5]@2 ~@2 [e4,b4,e5] ~ [b4,e5]!2 ~ [e4,b4,e5] ~ e4 [e4,b4,e5] ~ b4 e4", // E5
  AY: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [a4,e5] e4 ~ [f#4,b4] e4 ~ [f#4,b4]@2 d3 ~, ~@12 e4 ~@3", // A5 B5
  AZ: "[[e4,b4,e5] ~@3 [e4,b4,e5] ~ [e4,e5] ~ e4 e5 ~ e4 [e4,b4,e5] ~ b4 ~ [a4,e5] ~@3 [e4,a4,e5] ~ e5 e4 ~ e5 ~@2 [a4,e5] ~ a4 e4, ~@15 e4@4 ~@5 e4@2 ~ e4@2 ~@3]/2", // E5 E E5 A5
  BA: "[e4,b4,e5]@2 ~@2 [e4,b4,e5] ~ [b4,e5]!2 e4 [e4,e5] ~ e4 [e4,b4,e5] ~ b4 e4", // E5 E E5
  BB: "[[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [a4,e5] a4 e4!2 ~@2 [e4,b4,e5] ~@3 [b4,e5] ~@3 [e4,b4,e5] ~ [e4,b4,e5] [b4,e5] ~ [e4,e5] e4!2 [e4,b4,e5] ~@2 e4, ~@15 e4@3 ~@14]/2", // A5 E5 E E5
  BC: "[e4,a4,e5] ~@3 [e4,a4,e5] ~ a4 [a4,e5] e4 [e4,a4,e5] ~@2 [a4,e5] ~ a4 e4, ~@11 e4@2 ~@3", // A5
  BD: "[e4,b4]@3 ~ [b4,e5] ~ b4!2 e4 b4 e4!2 [e4,b4,e5] ~ [b4,e5] e4, e5 ~@3 e4@2 ~@10", // E5
  BE: "[e4,a4]@3 ~ [e4,a4,e5] ~ a4 [a4,e5] e4 [b4,e5] ~ e4 [e4,b4,e5] ~ b4 e4, e5 ~@15", // A5 E5
  BF: "[e4,b4,e5] ~@3 [e4,b4,e5] ~ [e4,b4] [b4,e5] e4 [e4,b4,e5] ~ e4 [e4,b4,e5] ~ [b4,e5] e4", // E5
  BG: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ a4 [a4,e5] ~ [e4,a4,e5] ~@2 [a4,e5] ~@2 e4, ~@11 e4@2 ~@3", // A5
  BH: "[e4,b4,e5]@2 ~@2 [e4,b4,e5] ~ [b4,e5]!2 ~ b4 ~ e4 [e4,b4,e5] ~@2 e4", // E5
  BI: "[e4,a4,e5]@2 ~@2 [e4,a4,e5] ~ [a4,e5]!2 ~ [e4,b4,e5] ~@2 [b4,e5] ~ [b4,e5] [e4,f4], ~@11 e4@2 ~@3", // A5 E5 Fmaj7
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.8)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A B ~ C D ~@3 E F G H ~@2 I J ~@3 K L ~@10 M ~ N ~ O ~ G ~ K ~@9 P@2 Q R S G T U V W ~@9 K X Y Z AA AB AC AD ~@8 AE
  AF K AG ~ AH AI AJ O AK AL R AE AF K AG ~ AH AI AJ O AK AL R
>`.pickRestart({
  A: "~@6 b4 ~@9", B: "e4@2 ~@5 a4 ~@3 e4!2 ~@3", C: "~@14 [b4,d#5] ~", D: "~@4 e4 ~@3", E: "~@4 e4 ~@2 e5 ~@8",
  F: "~ e4 ~@14", G: "~@14 e4 ~", H: "~@6 e5 ~@2 a4 ~@6", I: "~@9 e5 ~@5 e4", J: "~@9 b3 ~@5 b3", K: "~@7 e4 ~@8",
  L: "~@14 g3 ~", M: "~@14 f4 ~", N: "~@14 e5 ~", O: "~@7 e4 ~@6 e4 ~",
  P: "[~@6 e5 ~@8 e4@2 ~@6 e4 ~ e5 ~@4 [e4,e5] ~]/2", Q: "~@4 e4 ~ [a4,e5] ~@5 e4 ~@3", R: "~@6 e4!2 ~@8",
  S: "~@6 e4 ~@7 a4 ~", T: "~@10 b3 ~@5", U: "~@7 e3", V: "~ g3@3", W: "~@6 c4@7 ~@3", X: "~@14 [e4,e5] ~",
  Y: "~@9 e5 ~@4 [e4,e5] ~", Z: "~@9 e5 e4 ~@3 e4 ~", AA: "~@11 e4 ~@4", AB: "~@14 a4 ~", AC: "~@7 e4 ~@6 e5 ~",
  AD: "~@6 e4 ~@9", AE: "~@10 e4 ~@3 e4 ~", AF: "~@6 [e4,a4] ~@2 a4 ~@4 e4 ~", AG: "~@7 [e4,e5] ~ b4 ~@4 [b4,e5] ~",
  AH: "~@7 e4 ~@2 e4 ~@3 e5 ~", AI: "~@7 [e4,e5] ~@8", AJ: "~@6 e5 e4 ~@8", AK: "~@6 e4!3 ~@7",
  AL: "~@6 e4 ~@2 [e4,e5] ~@4 b4 ~", // E
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.8)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B C D E ~@6 F G H I J K L M N O P Q R S P Q T U@2 V W X Y M Z AA Y M AB AC AD AE AF AG AD AE AH AI@2 L AJ AK@4
  AL@2 AM AN AO P Q T AP AQ AR AS AT Y M AU AV Y M AW AX AY AZ BA BB AY BC BD BE BF BG BH BI BF BG BJ BI BF BG BJ BE BF
  BG BH BI BF BG BJ BI BF BG BJ
>`.pickRestart({
  A: "~ [e4,e5] [d#4,d#5] [e4,e5]", B: "[f#4,f#5] [e4,e5] [d#4,d#5] [c#4,c#5]",
  C: "[b3,b4] [g#4,g#5] [f#4,f#5] [g#4,g#5]", D: "[a4,a5]@3 ~ [g#4,g#5]@4 [f#4,f#5]@4 [e4,e5]@3 ~",
  E: "e5 ~@7, e6 ~@15", F: "~@4 [b3,b4]@2 [c#4,c#5] [d#4,d#5]", G: "[e4,e5] ~@3 [e4,e5] ~@3 [e4,e5]@8", H: "a4",
  I: "~ b3, b4@15 ~", J: "[c#4,c#5] [d#4,d#5]", K: "[e4,e5]", L: "[e5,e6]", M: "[b4,b5]",
  N: "[a4,a5]@4 [g#4,g#5]@2 [a4,a5]@2 [b4,b5]@7 ~", O: "~ [c4,c5] [e4,e5] [a4,a5]", P: "[g4,g5]@2 [e4,e5] [g4,g5]",
  Q: "[f4,f5]@2 [d4,d5] [e4,e5]", R: "[f4,f5]@2 ~@2 [e4,e5]@3 ~ [d4,d5]@8", S: "~@2 [e4,e5] [a4,a5]",
  T: "[f4,f5] [e4,e5] [d4,d5]@2", U: "[[e4,a4] [f#4,e5], c#5]/2",
  V: "[d4,d5]@2 ~@2 c#4@2 ~@2 [b3,b4]@7 ~, ~@4 c#5 ~@11", // D B
  W: "[d#4,d#5] ~ c#4 ~ [b3,b4]@2 [c#4,c#5] [d#4,d#5], ~@4 c#5 ~@11", // D# B C# D#
  X: "[e4,e5] ~ e5 ~ [e4,e5]@2 [b4,b5]@2, ~@4 e4 ~@11", Y: "[a4,a5]",
  Z: "[a4,a5]@2 g#4 [a4,a5] [b4,b5] [a4,a5] [g#4,g#5] [f#4,f#5], ~@4 g#5 ~@11", // A B A G# F#
// … 96 more lines

More by Billy Joel