Strudelify
Here Comes the Rain Again cover art

2014 · Nostalgia

Here Comes the Rain Again

Annie Lennox

KeyC majorTempo126 bpm
0:00/0:00
// Here Comes the Rain Again — Annie Lennox
// 126 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 162 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@3 ~@3 B@5 ~@3 C@3 ~@5 A@3 ~@5 A@3 ~@15 D@3 ~@3 E@8 F@3 ~@11 G@3 H I ~@7 J ~@7 K@7 L@4 ~@5 K@7 M@40 ~@2
>`.pickRestart({
  A: "[~ a3@2, ~@14 e4@33 ~, ~@5 [b3,c4]@11]/3", // Cmaj7
  B: "[~@8 a3@15 ~ a3@15 ~, ~@14 e4@30 ~@2 e4@31 ~@3, ~@15 [b3,c4]@30 ~@2 [b3,c4]@30 ~@3]/5", // Cmaj7
  C: "[~@4 [a3,c4]@7 ~, ~@15 [b3,e4]@29 ~@4]/3", D: "[[d5,g5]@3 ~ a3@8, ~@14 e4@33 ~, ~@5 [b3,c4]@11]/3",
  E: "[~@16 a3@29 ~@3 a3@24 ~@8 [f3,a3]@23 ~@9 g3@16, ~@14 e4@30 ~@3 c4@25 ~@7 [c4,f4]@24 ~@25, ~@15 [b3,c4]@30 ~ [b3,e4]@26 ~@39 [b3,d4,g4]@17]/8", // F F5 Cmaj7 E5 G
  F: "[~@16 [a3,c4]@25 ~@7, ~@7 a2@14 ~@3, ~@15 e3@26 ~@7]/3", // Am
  G: "[~@16 d4@23 ~@3 d3@2 ~@2 d4@2, ~@15 [d3,f#3,a3]@24 ~@5 d3@4]/3", H: "d4@2 g3 ~ g3@2 g3@6 ~@4", I: "[d5,g5]@3 ~",
  J: "~@4 d4 e4 d4 e4",
  K: "[~@16 a3@24 ~@8 a3@26 ~@6 [g3,b3]@25 ~@7, ~@14 e4@25 ~@9 f3@24 ~@40, ~@15 [b3,c4]@25 ~@7 [c4,f4]@26 ~@6 [d4,g4]@26 ~@7]/7", // G Cmaj7 F5 G5
  L: "[[e4,c5]@25 ~@7 a3@24 ~@8, ~@30 e4@25 ~@9, ~@31 [b3,c4]@25 ~@8]/4", // C Cmaj7
  M: "[[e4,c5]@25 ~@7 a3@24 ~@8 a3@26 ~@6 [g3,b3]@25 ~@7, ~@30 e4@25 ~@9 f3@24 ~@40, ~@31 [b3,c4]@25 ~@7 [c4,f4]@26 ~@6 [d4,g4]@26 ~@7]/8", // C G Cmaj7 F5 G5
})).s("gm_electric_guitar_clean").gain(0.39).pan(0.6)

// bass · synth bass 1
const bass = note(`<
  ~@2 A B C B D E A B A B C B D E A B A B C B D E A B A B C B D E A B F@2 G@2 F@2 G@2 F@2 G@2 H@2 I J A B C B D E A B A
  B C B D E A B F@2 G@2 F@2 G@2 F@2 G@2 H@2 I J K L M@2 K L I N F L G@2 H@2 I J A B C B D E A B A B C B D E A B A B C B
  D E A B A B C B D E A B A B C B D E A B A B C B D E A B A B C B D E A B A B C B D O ~@2
