Strudelify

Lugano addio

Graziani

KeyC majorTempo119 bpm
0:00/0:00
// Lugano addio — Graziani
// 119 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 144 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/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 guitar muted · "FINGERDBAS"
const bass = note(`<
  ~ A B C D E@2 F G F B C H I E J@2 K B J B C L I E M N J O C P Q I R S K B J T U V W C E B J X Y Z J AA J B C L I E M N
  J O C P Q I R S K B J T U V W C E B J X Y Z J AB J B C H I E A B C D E@2 F G F B C H I E J@2 K B J T U V W C E B AC X
  Y AD AE AF J B C L I E A B C D E@2 F G F B C H I E AG@3
>`.pickRestart({
  A: "c2@13 ~ c2@2", B: "g1", C: "a1", D: "e1@13 ~ e1@2", E: "f1", F: "c2@13 ~@3", G: "c2@7 g1", H: "e1", I: "f1@15 ~",
  J: "c2", K: "f1@7 f1", L: "e1@15 ~", M: "c2@15 ~", N: "c2 g1", O: "g1@3 g#1", P: "e1@10 e1@5 ~", Q: "f1@7 ~",
  R: "c2@11 ~ g1@4", S: "c1@3 g1@3 e1@2", T: "e2@4 e1@11 ~", U: "f2", V: "g2", W: "a2@7 e2", X: "e2", Y: "d2@13 ~@3",
  Z: "d2 ~ d2@6", AA: "d2 g2", AB: "d2@4 g2@2 g2 d2", AC: "c2@5 c2 d2 d#2", AD: "d2 ~ d2@5 c2", AE: "g2@15 ~",
  AF: "d2@2 g2 d2", AG: "[c2@3 ~]/3",
})).s("gm_electric_guitar_muted").gain(0.54)

// bass · electric guitar muted · "FINGERDBAS" · soft notes
const bass_soft = note("<~@7 A ~ B ~@21 C ~@15 D E ~@14 C ~@15 D E ~@14 A ~ B ~@19 D F ~@14 A ~ B ~@8>".pickRestart({
  A: "~@14 c2 ~", B: "~@7 c2", C: "~@14 f1 ~", D: "~@7 d2", E: "~ f#2 ~@6", F: "~ a1 ~@6",
})).s("gm_electric_guitar_muted").gain(0.31)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~ A@2 B C D@2 E@2 F@2 G H@3 I@2 J@3 K L M N O P ~ Q@2 R S T U V@2 W X Y Z AA AB AC@2 L X AD AE AF@2 AG@2 AH@3 AI AJ@2
  AK@2 AL@8 AM@2 AN AO AP@2 AQ@2 AR AS@2 AT AU@2 AV@2 AW@2 AX AY AZ@2 BA@2 B BB BC@2 BD@2 F@2 BE H@3 I@2 BF@2 AN BG BH@2
  AQ@2 AR BI BJ AT BK@2 BL@2 AW@2 AX AY AZ@2 BA@2 BM C BN@4 F@2 BO BP BQ@2 BR ~@2
