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, A@4 for four bars: 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 AJ AK AL AM AJ AN AL Q@2 AO AP Q@2 AF AP V@2 W AQ AM AJ AK AL AM AJ AK AL
  AM AJ AN AL AI AJ AK AR AI AJ AK AL AM AJ AN AR AM AJ AK AL AI AS AK AL AI AJ AK AR AI AJ AN AL AT AH
>`.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@3 ~ d2 ~",
  AL: "c2@3 ~ c2@2 ~ c2 ~ g1 c2@3 ~ c2 ~", AM: "g2@3 ~ g2@2 ~ g2 ~ f2 g2@4 d2 ~", AN: "d2@3 ~ d2@2 ~ d2 ~ c2 d2@4 a1 ~",
  AO: "eb2@3 ~ eb2@2 ~ eb2 ~ bb1 eb2@4 eb2 ~", AP: "bb1@3 ~ bb1@2 ~ bb1 ~ f1 bb1@3 ~ bb1 ~",
  AQ: "d2@3 ~ d2@2 ~ d2 ~ c2!2 ~ c2@2 d2 ~", AR: "c2@3 ~ c2@2 ~ c2 ~ bb1 c2@4 g1 ~",
  AS: "f2@3 ~ f2@2 ~ f2 ~ f2 f2@4 c2 ~", AT: "c2@3 ~ c2@2 ~ c2 ~ g1!2 ~ bb1@2 c2 ~",
})).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 C ~@20 G ~@2 C H ~@2 A I ~@10 C E ~@22 C E ~@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", 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",
})).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@3 C D B@2 E B@2 F E G H I J K L M N G@2 O G P Q R S T@2 U V T@2 W X Y Z AA AB B@3 C B@2 AC AD AE AC B C T@2 U V
  T@2 W ~@5 B@3 C B@3 E F AF F AG AH B@2 AI T@2 U V T@2 W X AJ Z AA AB AK AL AM@3 AL AM AL AM AN AO AP AM@2 AQ AR AM AS
  AT AM AR@3 AU AK AM AR AM@2 AR AM AS AM AR AM@2 AQ@4 AV ~
>`.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,d4] bb3 d3 a3 d3, g4 d4 f4 d4 ~@2 a4 d4", // A7 D G7 D
  D: "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
  E: "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
  F: "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
  G: "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
  H: "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
  I: "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
  J: "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
  K: "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
  L: "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
  M: "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
  N: "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
  O: "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
  P: "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
  Q: "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
  R: "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
  S: "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
  T: "[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
  U: "g3 d3 a3 d3 g3 d3 a3 d3 g3 d3 a3 d3 g3 d3 a3 d3, ~@2 g4 ~ g4 ~ g4 ~",
  V: "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
  W: "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
  X: "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
  Y: "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
  Z: "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
  AA: "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
  AB: "g4 c3 [bb3,bb4] c3 g3 c3 bb3 c3 g3 g2 bb3 g2 ~ g2 ~ g2, ~@2 g4 bb4 ~@4", // Bb
  AC: "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
  AD: "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
  AE: "~ 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,f4] [d3,d4] [g3,g4] [d3,d4] a3 d3 g3 d3, a4 d4 g4 d4 ~@2 f4 d4", // Dm D G D
  AG: "a3 d3 g3 d3 a3 d3 g3 d3 [a3,g4] d3 [g3,f4] d3 bb3 d3 ~ d3, g4 d4 f4 d4 ~@4", // A7 G7
  AH: "~ 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
  AI: "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
  AJ: "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
  AK: "~@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 g4@2 d4@2", AL: "g4@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 a4@2 d4@2",
  AM: "g4@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 g4@2 d4@2", AN: "g4 d4 f4 d4 g4@2 d4@2 f4@2 d4@2 g4@2 d4@2",
  AO: "g4 d4 f4 d4 g4@2 d4@2 g4@2 d4@2 f4@2 d4@2", AP: "g4 d4 f4 d4 a4@2 d4@2 g4@2 d4@2 f4@2 d4@2",
  AQ: "a4@2 d4@2 g4@2 d4@2 f4 d4 g4 d4 f4@2 d4@2", AR: "g4@2 d4@2 f4@2 d4@2 a4 d4 g4 d4 f4@2 d4@2",
  AS: "f4@2 d4@2 g4@2 d4@2 g4 d4 f4 d4 g4@2 d4@2", AT: "g4@2 d4@2 f4@2 d4@2 a4 d4 g4 d4 f4@2 d4@2, ~@12 d4 ~@3",
  AU: "g4@2 d4@2 f4@2 d4@2 g4 d4 f4 d4 g4@2 ~@2", AV: "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 G H ~@12 I J K L M N O P M Q R S ~@7 T@3 U V E F W X E F W X Y Z AA AB AC Z AD AC AE@2 AC AF
  AE@2 AC AF Z@2 AG@2 AH@2 AI AJ E F AK X E F AL AM E AN AK AO E AP@2 X AQ AR AS@4 AT AU E AP@2 X AV AW@2 AX AY AZ BA@2
  ~ BB