>`.pickRestart({
  A: "[a1,a2] ~ [a1,a2] ~ [a1,a2] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [a2,a3] ~ [a2,a3] ~", // A G A
  B: "~@6 [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [a2,a3] ~ [a2,a3] ~", // G A
  C: "[f1,f2] ~ [f1,f2] ~ [f1,f2] ~ [g2,g3] ~ [g2,g3] ~ [g2,g3] ~ [a2,a3] ~ [a2,a3] ~", // F G A
  D: "[g1,g2] ~ [g1,g2] ~ [g1,g2] ~ [f2,f3] ~ [f2,f3] ~ [f2,f3] ~ [g2,g3] ~ [g2,g3] ~", // G F G
  E: "~@6 [f2,f3] ~ [f2,f3] ~ [f2,f3] ~ [g2,g3] ~ [g2,g3] ~", F: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~",
  G: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", H: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  I: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", J: "g2 ~@7", K: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  L: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2", M: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  N: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2", O: "~@6 [f2,f3] ~@9",
})).s("gm_synth_bass_1").gain(0.42)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@11 A B@2 ~@3 C D@2 E F ~@2 G H D@2 E F ~@3 I@2 J@3 ~ K L@2 ~ M N O P@2 Q R D S ~ T U V U W D X ~@4 Y Z ~ AA@2 AB AC
  K AD AE ~ AF@3 P@2 Q AG AH AI AJ ~@5 AK@2 ~ AL P@2 Q ~@8 AM AN@3 ~@4 AO V ~@2 AP ~@2 U AQ D X ~@5 AO V ~@2 AP ~@2 U AQ
  D AR AS@2 ~@2 AT AU AV ~@5 AW AX AY AZ BA@2 ~@4
>`.pickRestart({
  A: "~@12 a4 b4 c5 e5", B: "[b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5@17 ~]/2",
  C: "~@12 b4 c5 e5 g5", D: "b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5]",
  E: "b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] ~ [b4,c5]", // Cmaj7
  F: "b4 [b4,c5] ~ b4 ~@12", G: "b3@2 c4 ~ b3@2 c4 ~ b3@2 c4 ~ b3@2 c4 ~",
  H: "b4@2 c5 ~ b4@2 c5 ~ b4@2 c5 ~ b4 c5 e5 g5", I: "[~@4 b4 c5 b4 c5 b4 c5 b4 c5 b5 c6 b5 c6@2 ~@15]/2",
  J: "[c6 b5 g5 c5@5]/3", K: "c6@3 b5@5", L: "[g5@31 ~]/2", M: "c6@3 b5@3 g5@2", N: "c5@3 b4@3 g4@2",
  O: "c4@6 b3@6 g4@2 [b4,c5] [d5,e5,f5]", P: "[a5@4 d5 ~ d5@19 ~ d5 ~ d5@2 d6 ~, g5 ~@31]/2", Q: "d6@2 g5 ~ g5 ~ g5@10",
  R: "~@12 c6 b5 g5 e5", S: "b4 ~@15", T: "~@12 b4 c5 b4 c5", U: "b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5",
  V: "b4@15 ~", W: "b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 e5 g5 b5 g5 e5 c5", X: "b4 ~",
  Y: "a3 ~ a3 ~ a3 ~ g3 ~ g3 ~ g3 ~ a3 ~ a3 ~", Z: "~@6 g3 ~ g3 ~ g3 ~ [a3,b4] c5 [a3,e5] g5",
  AA: "[c6@3 b5@3 g5@3 c5@7]/2", AB: "~@4 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 e5 g5", AC: "c5", AD: "g5",
  AE: "~@4 c4@2 g4 ~ g4@2 c5 ~ c5@2 g5@2", AF: "[c6@6 b5@6 g5@31 ~ g4@2 [b4,c5] [d5,e5,f5]]/3",
  AG: "~@8 b3 c4 e4 g4 b4 c5 e5 g5", AH: "b5@3 a5@3 e5@2", AI: "b5@3 a5@3 f5@2", AJ: "a5",
  AK: "d5@2 e5 ~ d5@2 e5 ~ d5@2 e5 ~ d5@2 e5 ~", AL: "~@12 g4@2 [b4,c5] [d5,e5,f5]", AM: "~@12 c6 b5 a5 f5",
  AN: "[e5@35 ~@13]/3", AO: "~@12 c6 b5 a5 e5", AP: "~@4 e6 b5 c6@2",
  AQ: "b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 g5 e5 c5", AR: "b4@2 e6 c6", AS: "[b5@14 a5@17 ~]/2",
  AT: "~@12 e5 f5 e5 f5", AU: "e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 a5 b5 e6 b5 a5 f5", AV: "e5", AW: "~@12 b5 c6 b5 c6",
  AX: "b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 e6 g6 b6 g6 e6 b5", AY: "c6", AZ: "b5@2 e6 g6", BA: "[g6 f6@3]/2",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.6)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@20 A B ~@6 A B ~@23 C ~@108>".pickRestart({
  A: "~@14 c5 ~", B: "~@2 c5!2 b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 [b4,c5]",
  C: "~@8 b4 c5 b4 c5 ~@4",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.6)