>`.pickRestart({
  A: "[[d5,e5,g5,c6] b5, g6, ~@2 g4 ~]/2", B: "[c6,a6], a4 ~", C: "[b5,g#6]@15 ~",
  D: "[[c4,e4,f4,a4]@14 ~@2 d6@15 ~, a6@31 ~, c6 ~]/2", // Fmaj7
  E: "[[c6,g6]@8 g6@8 e6@3 ~@5 b5@2 g5@2 e5@2 d5@2, [c5,e5,g5]@5 ~@11, ~@8 c6@14 c6@9 ~, ~@4 e6@3 ~@9]/2", // C5 C
  F: "[[d5,e5,g5]@9 ~@7 [d4,g4,b4]@10 ~@6, g6, c6@15 ~ b5@15 ~]/2", G: "[c6,a6], [a4,c5]@3 ~",
  H: "[b5@15 ~@17 d6@15 ~, g#6@12 [a5,c6]@7 ~@5, ~@16 a6@31 ~, ~@8 [g4,c5]@11 ~@5, ~@16 c6 a4@21 ~@10]/3", // Am C5
  I: "[c6,g6]/2", J: "[[g4,c5]@2 [g4,c5]@5 ~ [g4,d5]@2 g4@2 g4 a4 c7@2 [g4,e5]@8, [c6,a6]@5 ~@2 c5@5, ~@4 b6@3 ~@5]/3",
  K: "[g4,b4,d5]", L: "[c5,e5,a5]@15 ~", M: "[d4,e4,g#4,b4]@11 ~ b5@4", N: "[f5,a5,c6]@7 ~", O: "d6 c6",
  P: "~ [c6,e6]@3, g5", Q: "[~@4 g4 ~@2 d5, [d5,g5]@2 g5@2 [b4,d5] g4 b4@2, ~ e5@15, ~ c5@2 c5@5, ~ d5 a4@2]/2",
  R: "[c5,e5,a5]", S: "~@12 b5@3 ~, [b4,e5,g#5]@15 ~", T: "~ [f4,a4,c5], [f5,g5,a5]@15 ~", U: "[d4,f4,a4]@15 ~",
  V: "[~ e4@26 ~@5, [c4,d4,g4]@27 ~@5]/2", W: "[c5,e5,f5,a5]@7 ~", X: "[g4,b4,d5]@15 ~",
  Y: "e5@7 ~ [e5,g5,c6]@8, [g4,c5]", Z: "~@3 b5, ~ [d5,e5,g5], ~@5 a5@3", AA: "[c5,e5,a5,c6]@15 ~",
  AB: "~ b4@15, [g4,d5], a4@7 ~", AC: "[~@3 g5, [b4,c5], e5 e5, ~ d5@3]/2", AD: "g5 [c5,g5], [d5,e5]",
  AE: "[b4,d5] ~, g4", // Bm
  AF: "[~@9 e4 f#4 e4 d4 e4 f#4 d4, [d5,e5,f#5,a5]@21 ~@11, ~@2 f#4@3 ~@3, ~@8 e4@4 d4@9 ~@11, ~@10 a4@11 ~@11]/2", // D
  AG: "[~@4 [d4,f4,a4] ~@3, [e4,g4]@5 ~@3, d4 ~, ~ c4@4 ~@3]/2", // Dm Em
  AH: "[~ [b4,d5] [c5,e5,a5,a6], [g4,e5] ~@2, ~ g6@32 ~@15]/3", AI: "~@3 b5, g#6",
  AJ: "[[f5,a5,c6]@7 ~ d6@4 c6@4, a6]/2", AK: "[g6, g5 ~]/2",
  AL: "[~@16 g4@4 ~@52 [f4,a4]@8 d4@16 ~ g6@31, g6@16 a4@32 ~ g#6@31 [f4,a4]@32 ~@16, [d5,g5] g5@2 b4@3 b4@3 c5@4 ~@3, ~ e5@7 [b4,d5]@2 g4@16 ~@6 [f5,g5,a5,a6]@16 d4@16, ~ c5 d5 c5@4 d5@8 b5@8 ~@9]/8", // F G5 Bm F
  AM: "[[c5,e5,f5,a5]@7 ~ [g4,b6]@8, a6@5 ~@3, ~@8 [b4,d5]@7 ~]/2", AN: "e5@7 ~ [e5,g5,c6]@8, [g4,c5,c7]",
  AO: "~@3 b5, b6, ~ [d5,e5,g5], ~@5 a5@3", AP: "[~@17 b4@15, a6@15 ~, ~ [g4,d5,b6], ~@8 a4@7 ~]/2",
  AQ: "[~@3 g5, [b4,c5,c7], e5 e5, ~ d5@3]/2", AR: "[e5,a6]",
  AS: "[[d5,b6]@15 ~ g5@8 [c5,g5]@8, ~@15 c7@17, ~ [d5,e5]]/2", AT: "[g4,b4,d5,b6]",
  AU: "[~@9 e4 f#4 e4 d4 e4 f#4 d4, [d5,e5,f#5,a5]@21 ~@11, ~ a6@31, ~@8 f#4@4 d4@9 ~@11, ~@8 e4@2 a4@11 ~@11]/2", // D
  AV: "[~@16 [d4,f4,a4]@4 f5@2 c5@2 ~@4 c6@2 d6 ~, [e4,g4,g6]@5 ~ [a5,b6]@2, d4@16 a6@15 ~, ~@4 c4@16 ~@6 b5@5 ~]/2", // Dm Em Asus2
  AW: "[e6 ~@15 [b5,b6]@16, [c6,c7] ~, ~@3 e6@5]/2", AX: "a5 b5 ~ b5@2 ~@3, a6, ~ c6@2 ~", AY: "g#6",
  AZ: "[~@2 d6 c6, a6@31 ~]/2", BA: "[c6 b5, g6]/2", BB: "[b5,g#6]@15 ~, d5@11 ~@5", BC: "[c6@16 d6@15 ~, a6@31 ~]/2",
  BD: "[[c6,g6]@4 g6@4 e6 ~@3 b5 g5 e5 d5, g5@5 ~@11, ~@4 c6@7 c6@5]/2", BE: "[c6,a6], c5@11 ~@5",
  BF: "[[e5,f5,a5]@7 ~ [g4,b6]@8, a6@5 ~@3, ~@8 [b4,d5]@7 ~]/2", BG: "~@3 b5, b6, ~ g5, ~@5 a5@3",
  BH: "[[c5,e5,a5,c6]@15 ~@2 b4@15, a6@15 ~, ~ [g4,d5,b6], ~@8 a4@7 ~]/2", BI: "[g4,d5,b6]",
  BJ: "g5 [c5,g5], [d5,e5,c7]", // C5 C
  BK: "[~@9 e4 f#4 e4 d4 e4 f#4 d4, [d5,e5,f#5,a5]@21 ~@11, ~ a6@30 ~, ~@8 f#4@4 d4@9 ~@11, ~@8 e4@2 a4@11 ~@11]/2", // D
  BL: "[~@16 [d4,f4,a4]@4 f5@2 c5@2 ~@4 c6@2 d6 ~, g6@21 ~@3 [a5,b6]@8, ~@4 c4@16 ~@6 b5@5 ~, ~@16 a6@15 ~]/2", // Dm Asus2
  BM: "[c6,a6]", // F
  BN: "[[e4,f4,a4]@14 ~@2 d6@15 ~ g6@8 e6@6 ~@2 e6@2 ~@6 b5@2 g5@2 e5@2 d5@2, a6@31 ~ [c5,g5]@10 ~@22, c6@16 ~@15 c6@9 c6@14 c6@10]/4", // Fmaj7 C5
  BO: "[c6,a6], [a4,c5]@11 ~@5", BP: "[b5,g#6]",
  BQ: "[~@16 [a4,c5,d5]@8 [a4,c5,d5]@7 ~, a6@31 ~, g4@11 ~@5, c5@4 [a5,c6]@7 ~@5, c6 a4@15 d6@15 ~]/2", // D7 Am
  BR: "[c6,g6]@3 ~", // C5
})).s("gm_piano").gain(0.4)

// chords · piano · "A.PIANO" · soft notes
const piano_soft = note(`<
  ~@8 A ~@2 B ~@13 C ~@5 D ~@14 E F ~@15 G@2 ~@14 F ~@3 H@2 I ~@10 J ~@20 F ~@3 H@2 I ~@9 K J ~@2 B ~@6
