Strudelify
You Keep Me Hangin' On cover art

Another Step

You Keep Me Hangin' On

Kim Wilde

KeyG minorTempo128 bpm
0:00/0:00
// You Keep Me Hangin' On — Kim Wilde
// 128 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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(`<
  ~@2 A B C D A B C D A B C D A B C D E F G H I J K L M N O P Q@2 R S Q@2 T U V@2 W X Y J Z H AA AB AC H AD J Z AE Q@2 R
  S Q@2 AF AG@2 B C AH A B C D AI AJ AK AL AI AM AN AO AP AM AQ AL Q@2 AR AS Q@2 AF AS V@2 W AT AP AJ AN AL AP AJ AK AL
  AP AM AQ AO AI AM AK AU AV AJ AN AO AP AJ AQ AU AP AJ AN AL AV AW AN AL AI AJ AK AU AI AJ AQ AO AX AY
>`.pickRestart({
  A: "g2", B: "f2", C: "d2", D: "eb2", E: "d2@4 g2@2 d2@3 ~ d2@2 g2@4", F: "c2@2 f2 c2 ~ c2 f2@2",
  G: "d2@4 f2@2 d2@3 ~ d2@2 f2@4", H: "eb2@2 g2@2 eb2@2 g2 f2", I: "g2@3 ~ d2@2 g2!2 ~ f2 g2@2 d2@4, ~@4 g2 ~@11",
  J: "f2@3 ~ c2@2 f2!2 ~ c2 f2@2 ~@2 f2 ~, ~@4 f2 ~@7 c2@4", K: "d2@3 f2@2 d2 f2@2", L: "eb2@3 g2@3 f2@2",
  M: "g2@3 ~ [d2,g2]@2 g2!2 ~ [f2,g2] g2@2 d2@4", N: "f2@2 c2 f2 ~ f2 c2@2, d2 ~@15",
  O: "d2@5 ~ d2!2 ~ c2 ~@4 d3 ~, ~@3 d2", P: "eb2@5 ~ eb2@6 f2@4", Q: "eb2 ab2 eb2 ab2 eb2 ab2 eb2 ab2",
  R: "eb2@2 g2@2 eb2@2 g2@2 eb2@2 g2@2 eb2 ~ g2@2", S: "f2@3 d2@2 eb2 e2 f2", T: "eb2 g2 eb2 g2 eb2 g2 eb2 g2",
  U: "f2@5 ~ f2@4 g2@2 f2@3 ~", V: "f2 a2 f2 a2 f2 a2 f2 a2", W: "gb2 a2 gb2 a2 gb2 a2 ~ a2, ~@3 gb2",
  X: "bb2@2 a2@2 g2 a2 bb2 a2", Y: "g2@2 d2 g2 ~ g2 d2@2, a2 ~@15",
  Z: "d2@3 ~ f2@2 d2!2 ~ a1 d2@2 ~@2 d2 ~, ~@4 d2 ~@7 f2@4", AA: "g2@3 ~ [d2,g2]@2 g2!2 ~ d2 g2@2 ~@2 g2 ~, ~@3 d2",
  AB: "f2@3 ~ [c2,f2]@2 f2!2 ~ c2 f2@2 ~@2 f2 ~, ~@3 c2", AC: "d2@3 ~ d2@2 ~ d2 ~ a1 d2@2 ~@2 d2 ~, ~@3 f2@2 ~ f2@2",
  AD: "g2@3 ~@3 g2!2 ~ f2 g2@2 ~@2 g2 ~, ~@2 g2 ~@5, ~@5 d2@2 ~@5 d2@4", AE: "eb2@2 g2 eb2 ~ eb2 g2 f2, f2 ~@15",
  AF: "eb2@3 ~ eb2@2 ~ eb2 ~ bb1 eb2@3 ~ eb2 ~", AG: "[g1,g2]/2", AH: "c2", AI: "g2@3 ~ g2@2 ~ g2 ~ d2 g2@4 g2 ~",
  AJ: "f2@3 ~ f2@2 ~ f2 ~ c2 f2@3 ~ f2 ~", AK: "d2@3 ~ d2@2 ~ d2 ~ a1 d2@4 d2 ~",
  AL: "c2@3 ~ c2@2 ~ c2 ~ g1 c2@3 ~ c2 ~", AM: "f2@3 ~ f2@2 ~ f2 ~ c2 f2@4 f2 ~",
  AN: "d2@3 ~ d2@2 ~ d2 ~ a1 d2@3 ~ d2 ~", AO: "c2@3 ~ c2@2 ~ c2 ~ g1 c2@4 c2 ~", AP: "g2@3 ~ g2@2 ~ g2 ~ f2 g2@4 d2 ~",
  AQ: "d2@3 ~ d2@2 ~ d2 ~ c2 d2@4 a1 ~", AR: "eb2@3 ~ eb2@2 ~ eb2 ~ bb1 eb2@4 eb2 ~",
  AS: "bb1@3 ~ bb1@2 ~ bb1 ~ f1 bb1@3 ~ bb1 ~", AT: "d2@3 ~ d2@2 ~ d2 ~ c2!2 ~ c2@2 d2 ~",
  AU: "c2@3 ~ c2@2 ~ c2 ~ bb1 c2@4 g1 ~", AV: "g2@3 ~ g2@2 ~ g2 ~ d2 g2@3 ~ g2 ~",
  AW: "f2@3 ~ f2@2 ~ f2 ~ f2 f2@4 c2 ~", AX: "c2@3 ~ c2@2 ~ c2 ~ g1!2 ~ bb1@2 c2 ~", AY: "c2@15 ~",
})).s("gm_electric_bass_finger").gain(0.34).pan(0.4)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@2 A B C D E F@2 G H I J K L M N O P Q N R S T U V W I X V Y@2 Z AA Y@2 AB AC AD@2 AE@2 AF I AG R P AH AI O AJ I AK
  AL Y@2 AM AA AN@2 AO AP AQ AR AI AS AQ AR AI AT W AU AV O AW M N AX S I AY AZ Y@2 AO BA BB@2 BC BD BE@2 BF@2 AQ BG AI
  BH AW AH AI BI AF I AI V BJ M BK R P BL AI R W I AI BH AW AU AK BI AW T BM BH BJ BL J R BJ AH BN O BO BP
>`.pickRestart({
  A: "[g3,bb3,d4]@13 ~@3, [g4,bb4]", B: "[a3,c4,f4]@9 ~@7, a4, f3@13 ~@3", C: "[c4,d4,f4]@5 c4@3, a4, [d3,a3]@3 ~",
  D: "[bb3,c4,eb4,g4]@4 ~ [bb3,eb4,g4]@2 ~, g3@3 ~, ~@5 c4@3", E: "g4@10 g4@5 ~, [g2,g3,bb3,d4,bb4]@15 ~",
  F: "[[a3,c4,f4]@5 a3 ~@2 [a3,d4,f4]@5 a3 ~@2, [f3,a4]@7 a4@7 ~@2, ~@3 f4 d3@3 ~]/2", // F Dm F
  G: "[bb3,c4,eb4,g4]@5 ~@2 g4, g3@15 ~, ~@5 bb3@3, ~@3 eb4", H: "[bb4,d5], g4 ~@15", I: "[a3,c4,f4]",
  J: "~@13 a4@3, [d3,c4], f4@7 ~, ~@5 a3@3", K: "[bb3,c4,eb4,g4]@5 ~@2 g4, ~@5 bb3@3, ~@3 eb4",
  L: "[d4,g4,bb4]@9 ~ [d4,g4,bb4]@2 ~@4", M: "~@5 a3@3, [f2,c4], a4@7 ~", N: "[a3,d4,f4]",
  O: "~@13 g4@3, [c3,bb3], eb4@7 ~, ~@5 g3@3", P: "[g3,bb3,d4]@4 ~ [g3,bb3,d4]@3",
  Q: "[a3,c4,f4]@9 ~ [a3,c4,f4]@2 ~ [a3,c4,f4] ~@2", R: "[bb3,c4,eb4,g4]@4 ~ [bb3,c4,eb4,g4]@3",
  S: "~@5 bb3@3, [g2,d4], bb4@7 ~", T: "f4@10 [f4,f5]@5 ~, [f2,a3,a4]@15 ~", U: "[a3,d4,f4]@5 ~@2 a4, ~@5 a3@3, ~@3 f4",
  V: "[bb3,c4,eb4,g4]@9 ~ [bb3,c4,eb4,g4]@2 ~ [bb3,c4,eb4,g4] ~@2", W: "[g3,bb3,d4]",
  X: "~@13 d4@3, [a3,d4]@3 a3, a4@5 a4@3, ~@7 d3@9", // D5
  Y: "[~@4 c5@9 ~@2 c5@13 ~@3 c4, [c4,ab4]@13 c4@17 ab4@2, ~ eb5@6 eb5, ~@14 ab4@15 c5@3]/2", // Fm
  Z: "~@13 bb3@3, g4, [g3,bb3]@3 g3, ~@7 eb2@9", AA: "[bb3,d4,f4]", AB: "[g3,bb3,eb4]", AC: "[bb2,f3,d4,f4]@15 ~",
  AD: "[[a3,c4,f4]@12 ~@3 c5, ~@13 f4@3, ~@7 a4]/2", AE: "[[gb3,d4,gb4,c5] [a3,d4,gb4], [c4,a4]@3 ~]/2",
  AF: "[g3,bb3,d4]@9 ~ [g3,bb3,d4]@2 ~ [g3,bb3,d4] ~@2", AG: "f4@10 [f4,f5]@5 ~, [d3,c4,a4]@15 ~",
  AH: "[a3,c4,f4]@5 ~@2 a4, ~@5 a3@3, ~@3 f4", AI: "[c4,d4,f4,a4]", AJ: "~@13 d4@3, bb4, bb3@3 bb3, ~@7 g2@9",
  AK: "[c4,d4,f4,a4]@5 ~@2 a4, ~@5 c4@3, ~@3 f4", AL: "[bb3,c4,eb4,g4]@5 bb3@3",
  AM: "eb4@10 [eb4,eb5]@5 ~, [eb2,g3,g4]@15 ~", AN: "[[ab3,c4,eb4]@12 ~@3 eb4, ~@13 ab3@3, ~@7 c4]/2",
  AO: "[g3,bb3,eb4]@5 ~@2 g4, ~@5 g3@3, ~@3 eb4", AP: "[g3,d4,e4]", AQ: "[g4,bb4,d5]", AR: "[a3,c4,f4,c5]",
  AS: "[bb3,c4,eb4,g4]@3 ~", AT: "[bb3,c4,eb4,bb4]@3 ~", AU: "[a3,c4,f4]@4 ~ [a3,c4,f4]@3",
  AV: "f4@10 f4@5 ~, [d3,a3,a4]@15 ~", AW: "~@13 d4@3, [bb3,d4]@3 bb3, bb4@5 bb4@3, ~@7 g2@9", AX: "[bb3,eb4,g4]@9 ~@7",
  AY: "f4@10 [f4,f5]@5 ~, [d3,a3,a4]@15 ~", AZ: "[bb3,c4,eb4,g4]",
  BA: "[bb3,d4,f4]@9 ~ [bb3,d4,f4]@2 ~ [bb3,d4,f4] ~@2", BB: "[c5@8 ~@7 eb5, c4, eb5@7 c5, ab4@8 c5@5 ab4@3, ~ ab5]/2",
  BC: "~@13 bb3@3, [g3,bb3]@3 g3, g4@5 g4@3, ~@7 eb2@9", BD: "[f3,bb3,d4]",
  BE: "[~@4 a4@9 ~@2 a4@13 ~@3 a3, [a3,f4]@13 a3@17 f4@2, ~ c5@6 c5, ~@14 f4@15 a4@3]/2", // Dm
  BF: "[~@28 [c4,gb4,a4]@3 ~, d5@3 ~, [c4,gb4]@11 ~@5, ~@3 a4@10 ~@3, ~@16 d3@15 ~]/2", // Gbdim Cdim
  BG: "[a3,c4,f4]@4 ~ [a4,c5,f5]@3", BH: "~@13 bb3@3, eb4, [g3,bb3]@3 g3, g4@5 g4@3, ~@7 c3@9",
  BI: "eb4@10 [eb4,eb5]@5 ~, [c3,bb3,g4]@15 ~", BJ: "g4@10 [g4,g5]@5 ~, [g2,bb3,bb4]@15 ~",
  BK: "~@13 c4@3, f4, [a3,c4]@3 a3, a4@5 a4@3, ~@7 d3@9", BL: "~@13 c4@3, [a3,c4]@3 a3, a4@5 a4@3, ~@7 f2@9",
  BM: "~ [c4,d4,f4,a4]@8 ~@5 d5@2, ~@9 c4@7, ~@11 f4@5, ~@13 a4@3", // Dm7
  BN: "[c4,d4,f4,a4]@9 ~ [c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4] ~@2", // Dm7
  BO: "[c3,c4]@2 [bb3,eb4,g4] ~ [c3,c4] [bb3,c4,eb4,g4] ~ c4 [bb3,c4,eb4,g4]@2 ~ [bb3,c4,eb4,g4] c3 [c3,c4] [bb3,c4,eb4,g4] ~, ~@2 c4@2 ~@3 c3@3 ~@6", // C Eb C Cm7 C Cm7
  BP: "[c2,c3,bb3,c4,eb4,g4]@15 ~", // Cm7
})).s("gm_pad_poly").gain(0.17).pan(0.2)

