Strudelify

Walking On Broken Glass

Annie Lennox

KeyC majorTempo119 bpm
0:00/0:00
// Walking On Broken Glass — Annie Lennox
// 119 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 32-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.

// other · piano
const piano = note(`<
  A B A B A C D E A F@2 G@3 ~ H@3 ~ I@4 J@5 K L M N O P M Q@4 R@2 S ~@2 T U@2 V W X Y Z AA AB@3 AC@3 ~ AD@3 AE AF@3 AG
  AH@2 AI@2 ~@3 AJ@3 ~ AK@3 ~ AL@8 AM AN@2 AO@8 AP@3 AQ AR AQ AR AQ AR AQ AS AT AU AT AU AT AV
>`.pickRestart({
  A: "[c5,c6] [g5,g6] [e5,e6] [f5,f6] [c6,c7] [f6,f7] ~ [e6,e7]", B: "~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3",
  C: "~@2 [c6,c7]@2 ~@2 [g5,g6]@2 c3 d3 e3 f3!2 g3 a3 b3, ~@24 [d6,d7]@5 ~@3", // C G D
  D: "[c5,c6] [g5,g6] [e5,e6] [f5,f6] [c6,c7] [f6,f7] ~ [e6,e7], c4 ~@15", // C G E F C F E
  E: "~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [g2,g3]@5 ~@3", // C G
  F: "[~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@2 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~]/2", // C G D C G E F C …
  G: "[~@3 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 f2@64 ~]/3", H: "[~@15 f2@32 ~]/3",
  I: "[~@30 [a3,c4,e4]@29 ~@3 e4@15 ~@5 e4@4 g4@4 c5@4 [c4,f4,a4]@21 ~@3 [c4,f4,a4]@7 ~ [c4,e4,g4]@2, ~@62 [g3,c4]@29 ~@37]/4", // Am F C C5
  J: "[~@14 [c3,c4,e4,g4]@7 ~ [b2,b3,d4,g4]@7 ~@25 e4@4 g4@4 [d4,e4,g4]@15 ~ [d4,e4,g4]@7 ~ [d4,e4,g4]@7 ~ [c4,f4,g4]@31 ~ [b3,d4,g4]@31 ~ [c5,c6]@2, ~@30 [a2,e3,a3,c4]@29 ~@101]/5", // C G Em7 Csus4 G C Am
  K: "~@6 [c5,c6]@3 ~@5 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@2", // C
  L: "~@6 [c5,c6]@2 ~@5 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@3", // C
  M: "~ [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@3", // G E F C F E
  N: "~ [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 [c5,c6]@3", // C G D C
  O: "~@5 [c5,c6]@3 ~@5 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@2 ~", // C
  P: "~@5 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@3", // C
  Q: "[~ [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 [e4,a4,c5]@27 ~ [g4,b4,d5]@4 [e4,a4,c5]@23 ~ [g4,b4,d5]@7 ~ [g4,c5,e5]@5 ~@30]/4", // C G D Am G Am G C
  R: "[~@28 [c4,f4,g4]@35 ~]/2", S: "[f3,f4] [e3,e4] [d3,d4] [c3,c4] [a2,a3] [g2,g3] [a2,a3] [c3,g3,c4,e4]",
  T: "~@4 c4@4 e4@7 ~ d4@4 c4@4 c4@4 e4@4",
  U: "[c4@7 ~ g3@4 c4@4 g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 [f4,a4]@19 ~ c5@4 g4@4 f4@4 g4@4, ~@16 c4@11 ~@37]/2", // F
  V: "c4@4 d4@4 [c3,g3,c4,e4]@11 ~ [b2,g3,b3,d4]@7 ~ e4@4", W: "a3 c4 e4 a4 e4 c4 d4 e4",
  X: "~@4 [g4,c5,e5]@7 ~ [e4,g4,c5]@7 ~ e4@4 f4@4 e5@4", Y: "d5 e5 d5 c5 d5 c5 e5 d5",
  Z: "~@20 [g4,b4,d5]@5 ~@3 [c5,c6]@3 ~", AA: "~@4 [c5,c6]@3 ~@5 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@2 ~@2",
  AB: "[~@4 [c5,c6]@2 ~@6 [c5,c6]@2 ~@6 [c5,c6]@2 ~@5 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@8]/3", // C G E F C F E C …
  AC: "~@3 c5@4 g5@2 ~@6 c5@4 g5@2 ~@11", AD: "~ c5@2 g5 ~@3 c5@2 g5 ~@6",
  AE: "~@9 c6@2 g5@2 f5@2 c6@2 g5@2 f5@2 c6@2 g5@5 ~@4", AF: "~ c5@4 g5@2 ~@6 c5@4 g5@2 ~@13",
  AG: "~@20 f6 ~ e6 d6 c6@4 ~@4", AH: "c5@2 g5 ~@3 c5@2 g5 ~@7",
  AI: "[~@23 [d5,g5]@5 ~@3 [d5,g5]@5 ~@3 [c5,d5,g5]@2 ~@2 [c5,d5,g5]@2 ~@2 [c5,d5,g5]@2 ~@2 [c5,d5,g5]@2 ~@11]/2", // G5 Csus2
  AJ: "[~@7 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 f2@63 ~@10]/3", AK: "[~@22 f2@63 ~@11]/3",
  AL: "[~@21 [g3,c4,e4]@23 ~ g3@4 e4@26 ~@2 c4@3 ~ g4@26 ~@2 g4@4 c4@3 ~ [c4,e4,g4]@16 e5@4 c5@3 ~ d5@4 b4@3 ~ c5@27 d4@4 e4@21 ~@3 e4@7 ~ f4@23 ~ f4@7 ~ g4@5 ~@3 g4@4]/8", // C
  AM: "~@4 g4@5 ~@3 g4@5 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]", // G5
  AN: "[~@3 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]]/2", // G5 Csus2
  AO: "[~@3 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@3 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@2]/8", // Csus2 C G E F C F E …
  AP: "[~@10 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4 [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@4 ~@8 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@3 [f5,f6]@3]/3", // D C G E F C F E …
  AQ: "~ [c6,c7]@4 [f6,f7]@4 ~@4 [e6,e7]@4 ~@4 [c6,c7]@4 ~@4 [g5,g6]@3", // C F E C G
  AR: "~@9 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@3", // D C G E F
  AS: "~@9 [d6,d7]@5 ~@3 [c5,c6]@3 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4", AT: "[c6,c7] [f6,f7] ~ [e6,e7] ~ [c6,c7] ~ [g5,g6]",
  AU: "~@8 [d6,d7]@5 ~@3 [c5,c6]@4 [g5,g6]@4 [e5,e6]@4 [f5,f6]@4", AV: "~@8 [d6,d7]@5 ~@2 [e4,g4,c5]@4 ~@13",
})).s("gm_piano").gain(0.5)

