Strudelify

Little Willy

Sweet

KeyE majorTempo130 bpm
0:00/0:00
// Little Willy — Sweet
// 130 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 6/4 at bar 11, 4/4 at bar 13, 6/4 at bar 36, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 5 "Fuzz L" named as a guitar, played on distortion guitar (its piano patch is not one); ch 6 "Fuzz R" named as a guitar, played on distortion guitar (its piano patch is not one)
// note: duplicate parts dropped: ch 11 "Melody" voice oohs (copy of ch 4 "Melody" distortion guitar); ch 6 "Fuzz R" distortion guitar (copy of ch 5 "Fuzz L" distortion guitar); ch 8 "6 String" acoustic guitar steel (copy of ch 7 "12 String" acoustic guitar steel)
// note: Full arrangement: all 106 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.

// chords · epiano1 · "Wurlitzer"
const epiano1 = note(`<
  ~ A@4 B C D E F G H@3 I J@3 K L@7 M@2 N O P Q R S T U V C D E W@2 X Y Z@2 AA AB AC@2 AD@2 AE AF AG AH AI AJ AK AL AM
  AN AO G AP AQ AR AS AT AU AV@8 ~ AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BN BO BR BD BS@2
>`.pickRestart({
  A: "[[e2,e3,b3,e4,b4]@31 ~]/2", B: "[e2,b3]@7 ~ a2@3 ~ b2@3 ~, [e3,e4]@5 ~@11", C: "b1@2 e2 ~",
  D: "e2@8 a2@2 a2 ~ a2@2 ~@2", E: "~@4 b2@3 ~ e2@7 ~", F: "e2@8 a2 ~ a2 ~ a2@2 ~@2", G: "~@3 b2",
  H: "[e2@7 ~ [e2,e3,b3,e4]@29 ~@3 [a3,e4,a4]@6 ~@2, ~@5 a2]/3", // E5 A5
  I: "[b3,f#4,b4]@4 ~@4 [e2,e3,b3,e4]@3 ~ a2@2 ~@2, b2@7 ~@9", // B5 E5
  J: "[[e2,e3,b3,e4]@7 ~ [e3,b3,e4]@28 ~@4 [a2,a3,e4,a4]@7 ~, d4 ~@7 e2@30 ~@10]/3", // E5 A5
  K: "[b3,f#4,b4]@5 ~@3 [e2,e3,b3,e4]@3 ~ a2@3 ~, b2@7 ~ c#4 ~@7", // B5 E5
  L: "[[e2,e3,b3,e4]@4 ~@4 b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1 ~ b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1 ~ b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ a1@2 a2 ~ a1@2 a2 ~, ~@8 [f#3,b3,f#4]@31 ~ [f#3,b3,f#4]@31 ~ [f#3,b3,f#4]@16 [f#3,b3,f#4]@15 ~ [a3,c#4,e4]@8]/7", // E5 B5 A
  M: "[a1@2 a2 ~ a1@2 a2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ [e2,b2,b3,e4]@4 ~@4, ~@8 [f#3,b3,f#4]@15 ~@9]/2", // E5 B5
  N: "[e3,a3,e4]@2 [a2,e3,a3,e4]@2 ~@6 [b2,b3] ~ [b2,f#3,b3,f#4]@2 ~@2, a2 ~@15", // A5 B B5
  O: "[e2,b2,b3,e4]@3 ~ [e2,b2,b3,e4]@2 ~@2, ~@8 a3 ~@7", P: "[a2,e3,a3,e4]!2 ~@4 [b2,f#3,b3,f#4] ~",
  Q: "[e2,b2,b3,e4]@5 ~@3 [e2,b2,b3,e4]@4 ~@4", R: "[a3,e4] [a2,e3,e4] ~@4 [b2,f#3,b3,f#4] ~, [a2,e3] ~ a3 ~@13",
  S: "[e2,b2,b3,e4]@6 ~@2 [e2,b2,b3,e4]@5 ~@3", T: "[e3,a3,e4] [a2,e3,a3,e4] ~@6, a2 ~@15", U: "~@4 b2@4 e2@7 ~",
  V: "e2@7 ~ a2@3 ~ b2@3 ~", W: "[[e2,e3,b3,e4]@29 ~@3]/2", X: "[a3,e4,a4]@3 ~ [b3,f#4,b4]@2 ~@2, a2@8 b2@7 ~",
  Y: "[e2,e3,b3,e4]@3 ~ a2@2 ~@2 [e2,e3,b3,e4]@7 ~, ~@8 d4 ~@7", Z: "[[e3,b3,e4]@7 ~, e2@15 ~]/2",
  AA: "[a2,a3,e4,a4]@7 ~ [b3,f#4,b4]@5 ~@3, ~@8 b2@7 ~", AB: "[e2,e3,b3,e4]@3 ~ a2@3 ~ [e2,e3,b3,e4]@4 ~@4, c#4 ~@15",
  AC: "[b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1 ~ b2 ~ b1 ~ b2 ~, [f#3,b3,f#4]@31 ~]/2", // B5
  AD: "[b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~, [f#3,b3,f#4]@31 ~]/2", // B5
  AE: "b1 ~ b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~, [f#3,b3,f#4]", // B5
  AF: "b1 ~ b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~, [f#3,b3,f#4]@15 ~", // B5
  AG: "a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~, [a3,c#4,e4]@13 ~@3", // A
  AH: "b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~ b1@2 b2 ~, [f#3,b3,f#4]@15 ~", // B5
  AI: "[e2,b2,b3,e4]@2 ~@2 [e3,a3,e4] [a2,e3,a3,e4] ~@2, ~@8 a2 ~@7", // E5 A5
  AJ: "~@2 [b2,b3] ~ [b2,f#3,b3,f#4]@2 ~@2 [e2,b2,b3,e4]@6 ~@2", AK: "[e2,b2,b3,e4]@2 ~@2 [a2,e3,a3,e4]!2 ~@2, a3 ~@15",
  AL: "~@4 [b2,f#3,b3,f#4]@2 ~@2 [e2,b2,b3,e4]@5 ~@3", // B5 E5
  AM: "[e2,b2,b3,e4]@2 ~@2 [a3,e4] [a2,e3,a3,e4] ~@2, ~@8 [a2,e3] ~@7", AN: "~@2 [b2,f#3,b3,f#4] ~ [e2,b2,b3,e4]@3 ~",
  AO: "[e2,b2,b3,e4]@5 ~@3 [e3,a3,e4]@2 [a2,e3,a3,e4]@2 ~@4, ~@8 a2 ~@7", AP: "e2@7 ~ e2@7 ~", AQ: "a2@3 ~ b2@3 ~ b1@8",
  AR: "e2 ~ e2@2", AS: "a2@2 a2 ~ a2@2 ~@6 b2@3 ~", AT: "e2@7 ~ [e2,e3,b3,e4]@3 ~ [e2,e3,b3,e4]@3 ~",
  AU: "[e2,e3,b3,e4]@3 ~ [e2,e3,b3,e4]@3 ~ [e2,e3,b3,e4]@3 ~ [e2,e3,b3,e4]@3 ~", // E5
  AV: "[[e2,e3,b3,e4]@3 ~ [e2,e3,b3,e4]@2 ~@2 [e2,e3,b3,e4]@31 ~ [e2,e3,b3,e4]@30 ~@2 [e2,e3,b3,e4]@31 ~ [e2,e3,b3,e4]@24]/8", // E5
  AW: "[f#2,c#3,c#4,f#4]@2 ~@2 [f#3,b3,f#4] [b2,f#3,b3,f#4] ~@2, ~@8 b2 ~@7", // F#5 B5
  AX: "~@2 [c#3,c#4] ~ [c#3,g#3,c#4,g#4]@2 ~@2 [f#2,c#3,c#4,f#4]@6 ~@2", // C# C#5 F#5
  AY: "[f#2,c#3,c#4,f#4]@2 ~@2 [b2,f#3,b3,f#4]!2 ~@2, b3 ~@15", // F#5 B5
  AZ: "~@4 [c#3,g#3,c#4,g#4]@2 ~@2 [f#2,c#3,c#4,f#4]@5 ~@3", // C#5 F#5
  BA: "[f#2,c#3,c#4,f#4]@2 ~@2 [b3,f#4] [b2,f#3,b3,f#4] ~@2, ~@8 [b2,f#3] ~@7", // F#5 B5
  BB: "~@2 [c#3,g#3,c#4,g#4] ~ [f#2,c#3,c#4,f#4]@3 ~", // C#5 F#5
  BC: "[f#2,c#3,c#4,f#4]@5 ~@3 [f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 ~@4, ~@8 b2 ~@7", BD: "~@3 c#3",
  BE: "f#2@7 ~ [f#2,c#3,c#4,f#4]@4 ~@4", // F#5
  BF: "[f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 ~@6 [c#3,c#4] ~ [c#3,g#3,c#4,g#4]@2 ~@2, b2 ~@15", // B5 C# C#5
  BG: "[f#2,c#3,c#4,f#4]@3 ~ [f#2,c#3,c#4,f#4]@2 ~@2, ~@8 b3 ~@7", BH: "[b2,f#3,b3,f#4]!2 ~@4 [c#3,g#3,c#4,g#4] ~",
  BI: "[f#2,c#3,c#4,f#4]@5 ~@3 [f#2,c#3,c#4,f#4]@4 ~@4", // F#5
  BJ: "[b3,f#4] [b2,f#3,f#4] ~@4 [c#3,g#3,c#4,g#4] ~, [b2,f#3] ~ b3 ~@13", // B5 C#5 B5
  BK: "[f#2,c#3,c#4,f#4]@6 ~@2 [f#2,c#3,c#4,f#4]@5 ~@3", BL: "[f#3,b3,f#4] [b2,f#3,b3,f#4] ~@6, b2 ~@15",
  BM: "~@4 c#3@4 f#2@7 ~", BN: "f#2@7 ~ b2@3 ~ c#3@3 ~", BO: "c#2@2 f#2 ~", BP: "f#2@8 b2@2 b2 ~ b2@2 ~@2",
  BQ: "~@4 c#3@3 ~ f#2@7 ~", BR: "f#2@8 b2 ~ b2 ~ b2@2 ~@2", BS: "[f#2@3 ~]/2",
})).s("gm_epiano1").gain(0.26).pan(0.6)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A@2 B@2 C D E D F G H I J K I@2 L K M N O N P N Q R S T U T V W X Y Z C D E D I@2 R I@2 AA R I N AB N AC N@2 AD N AE
  AF AG AH AI AH AJ G AK AL AM AN H I@5 AO AP AQ AP AR AS AT AU AV AW AV AX AY AZ BA BB BA BC BD BE BF BG BH BI BJ BI BH
  BI BK AY BL@2