// other · orchestra hit · "ORCH.HIT"
const orchestra_hit = note(`<
  ~@17 A B ~@2 C D ~@18 C E ~@6 F ~@3 A ~@20 G ~@2 C H ~@2 A I ~@10 C J ~@22 C J ~@17
>`.pickRestart({
  A: "~@8 g4!2 f4@2 g4@2 f4@2", B: "~ g4 f4@2 g4@2 f4@2 g4@3 ~@5", C: "~@8 g4!2 f4@2 g4 ~ f4@2", D: "bb4@3 ~@13",
  E: "g4@3 ~@13", F: "~@2 g4 ~ f4@2 ~@2 g4!2 f4 ~ g4 ~ f4@2", G: "[g4,bb4] ~@3", H: "g4 ~@7",
  I: "bb4@2 ~ f4 g4@2 f4 ~@9", J: "g4 ~@3",
})).s("gm_orchestra_hit").gain(0.48)

// other · orchestra hit · "ORCH.HIT" · soft notes
const orchestra_hit_soft = note("<~@82 A@2 ~@52>".pickRestart({
  A: "[~@7 bb4 ~@2 f4 g4@2 f4 ~ bb4@2 f4@2 g4@2 f4@2 bb4@3 ~@6]/2",
})).s("gm_orchestra_hit").gain(0.24)