// bass · electric bass finger
const bass = note(`<
  ~@7 A B C@2 D@4 E F G@2 H@8 I@2 J@2 K@4 L@2 M@2 N@2 O P Q@7 R S P T U V@8 W@6 X Y@2 ~@3 Z@2 AA@2 AB@2 AC@2 AD AE AF AG
  AH AI AJ AK AL@7 AM@6 AN AO AP AO AP AO AP AO AQ AR AS AR AS AR AT
>`.pickRestart({
  A: "~@24 g1@7 ~", B: "c2@3 ~ e1@2 f1@2 ~@2 e1@2 ~@2 f1@2",
  C: "[~@4 e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~ c2@6 ~@2 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~]/2",
  D: "[~@3 e1@8 ~@4 g1@5 ~@3 g1@6 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 c2@6 ~@2 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~]/4",
  E: "~@3 e1@8 ~@4 g1@5 ~@2 g1@6 ~@2 f2@2", F: "~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2",
  G: "[~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ c2@3 ~ e1@2 f1@2 ~@2 e1@2 ~@2 f1@2 ~]/2",
  H: "[~@2 e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~@2 a1@6 ~@6 a1@2 ~@2 a1@8 ~@4 b1@4 c2@8 ~@4 c2@2 ~@2 c2@8 ~@4 e2@4 f2@8 ~@4 f2@2 ~@2 f2@14 ~@2 c2@14 ~@2 c2@8 b1@6 ~@2 a1@10 ~@2 a1@2 ~@2 a1@10 ~@2 a1@4 e1@10 ~@2 e1@2 ~@2 e1@10 ~@2 e1@4 f1@8 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 g1@2]/8",
  I: "[~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ c2@3 ~ e1@2 f1@2 ~@2 e1@2 ~@2 f1@2 ~]/2",
  J: "[~@2 e1@4 ~@3 f1@3 ~ g1@4 ~@4 g1@6 ~@2 c2@6 ~@2 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~@3]/2",
  K: "[~ e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~@2 c2@6 ~@2 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~@3]/2",
  L: "[~ e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~@2 a1@6 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~]/2",
  M: "[~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 b1@8 c2@6 ~@2 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~@3]/2",
  N: "[e1@2 ~@4 g1@2 ~@2 g1@3 ~ f1@5 ~ f1 ~ f1@10]/2", O: "f2 e2 d2 c2 a1 g1 a1 c2", P: "~ e1 f1 ~ e1 ~ f1 ~",
  Q: "[e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~@2 a1@10 ~@2 a1@2 a1@2 a1@12 b1@2 ~@2 c2@10 ~@2 c2@2 ~@2 c2@8 e2@8 f2@10 ~@2 f2@2 ~@2 f2@16 c2@10 ~@2 c2@2 ~@2 c2@8 b1@8 a1@10 ~@2 a1@2 ~@2 a1@10 ~@2 a1@2 b1@2 c2@10 ~@2 c2@2 c2@2 c2@6 ~@2 c2@8 g1@2 ~@2]/7",
  R: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", S: "~@10 g1@3 ~ c2@2", T: "e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~ c2@5",
  U: "~@3 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~@4 e1",
  V: "[~@7 f1@3 ~ g1@4 ~@4 g1@6 ~@2 d1@28 ~@4 a#1@30 ~@2 f1@51 g1@2 a1@2 b1@2 c2@2 d2@2 e2@2 d2@31 ~ a#1@30 ~@2 f1@38]/8",
  W: "[~@13 g1@2 a1@2 c2@8 d2@12 d2@16 d2@4 a#1@12 a#1@4 a#1@6 ~@2 a#1@8 f1@12 f1@2 ~@2 f1@31 a1@8 c2@8 d2@12 d2@2 ~@2 d2@16 a#1@8]/6",
  X: "~@2 a#1 ~ a#1@8 g1@4",
  Y: "[g1@6 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~ g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@11]/2",
  Z: "[~@7 g1@3 ~@5 g1@3 ~@5 f1@6 ~@2 f1@8 f1@2 ~ f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2]/2",
  AA: "[~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 c2@3 ~ e1@2 f1@2 ~@2 e1@2 ~@2 f1@2 ~@2 e1@2 ~]/2",
  AB: "[~@2 f1@3 ~ g1@4 ~@4 g1@6 ~@2 f1@6 ~@2 f1@8 f1@2 ~@2 f1@2 ~@2 f1 ~@3 f1@2 ~@2 f1@3 ~ f2@2 ~@2 f2@2]/2",
  AC: "[~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@4 c2@6 ~@2 e1@3 f1@4 ~@4 e1@4 ~@4 f1@4 ~@4 e1@4 ~@3]/2",
  AD: "~ f1@3 ~ g1@4 ~@4 g1@6 ~@2 a1@6 ~@2 a1@2 ~", AE: "~ a1@2 ~@2 a1@6 ~@2 a1@4 b1@4 c2@10 ~",
  AF: "~ c2@2 c2@2 c2@10 ~@2 e2@2 ~@2 f2@10 ~", AG: "~ f2@2 ~@2 f2@6 ~@2 f2@8 c2@10 ~",
  AH: "~ c2@2 ~@2 c2@4 g2@4 b1@8 a1@10 ~", AI: "a1 ~ a1@4 b1@4 c2@5 ~", AJ: "c2 ~ c2@3 ~ c2@2 e1@2 f1@5 ~",
  AK: "f1 ~ f1@3 ~ f1 ~ f1@2 g1 ~ g1 ~ g1 ~",
  AL: "[g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~ g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 c2@6 ~@2 e1@4 f1@4 ~@4 e1@4 ~@4 f1@4 ~@4 e1@4 ~@4 f1@3 ~ g1@4 ~@4 g1@6 ~@2 c2@6 ~@2 e1@4 f1@4 ~@3 e1@4 ~@4 f1@4 ~@4 e1@4 ~@4 f1@2]/7",
  AM: "[~ g1@2 ~@2 g1@3 ~ c2@3 ~ e1@2 f1@2 ~@2 e1@2 ~@2 f1@2 ~@2 e1@2 ~@2 f1]/2",
  AN: "~@2 g1@4 ~@4 g1@6 ~@2 c2@6 ~@2 e1@3 f1@3", AO: "~@5 e1@4 ~@4 f1@4 ~@4 e1@4 ~@4 f1@3",
  AP: "~ g1@4 ~@4 g1@6 ~@2 c2@6 ~@2 e1@4 f1@3", AQ: "~ g1@4 ~@4 g1@6 ~@2 c2@6 ~ e1@4 f1@4",
  AR: "~@4 e1@4 ~@4 f1@4 ~@4 e1@4 ~@4 f1@3 ~", AS: "g1@2 ~@2 g1@3 ~ c2@3 ~ e1@2 f1@2", AT: "g1@4 ~@4 g1@6 ~ c2@4 ~@13",
})).s("gm_electric_bass_finger").gain(0.54)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@8 A B@3 ~@15 C A D@7 ~@15 E A F@3 ~@38 G@4 H A I A H A J@8 K A L A M A N
>`.pickRestart({
  A: "c5!16",
  B: "[c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 ~]/3",
  C: "~@15 c5",
  D: "[c5@2 c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 g4@2 a4@2 c5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 e5@2 ~@2 e5@2 d5@2 a4@2 g4@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 g4@2 a4@2 c5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 c5@2 c5@2 a4@2 g4@2 ~@3]/7",
  E: "~@14 c5!2",
  F: "[c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 g4@2 ~ c5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 c5@2 c5@2 a4@2 g4@2 ~@5, ~@11 a4 ~@36]/3",
  G: "[~@19 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 g4@2 a4@2 c5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2]/4",
  H: "c5!3 e5 ~ e5 d5 a4 g4 c5!7", I: "c5!3 g4 ~ g4 a4 c5 d5 c5!7",
  J: "[c5@2 c5@2 c5@2 g4@2 ~@2 g4@2 a4@2 c5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 e5@2 ~@2 e5@2 d5@2 a4@2 g4@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 g4@2 ~@2 g4@2 a4@2 c5@2 d5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 e5@2 ~@2 e5@2 d5@2 a4@2 g4@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5]/8",
  K: "~ c5@2 c5@2 g4@2 ~@2 g4@2 a4@2 c5@2 d5@2 c5@2 c5 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2", L: "c5!2 e5 ~ e5 d5 a4 g4 c5!8",
  M: "c5!2 g4 ~ g4 a4 c5 d5 c5!8", N: "c5@2 c5@2 e5@2 ~@2 e5@2 ~ a4@2 g4@2 c5@4 ~@13, ~@5 d5 ~@10",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.2)

// chords · distortion guitar
const distortion_guitar = note("<~@19 A@4 B@5 ~@15 C@8 ~@24 D@3 ~ E@3 ~ F@7 G@3 H I ~@24>".pickRestart({
  A: "[~@15 c4@15 ~ [g3,c4]@15 ~ [f3,a3]@15 ~ [e3,g3], ~@29 [e3,a3]@30 ~@2 e3@30 ~@2 c3@30 ~@2 c3@3]/4", // C5 F Em A5
  B: "[~@14 [e3,g3,c4]@5 ~@3 [d3,g3,b3]@5 ~@3 [e3,a3]@30 ~@2 [e3,g3,b3]@30 ~@2 [f3,g3]@30 ~@2 [d3,g3,b3]@32 ~@2, ~@29 c3@30 ~@33 c3@30 ~@38]/5", // C G A5 Em Fsus2 G
  C: "[~@28 [e3,a3,c4]@23 ~ [e3,a3,c4]@7 ~ [e3,g3,c4]@22 ~@2 [e3,g3,c4]@6 ~@2 [f3,a3,c4]@30 ~@2 [e3,g3,c4]@29 ~@3 [e3,a3,c4]@22 ~@2 [e3,a3,c4]@6 ~@2 [e3,g3,c4]@31 ~ [g3,c4]@14 ~@2 [g3,c4]@6 ~@2 [g3,c4]@6 ~@2 [g3,b3]@4]/8", // Am C F C Am C C5 G
  D: "[~@23 [f3,c4]@63 ~@10]/3", E: "[~@11 [f3,c4]@32 ~@5]/3",
  F: "[~@21 [e3,a3,c4]@23 ~ [e3,a3,c4]@7 ~ [e3,g3,c4]@22 ~@2 [e3,g3,c4]@6 ~@2 [f3,a3,c4]@30 ~@2 [e3,g3,c4]@29 ~@3 [e3,a3,c4]@22 ~ [e3,a3,c4]@6 g3 ~ [e3,g3,c4]@31 ~ [g3,c4]@12]/7", // Am C F C Am C C5
  G: "[~@4 [g3,c4]@6 ~@2 [g3,c4]@6 ~@2 [g3,c4]@29 ~@2 [g3,c4]@29 ~@3 [g3,c4]@7 ~ [g3,c4]@5]/3", // C5
  H: "~@3 [g3,c4]@6 ~@2 [g3,c4]@7 ~ [g3,c4]@6 ~@2 [g3,c4]@5", // C5
  I: "~@3 [g3,c4]@2 ~@2 [g3,c4]@2 ~@2 [g3,c4]@2 ~@2 [g3,c4]@2 ~@15", // C5
})).s("gm_distortion_guitar").gain(0.35).pan(0.7)

// chords · pad sweep
const pad_sweep = note("<~@35 A@3 ~ B@3 ~@13 C@8 D@8 ~@48>".pickRestart({
  A: "[~@29 [e4,a4,c5]@64 ~@3]/3", B: "[~@7 [e4,a4,c5]@16 ~]/3",
  C: "[~@27 [d3,f3,a3]@31 ~ [d3,f3,a#3]@31 ~ [f3,a3,c4]@63 [d3,f3,a3]@31 ~ [d3,f3,a#3]@31 ~ [f3,a3,c4]@38]/8", // Dm A# F Dm A# F
  D: "[~@25 [d3,f3,a3]@31 ~ [d3,f3,a#3]@31 ~ [f3,a3,c4]@63 [d3,f3,a3]@31 ~ [d3,f3,a#3]@31 ~ [g2,g3,d4]@40]/8", // Dm A# F Dm A# G5
})).s("gm_pad_sweep").gain(0.35)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A B A B A B A C@2 D ~ E@2 F G@3 H I@8 J K L M L M L N@3 L O@3 P Q@8 R P S T@5 U@4 V W@2 ~ X@2 Y@4 Z@3 AA AB AC AD
  AE AB AF AG@8 AH AI@6 AJ AK AJ AK AJ AK AL AM AN AM AN AM AN AM AO AP AQ AP AQ AP AR
>`.pickRestart({
  A: "[c4,e4,g4]@2 ~@2 [c4,e4,g4] ~ [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~", // C F C F
  B: "~@2 [c4,e4,g4] ~@3 [c4,f4,a4] ~ [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@2", // C F G
  C: "[~@4 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@3 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@3]/2", // C F G C F C F
  D: "~@3 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@5", // C F G
  E: "[~@31 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@3]/2", // C F C F
  F: "~@3 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@3 [d4,g4,b4]@4 ~@6", // C F G
  G: "[~@15 d#6@16 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~ [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~@2]/3", // C F C F
  H: "~ [c4,e4,g4] ~@3 [c4,f4,a4] ~ [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@3", // C F G
  I: "[~@3 e4@3 ~@5 e4@3 ~ e4@9 ~ e4@2 g4@2 c5@2 a4@12 a4@4 g4@15 ~ e4@16 d4@16 f4@4 e4@4 d4@4 c4@4 d4@10 d4 e4 f4 g4 a4 b4 [c4,e4,g4]]/8", // C
  J: "~@3 [c4,e4,g4] ~ [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~@2", // C F C F
  K: "~@2 [c4,e4,g4]@2 ~@5 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4,g4]@3", // C F G C
  L: "~@5 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@5", // C F C F
  M: "~ [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4,g4]@3", // C F G C
  N: "[~ [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [a4,c5]@27 ~ [b4,d5]@4 [c5,e5]@24 [d5,f5]@8 [c5,e5,g5]@3]/3", // C F G Am Bm C Dm C
  O: "[[c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [a3,c4,f4]@63 ~ [c4,e4,g4]@4]/3", // C F G F C
  P: "~@2 [c4,e4,g4] ~ [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~@3", // C F C F
  Q: "[[c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 e4@24 d4@8 e4@24 g4@8 a4@24 g4@4 f4@4 g4@14 ~@2 c5@7 ~ b4@6 ~@2 a4@31 ~ g4@30 ~@10 c5@8 ~@8 c5@6 ~@2 [d4,g4,b4]@2 ~@2, ~@110 g4@15 ~@3]/8", // C F G
  R: "a3 b3 c4 d4 e4 f4 g4 a4 b4 c5 d5 e5 f5 g5 [c4,e4,g4]@2", // C
  S: "[c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@3 [c4,e4,g4]@4 ~", // C F G C
  T: "[~@3 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4]@4 [d4,f4]@4 ~@24 [c4,e4]@4 [d4,f4]@4 ~@24 [c4,e4]@4 [d4,f4]@4 ~@29]/5", // C F C F C F G C …
  U: "[~@13 [c4,e4]@2 [d4,f4]@2 ~@12 [a#3,e4]@2 [c4,f4]@2 ~@12 [c4,e4]@2 [d4,f4]@2 ~@12 [c4,e4]@2 [d4,f4]]/4", // C Dm A#dim F5 C Dm C Dm
  V: "~@2 [c4,e4]@3 [d4,f4]@2 ~@18 [c4,e4]@4 [d4,f4]@3", W: "~@25 [c4,e4]@4 [d4,f4]@3", X: "~@6 [c4,e4] [d4,f4]",
  Y: "[~@24 d4@63 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@3]/4", // C F C F C
  Z: "[~@3 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@6 c5 b4 a4@2 b4@2 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@13, ~@15 [d4,g4,b4]@4 ~@4 c5@61 ~@12]/3", // F G C F C F C F …
  AA: "~@7 f4@2 ~ g4@2 ~@2 a4@2 ~@16, ~@7 a4 ~@2 b4 ~@3 c5 ~@17",
  AB: "~@3 f4 ~ g4 ~ a4 ~ [g4,b4] ~ [c4,e4,g4]@2 ~@2 [c4,e4,g4], ~@6 a4 ~@3 b4 ~@3 c5 ~@17", // G C
  AC: "~ [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~@3 [c4,e4,g4] ~@2", // F C F C
  AD: "~ [c4,f4,a4] ~ [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@7", AE: "~@3 f4 ~ g4 ~ a4 ~@8, ~@6 a4 ~@3 b4 ~@3 c5 ~@17",
  AF: "~ [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@5", // F C F C
  AG: "[~ [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4]@64 f4@24 g4@8 [c4,e4]@16 e4@8 d4@6 ~@2 c4@27 d4@4 [c4,e4]@32 [c4,f4]@30 ~@2 [d4,g4]@6 ~@2 [d4,g4]@4]/8", // F G C F5 G5
  AH: "~@4 [d4,g4]@6 ~@2 [d4,g4]@6 ~ [d4,g4]@6 ~@2 [d4,g4]@5", // G5
  AI: "[~@3 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@5 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2]/6", // G5 C F C F C F G …
  AJ: "~ [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@2 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~ [c4,f4,a4]", // G C F
  AK: "~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4]", // C F C F
  AL: "~@2 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~ [c4,f4,a4]@2 ~", // G C F
  AM: "~@5 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,f4,a4]@2 ~", // C F C F
  AN: "~ [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4,g4]@4 ~@4 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~", // G C F
  AO: "~ [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@4 [c4,e4,g4]@4 ~@3 [c4,e4,g4]@2 ~@2 [c4,f4,a4]@2 ~@2", // G C F
  AP: "~@2 [c4,e4,g4] ~@3 [c4,f4,a4] ~@3 [c4,e4,g4] ~@3 [c4,f4,a4] ~", // C F C F
  AQ: "[d4,g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@2 [c4,e4,g4]@2 ~@2 [c4,e4,g4] ~ [c4,f4,a4] ~", // G C F
  AR: "[d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~@3 [e4,g4,c5]@4 ~@13", // G C
})).s("gm_string_ensemble_1").gain(0.45).pan(0.3)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@2 A B A B A B A C@2 D ~ E@2 F ~ G@2 H@8 I@2 J K L K L K M ~ N K O ~ P Q R@8 S Q T U V@8 W@4 X@6 Y@2 Z ~@18 AA@4 AB
  AC AB AC AB AC AD AE AF AE AF AE AF AE AG AH AI AH AI AH AJ