>`.pickRestart({
  A: "[e1@31 ~]/2", B: "[e1@15 ~]/2", C: "e1@7 ~ a1@2 a1 ~ a1@2 ~@2", D: "~@2 b1 ~ b1@3 ~ e1@6 ~@2",
  E: "e1@8 a1 ~ a1 ~ a1@2 ~@2", F: "e1@7 ~ a1 ~ a1 ~ a1@2 ~@2", G: "~@10 b1 ~ b1@4", H: "e1@6 ~@2 e1 ~ e1 ~ e1 ~ e1 ~",
  I: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", J: "e1 ~ e1 ~ e1 ~ e1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  K: "b1 ~ b1 ~ b1 ~ b1 ~ e1 ~ e1 ~ e1 ~ e1 ~", L: "e1 ~ e1 ~ e1 a#1 f#1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  M: "e1 ~ e1 ~ e1 ~ e1 ~ b1 ~ b1 ~ b1 ~ b1 ~", N: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  O: "b1 ~ f#1 ~ g#1@2 a1@2 b1 ~ b1 ~ b1 ~ b1 ~", P: "b1@2 f#1@2 g#1@2 a1@2 b1 ~ b1 ~ b1 ~ b1 ~",
  Q: "b1 ~ b1 ~ b1 ~ b1 ~ a1 ~ a1 ~ a1 ~ a1 ~", R: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  S: "b1 ~ b1 ~ b1 ~ b1 ~ e1@5 ~@3", T: "a1!2 ~@3 a1 b1 ~", U: "e1@5 ~@3 e1@6 ~@2", V: "e1@3 ~ e1@2 ~ e1",
  W: "a1 ~ a1 ~@7 a1@2 b1@2 ~@2", X: "e1@6 ~@2 e1@5 ~ e1@2", Y: "a1!2 ~@6", Z: "~@2 b1 ~ b1@4 e1@6 ~@2",
  AA: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 a#1 f#1 ~", AB: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ f#1 ~ g#1@2 a1@2",
  AC: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 f#1@2 g#1@2 a1@2", AD: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  AE: "e1@5 ~@3 a1@2 a1@2 ~@4", AF: "~@2 a1@2 b1@2 ~@2 e1@5 ~@3", AG: "e1@3 ~ a1!2 ~@2", AH: "~ a1 b1 ~ e1@3 ~",
  AI: "e1@4 ~@2 e1@2 a1 ~ a1@2 ~@4", AJ: "e1@5 ~ e1@2 a1@2 a1@2 ~@4", AK: "e1@6 ~@2 e1@7 ~",
  AL: "a1@2 a1 ~ a1@2 ~@4 b1 ~ b1@3 ~", AM: "e1@3 ~ e1@4", AN: "a1 ~ a1 ~ a1@2 ~@4 b1 ~ b1@3 ~",
  AO: "e1 ~ e1 ~ e1 ~ e1 ~ e2 ~ e2 ~ e2@2 g2@2", AP: "a2@2 b2@2 e2@2 d2@2 e2 ~ e2@2 g2@2 a2@2",
  AQ: "b2@2 a2@2 g2@2 e2 ~ e2 ~ e2 ~ e2@2 g2@2", AR: "b2@2 a2@2 g2@2 e2 ~@9", AS: "f#1@5 ~@3 b1@2 b1@2 ~@4",
  AT: "~@2 b1@2 c#2@2 ~@2 f#1@5 ~@3", AU: "f#1@3 ~ b1!2 ~@2", AV: "~ b1 c#2 ~ f#1@3 ~",
  AW: "f#1@4 ~@2 f#1@2 b1 ~ b1@2 ~@4", AX: "f#1@5 ~ f#1@2 b1@2 b1@2 ~@4", AY: "~@10 c#2 ~ c#2@4",
  AZ: "f#1@6 ~@2 f#1@5 ~@3", BA: "b1!2 ~@3 b1 c#2 ~", BB: "f#1@5 ~@3 f#1@6 ~@2", BC: "f#1@3 ~ f#1@2 ~ f#1",
  BD: "b1 ~ b1 ~@7 b1@2 c#2@2 ~@2", BE: "f#1@6 ~@2 f#1@5 ~ f#1@2", BF: "b1!2 ~@6", BG: "~@2 c#2 ~ c#2@4 f#1@6 ~@2",
  BH: "f#1@7 ~ b1@2 b1 ~ b1@2 ~@2", BI: "~@2 c#2 ~ c#2@3 ~ f#1@6 ~@2", BJ: "f#1@8 b1 ~ b1 ~ b1@2 ~@2",
  BK: "f#1@7 ~ b1 ~ b1 ~ b1@2 ~@2", BL: "[f#1@3 ~]/2",
})).s("gm_electric_bass_finger").gain(0.26).pan(0.7)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  ~@11 A@3 B@4 C D@6 E@4 F@2 G@2 H@2 I ~@4 J@2 K L@3 K M N@4 O@2 P Q R S T U V W X Y Z ~@3 AA@3 ~@3 AB@5 AC AD AE AF AG
  AH AI AJ AK@2 AL@2 AM@2 AN@2 AO AP AQ AR AS AP AT AU AV AW@2
>`.pickRestart({
  A: "[~ [e3,e4,b4]@4 [a2,e4,a4]]/3", B: "[[b2,f#4,b4] [e3,e4,b4]@6 [a2,e4,a4]]/4", C: "[b2,f#4,b4] [e3,e4,b4]",
  D: "[~@8 b5@31 ~ a5@31 ~ [b2,b4,f#5,b5]@24, ~@8 [b2,b4,f#5]@63 ~@25]/6", // B5
  E: "[~@8 [a2,a4,e5,a5]@15 ~ [b2,b4,f#5,b5]@16 b5@8 a5@6 ~@6 [f#5,b5]@3 ~, ~@20 e6@7 ~@5]/4", // A5 B5
  F: "[[b5,e6]@6 ~@2 b5@8 a5@7 ~@5 [f#5,b5]@2 ~@2, ~@8 e6@15 ~@9]/2", // E5 B5
  G: "[[b5,e6]@7 ~ b5@7 ~ a5@6 ~@6 [f#5,b5]@3 ~, ~@4 e6@7 ~@5]/2", H: "[[b5,e6]@7 ~ b5@8 a5@8 ~@8, ~ e6@2 ~]/2",
  I: "~@4 [f#5,b5]@3 ~ [b5,e6]@8", J: "[e3,e4,b4]/2", K: "[a2,e4,a4] [b2,f#4,b4]", L: "[e3,e4,b4]/3", M: "[e3,e4,b4]",
  N: "[b5@31 ~ a5@31 ~, [b2,b4,f#5]@63 ~]/4", O: "[[b2,b4,f#5,b5]@31 ~]/2", P: "[a2,a4,e5,a5]@15 ~",
  Q: "[b2,b4,f#5,b5]", R: "b5@4 a5@3 ~, e6@7 ~", S: "~@4 [f#5,b5]@3 ~ [b5,e6]@6 ~@2", T: "b5@8 a5@7 ~, e6@15 ~",
  U: "~@4 [f#5,b5]@2 ~@2 [b5,e6]@7 ~", V: "b5@7 ~ a5@6 ~@2, e6@7 ~", W: "~@4 [f#5,b5]@3 ~ [b5,e6]@7 ~", X: "b5 a5, e6",
  Y: "~@12 [f#5,b5]@3 ~", Z: "[b5,e6] ~", AA: "[~ [e3,e5,b5,e6]@4 ~]/3", AB: "[~@8 [b5,e6]@63 ~@9]/5",
  AC: "c#6@4 b5@3 ~, f#6@7 ~", AD: "~@4 [g#5,c#6]@3 ~ [c#6,f#6]@6 ~@2", AE: "c#6@8 b5@7 ~, f#6@15 ~",
  AF: "~@4 [g#5,c#6]@2 ~@2 [c#6,f#6]@7 ~", AG: "c#6@7 ~ b5@6 ~@2, f#6@7 ~", AH: "~@4 [g#5,c#6]@3 ~ [c#6,f#6]@7 ~",
  AI: "c#6 b5, f#6", AJ: "~@12 [g#5,c#6]@3 ~", AK: "[[c#6,f#6]@8 c#6@8 b5@6 ~@6 [g#5,c#6]@3 ~, ~@4 f#6@7 ~@5]/2",
  AL: "[[c#6,f#6]@6 ~@2 c#6@8 b5@7 ~@5 [g#5,c#6]@2 ~@2, ~@8 f#6@15 ~@9]/2", // F#5 C#5
  AM: "[[c#6,f#6]@7 ~ c#6@7 ~ b5@6 ~@6 [g#5,c#6]@3 ~, ~@4 f#6@7 ~@5]/2", // F#5 C#5
  AN: "[[c#6,f#6]@7 ~ c#6@8 b5@8 ~@8, ~ f#6@2 ~]/2", AO: "~@4 [g#5,c#6]@3 ~ [c#6,f#6]@8",
  AP: "[c#5,f#5,c#6]@7 ~ [b4,f#5,b5]@7 ~", AQ: "~@4 [g#5,c#6]@3 ~ [c#5,f#5,c#6]@7 ~, ~ c#5@2 ~@5",
  AR: "[c#5,c#6]@8 ~ b5@6 ~, f#5@7 ~, ~@4 b4@3 ~", AS: "~@4 [c#5,g#5,c#6]@3 ~ [c#5,f#5,c#6]@7 ~",
  AT: "~@4 [g#5,c#6]@2 ~@2 [c#5,f#5,c#6]@7 ~, ~ c#5@2 ~@5", AU: "[c#5,f#5,c#6]@8 [b4,f#5,b5]@7 ~",
  AV: "~@12 [c#5,g#5,c#6]@3 ~", AW: "[[c#5,f#5,c#6]@3 ~]/2",
})).s("gm_rock_organ").gain(0.21).pan(0.3)