>`.pickRestart({
  A: "[g6,b6]@2 ~ a6 e6@2 ~@10, ~ c7 ~@6, ~@3 g6@12 ~", B: "e4@11 ~@5", C: "~ g6@3", D: "c6@7 ~", E: "~ [e4,b4,d5]",
  F: "~@3 d4@3 ~@2, ~@2 a4@3 ~@3", G: "c6/2", H: "[~@5 g5@11]/2", I: "~@12 c6@2 a5 ~, ~@4 a5@3 ~, ~@10 b5@5 ~",
  J: "[g6,b6]@2 ~ a6 e6 ~@11, ~ c7 ~@6, ~@3 g6@12 ~", K: "~ g6",
})).s("gm_piano").gain(0.16)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
  A@3 B@8 C@7 D@7 E F@8 G@2 H@2 I@2 J K@3 L@2 M@2 N@5 O@4 E P@8 Q@2 J R S@2 J T@3 H@2 U@2 V@2 W@8 X Y@8 Z@7 J AA AB@2 J
  AC@3 J R U@2 AD@8 AE@3 AF@8 AG@6 ~
>`.pickRestart({
  A: "[~@16 e4 e4@7 e4 ~ f4 ~ g4 ~@7 f4@3 ~ e4 ~ d4@3 ~ c4@2, ~@15 g2@9 ~@7 g2@9 ~@8, ~@16 [c3,e3,g3,c4]@9 ~@5 g4@2 [d3,b3,g4]@8 ~@8]/3", // C G
  B: "[[a2,a3,c4,e4]@6 [a3,c4,e4]@2 c4 ~ d4 ~ e4 ~@11 c4 ~ b3@2 [e2,b2]@2 ~@2 [a3,c4,e4]@4 ~@6 a3 ~ c4 ~ d4@6 [f3,a3,d4,e4,f4]@4 c4 ~ d4@3 ~@3 [e3,c4,e4]@8 ~@6 [g2,g3,c4,e4]@4 g2@3 ~@3 g3@2 e3@2 d3@3 ~ [g3,c4,e4]@8 e4 ~ f4 ~ g4 ~@3 [d3,b3,g4]@4 f4@3 ~ e4 ~ d4@3 ~ c4@2, ~@14 e2@13 ~@4 c3@4 ~@28 g2@12 ~@20 g2@3 ~@13 g2@9 ~@8, ~@14 e4@2 e4@13 ~@33 e4@2 ~@46 g4@2 ~@16, ~@15 [e3,g#3]@14 ~ a3@2 ~@64 e3@2 ~@30, ~@15 d4@5 d4@9 ~@99]/8", // Am E5 Am Dm C G E
  C: "[[a2,e3,a3,c4,e4]@6 [e3,e4]@2 c4 ~ d4 ~ e4 ~@3 d4@4 ~@4 c4 ~ b3@2 [e2,b2]@2 a3 ~ [c4,f4]@5 ~@5 a3 ~ c4 ~ d4@6 [f3,a3,d4,e4,f4]@4 c4 ~ d4@3 ~@3 [c4,e4]@12 ~@6 g2@3 ~@5 [e3,g3,c4,e4]@5 ~@2 f4@8 ~@7, ~@14 e2@6 d4@9 ~@35 e3@6 ~@42, ~@14 e4@2 e4@13 ~@33 e4@2 ~@14 [c4,e4]@11 ~@23, ~@15 g#3@14 ~@34 g3@7 ~@26 [a3,c4]@9 ~@7, ~@15 e3@12 ~@4 [f2,c3,a3]@5 ~@26 g2@7 ~@26 [f2,f3]@6 ~@11]/7", // Am E E5 F5 Dm C Am F
  D: "[[g3,b3,g4]@8 ~@8 [c3,g3,c4,e4]@11 ~@5 [b3,g4]@10 ~@7 e4@3 ~@4 [a3,c4,e4] ~@7 e3@12 ~@4 [c3,f3,a3,c4]@6 ~@10 [a3,d4,f4]@8 ~@8, [g2,d3]@4 ~@11 g2@11 ~@5 g2@12 ~@4 [a2,a3]@6 ~@10 [e2,b2]@12 ~@4 f2@8 ~@7 f2@5 ~@13, ~@48 [e3,c4]@6 ~@10 d4@8 ~@23 c3@5 ~@12, ~@24 f3 ~@3]/7", // G C Em Am F Dm G5 A …
  E: "[c3,e3,g3,c4,e4]@3 ~ [g3,c4,e4]@2 ~@2, g2 ~@3", // C
  F: "[[c3,e3]@3 ~ [c3,e3]@4 g3@2 e3 ~ d3 ~@3 [e3,c4,e4]@11 ~@5 [b2,d3,g3,b3,g4]@10 ~@7 e4@3 ~@4 [a3,c4,e4] ~@7 e3@12 ~@4 [f3,a3,c4]@6 ~@10 [a3,d4,f4]@8 ~@8 [e3,g3,c4,e4]@6 ~@2 [g3,c4,e4]@4 g2@4, g3@7 ~@8 g3@13 ~@20 [e3,c4]@6 ~@10 d4@8 ~@24 f3@5 ~@27, ~@15 [g2,c3]@11 ~@5 g2@12 ~@4 [a2,a3]@6 ~@10 [e2,b2]@12 ~@4 [f2,c3]@8 ~@8 [f2,c3]@5 ~@11 [g2,c3]@5 ~@12]/8", // C G Am F Dm C C5 A …
  G: "[c3@2 d3@2 ~@2 [e3,g3,c4]@2 ~@2 e3 ~ d3@3 ~ [a3,c4,f4]@9 ~@7, ~@4 c3@4 ~@7 [f2,c3]@6 ~@11, ~@15 f3@4 ~@13]/2", // C F F5
  H: "[[g3,b3,g4]@8 ~@8 [c3,e3,g3,c4]@6 [g3,e4] ~@9, [g2,b2,d3]@4 ~@11 g2@9 ~@8]/2", // G C G
  I: "[[e2,b2,e3] ~ [e2,b2,e3]@3 ~@11 [a3,c4,f4]@9 ~@7, ~@15 f2@6 ~@11, ~@16 [c3,f3]@5 ~@11]/2", // E5 F F5
  J: "[g3,b3,g4] ~, [g2,b2,d3] ~@3", // G
  K: "[[a2,e3]@8 ~@6 [a3,c4,e4]@5 ~@14 f4@8 ~@7, ~@31 [f2,c3,f3]@5 ~@12, ~@32 [a3,c4]@9 ~@7]/3", // A5 Am F5 Am
  L: "[[g3,b3,g4]@4 ~@4 [c3,e3,g3,c4]@3 [g3,e4] ~@4, [g2,b2,d3]@4 ~@11 g2@9 ~@8]/2", // G C G
  M: "[[e2,b2,e3,g3,b3,e4]@9 ~@7 [d4,f#4]@8 ~@6 [a3,d4]@2, ~@15 [a2,d3,a3]@9 ~@8]/2", // Em D D5
  N: "[~@15 [c3,e3,c4,e4]@9 ~@8 [a3,d4,f4]@7 ~ [g2,b2,d3,g3,b3,g4]@4 ~@4 [c3,g3,c4,e4]@11 ~@5 [b3,g4]@10 ~@5 a2, ~@14 g2@10 ~@7 [a2,d3]@9 ~@7 g2@11 ~@5 g2@12 ~@5, ~@15 g3@4 ~@61]/5", // C Dm G C Em D5
  O: "[[e3,a3,c4]@6 ~@2 [a3,c4,e4] ~@7 [e3,e4]@12 ~@4 [c3,f3,a3,c4]@6 ~@10 [d4,f4]@8 ~@8, e4@3 ~@12 [e2,b2]@12 ~@4 f2@8 ~@7 f2@5 ~@13, ~@16 d4@8 ~@23 a3@8 ~@9, ~@47 [c3,f3]@5 ~@12]/4", // Am E F Dm E5 F5
  P: "[[c3,e3]@3 ~ [c3,e3]@4 g3@2 e3 ~ d3 ~@3 [c3,e3,c4]@11 ~@5 [b2,d3,g3,b3,g4]@10 ~@7 e4@3 ~@4 [a3,c4,e4] ~@8 e4@11 ~@4 [f3,a3,c4]@6 ~@10 [a3,d4,f4]@8 ~@8 [e3,g3,c4,e4]@6 ~@2 [g3,c4,e4]@4 g2@4, g3@7 ~@8 g2@11 ~@5 g2@12 ~@4 [a2,a3]@6 ~@10 [e2,b2]@12 ~@4 [f2,c3]@8 ~@7 f2@5 ~@12 [g2,c3]@5 ~@12, ~@16 [g3,e4]@13 ~@19 [e3,c4]@6 ~@10 e3@12 ~@19 c3@5 ~@28, ~@16 d4@2 ~@6 f3 ~@7]/8", // C G Am F Dm C A E5 …
  Q: "[c3@2 d3@2 ~@2 [e3,g3,c4]@2 ~@2 e3 ~ d3@3 ~@2 f4@8 ~@7, ~@4 c3@4 ~@7 [f2,c3]@6 ~@11, ~@16 [a3,c4]@9 ~@7, ~@16 f3@5 ~@11]/2", // C F5 Am
  R: "[c3,e3,g3,c4]@6 [g3,e4] ~@9, g2@9 ~@7", // C
  S: "[[e2,b2,e3] ~ [e2,b2,e3]@3 ~@11 [a3,c4,f4]@9 ~@7, ~@15 f2@6 ~@11, ~@16 c3@5 ~@11]/2", // E5 F
  T: "[[a2,e3]@8 ~@6 [a3,c4,e4]@5 ~@14 f4@8 ~@7, ~@31 [f2,c3]@6 ~@11, ~@32 [a3,c4]@9 ~@7, ~@8 f3 ~@3]/3", // A5 Am F5 Am
  U: "[[e2,b2,e3,g3,b3]@9 ~@7 [d4,f#4]@8 ~@6 [a3,d4]@2, ~@15 [a2,d3,a3]@9 ~@8]/2", // Em D D5
  V: "[~@16 e4@8 ~@7 a2, ~@7 g2@5 ~@4, ~@15 [c3,e3,c4]@9 ~@8, ~@15 g3@4 ~@13]/2", // C
  W: "[[d3,a3,d4,f4]@8 [g2,b2,d3,g3,b3,g4]@4 ~@4 [e3,g3,e4]@12 ~@4 [b3,g4]@10 ~@7 e4@3 ~@4 [a3,c4,e4] ~@7 e3@12 ~@4 [f3,c4]@6 ~@10 [d4,f4]@8 ~@8 [c3,c4,e4]@8 e4 ~ f4 ~ g4 ~ g4@2, ~@14 [g2,c4]@11 ~@6 g2@12 ~@4 [a2,a3]@6 ~@10 [e2,b2]@12 ~@4 [f2,c3]@8 ~@7 f2@5 ~@29, ~@15 c3@11 ~@22 [e3,c4]@6 ~@10 d4@7 ~@8 a3@6 ~@10 a3@8 ~@8 g3@9 ~@8, ~@95 [c3,f3]@5 ~@28]/8", // Dm G Em Am F5 Dm C C5 …
  X: "~@4 f4@3 ~ e4 ~ d4@3 ~ c4@2, [b3,g4] ~", // Em
  Y: "[[a2,a3,c4,e4]@6 [a3,c4,e4]@2 c4 ~ d4 ~ e4 ~@3 d4@4 ~@4 c4 ~ b3@2 [e2,b2]@2 ~@2 [a3,c4,e4]@4 ~@6 a3 ~ c4 ~ d4@6 [f3,a3,d4,e4,f4]@4 c4 ~ d4@3 ~ e4@2 [e3,c4,e4]@8 ~@6 [g2,g3,c4,e4]@4 g2@3 ~@3 g3@2 e3@2 d3@3 ~ [g3,c4,e4]@8 e4 ~ f4 ~ g4 ~@3 [d3,b3,g4]@4 f4@3 ~ e4 ~ d4@3 ~ c4@2, ~@14 e2@13 ~@4 c3@4 ~@27 g2@11 ~@22 g2@3 ~@13 g2@9 ~@8, ~@14 e4@2 e4@13 ~@81 g4@2 ~@16, ~@15 [e3,g#3]@14 ~ a3@2 ~@64 e3@2 ~@30, ~@20 d4@9 ~@99]/8", // Am E5 Am Dm C G E
  Z: "[[a2,e3,a3,c4,e4]@6 [e3,e4]@2 c4 ~ d4 ~ e4 ~@3 d4@4 ~@4 c4 ~ b3@2 [e2,b2]@2 ~@2 [a3,c4,f4]@5 ~@5 a3 ~ c4 ~ d4@6 [f3,a3,d4,e4,f4]@4 c4 ~ d4@3 ~@3 [c4,e4]@12 ~@6 g2@3 ~@5 [e3,g3,c4,e4]@5 ~ [a3,c4,f4]@9 ~@7, ~@14 e2@6 d4@9 ~@49 [c4,e4]@11 ~@23, ~@14 e4@2 e4@13 ~@33 e4@2 ~@48, ~@15 g#3@14 ~ a3@2 ~@32 e3@6 ~@26 f3@5 ~@11, ~@15 e3@12 ~@4 [f2,c3]@5 ~@27 [g2,g3]@7 ~@25 [f2,c3]@6 ~@11]/7", // Am E E5 F Dm C F C …
  AA: "[c3,e3,g3,c4]@3 [g3,e4] ~@4, g2@9 ~@7", // C
  AB: "[[e2,b2,e3] ~ [e2,b2,e3]@3 ~@11 [a3,c4,f4]@9 ~@7, ~@15 [f2,c3]@6 ~@11, ~@16 f3@5 ~@11]/2", // E5 F F5
  AC: "[[a2,e3]@8 ~@6 [a3,c4,e4]@5 ~@13 [a3,c4,f4]@9 ~@7, ~@31 [f2,c3]@6 ~@11, ~@8 f3 ~@3]/3", // A5 Am F F5
  AD: "[~@16 e4@8 ~@8 [a3,d4,f4]@8 [g2,b2,d3,g3,b3,g4]@4 ~@4 [c3,g3,c4,e4]@11 ~@5 [b2,d3,g3,b3,g4]@10 ~@7 e4@3 ~@4 [a3,c4,e4] ~@7 e3@12 ~@4 [f3,a3,c4]@6 ~@9 c3, ~@14 g2@10 ~@7 [a2,d3]@9 ~@7 g2@11 ~@5 g2@12 ~@4 [a2,a3]@6 ~@10 [e2,b2]@12 ~@4 [f2,c3]@8 ~@7 f2@2, ~@15 [c3,e3,c4]@9 ~@104, ~@15 g3@4 ~@61 [e3,c4]@6 ~@10 d4@8 ~@24]/8", // Dm G C G Am F D5 A …
  AE: "[[a3,d4,f4]@8 ~@8 [c3,e3,g3,c4,e4]@8 e4 ~ f4 ~ g4 ~@7 f4@3 ~ e4 ~ d4@3 ~ c4@2, f3@4 ~@11 g2@9 ~@6 g4@2 [d3,b3,g4]@8 ~@8, ~@31 g2@9 ~@8]/3", // Dm C G
  AF: "[[a2,a3,c4,e4]@6 e4@2 c4 ~ d4 ~ e4 ~@3 d4@4 ~@4 c4 ~ b3@2 [e2,b2]@2 a3 ~ [c4,e4]@4 ~@6 a3 ~ c4 ~ d4@6 [f3,a3,d4,e4,f4]@4 c4 ~ d4@3 ~ e4@2 [e3,c4,e4]@8 ~@6 [g2,g3,c4,e4]@4 g2@3 ~@3 g3@2 e3@2 d3@3 ~ [g3,c4,e4]@8 e4 ~ f4 ~ g4 ~@3 [d3,b3,g4]@4 f4@3 ~ e4 ~ d4@3 ~ c4@2, ~@14 e2@13 ~@35 g2@12 ~@21 g2@3 ~@13 g2@9 ~@8, ~@14 e4@2 e4@13 ~@81 g4@2 ~@16, ~@15 [e3,g#3]@14 ~@2 [c3,a3]@5 ~@60 e3@2 ~@30, ~@20 d4@9 ~@99]/8", // Am E5 C Dm C G E F
  AG: "[[a2,e3,a3,c4,e4]@6 [e3,e4]@2 c4 ~ d4 ~ e4 ~@3 d4@4 ~@4 c4 ~ b3@2 [e2,b2]@2 a3 ~ [c4,f4]@5 ~@5 a3 ~ c4 ~ d4@6 [f3,a3,d4,e4,f4]@4 c4 ~ d4@4 ~@2 [g3,c4,e4]@19 ~@13, ~@14 e2@13 ~@4 [f2,c3,a3]@5 ~@27 [g2,c3,e3]@20 ~@13, ~@14 e4@2 e4@13 ~@33 e4@2 ~@32, ~@15 [e3,g#3]@14 ~@67, ~@20 d4@9 ~@67]/6", // Am E E5 F5 Dm C F C …
})).s("gm_acoustic_guitar_nylon").gain(0.25)

