Strudelify
Little Willy cover art

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

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

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A@4 B C B C B D E F G H F@2 I H J K L K M K N O P Q R Q S Q S T C B C B C F@2 O F@2 U O F K V K W K@2 X K Y Z Y Z AA
  Z AA D AB AC AB AC E F@5 AD AE AF AE AG AH AI AH AI AJ AI AJ AK AL AM AL AM AN AM AN AO AP AQ AP AQ AP AQ AP AQ AK
  AR@2
>`.pickRestart({
  A: "[e1@31 ~]/2", B: "e1@7 ~ a1@2 a1 ~ a1@2 ~@2", C: "~@2 b1 ~ b1@3 ~ e1@6 ~@2", D: "~@10 b1 ~ b1@4",
  E: "e1@6 ~@2 e1 ~ e1 ~ e1 ~ e1 ~", F: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  G: "e1 ~ e1 ~ e1 ~ e1 ~ a1 ~ a1 ~ a1 ~ a1 ~", H: "b1 ~ b1 ~ b1 ~ b1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  I: "e1 ~ e1 ~ e1 a#1 f#1 ~ a1 ~ a1 ~ a1 ~ a1 ~", J: "e1 ~ e1 ~ e1 ~ e1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  K: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", L: "b1 ~ f#1 ~ g#1@2 a1@2 b1 ~ b1 ~ b1 ~ b1 ~",
  M: "b1@2 f#1@2 g#1@2 a1@2 b1 ~ b1 ~ b1 ~ b1 ~", N: "b1 ~ b1 ~ b1 ~ b1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  O: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ b1 ~", P: "b1 ~ b1 ~ b1 ~ b1 ~ e1@5 ~@3", Q: "a1!2 ~@3 a1 b1 ~",
  R: "e1@5 ~@3 e1@6 ~@2", S: "e1@3 ~ e1@2 ~ e1", T: "a1!2 ~@6", U: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 a#1 f#1 ~",
  V: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ f#1 ~ g#1@2 a1@2", W: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 f#1@2 g#1@2 a1@2",
  X: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", Y: "e1@5 ~@3 a1@2 a1@2 ~@4", Z: "~ a1 b1 ~ e1@3 ~",
  AA: "e1@4 ~@2 e1@2 a1 ~ a1@2 ~@4", AB: "e1@6 ~@2 e1@7 ~", AC: "a1@2 a1 ~ a1@2 ~@4 b1 ~ b1@3 ~",
  AD: "e1 ~ e1 ~ e1 ~ e1 ~ e2 ~ e2 ~ e2@2 g2@2", AE: "a2@2 b2@2 e2@2 d2@2 e2 ~ e2@2 g2@2 a2@2",
  AF: "b2@2 a2@2 g2@2 e2 ~ e2 ~ e2 ~ e2@2 g2@2", AG: "b2@2 a2@2 g2@2 e2 ~@9", AH: "f#1@5 ~@3 b1@2 b1@2 ~@4",
  AI: "~ b1 c#2 ~ f#1@3 ~", AJ: "f#1@4 ~@2 f#1@2 b1 ~ b1@2 ~@4", AK: "~@10 c#2 ~ c#2@4", AL: "f#1@6 ~@2 f#1@5 ~@3",
  AM: "b1!2 ~@3 b1 c#2 ~", AN: "f#1@3 ~ f#1@2 ~ f#1", AO: "b1!2 ~@6", AP: "~@2 c#2 ~ c#2@3 ~ f#1@6 ~@2",
  AQ: "f#1@7 ~ b1@2 b1 ~ b1@2 ~@2", AR: "[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 S R I T U V ~@3 W@3 ~@3 X@5 Y Z AA Z Y Z AA
  AB AC@2 AD@2 AE@2 AF@2 AG AH AI AJ AK AH AI AH AL AM@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]@6 ~@2 b5@8 a5@6 ~@6 [f#5,b5]@3 ~, ~@8 e6@15 ~@9]/2", H: "[[b5,e6]@3 ~ b5@4 a5@4 ~@4, ~@8 e6@15 ~@9]/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: "~@12 [f#5,b5]@3 ~", V: "[b5,e6] ~", W: "[~ [e3,e5,b5,e6]@4 ~]/3", X: "[~@8 [b5,e6]@63 ~@9]/5",
  Y: "c#6@4 b5@3 ~, f#6@7 ~", Z: "~@4 [g#5,c#6]@3 ~ [c#6,f#6]@6 ~@2", AA: "c#6@8 b5@7 ~, f#6@15 ~",
  AB: "~@12 [g#5,c#6]@3 ~", AC: "[[c#6,f#6]@8 c#6@8 b5@6 ~@6 [g#5,c#6]@3 ~, ~@4 f#6@7 ~@5]/2",
  AD: "[[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
  AE: "[[c#6,f#6]@6 ~@2 c#6@8 b5@6 ~@6 [g#5,c#6]@3 ~, ~@8 f#6@15 ~@9]/2", // F#5 C#5
  AF: "[[c#6,f#6]@3 ~ c#6@4 b5@4 ~@4, ~@8 f#6@15 ~@9]/2", AG: "~@4 [g#5,c#6]@2 ~@2 [c#6,f#6]@7 ~",
  AH: "[c#5,f#5,c#6]@7 ~ [b4,f#5,b5]@7 ~", AI: "~@4 [g#5,c#6]@3 ~ [c#5,f#5,c#6]@7 ~, ~ c#5@2 ~@5",
  AJ: "[c#5,c#6]@8 ~ b5@6 ~, f#5@7 ~, ~@4 b4@3 ~", AK: "~@4 [c#5,g#5,c#6]@3 ~ [c#5,f#5,c#6]@7 ~",
  AL: "~@12 [c#5,g#5,c#6]@3 ~", AM: "[[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@4 B C D E B F G@3 H I@3 J K@8 L M N O N P N Q C B C D E A@2 R S A@2 T S U@6 V W X Y Z AA Z AB Z F AC AD AE AD AF
  AG AH@8 ~ AI AJ AK AL AK AM AK AN AO AP AQ AR AQ AS AQ AT AU AV AU AW AX AV AU AV AN AY@2
>`.pickRestart({
  A: "[[e3,b3,e4]@31 ~]/2", B: "[e2,b2]@6 ~@2 [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 ~@2",
  C: "~@2 [b2,f#3] ~ [b2,f#3]@2 ~@2 [e2,b2]@7 ~", D: "[e2,b2]@7 ~ [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 ~@2",
  E: "~@2 [b2,f#3] ~ [b2,f#3]@2 ~@2 [e2,b2]@5 ~@3, ~@8 f3 ~@7", F: "~@10 [b2,f#3] ~ [b2,f#3]@2 ~@2",
  G: "[[e2,b2]@8 [e3,b3,e4]@31 ~ [e3,a3,e4]@6 ~@2]/3", H: "[f#3,b3,f#4]@7 ~ [e3,b3,e4]@3 ~ [e3,a3,e4]@3 ~, a#3 ~@15",
  I: "[[e3,b3,e4]@7 ~ [e3,b3,e4]@31 ~ [e3,a3,e4]@6 ~@2]/3", J: "[f#3,b3,f#4]@6 ~@2 [e3,b3,e4]@3 ~ [e3,a3,e4]@2 ~@2",
  K: "[[e3,b3,e4]@7 ~ [b2,f#3,b3]@31 ~ [b2,f#3,b3]@31 ~ [b2,f#3,b3]@31 ~ [a2,e3,a3]@15 ~ [b2,f#3,b3]@8]/8", // E5 B5 A5 B5
  L: "~@8 [b2,e3]@5 ~@3", M: "[e3,a3]@2 [e3,a3] ~ [e3,a3] ~@7 [b2,f#3]@2 ~@2", N: "[b2,e3]@3 ~ [b2,e3]@3 ~",
  O: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~@5 [e3,a3] ~ [b2,f#3]@2 ~@2", // A5 B5
  P: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~@5 [e3,a3] ~ [b2,f#3] ~@3", Q: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~@11",
  R: "[e3,a3,e4]@6 ~@2 [f#3,b3,f#4]@7 ~, ~@8 a#3 ~@7", S: "[e3,b3,e4]@3 ~ [e3,a3,e4]@3 ~ [e3,b3,e4]@7 ~",
  T: "[e3,a3,e4]@3 ~ [f#3,b3,f#4]@3 ~", U: "[[b2,f#3,b3]@31 ~]/2", V: "[a2,e3,a3]@15 ~", W: "[b2,f#3,b3]@15 ~",
  X: "[b2,e3]@5 ~@3 [e3,a3]@2 [e3,a3] ~ [e3,a3] ~@3", Y: "~@2 [b2,f#3] ~ [b2,e3]@3 ~",
  Z: "[b2,e3]@6 ~@2 [e3,a3] ~ [e3,a3] ~ [e3,a3] ~@3", AA: "~@2 [e3,a3] ~ [b2,f#3]@2 ~@2 [b2,e3]@6 ~@2",
  AB: "~@2 [e3,a3] ~ [b2,f#3] ~@3 [b2,e3]@6 ~@2", AC: "[e2,b2]@4 [e2,b2]@3 ~",
  AD: "[a2,e3]@2 [a2,e3] ~ [a2,e3]@2 ~@4 [b2,f#3] ~ [b2,f#3]@2 ~@2", AE: "[e2,b2]@7 ~ [e2,b2]@7 ~",
  AF: "[e2,b2]@5 ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~@3, f3 ~@15", // E5
  AG: "[e2,b2,e3] ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~ e3 ~ [e2,b2,e3] ~ e3 ~", // E5
  AH: "[[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
  AI: "[c#3,f#3]@5 ~@3 [f#3,b3]@2 [f#3,b3] ~ [f#3,b3] ~@3", AJ: "~@2 [c#3,g#3] ~ [c#3,f#3]@3 ~",
  AK: "[c#3,f#3]@6 ~@2 [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@3", AL: "~@2 [f#3,b3] ~ [c#3,g#3]@2 ~@2 [c#3,f#3]@6 ~@2",
  AM: "~@2 [f#3,b3] ~ [c#3,g#3] ~@3 [c#3,f#3]@6 ~@2", AN: "~@10 [c#3,g#3] ~ [c#3,g#3]@2 ~@2",
  AO: "[f#2,c#3]@8 [c#3,f#3]@5 ~@3", AP: "[f#3,b3]@2 [f#3,b3] ~ [f#3,b3] ~@7 [c#3,g#3]@2 ~@2",
  AQ: "[c#3,f#3]@3 ~ [c#3,f#3]@3 ~", AR: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@5 [f#3,b3] ~ [c#3,g#3]@2 ~@2",
  AS: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@5 [f#3,b3] ~ [c#3,g#3] ~@3", AT: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@11",
  AU: "~@2 [c#3,g#3] ~ [c#3,g#3]@2 ~@2 [f#2,c#3]@7 ~", AV: "[f#2,c#3]@6 ~@2 [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 ~@2",
  AW: "[f#2,c#3]@7 ~ [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 ~@2", // F#5 B5
  AX: "~@2 [c#3,g#3] ~ [c#3,g#3]@2 ~@2 [f#2,c#3]@5 ~@3, ~@8 g3 ~@7", AY: "[[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 D E F G ~@15 H I J K L M L N O P Q R Q ~@16 S T P Q U Q C F V K L W G ~@10 X Y Z AA AB AA Z AC AD AE
  AF AG AF AH AI AJ AK Z AA AL AA Z AA AL AC AM ~
>`.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: "[e3,b3,e4]@6 ~@2 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,f#4,a4] ~@3, b4 ~@3", F: "~@6 [b2,b3,f#4,b4] ~",
  G: "[e3,b3,e4,b4]@7 ~@9", H: "~@2 [e3,b3,e4,b4] ~",
  I: "[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
  J: "[e3,b3,e4,b4]@5 ~@3 [e3,b3,e4,b4]@4 ~@4", // E5
  K: "[a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@7 [b2,b3,f#4,b4]@2 ~@2", // A5 B5
  L: "[e3,b3,e4,b4]@6 ~@2 [e3,b3,e4,b4]@5 ~@3", M: "[a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@9 [b2,b3,f#4,b4]@2 ~@2",
  N: "[a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@11", O: "~@4 [b2,b3,f#4,b4]@2 ~@2 [e3,b3,e4,b4]@7 ~",
  P: "[e3,b3,e4,b4]@5 ~@3 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@3", // E5 A5
  Q: "~@2 [b2,b3,f#4,b4] ~ [e3,b3,e4,b4]@3 ~", // B5 E5
  R: "[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
  S: "[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
  T: "~@4 [b2,b3,f#4,b4]@2 ~@2 [e3,b3,e4,b4]@5 ~@3", U: "[e3,b3,e4,b4]@4 ~@4 [a2,a3,e4,a4] ~ [a2,a3,e4,a4] ~@5",
  V: "[e3,b3,e4,b4]@7 ~ [e3,b3,e4,b4]@5 ~@3", // E5
  W: "[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
  X: "[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
  Y: "~@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
  Z: "[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", // F#5 B5
  AA: "~@2 [c#3,c#4,g#4,c#5] ~ [f#3,c#4,f#4,c#5]@3 ~", // C#5 F#5
  AB: "[f#3,c#4,f#4,c#5]@4 ~@4 [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@5", AC: "~@6 [c#3,c#4,g#4,c#5] ~",
  AD: "[f#3,c#4,f#4,c#5]@7 ~ [f#3,c#4,f#4,c#5]@4 ~@4", // F#5
  AE: "[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
  AF: "[f#3,c#4,f#4,c#5]@5 ~@3 [f#3,c#4,f#4,c#5]@4 ~@4", // F#5
  AG: "[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
  AH: "[b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@9 [c#3,c#4,g#4,c#5]@2 ~@2", // B5 C#5
  AI: "[f#3,c#4,f#4,c#5]@6 ~@2 [f#3,c#4,f#4,c#5]@5 ~@3", AJ: "[b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~ [b2,b3,f#4,b4] ~@11",
  AK: "~@4 [c#3,c#4,g#4,c#5]@2 ~@2 [f#3,c#4,f#4,c#5]@7 ~", // C#5 F#5
  AL: "[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
  AM: "[f#2,f#3,c#4,f#4,c#5]", // F#5
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.6)

// chords · overdriven guitar · "solo Axe"
const overdriven_guitar = note(`<
  ~ A@4 ~@3 B C ~ D A E F A@2 E F G ~@17 B C ~ A@2 H I A@2 H I ~@17 J K ~ L M N ~@26 O P ~@2 O P ~@3
>`.pickRestart({
  A: "[e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~", // E5
  B: "b4@3 b4@2 ~ b4@2 ~ b4@2 b4@2 ~ b4@2", C: "b4 ~", D: "~@8 [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~",
  E: "[e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // E5 A5
  F: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [e3,b3] ~ [e3,b3] ~ [e3,a3] ~ [e3,a3] ~", // B5 E5 A5
  G: "[e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~@9", // E5
  H: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // A5 B5
  I: "[e3,b3] ~ [e3,b3] ~ [e3,a3] ~ [e3,a3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~", J: "~@8 b4@3 b4@2 ~ b4@2",
  K: "~ b4@2 b4@2 ~ b4@2 b4@8", L: "~@8 [e2,b2,e3] ~@3 [e2,b2,e3] ~@3",
  M: "[e2,b2,e3] ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~", // E5
  N: "[e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~@9", O: "c#5@3 c#5@2 ~ c#5@2 ~ c#5@2 c#5@2 ~ c#5@2",
  P: "c#5 ~",
})).s("gm_overdriven_guitar").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  ~ A ~ A ~ B C B C B D E F G F H F G F H@9 I J I J I J K L B C B C B@2 M N B@2 M N@9 B C B C B C B D E I J I O D L P Q
  P Q F@2 R S B C B C B C B D E I J I J I J K L B C B C B C B D A Q
>`.pickRestart({
  A: "x", B: "x ~@3 x!2 ~@2", C: "~ x ~@2 x ~@2 x", D: "x!4", E: "x!2", F: "x!2 ~@2 x ~@3", G: "x!2 ~@2 x ~@2 x",
  H: "x!2 ~ x!2 ~@3", I: "x!2 ~@3 x ~@2", J: "x ~@2 x!2 ~@3", K: "x!2 ~@2 x ~ x ~", L: "x!3 ~", M: "x ~@2 x!3 ~@2",
  N: "x ~@3 x!2 ~ x", O: "x ~@2 x!2 ~ x ~", P: "~@3 x!2 ~@3", Q: "~ x", R: "x!2 ~@2 x!2 ~@2", S: "x!2 ~@3 x ~ x",
})).gain(0.37).pan(0.4)
// … 113 more lines

More by Sweet