// chords · distortion guitar · "Fuzz L"
const distortion_guitar = note(`<
  ~ A@2 B@2 C D E F C G H@3 I J@3 K L@6 M@3 N O P Q R O S T C D E F A@2 U V A@2 W X Y@4 Z@2 AA AB AC AD AE AF AG AH AE G
  AI AJ AK AJ AL AM AN@8 ~ AO AP AQ AR AS AT AQ AU AV AW AX AY AZ BA AX BB BC BD BE BF BG BD BE BD AU BH@2
>`.pickRestart({
  A: "[[e3,b3,e4]@31 ~]/2", B: "[[e3,b3,e4]@15 ~]/2", C: "[e2,b2]@6 ~@2 [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 ~@2",
  D: "~@2 [b2,f#3] ~ [b2,f#3]@2 ~@2 [e2,b2]@7 ~", E: "[e2,b2]@7 ~ [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 ~@2",
  F: "~@2 [b2,f#3] ~ [b2,f#3]@2 ~@2 [e2,b2]@5 ~@3, ~@8 f3 ~@7", G: "~@10 [b2,f#3] ~ [b2,f#3]@2 ~@2",
  H: "[[e2,b2]@8 [e3,b3,e4]@31 ~ [e3,a3,e4]@6 ~@2]/3", I: "[f#3,b3,f#4]@7 ~ [e3,b3,e4]@3 ~ [e3,a3,e4]@3 ~, a#3 ~@15",
  J: "[[e3,b3,e4]@7 ~ [e3,b3,e4]@31 ~ [e3,a3,e4]@6 ~@2]/3", K: "[f#3,b3,f#4]@6 ~@2 [e3,b3,e4]@3 ~ [e3,a3,e4]@2 ~@2",
  L: "[[e3,b3,e4]@7 ~ [b2,f#3,b3]@31 ~ [b2,f#3,b3]@31 ~ [b2,f#3,b3]@24]/6", // E5 B5
  M: "[~@8 [a2,e3,a3]@15 ~ [b2,f#3,b3]@15 ~ [b2,e3]@5 ~@3]/3", N: "[e3,a3]@2 [e3,a3] ~ [e3,a3] ~@7 [b2,f#3]@2 ~@2",
  O: "[b2,e3]@3 ~ [b2,e3]@3 ~", P: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~@5 [e3,a3] ~ [b2,f#3]@2 ~@2",
  Q: "[b2,e3]@6 ~@2 [b2,e3]@5 ~@3", R: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~@5 [e3,a3] ~ [b2,f#3] ~@3",
  S: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~@11", T: "~@2 [b2,f#3] ~ [b2,f#3]@2 ~@2 [e2,b2]@8",
  U: "[e3,a3,e4]@6 ~@2 [f#3,b3,f#4]@7 ~, ~@8 a#3 ~@7", V: "[e3,b3,e4]@3 ~ [e3,a3,e4]@3 ~ [e3,b3,e4]@7 ~",
  W: "[e3,a3,e4]@3 ~ [f#3,b3,f#4]@3 ~", X: "[e3,b3,e4]@3 ~ [e3,a3,e4]@2 ~@2 [e3,b3,e4]@7 ~", Y: "[[b2,f#3,b3]@31 ~]/2",
  Z: "[[b2,f#3,b3]@15 ~]/2", AA: "[a2,e3,a3]@15 ~", AB: "[b2,f#3,b3]@15 ~",
  AC: "[b2,e3]@5 ~@3 [e3,a3]@2 [e3,a3] ~ [e3,a3] ~@3", AD: "~@2 [b2,f#3] ~ [b2,e3]@3 ~",
  AE: "[b2,e3]@6 ~@2 [e3,a3] ~ [e3,a3] ~ [e3,a3] ~@3", AF: "~@2 [e3,a3] ~ [b2,f#3]@2 ~@2 [b2,e3]@6 ~@2",
  AG: "[b2,e3]@5 ~@3 [e3,a3] ~ [e3,a3] ~ [e3,a3] ~@3", AH: "~@2 [e3,a3] ~ [b2,f#3] ~@3 [b2,e3]@6 ~@2",
  AI: "[e2,b2]@4 [e2,b2]@3 ~", AJ: "[a2,e3]@2 [a2,e3] ~ [a2,e3]@2 ~@4 [b2,f#3] ~ [b2,f#3]@2 ~@2",
  AK: "[e2,b2]@7 ~ [e2,b2]@7 ~", AL: "[e2,b2]@5 ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~@3, f3 ~@15",
  AM: "[e2,b2,e3] ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~ e3 ~ [e2,b2,e3] ~ e3 ~", // E5
  AN: "[[e2,b2,e3] ~ e3 ~ [e2,b2,e3] ~ e3 ~ [e3,b3,e4]@31 ~ [e3,b3,e4]@30 ~@2 [e3,b3,e4]@31 ~ [e3,b3,e4]@24]/8", // E5
  AO: "[c#3,f#3]@5 ~@3 [f#3,b3]@2 [f#3,b3] ~ [f#3,b3] ~@3", AP: "~@2 [c#3,g#3] ~ [c#3,f#3]@3 ~",
  AQ: "[c#3,f#3]@6 ~@2 [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@3", AR: "~@2 [f#3,b3] ~ [c#3,g#3]@2 ~@2 [c#3,f#3]@6 ~@2",
  AS: "[c#3,f#3]@5 ~@3 [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@3", AT: "~@2 [f#3,b3] ~ [c#3,g#3] ~@3 [c#3,f#3]@6 ~@2",
  AU: "~@10 [c#3,g#3] ~ [c#3,g#3]@2 ~@2", AV: "[f#2,c#3]@8 [c#3,f#3]@5 ~@3",
  AW: "[f#3,b3]@2 [f#3,b3] ~ [f#3,b3] ~@7 [c#3,g#3]@2 ~@2", AX: "[c#3,f#3]@3 ~ [c#3,f#3]@3 ~",
  AY: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@5 [f#3,b3] ~ [c#3,g#3]@2 ~@2", AZ: "[c#3,f#3]@6 ~@2 [c#3,f#3]@5 ~@3",
  BA: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@5 [f#3,b3] ~ [c#3,g#3] ~@3", BB: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@11",
  BC: "~@2 [c#3,g#3] ~ [c#3,g#3]@2 ~@2 [f#2,c#3]@8", BD: "[f#2,c#3]@6 ~@2 [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 ~@2",
  BE: "~@2 [c#3,g#3] ~ [c#3,g#3]@2 ~@2 [f#2,c#3]@7 ~", BF: "[f#2,c#3]@7 ~ [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 ~@2",
  BG: "~@2 [c#3,g#3] ~ [c#3,g#3]@2 ~@2 [f#2,c#3]@5 ~@3, ~@8 g3 ~@7", BH: "[[f#2,c#3]@3 ~]/2",
})).s("gm_distortion_guitar").gain(0.51)

// chords · acoustic guitar steel · "12 String"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C D C E F G H ~@15 I J K L M N O P Q R S T Q ~@16 U V W S X S R G Y L O Z H ~@10 AA AB AC AD AE AD AF AG AH
  AI AJ AK AL AM AN AO AP AF AD AQ AP AF AD AQ AG AR ~
>`.pickRestart({
  A: "[[e3,b3,e4]@29 ~ [e2,e3,b3,e4]!2]/2", B: "[[e2,e3,b3,e4]@29 ~ [e2,e3,b3,e4] [e2,b3,e4]]/2",
  C: "[e3,b3,e4,b4]@6 ~@2 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@3", // E5 A5
  D: "~@2 [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4]@2 ~@2 [e3,b3,e4,b4]@6 ~@2", // B5 E5
  E: "~@2 [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@3 [e3,b3,e4,b4]@6 ~@2", // B5 E5
  F: "[e3,b3,e4]@6 ~@2 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,f#4,a4] ~@3, b4 ~@3", G: "~@6 [b2,b3,f#4,b4] ~",
  H: "[e3,b3,e4,b4]@7 ~@9", I: "~@2 [e3,b3,e4,b4] ~",
  J: "[a2,a3,e4,f#4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@7 [b2,b3,f#4,b4]@2 ~@2", // F#m7 A5 B5
  K: "[e3,b3,e4,b4]@5 ~@3 [e3,b3,e4,b4]@4 ~@4", // E5
  L: "[a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@7 [b2,b3,f#4,b4]@2 ~@2", // A5 B5
  M: "[e3,b3,e4,b4]@3 ~ [e3,b3,e4,b4]@2 ~@2", N: "[a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@9 [b2,b3,f#4,b4]@2 ~@2",
  O: "[e3,b3,e4,b4]@6 ~@2 [e3,b3,e4,b4]@5 ~@3", P: "[a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@11",
  Q: "~@4 [b2,b3,f#4,b4]@2 ~@2 [e3,b3,e4,b4]@7 ~", // B5 E5
  R: "[e3,b3,e4,b4]@5 ~@3 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@3", // E5 A5
  S: "~@2 [b2,b3,f#4,b4] ~ [e3,b3,e4,b4]@3 ~", // B5 E5
  T: "[e3,b3,e4,b4]@5 ~@3 [a2,a3,e4,a4] ~ [a2,a3,e4,f#4,a4] ~ [a2,a3,e4,f#4,a4] ~@3", // E5 A5 F#m7
  U: "[e3,b3,e4,b4]@4 ~@4 [a2,a3,e4,f#4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@3", // E5 F#m7 A5
  V: "~@4 [b2,b3,f#4,b4]@2 ~@2 [e3,b3,e4,b4]@5 ~@3", // B5 E5
  W: "[e3,b3,e4,b4]@4 ~@4 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@3", // E5 A5
  X: "[e3,b3,e4,b4]@4 ~@4 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@5", Y: "[e3,b3,e4,b4]@7 ~ [e3,b3,e4,b4]@5 ~@3",
  Z: "[a2,a3,e4,a4] ~ [a2,a3,e4,f#4,a4] ~ [a2,a3,e4,f#4,a4] ~@7 [b2,b3,f#4,b4]@2 ~@2", // A5 F#m7 B5
  AA: "[f#3,c#4,f#4,c#5]@4 ~@4 [b2,b3,f#4,g#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@3", // F#5 G#m7 B5
  AB: "~@4 [c#3,c#4,g#4,c#5]@2 ~@2 [f#3,c#4,f#4,c#5]@5 ~@3", // C#5 F#5
  AC: "[f#3,c#4,f#4,c#5]@4 ~@4 [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@3", // F#5 B5
  AD: "~@2 [c#3,c#4,g#4,c#5] ~ [f#3,c#4,f#4,c#5]@3 ~", // C#5 F#5
  AE: "[f#3,c#4,f#4,c#5]@4 ~@4 [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@5", // F#5 B5
  AF: "[f#3,c#4,f#4,c#5]@5 ~@3 [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@3", AG: "~@6 [c#3,c#4,g#4,c#5] ~",
  AH: "[f#3,c#4,f#4,c#5]@7 ~ [f#3,c#4,f#4,c#5]@4 ~@4", // F#5
  AI: "[b2,b3,f#4,g#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@7 [c#3,c#4,g#4,c#5]@2 ~@2", // G#m7 B5 C#5
  AJ: "[f#3,c#4,f#4,c#5]@5 ~@3 [f#3,c#4,f#4,c#5]@4 ~@4", // F#5
  AK: "[b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@7 [c#3,c#4,g#4,c#5]@2 ~@2", // B5 C#5
  AL: "[f#3,c#4,f#4,c#5]@3 ~ [f#3,c#4,f#4,c#5]@2 ~@2", // F#5
  AM: "[b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@9 [c#3,c#4,g#4,c#5]@2 ~@2", // B5 C#5
  AN: "[f#3,c#4,f#4,c#5]@6 ~@2 [f#3,c#4,f#4,c#5]@5 ~@3", AO: "[b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@11",
  AP: "~@4 [c#3,c#4,g#4,c#5]@2 ~@2 [f#3,c#4,f#4,c#5]@7 ~", // C#5 F#5
  AQ: "[f#3,c#4,f#4,c#5]@5 ~@3 [b2,b3,f#4,b4] ~ [b2,b3,f#4,g#4,b4] ~ [b2,b3,f#4,g#4,b4] ~@3", // F#5 B5 G#m7
  AR: "[f#2,f#3,c#4,f#4,c#5]", // F#5
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.6)
// … 140 more lines

More by Sweet