// other · flute
const flute = note(`<
  ~@34 A@2 B@2 C@2 D@2 E F G@2 ~@14 H I ~@4 A@2 B@2 C@2 D@2 E F G@2 ~@12 E F G@2 ~@20 J@2 K L M N O P Q R@2 L S T U@2
  J@2 K L M V@2 ~ Q R@2 L S T W@2 J@2 K L M X@2 ~@9
>`.pickRestart({
  A: "[g4@4 c4@2 c4@13 ~@9 c4@4]/2", B: "[b3 c4@2 c4@7 ~@6]/2", C: "[g4@4 c4@2 c4@13 ~@9 [e4,g4]@4]/2",
  D: "[[b3,d4] [c4,e4]@2 [c4,e4]@6 ~@7]/2", E: "g4@2 c4 c4@5", F: "~@3 [f4,a4]",
  G: "[[f4,a4]@2 [e4,g4]@4 [e4,g4]@4 [d4,f4]@2 [c4,e4]@13 ~@7]/2", H: "~ e4!3 e4@2 e4@2", I: "e4@2 d4@4 d4@9 ~",
  J: "[~@2 e4@2 e4@2 e4 e4@3 d4 d4@5]/2", K: "e4!4 e4@2 e4!2", L: "e4 d4@2 d4@5", M: "d4 e4!3 e4@2 e4!2",
  N: "e4@2 c4 d4@2 e4@3", O: "g4 a4!2 g4 a4@2 g4 a4", P: "a4 g4 a4@2 a3@4", Q: "~ e4!3 e4@2 e4!2",
  R: "[e4 d4@2 d4@6 e4!3 e4@2 e4@2]/2", S: "d4 e4 e4@2 e4!4", T: "d4 d4@4 c4 d4@2", U: "[d4@3 e4@2 e4@2 e4@4 ~@5]/2",
  V: "[e4@4 c4@2 d4@4 e4@11 ~@11]/2", W: "[d4@3 e4@2 e4@2 e4@9]/2", X: "[e4@2 c4 d4@2 e4@7 ~@4]/2",
})).s("gm_flute").gain(0.27)