// chords · kalimba
const kalimba = note(`<
  A@2 B C@2 D E C B F C B G F H I J K L M N O H P Q H R S T U V@2 W X V@2 Y Z AA AB AC AD AE B@2 D B@2 AF AG AH AI B AJ
  V@2 W X V@2 Y ~@5 B@3 AK B@3 F G AL G AM AN B@2 AO V@2 W X V@2 Y Z AP AB AC AD AQ AR AS@3 AR AS AR AS AT AU AV AS@2 AW
  AX AS AY AZ AS AX@3 BA AQ AS AX AS@2 AX AS AY AS AX AS@2 AW@4 BB ~
>`.pickRestart({
  A: "a3 d3 g3 d3 a3 d3 g3 d3 a3 d3 g3 d3 a3 d3 g3 d3",
  B: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] a3 d3 g3 d3, g4 d4 f4 d4 ~@2 g4 d4", // A7 D G7 D
  C: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] d3 a3 d3 g3 d3, g4@2 d4@2 f4@2 d4@2 ~@3 d4@2 ~ d4@2, ~@6 g4 ~", // A7 D G7
  D: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] bb3 d3 a3 d3, g4 d4 f4 d4 ~@2 a4 d4", // A7 D G7 D
  E: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,f4,g4] [d3,d4] [g3,f4] [d3,d4] a3 d3 g3 d3, g4 d4 f4 d4 ~@2 g4 d4", // Dm D G7 D
  F: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,a4] [d3,d4] [g3,g4] [d3,d4] bb3 d3 a3 d3, g4 d4 f4 d4 ~@2 f4 d4", // A D G D
  G: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,a4] [d3,d4] [g3,g4] [d3,d4] a3 d3 g3 d3, g4 d4 f4 d4 ~@2 f4 d4", // A D G D
  H: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,g4] [d3,d4] [a3,f4] [d3,d4] g3 d3 a3 d3, g4 d4 f4 d4 ~@2 g4 d4", // G D Dm D
  I: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,g4] [d3,d4] [a3,f4] [d3,d4] g3 d3 a3 d3, f4 d4 g4 d4 ~@2 g4 d4", // G D Dm D
  J: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,g4] [d3,d4] [g3,f4] d3 g3 d3 g3 d3, g4@2 d4@2 f4@2 d4@2 ~@3 d4@2 ~ d4@2, ~@6 g4 ~", // G D G7
  K: "g3 d3 g3 d3 a3 d3 g3 d3 [a3,f4] [d3,d4] [g3,g4] [d3,d4] g3 d3 g3 d3, a4 d4 g4 d4 ~@2 f4 d4", // Dm D G D
  L: "g3 d3 g3 d3 a3 d3 g3 d3 [g3,g4] d3 [g3,d4,f4] d3 [g3,d4] d3 a3 d3, g4 d4 f4 d4 ~@2 g4 d4", // G G7 G5
  M: "g3 d3 g3 d3 g3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] g3 d3 g3 d3, g4 d4 f4 d4 ~@2 g4 d4", // A7 D G7 D
  N: "g3 d3 a3 d3 g3 d3 g3 d3 [g3,a4] [d3,d4] [a3,g4] [d3,d4] g3 d3 a3 d3, g4 d4 f4 d4 ~@2 f4 d4", // Gsus2 D A7 D
  O: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,g4] [d3,d4] [a3,f4] d3 [g3,d4] d3 a3 d3, g4@2 d4@2 f4@2 d4@2 ~@5 g4@2 ~, ~@7 d4", // G D Dm G5
  P: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,g4] [d3,d4] [a3,f4] d3 g3 d3 a3 d3, g4@2 d4@2 f4@2 d4@2 ~@3 d4@2 ~ d4@2, ~@6 g4 ~", // G D Dm
  Q: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,g4] [d3,d4] [a3,f4] [d3,d4] g3 d3 a3 d3, g4 d4 f4 d4 ~@2 a4 d4", // G D Dm D
  R: "g3 [d3,a4] a3 d3 g3 d3 a3 d3 g3 d3 a3 d3 g3 d3 a3 d3, ~@2 d4 g4 d4 f4 d4 g4", // D5
  S: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,d4] [d3,f4] [a3,d4] [d3,g4] g3 d3 a3 d3, d4 f4 d4 g4 ~@2 d4 f4", // G5 Dm D5 G5
  T: "g3 d3 a3 d3 g3 d3 [a3,f4] d3 [g3,d4] [d3,g4] [a3,d4] [d3,f4] g3 d3 a3 d3, d4 g4 d4 ~@3 d4 g4", // Dm G5 D5 Dm
  U: "g3 d3 a3 d3 g3 d3 a3 d3 [g3,d4] [d3,g4] [a3,d4] [d3,f4] g3 d3 a3 d3, d4 g4 d4 f4 ~@2 d4@2", // G5 D5 Dm
  V: "[ab3,ab4] eb3 bb3 eb3 [ab3,ab4] eb3 bb3 eb3 [ab3,ab4] eb3 bb3 eb3 ab3 eb3 bb3 eb3, ~ eb4 ~ eb4 ~ eb4 ab4 eb4", // Ab
  W: "g3 d3 a3 d3 g3 d3 a3 d3 g3 d3 a3 d3 g3 d3 a3 d3, ~@2 g4 ~ g4 ~ g4 ~",
  X: "f3 d3 a3 d3 f3 d3 a3 d3 f3 d3 a3 d3 [f3,f4] d3 a3 d3, f4@3 ~ f4@2 ~@2 f4@2 ~@6", // F
  Y: "g3 d3 a3 d3 g3 d3 [a3,f4] d3 g3 d3 a3 d3 g3 d3 a3 d3, g4@3 ~@3 g4@2 ~@2 f4@2 g4@2 ~@2", // Dm
  Z: "f3 d3 a3 d3 f3 d3 a3 d3 f3 d3 a3 d3 [f3,f4] d3 [a3,g4] d3, f4@3 ~ g4@3 ~ f4@2 g4@2 ~@4", // F A7
  AA: "f3 c3 a3 c3 f3 c3 a3 c3 f3 c3 [a3,a4] c3 f3 c3 a3 c3, a4@3 ~@3 f4@3 ~@3 f4@2 a4@2", // A
  AB: "f3 c3 [a3,a4] c3 f3 c3 a3 c3 f3 c3 a3 c3 f3 c3 a3 c3, f4 ~ f4 a4 f4@2 bb4 f4", // A
  AC: "gb3 c3 a3 c3 gb3 c3 a3 c3 gb3 c3 [a3,a4] c3 gb3 c3 a3 c3, a4@3 ~@3 gb4@3 ~@3 gb4@2 a4@2", // A
  AD: "g4 c3 [bb3,bb4] c3 g3 c3 bb3 c3 g3 g2 bb3 g2 ~ g2 ~ g2, ~@2 g4 bb4 ~@4", // Bb
  AE: "[a3,g4] d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] a3 d3 g3 d3, ~ d4 f4 d4 ~@2 g4 d4", // A7 D G7 D
  AF: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] a3 d3 g3 d3, g4 d4 f4 d4 ~@2 a4 d4", // A7 D G7 D
  AG: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] bb3 d3 a3 d3, g4 d4 f4 d4 ~@2 g4 ~", // A7 D G7 D
  AH: "~ d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] a3 d3 g3 d3, ~ d4 f4 d4 ~@2 g4 d4", // A7 D G7 D
  AI: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] d3 a3 d3 g3 d3, g4@2 d4@2 f4@2 d4@2 ~@3 d4@2 ~ d4@2, ~@6 a4 ~", // A7 D G7
  AJ: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] bb3 d3 [a3,d4] d3, g4 d4 f4 d4 ~@2 a4 ~", // A7 D G7 D D5
  AK: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] d3 bb3 d3 a3 d3, g4@2 d4@2 f4@2 d4@2 ~@3 d4@2 ~ d4@2, ~@6 a4 ~", // A7 D G7
  AL: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,f4] [d3,d4] [g3,g4] [d3,d4] a3 d3 g3 d3, a4 d4 g4 d4 ~@2 f4 d4", // Dm D G D
  AM: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] d3 [g3,f4] d3 bb3 d3 ~ d3, g4 d4 f4 d4 ~@4", // A7 G7
  AN: "~ d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] a3 d3 g3 d3, ~ d4 g4 d4 ~@2 g4 d4", // A7 D G7 D
  AO: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] [d3,d4] [g3,f4] [d3,d4] bb3 d3 a3 d3, g4 d4 f4 d4 ~@2 g4 d4", // A7 D G7 D
  AP: "f3 c3 [a3,a4] c3 f3 c3 a3 c3 f3 c3 a3 c3 f3 c3 a3 c3, f4 ~ f4 a4 f4@2 a4 f4", // A
  AQ: "~@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 g4@2 d4@2", AR: "g4@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 a4@2 d4@2",
  AS: "g4@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 g4@2 d4@2", AT: "g4 d4 f4 d4 g4@2 d4@2 f4@2 d4@2 g4@2 d4@2",
  AU: "g4 d4 f4 d4 g4@2 d4@2 g4@2 d4@2 f4@2 d4@2", AV: "g4 d4 f4 d4 a4@2 d4@2 g4@2 d4@2 f4@2 d4@2",
  AW: "a4@2 d4@2 g4@2 d4@2 f4 d4 g4 d4 f4@2 d4@2", AX: "g4@2 d4@2 f4@2 d4@2 a4 d4 g4 d4 f4@2 d4@2",
  AY: "f4@2 d4@2 g4@2 d4@2 g4 d4 f4 d4 g4@2 d4@2", AZ: "g4@2 d4@2 f4@2 d4@2 a4 d4 g4 d4 f4@2 d4@2, ~@12 d4 ~@3",
  BA: "g4@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 g4@2 ~@2", BB: "g4@2 d4 ~ f4 ~ d4@2 g4@2 d4@2 f4@2 d4@2",
})).s("gm_kalimba").gain(0.17)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@18 A B C D E F G D E F H I ~@12 J K L M N O P Q N R S T ~@7 U@3 V W E F X Y E F Z AA AB AC AD AE AF AC AG AF AH@2 AF
  AI AH@2 AF AI AC@2 AJ@2 AK@2 AL AM E F Z AN E F AO AP E AQ AR AS E AT@2 AN AU AV AW@4 AX AY E AT@2 AN AZ BA@2 BB BC BD
  BE@2 ~ BF