>`.pickRestart({
  A: "c3@2 ~@2 e3 ~ f3 ~@3 e3 ~@3 f3 ~", B: "~@2 e3 ~@3 f3 ~ g3@2 ~@2 g3@2 ~@2",
  C: "[~@4 e3@2 ~@6 f3@2 ~@2 g3@4 ~@4 g3@4 ~@3 c3@4 ~@4 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@3]/2",
  D: "~@3 e3@2 ~@6 f3@2 ~@2 g3@4 ~@4 g3@4 ~@5", E: "[~@31 c3@4 ~@4 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@3]/2",
  F: "~@3 e3@2 ~@6 f3@2 ~@2 g3@4 ~@3 g3@4 ~@6", G: "[~@15 c3@2 ~@2 e3 ~ f3 ~@3 e3 ~@3 f3 ~@2]/2",
  H: "[~ e3 ~@3 f3 ~ g3@2 ~@2 g3@2 ~@2 [a3,c4]@14 b3@2 [g3,c4]@12 [g3,c4]@3 ~ [a3,c4]@11 ~ [a3,c4]@4 [g3,c4]@8 c4@3 ~ b3@3 ~ c4@16 b3@11 ~ g3@4 a3@16 g2]/8", // Am C5 Am C5
  I: "[~ a2 b2 c3 d3 e3 f3 g3@4 f3 g3 a3 b3 [c3,c4]@2 ~@2 e3 ~ f3 ~@3 e3 ~@3 f3 ~@2]/2", // C
  J: "~@2 e3@2 ~@5 f3@2 ~@2 g3@4 ~@4 g3@4 ~@4 c3@3", K: "~@5 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@5",
  L: "~ e3@2 ~@6 f3@2 ~@2 g3@4 ~@4 g3@4 ~@4 c3@3", M: "~ e3@2 ~@6 f3@2 ~@2 g3@4 ~@4 g3@4 ~@7", N: "~@29 c3@3",
  O: "e3 ~@3 f3 ~ g3@2 ~@2 g3@2 ~@4", P: "f3 e3 d3 c3 a2 g2 a2 c3", Q: "~@2 e3 ~ f3 ~@3 e3 ~@3 f3 ~@3",
  R: "[e3 ~@3 f3 ~ g3@2 ~@2 g3@2 ~@2 [a3,c4]@12 b3@4 [g3,c4]@12 e4@4 c4@12 b3@2 a3@2 c4@7 ~ c4@3 ~ b3@3 ~ a3@16 g3@15 ~ [g2,g3]@15 ~ [g2,g3]@2]/8", // Am C5 G
  S: "a2 b2 c3 d3 e3 f3 g3 a3 b3 c4 d4 e4 f4 g4 c3@2", T: "e3@2 ~@6 f3@2 ~@2 g3@4 ~@4 g3@4 ~@3 c3@4 ~",
  U: "~@3 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@6 e3",
  V: "[~@7 f3@2 ~@2 g3@4 ~@4 g3@4 ~@4 d3@32 a#2@32 f2@63 d3@32 a#2@32 f2@38]/8",
  W: "[~@15 f2@2 g2@2 a2@2 b2@2 c3@2 d3@26 ~@2 d3@2 c3@2 a#2@32 f2@39]/4",
  X: "[~@16 c3@8 d3@32 a#2@32 g2@63 c3@4 ~@4 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@6 e3@2 ~@3]/6",
  Y: "[~@3 f3@2 ~@2 g3@4 ~@4 g3@4 ~@4 c3@4 ~@4 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@6 e3@2 ~@3]/2",
  Z: "~@3 f3@2 ~@2 g3@4 ~@4 g3@4 ~@13",
  AA: "[~@19 c3@4 ~@4 e3@2 ~@2 f3@2 ~@6 e3@2 ~@6 f3@2 ~@6 e3@2 ~@6 f3@2 ~@2 g3@4 ~@4 g3@4 ~@4 c3@4 ~@4 e3@2 ~@2 f3@2 ~@5 e3@2 ~@6 f3@2 ~@6 e3@2 ~@6 f3@2]/4",
// … 200 more lines

More by Annie Lennox