// other · lead 8 bass lead
const lead_8_bass_lead = note(`<
  A B C A B C A B D E B C A B C A F G ~@16 A B C A B C A B C A B H ~@12 A B I J B C K L C A B C A B C A B C A M ~@12 C A
  B H ~@10 A B C N B O A B D E B C A B C A F G P Q R S T U V W X A B C A B I Y Z AA P Q R S T U AB B C A B C AC AD AE V
  W AA P Q AF ~
>`.pickRestart({
  A: "g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4", B: "b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4",
  C: "c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5", D: "c5 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g5 b5 c6",
  E: "g6 b6 c7 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g4", F: "b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g5 b5 c6 g6 b6",
  G: "c7 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g5 b5 c6", H: "c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 ~@3",
  I: "c5 g4 b4 c5 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5", J: "g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g4 b4 c5 g4",
  K: "g4 b4 c5 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g5", L: "b5 c6 g6 b6 c7 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4",
  M: "b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 ~@3", N: "g4 b4 c5 g5 b5 c6 g4 b4 c5 g5 b5 c6 g4 b4 c5 g4",
  O: "c5 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g4 b4 c5", P: "g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6 c7 g6 b6 c7 g4",
  Q: "b4 c5 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6 c7 g6 b6", R: "c7 g4 b4 c5 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6 c7",
  S: "g6 b6 c7 g4 b4 c5 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6", T: "b6 c7 g6 b6 c7 g4 b4 c5 g6 b6 c7 g6 b6 c7 g4 b4",
  U: "c5 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6 c7 g6 b6 c7", V: "g4 b4 c5 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6 c7 g6",
  W: "b6 c7 g4 b4 c5 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6", X: "c7 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5",
  Y: "g5 b5 c6 g6 b6 c7 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4", Z: "b4 c5 g5 b5 c6 g6 b6 c7 g6 b6 c7 g4 b4 c5 g6 b6",
  AA: "c7 g6 b6 c7 g4 b4 c5 g6 b6 c7 g6 b6 c7 g4 b4 c5", AB: "g4 b4 c5 g6 b6 c7 g4 b4 c5 g4 b4 c5 g4 b4 c5 g4",
  AC: "g4 b4 c5 g4 b4 c5 g4 b4 c5 g4 b4 c5 g5 b5 c6 g6", AD: "b6 c7 g4 b4 c5 g5 b5 c6 g6 b6 c7 g4 b4 c5 g5 b5",
  AE: "c6 g6 b6 c7 g4 b4 c5 g5 b5 c6 g6 b6 c7 g6 b6 c7", AF: "c7 ~@15",
})).s("gm_lead_8_bass_lead").gain(0.13).pan(0.4)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@2 A B A ~ C D E ~ A ~@3 C D E ~@34 F ~@46 G H G H I J ~@11 K ~@15 K ~@30
>`.pickRestart({
  A: "a4 ~@7 b4 ~@3 c5 ~@3", B: "~@8 b4 ~ b4 ~ c5 ~@3", C: "g4 ~@7 a4 ~@3 b4 ~@3", D: "~@8 a4 ~ a4 ~ b4 ~@3",
  E: "a4 ~@15", F: "~@8 g5 ~@5 e5 ~", G: "a5 ~@7 b5 ~@3 c6 ~@3", H: "~@8 b5 ~@3 c6 ~@3", I: "g5 ~@7 a5 ~@3 b5 ~@3",
  J: "~@8 a5 ~ a5 ~ b5 ~@3", K: "~@6 a5 ~ e6 ~ b5 ~ c6 ~@3",
})).s("gm_pizzicato_strings").gain(0.55).pan(0.6)

// other · pizzicato strings · soft notes
const pizzicato_strings_soft = note("<~@3 [~@6 a4 ~@9] ~@47 [~@6 e5 ~@3 b4 ~ c5 ~@3] ~@110>")
  .s("gm_pizzicato_strings").gain(0.37).pan(0.6)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@2 A B A ~ C D E ~@42 F ~@46 G H G H I J ~@27 K ~@30>".pickRestart({
  A: "a3 ~@7 b3 ~@3 c4 ~@3", B: "~@6 a3 ~ b3 ~ b3 ~ c4 ~@3", C: "g3 ~@7 a3 ~@3 b3 ~@3", D: "~@8 a3 ~ a3 ~ b3 ~@3",
  E: "a3 ~@15", F: "~@14 c5 ~", G: "a4 ~@7 b4 ~@3 c5 ~@3", H: "~@8 b4 ~@3 c5 ~@3", I: "g4 ~@7 a4 ~@3 b4 ~@3",
  J: "~@8 a4 ~ a4 ~ b4 ~@3", K: "~@8 c6@2 g5 ~ a5@2 ~@2",
})).s("gm_pizzicato_strings").gain(0.38).pan(0.4)

// other · pizzicato strings · soft notes
const pizzicato_strings_soft_2 = note("<~@51 [~@6 c5 ~ e5 ~ g4 ~ a4 ~@3] ~@79 [~@6 e5 ~@9] ~@30>")
  .s("gm_pizzicato_strings").gain(0.22).pan(0.4)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@11 A B@2 C@2 D@2 ~@6 E@2 ~@4 F@2 G@2 ~@10 H I J@2 K L ~@6 M@2 ~@4 F@2 N O P@2 Q@2 P@2 Q@2 P@2 R@2 S@2 T U V W X Y V
  Z AA ~@4 H AB@2 AC ~@7 AD AE AF ~@39 AG AH AI AJ AK AL AM AN AG AH AI AJ AK AO ~@2
>`.pickRestart({
  A: "~@12 a3 b3 c4 e4", B: "[b3 [b3,c4] c4 [b3,c4] b3 [b3,c4] c4 [b3,c4] b3 [b3,c4] c4 [b3,c4] b3 [b3,c4] c4@17 ~]/2",
  C: "[~@7 [g2,g3]@9]/2", D: "[[a2,a3]@29 ~@3]/2", E: "b2@2 c3 ~ b2@2 c3 ~ b2@2 c3 ~ b2@2 c3 ~", F: "g2/2",
  G: "[a2@5 ~@3]/2", H: "c4@3 b3@3 g3@2", I: "c3@3 b2@3 g2@2", J: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  K: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~", L: "g3 ~@7", M: "a2/2", N: "a2@3 ~@5 g2@2 ~@2 a2@2 ~@2",
  O: "~@6 g2 ~ g2@3 ~ a2@2 ~@2", P: "f2/2", Q: "c2/2", R: "[c4@3 b3@3 g3@8 ~@2]/2",
  S: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", T: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  U: "g2@2 ~@10 b2 c3 e3 g3", V: "b3@3 a3@3 e3@2", W: "b3@3 a3@3 f3@2", X: "a3@14 [f3,g3] [d3,e3]",
  Y: "a2 b2 c3 e3, c3 ~@15", Z: "g3 f3", AA: "d3", AB: "d3/2", AC: "g3", AD: "~@12 e5 f5 e5 f5",
  AE: "e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5", AF: "e5 ~", AG: "a2", AH: "~@6 g2 ~ g2@3 ~ a2@3 ~",
  AI: "f2@3 ~@3 g2@4 ~@2 a2@2 ~@2", AJ: "~@6 g2 ~ g2 ~ g2 ~ a2@2 ~@2", AK: "g2@3 ~@3 f2 ~ f2 ~ f2 ~ g2@2 ~@2",
  AL: "~@6 f2 ~ f2@3 ~ g2@3 ~", AM: "a2@2 ~@4 g2 ~ g2 ~ g2 ~ a2 ~ a2@2", AN: "~@6 g2 ~ g2 ~ g2 ~ a2 ~ a2@2",
  AO: "~@6 f2 ~@9",
})).s("gm_string_ensemble_1").gain(0.56).pan(0.4)