>`.pickRestart({
  A: "[g4,bb4,d5]@7 ~, c-1", B: "[f4,a4,c5]@7 ~, c-1", C: "[d4,f4,a4]@3 ~, c-1", D: "[eb4,g4,bb4]@13 ~@3",
  E: "[g4,bb4,d5]@7 ~", F: "[f4,a4,c5]@7 ~", G: "[d4,f4,a4]@3 ~", H: "[d4,f4,a4]@13 ~@3", I: "[eb4,g4,bb4]",
  J: "~@12 bb4@3 ~, [g4,d5]@15 ~", K: "~@6 f5@9 ~, ~ f4@7, ~ a4@3", L: "~@12 a4@3 ~, [f4,c5]@15 ~",
  M: "[bb3,eb4]@11 ~ bb3@2 ~@2, g4@9 ~@7", N: "~ bb5@3, g5@7 ~, d6@9 ~@7", O: "c6@6 ~@6 a5@3 ~, f5@7 ~, ~@6 c6@9 ~",
  P: "~@12 a5@3 ~, [d5,f5]@15 ~", Q: "[eb5,bb5]@15 ~", R: "~@12 a5@3 ~, [f5,c6]@15 ~", S: "~@2 a5 c5, d5, f5@3 ~",
  T: "~@2 g4 bb3, c5, eb4@3 ~", U: "[g4@15 a4@16 g4@16 ~]/3", V: "f4", W: "eb4@15 ~", X: "[d4,a4,d5]@15 ~",
  Y: "[g4,bb4]@13 ~@3", Z: "[d4,a4,d5]@7 ~", AA: "[g4,bb4]@15 ~", AB: "g5@5 ~ g5@10", AC: "a5", AD: "d5",
  AE: "eb5@11 ~@5", AF: "g5", AG: "f5@3 a5", AH: "ab5/2", AI: "f5", AJ: "[a4@15 bb4@5 a4@4 g4@7 ~]/2",
  AK: "[~ a4, ~ g4@8 ~@7]/2", AL: "bb4 a4", AM: "g4@11 ~@5", AN: "[g4,bb4]@7 ~", AO: "[d4,a4,d5]@5 ~ [d4,a4,d5]@8 ~@2",
  AP: "[g4,bb4]@6 ~@3 [g4,bb4]@6 ~", AQ: "[f4,a4,c5]@13 ~@3", AR: "[d4,a4,d5]@13 ~@3", AS: "[g4,bb4]",
  AT: "[[f4,a4,c5]@14 ~ [d4,a4,d5]@14 ~@3]/2", AU: "~@4 [g4,bb4,d5]@11 ~", AV: "[a4,c5]@3 ~", AW: "d5 c5", AX: "g4 bb4",
  AY: "g4@7 c5@8 ~", AZ: "~ d5@3", BA: "[c5@3 d5]/2", BB: "bb4 g4", BC: "~ g4@3", BD: "a4",
  BE: "[g4@8 a4@7 g4@14 ~@3]/2", BF: "[g4,bb4,d5]",
})).s("gm_string_ensemble_2").gain(0.22).pan(0.9)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@18 A B C D E B F G A H I J ~@12 E K L G M B N O P K N O ~@80 Q R>".pickRestart({
  A: "~@2 [d4,bb4] bb3@2 [d4,bb4] ~ bb3 [d4,bb4] ~ bb3 [d4,bb4] ~ bb3 [d4,bb4] ~, g2@7 ~", // Gm
  B: "~@2 [c4,a4] a3@2 [c4,a4] ~ a3 [c4,a4] ~ a3 [c4,a4] ~ a3 [c4,a4] ~, f2@7 ~", // F
  C: "~@4 [a3,d4,f4]!4 ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2", // Dm
  D: "~@4 [bb3,c4,eb4,g4]!4 ~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~@2", // Cm7
  E: "~@4 [d4,g4,bb4]!4 ~@2 [d4,g4,bb4] ~@2 [d4,g4,bb4] ~@2", // Gm
  F: "~@2 [d4,a4] a3@2 [d4,a4] ~ a3 [d4,a4] ~ a3 [d4,a4] ~ a3 [d4,a4] ~, d3@7 ~", // D5
  G: "~@2 [bb3,eb4] ~@2 [bb3,eb4] ~ g3 [bb3,eb4] ~ c3 [bb3,eb4] ~ c2 [bb3,eb4] ~, c3 ~", // Eb5
  H: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~", // F
  I: "~@2 [d4,a4] ~@2 [d4,a4] ~ a3 [d4,a4] ~ d3 [d4,a4] ~ d2 [d4,a4] ~, d3 ~", // D5
  J: "~@2 [bb3,eb4,g4] g3@2 [bb3,eb4] ~ g3 [bb3,eb4] ~ g3 [bb3,eb4] ~ g3 [bb3,eb4] g4, c3@7 ~", // Eb Eb5
  K: "~@4 [a3,c4,f4]!4 ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2", // F
  L: "~@2 [c4,f4,a4] a3@2 [c4,f4] ~ a3 [c4,f4] ~ a3 [c4,f4] ~ a3 [c4,f4] a4, d3@7 ~", // F F5
  M: "~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4] ~@2 [g3,bb3,d4] ~", // Gm
  N: "~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~", // Dm7
  O: "~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~", // Cm7
  P: "~@2 d4 ~@2 [d4,bb4] ~ bb3 [d4,bb4] ~ g2 [d4,bb4] ~ g2 [d4,bb4] ~", // Gm
  Q: "~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~", R: "[bb3,eb4]@13 ~@3",
})).s("gm_electric_guitar_muted").gain(0.14).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A@3 B A@3 B A@4 C@3 D C E@3 C@2 E F A@11 G C@2 E@3 C E D H C@2 A@8 B A B A B@2 A B A C@3 D C@3 I J C@2 K B A B A
  B@2 A B A@4 C@11 L C@7 L C@4 J C@14 M N O
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x ~ x ~@4 x ~ x!2 ~@3 x ~", D: "x ~@10 x ~@2 x ~",
  E: "x ~ x ~@4 x ~ x!2 ~@2 x!2 ~", F: "x ~ x ~@4 x ~ x!2 ~@5", G: "x ~ x ~ x ~@2 x!4 ~ x ~@3",
  H: "~@2 x ~@4 x ~ x!2 ~@3 x ~", I: "x ~@6 x ~ x ~@4 x ~", J: "~@7 x ~ x!2 ~@3 x ~", K: "x ~ x ~@4 x ~ x ~ x ~@2 x ~",
  L: "x ~ x ~@4 x ~@3 x ~@3 x", M: "x ~ x ~@4 x ~ x!2 ~@4 x", N: "x ~ x ~@4 x ~ x!2 ~@2 x ~@2", O: "x",
})).gain(0.37)
// … 65 more lines

More by Kim Wilde