>`.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: "[eb4,g4,bb4]", I: "~@12 bb4@3 ~, [g4,d5]@15 ~",
  J: "~@6 f5@9 ~, ~ f4@7, ~ a4@3", K: "~@12 a4@3 ~, [f4,c5]@15 ~", L: "[bb3,eb4]@11 ~ bb3@2 ~@2, g4@9 ~@7",
  M: "~ bb5@3, g5@7 ~, d6@9 ~@7", N: "c6@6 ~@6 a5@3 ~, f5@7 ~, ~@6 c6@9 ~", O: "~@12 a5@3 ~, [d5,f5]@15 ~",
  P: "[eb5,bb5]@15 ~", Q: "~@12 a5@3 ~, [f5,c6]@15 ~", R: "~@2 a5 c5, d5, f5@3 ~", S: "~@2 g4 bb3, c5, eb4@3 ~",
  T: "[g4@15 a4@16 g4@16 ~]/3", U: "f4", V: "eb4@15 ~", W: "[d4,a4,d5]@15 ~", X: "[g4,bb4]@7 ~", Y: "g5@5 ~ g5@10",
  Z: "a5", AA: "d5", AB: "eb5@11 ~@5", AC: "g5", AD: "f5@3 a5", AE: "ab5/2", AF: "f5",
  AG: "[a4@15 bb4@5 a4@4 g4@7 ~]/2", AH: "[~ a4, ~ g4@8 ~@7]/2", AI: "bb4 a4", AJ: "g4@11 ~@5", AK: "[d4,a4,d5]@7 ~",
  AL: "[d4,a4,d5]@5 ~ [d4,a4,d5]@8 ~@2", AM: "[g4,bb4]@6 ~@3 [g4,bb4]@6 ~", AN: "[f4,a4,c5]@13 ~@3",
  AO: "[g4,bb4]@15 ~", AP: "[[f4,a4,c5]@14 ~ [d4,a4,d5]@14 ~@3]/2", AQ: "~@4 [g4,bb4,d5]@11 ~", AR: "[a4,c5]@3 ~",
  AS: "d5 c5", AT: "g4 bb4", AU: "g4@7 c5@8 ~", AV: "~ d5@3", AW: "[c5@3 d5]/2", AX: "bb4 g4", AY: "~ g4@3", AZ: "a4",
  BA: "[g4@8 a4@7 g4@14 ~@3]/2", BB: "[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)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A B@3 C B@7 D B@3 E B@7 F B@7 C B@3 G B@7 ~@5 B@7 C B@7 G B@11 H B@7 H B@31 E D ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x!2 ~ x!2 ~@2 x ~ x!2 ~ x ~@3", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x!2 ~@6 x ~@3",
  F: "~@4 x ~@7 x!4", G: "~@4 x ~@3 x ~ x ~ x!2 ~@2", H: "~@4 x ~@7 x ~@2 x",
})).gain(0.37)

// drums · low tom
// … 55 more lines

More by Kim Wilde