// chords · acoustic guitar nylon · "A.GUITAR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@2 A ~@4 B@2 ~ C D ~@3 B@2 ~@2 E F G@2 ~@3 H ~@2 I@2 ~@3 J ~@2 K ~@7 L ~ M ~ N ~ E F ~ O ~@3 H ~@7 J ~@2 K ~@7 K ~ M
  ~ N ~@2 F I@2 ~@3 A ~@4 B@2 ~ P D ~@3 B@2 ~@2 L ~@7 K ~ M ~ N ~ E ~ I@2 ~@3 A D ~@3 B@2 ~ C D ~@6
>`.pickRestart({
  A: "g3 ~", B: "[~@7 e3@2 ~@7]/2", C: "g3@5 ~@11", D: "~@6 [a3,c4]@3 ~@7", E: "e3@11 ~@5", F: "[b2,d3,g3]@5 ~@3",
  G: "[~@17 e4@11 ~@4, ~@15 g#3@12 ~@5]/2", H: "g2@3 ~ g2@4 ~@8, [c4,e4]@7 ~@9",
  I: "[~@16 e4@11 ~@5, ~@15 g#3@12 ~@5]/2", J: "[g2,c4]@2 [e3,g3,c4] ~ g2@4 ~@2 [g3,c4] ~@5, e4@7 ~@9",
  K: "~@6 [e3,c4] ~@9", L: "~@3 [e3,c4] ~@4", M: "~@7 f#4", N: "~ g3 ~@2", O: "g#3@11 ~@5", P: "g3 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.15)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C D@2 E F@2 G@2 H I@2 J K L M N O P Q R S T M N O P Q R U V W L X Y Z L AA@2 W L X AB AC AD AE AF M AG O P Q
  R AH T M N AI P Q AJ AK V Z L X Y Z L AL@2 Z L X AB AC AD AE AM M N O P Q R AN@2 AO@2 AP AQ@2 AR F@2 G@2 H I@2 AS Z L
  X AT Z L AL@2 Z L X AU AC AD AE AV M AW AX P Q AJ AN@2 B@2 AP D@2 AR AY@2 G@2 H AZ@2 ~@2
>`.pickRestart({
  A: "[~@2 c3@2 g4@4 g4 ~ a4 ~ [d3,g3,b3,e4,b4]@2 [g3,b3,g4]@2 ~@4 [g4,a4]@4 ~@2 f4@2 [g3,b3,g4] ~ [a2,a3,c4,e4]@2, ~@2 g2@9 ~@8 g2@9 ~@4, ~ e3@3 ~@6 [d3,g3,b3]@4 ~@2, ~@4 [g3,c4,e4]@8 ~@2 b4@5 ~@5 g4@4 ~@4]/2", // Em7 G Gsus2 G Am G C
  B: "[~@8 [a2,e3,a3,c4,e4] ~ [a3,c4,e4,f4] ~ [a3,c4,e4]@2 g4@5 ~ [e2,b2,e3] ~ b2@2 ~@2 d4@3 ~ c4@2, ~@12 g4 ~@7 f4@2 [e2,e3]@6 ~@4, ~@24 [g#3,b3,e4]@7 ~]/2", // Am Fmaj7 Am E5 E
  C: "[f2,c3]@4 [c3,f3,a3,c4]@4 a3@2 a3@2 [f2,f3,c4] ~ [f2,c3,d4]@2, ~@8 [f3,c4,e4]@5 ~@3", // F5 F F5 Dm7 Fmaj7
  D: "[~@2 e4@3 ~@3 d4@2 d4@4 e4@5 ~@5 [g3,c4]@6 ~@2, [f3,a3,d4]@5 ~ c4@2 a3@7 ~@9 e4@8, ~@7 f3@8 ~@7 e3@8 ~@2]/2", // C5 Dm
  E: "~@4 g3@4 g3@2 e3 ~ d3@4, ~@2 g2@9 ~@5, ~ e3@3 ~@4, ~@4 [c4,e4]@7 ~@5", // C
  F: "[~@4 [g3,c4,e4]@4 g4 ~ a4 ~ [d3,g3,b3,e4,b4]@2 [g3,b3,g4]@2 ~@4 [g4,a4]@4 ~@2 f4@2 [g3,b3,g4] ~ [a2,a3,c4] ~, g4@4 ~@10 b4@5 ~@5 g4@4 ~@2 e4@2, ~@2 g2@9 ~@8 g2@9 ~@4, ~ e3@3 [g3,c4,e4]@2 ~@4 [d3,g3,b3]@4 ~@2]/2", // C Em7 G Gsus2 G Am C G
  G: "[~@8 [a2,e3,a3,c4,e4] ~ [c4,f4] ~ [a3,c4,e4,g4]@2 g4@5 ~ [e2,b2,e3] ~ b2@2 ~@2 d4@3 ~ c4@2, ~@10 f4 [e2,e3]@3 ~@2, ~@24 [g#3,b3,e4]@7 ~]/2", // Am F5 Am7 E5 E
  H: "~@4 [c3,f3,a3,c4]@4 a3@2 a3@2 [f2,c3,f3,c4] ~ [f2,f3,d4]@2, ~ f2@2 ~, ~@8 [c4,f4]@5 ~@3", // F F5 Dm F5
  I: "[~@2 e4@3 ~ c4@2 d4@2 d4@4 e4@5 ~@3 c3@2 [g3,c4,e4]@6 ~@2, [f3,a3,d4]@5 ~@3 [f3,a3]@8 ~@6 [g2,e3]@5 ~@5]/2", // C Dm F C
  J: "~@2 c3@2 [g3,c4,e4]@7 ~@5, ~@2 g2@9 ~@5, ~ e3@3 ~@4", // C
  K: "~@4 [c3,f3]@4 [a3,c4,f4]@4 [a2,d3,g3,b3] ~ [g3,b3,g4]@2, ~ f2@2 ~", L: "~ [b2,d3] [g3,b3,g4]@2, ~@2 g2@5 ~",
  M: "~ [g2,c3,e3,g3,c4,e4]", N: "~@2 [b3,g4] [g3,b3,g4], ~@7 g2@7 ~@2, ~ [b2,d3]",
  O: "~@4 [g3,b3] ~ [e3,a3,c4] ~@9, ~@2 e4 ~@5", P: "~@2 d4 b3, ~ [e2,b2,e3,g#3,e4]",
  Q: "~@2 [a3,c4] ~ [a3,c4]@4, ~@4 [c3,f3]@11 ~, ~@3 f4@5", // Am F5
  R: "~@8 [a3,d4,f4]@4 [a2,d3,g3,b3] ~ [c3,e3,g3,c4]@2, ~@4 [f2,c3]@7 ~@5", // Dm G C F5
  S: "[g3,c4,e4]@3 ~@2 e4@4 ~@3 [g3,c4,e4] ~ [g3,c4,e4]@2, ~@3 [c3,g3]@6 ~@3 [g2,c3,e3]@4, ~@2 [e3,c4]@3 ~@3", // C C5 C
  T: "~@8 g3 ~ e3 ~ d3 ~@3", U: "~@4 [c4,e4]@6 ~@2 [g3,c4,e4] ~ [g3,c4,e4]@2, ~@3 [c3,g3]@6 ~@3 [c3,e3]@4, ~ e3 ~@2",
  V: "~@4 [c3,e3,g3,c4,e4]@3 ~@5 [g2,c3,g3,c4]@3 ~", // C C5
  W: "~@4 [c3,f3]@4 [a3,c4,f4]@4 [a2,d3,g3,b3] ~ [g3,b3,d4,g4]@2, ~ f2@2 ~", X: "~ [c3,e3,g3,c4,e4]",
  Y: "~@2 [g3,d4,e4]@3 [g3,b3,e4]@3, ~ e3@3", Z: "~@2 [c3,f3]@2 [a3,c4,f4]@2 [a2,d3,g3,b3] [g3,b3,d4,g4], ~ f2@2 ~",
  AA: "[~@8 [a3,c4,e4]@11 ~ [a3,d4]@6 [a3,c4]@5 ~, ~@20 [a2,e3,e4]@11 ~]/2", AB: "~ [e3,g3,b3,e4], ~@7 e2@9",
  AC: "~@3 [a3,d4,e4] [a2,d3,a3,d4,f#4]@4", AD: "~ [a3,d4,e4] [a3,d4,f#4]@5 ~", AE: "~ [g3,c4,e4]!3",
  AF: "~@4 [a3,d4] ~ [d3,g3,b3,e4]@2 ~@4 [g3,g4] ~ [g3,b3,e4] ~", AG: "~@2 [b3,g4] [g3,b3,g4], ~@7 g2@8 ~, ~ [b2,d3]",
  AH: "[g3,c4,e4]@3 ~ [c4,e4]@6 ~@2 [g3,c4,e4] ~ [g3,c4,e4]@2, ~@3 [c3,g3]@6 ~@3 [g2,c3,e3]@4, ~ e3 ~@2", // C C5 C
  AI: "~@4 [g3,b3] ~ [e3,a3,c4]@2 ~@8, ~@2 e4 ~@5", // G Am
  AJ: "~@8 [a3,d4,f4]@4 [a2,d3,g3,b3] ~ [c3,e3,g3,c4]@2, ~ [f2,c3]@2 ~", // Dm G C F5
  AK: "~@4 [e3,c4,e4]@5 ~@3 [g3,c4,e4] ~ [g3,c4,e4]@2, ~@3 [c3,g3]@6 ~@3 [c3,e3]@4", // C C5 C
  AL: "[~@8 [a3,c4,e4]@11 ~ [a3,d4]@6 [a3,c4]@5 ~, ~@5 [a2,e3,e4]@3]/2", // Am D5 Am A5
  AM: "~@4 [a3,d4] ~ [d3,g3,b3] ~@5 [g3,g4] ~ [g3,e4] ~", // D5 G C
  AN: "[~@2 c3@2 ~@4 g4 ~ a4 ~ [d3,g3,b3,e4,b4]@2 [g3,b3,g4]@2 ~@4 [g4,a4]@4 ~@2 f4@2 [g3,b3,g4] ~ [a2,a3,c4] ~, g4@4 [g3,c4,e4]@8 ~@2 b4@5 ~@5 g4@4 ~@2 e4@2, ~@2 g2@9 ~@8 g2@9 ~@4, ~ e3@3 ~@6 [d3,g3,b3]@4 ~@2]/2", // Em7 G Gsus2 G Am C G
  AO: "[~@8 [a2,e3,a3,c4,e4] ~ [a3,c4,e4,f4] ~ [a3,c4,e4]@2 g4@5 ~ e2 ~@5 d4@3 ~ c4@2, ~@12 g4 ~@7 f4@4 [g#3,b3,e4]@7 ~, ~@11 e2@3 ~@2]/2", // Am Fmaj7 Am E
  AP: "[f2,c3]@4 [c3,f3,a3,c4]@3 ~ a3@2 a3@2 [f2,f3,c4] ~ [f2,c3,d4]@2, ~@8 [f3,c4,e4]@5 ~@3", // F5 F F5 Dm7 Fmaj7
  AQ: "[~@2 e4@3 ~ c4@2 d4@2 d4@4 e4@5 ~@5 [g3,c4]@6 ~@2, [f3,a3,d4]@5 ~@3 [f3,a3]@8 ~@6 e3@8 ~@2, ~@3 e4]/2", // C5 Dm F
  AR: "~@4 g3@4 g3@2 e3 ~ d3@4, ~ g2@5 ~@2, ~ e3@3 ~@4, ~@4 [c4,e4]@7 ~@5", // C
  AS: "~@2 c3@2 [g3,c4,e4]@7 ~@5, ~ g2@5 ~@2, ~ e3@3 ~@4", AT: "~@4 [g3,d4,e4]@6 [g3,b3,e4]@5 ~, ~ e3@3",
  AU: "~ [b2,e3,g3,b3,e4], ~@7 e2@9", AV: "~@4 [a3,d4]@2 [d3,g3,b3,e4] ~@5 [g3,g4] ~ [g3,b3,e4] ~",
  AW: "~@2 [g3,b3,g4]!2, ~@7 g2@7 ~@2, ~ [b2,d3]", AX: "~@6 [e3,a3,c4] ~@9",
  AY: "[g4@2 ~@2 [g3,c4,e4]@4 g4 ~ a4 ~ [d3,g3,b3,e4,b4]@2 [g3,b3,g4]@2 ~@4 [g4,a4]@4 ~@2 f4@2 [g3,b3,g4] ~ [a2,a3,c4] ~, ~@2 g2@9 ~@8 g2@9 ~@4, ~@2 e3@6 [g3,c4,e4]@4 ~@2 b4@5 ~ [d3,g3,b3]@8 ~@4, ~@12 g4@2 ~ e4]/2", // C Em7 G Gsus2 G Am C G
  AZ: "[~@2 e4@3 ~ c4@2 d4@2 d4@4 e4@5 ~@13, [f3,a3,d4]@5 ~@3 [f3,a3]@8 ~@16]/2", // Dm F
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@4 A ~@6 B A ~@7 C D ~ E F ~@3 C D ~ E F ~ G ~@11 H ~@3 I ~ C D ~ E F ~@3 C D ~ E J ~ G ~@11 H ~@3 K ~ C D ~ E F ~@3
  L ~@6 B A ~@19 M ~@2 N ~ E J ~@3 A ~@6 B A ~@5
>`.pickRestart({
  A: "~@2 [e2,e3] ~@13", B: "~@10 [a3,e4] ~@5", C: "~@2 g3 ~", D: "~@4 e3 ~@5 c4 ~ [a3,c4,e4]@4", E: "~@2 f2@5 ~",
  F: "~@4 f3@7 ~@5", G: "~@4 g2@3 ~@5 [e3,e4]@3 ~", H: "~ b2", I: "~@4 f4 ~@7 b3 ~@3", J: "~ f3@2 ~",
  K: "~@4 f4 ~ e4 ~@5 b3 ~@3", L: "~@2 e2 ~@13", M: "~@4 f4@2 ~@6 b3 ~@3", N: "~@10 c4 ~ [a3,c4,e4]@4",
})).s("gm_acoustic_guitar_steel").gain(0.23)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@2 C B C@2 D C B@2 E B@4 C B F E G B@8 F B G B H C B@3 C B@2 E B@3 D B@4 F E G B@8 F B G B H C B@3 C B@2 E B@3 D
  B@2 C I F E G B@3 C B@2 C B C@2 D C B@2 E B@4 C B@3 C B@2 E B@3 D B@2 C I F E G B@3 C B@2 C B C@2 D C B@2 E B@3 ~@2
>`.pickRestart({
  A: "~@7 x", B: "x", C: "x ~@6 x", D: "x ~@2 x ~@3 x", E: "x!2 ~@2", F: "x ~@4 x ~@2", G: "x ~@2 x",
  H: "x ~@2 x ~ x ~@2", I: "x!4",
})).gain(0.5)

// drums · kick · soft notes
// … 105 more lines