// chords · synth brass 1
const synth_brass_1 = note("<~@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 ~@80 F@2 G@2 H@2 I@2 ~@56>".pickRestart({
  A: "[[e4,a4,c5]@15 ~]/2", B: "[[f4,a4,c5]@15 ~]/2", C: "[[g4,b4,d5]@15 ~]/2", D: "[[a4,c5,e5]@29 ~@3]/2",
  E: "[[a4,c5,e5]@15 ~]/2", F: "[[e5,a5,c6]@15 ~]/2", G: "[[f5,a5,c6]@29 ~@3]/2", H: "[[g5,b5,d6]@15 ~]/2",
  I: "[[a5,c6,e6]@29 ~@3]/2", // Am
})).s("gm_synth_brass_1").gain(0.3)

// other · pad new age
const pad_new_age = note(`<
  ~@82 A B C ~@20 D E F G H I H I J K L K M N M N O K L K M N M N O ~@16 K L K M N M N O ~@8
>`.pickRestart({
  A: "b6@6 a6@5 ~ e6@4", B: "b6@3 a6@3 f6@2", C: "a6@15 ~", D: "~@2 c6 ~ b5 ~ a5 ~ e5 ~ c5 ~ b4 ~ a4 ~",
  E: "~@6 e5 ~@3 c5 ~@3 a4 ~", F: "~@6 a4 ~ e5 ~ c5 ~ e5 ~ c5 ~", G: "a4 ~@5 e5 ~@3 c5 ~@3 a4 ~",
  H: "~@2 a4 ~@3 a4 ~ e5 ~ c5 ~ e5 ~ c5 ~", I: "a4 ~@3 a4 ~ e5 ~@3 c5 ~@3 a4 ~", J: "~@2 a4 ~@13",
  K: "a5 ~@5 e6 ~@3 c6 ~@3 a5 ~", L: "~@6 a5 ~ e6 ~ c6 ~ e6 ~ c6 ~", M: "~@2 a5 ~@3 a5 ~ e6 ~ c6 ~ e6 ~ c6 ~",
  N: "a5 ~@3 a5 ~ e6 ~@3 c6 ~@3 a5 ~", O: "~@2 a5 ~@13",
})).s("gm_pad_new_age").gain(0.33).pan(0.6)

// other · synth brass 1
const synth_brass_1_2 = note("<~@85 [a5 b5 c6 e6] [b6@3 a6@3 e6@2] [g6 f6] d6 ~@73>")
  .s("gm_synth_brass_1").gain(0.39).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@18 A@16 B@15 C A@16 B@15 C B@15 C A@61 C ~@2>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!4", C: "x",
})).gain(0.55)

// drums · snare
const snare = s("sd").struct("<~@17 A B@31 ~ B@31 ~ B@15 ~ B@61 C ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.43)

// drums · hihat
const hihat = s("hh").struct("<~@18 A@16 B@15 C A@16 B@15 C B@15 C A@8 B@53 D ~@2>".pickRestart({
  A: "x!8", B: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", C: "x", D: "x!2 ~ x!3 ~@10",
})).gain(0.43)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@65 A ~@3 A ~@3 A ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~@11 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4
>`.pickRestart({
  A: "~@7 x",
})).gain(0.37)
// … 30 more lines

More by Annie Lennox