Strudelify
Cool Jerk cover art

1999 · Vacation

Cool Jerk

The Go-Go's

KeyE majorTempo167 bpm
0:00/0:00
// Cool Jerk — The Go-Go's
// 167 bpm, 4/4, key E 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 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(167/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 · acoustic bass · "Bass"
const bass = note(`<
  A B C B C B C B C B C B C B D B C E@2 B C E@2 B F G H I J K L M N@8 O ~ P Q@2 R@2 S@6 T@2 S@4 U@2 V ~@2 W X@8 Y@2 Z AA
  AB AC AD@4 AE AF AG AH AI AJ AK AL ~ AM AN AO@2 AP@4 AQ@6
>`.pickRestart({
  A: "~@13 e2@3", B: "~@3 e2@2 a1@2 a#1@3 ~ b1@5", C: "~@3 b1@2 d2@4 e2@4 e1@3", D: "~@3 b1@2 d2@4 e2@2 e1 ~ e1@3",
  E: "[~@3 e2@2 a1@2 a#1@3 ~ b1@4 b1@2 ~@2 b1@2 d2@4 e2@2 e1 ~ e1@3]/2", F: "~@3 b1@2 d2@4 e2@2 g1@2 a1@2 ~",
  G: "~@3 a2@2 c#2@2 d2 ~@3 e2@5", H: "~@3 e2@2 g2@4 a2@2 g1@2 a2 ~@2", I: "~@3 a2 ~ c#2@2 d2@2 ~@2 e2@5",
  J: "~@3 e2@2 g2@4 a2@3 ~ e1@3", K: "~@3 e1@2 g#1 ~ a1@2 ~@2 b1@5", L: "~ b1@2 d2@4 b1 ~ e2@4 e2@3",
  M: "~@3 e1@2 a1@2 a#0@3 ~ b1@5",
  N: "[~@3 b1 ~ d2@4 ~ e2@4 g#1@6 g#2@2 g#2@4 ~@2 g#2 ~ g#1@6 ~@2 c#2@2 ~@2 c#2@3 ~ g#1@6 ~ g#2@2 g#2@4 ~@2 g#2 ~ g#1@6 ~@2 c#2@2 ~@2 c#2@3 ~ a2@4 ~@2 a2@2 c#2 ~ d2@4 d2 ~ e2@4 ~@2 e2@2 a2@2 e2@2 a2@2 e2@2 b2@4 ~@2 b2@2 ~ d#1@2 e1@3 ~ f#1@2]/8",
  O: "b1 ~@7", P: "b1@2 ~@4 b1 ~ b1 ~@3 b1 ~@3", Q: "[e1@3 ~@3 e2@2 a1@2 a#1@3 ~ b1@5 ~@3 b1@2 d2@2 b1@2 e1@2 b1@2]/2",
  R: "[e1@3 ~@3 e2@2 a1@2 a#1@3 ~ b1@5 ~@3 b1@2 d2@2 d2@2 e2@2 e2@2]/2",
  S: "[e1@3 ~@3 e2@2 g#1@2 a1@3 ~ b1@5 ~@3 b1@2 d2@2 d2@2 e2@2 e2@2]/2",
  T: "[e1@3 ~@3 e2@2 g#1@2 a1@3 ~ b1@5 ~@3 b1@2 d2@4 d2@2 e2@2]/2",
  U: "[e1@3 ~@3 e2@2 g#1@2 a1@3 ~ b1@5 ~@3 b1@2 d2@2 d2@2 d#2@2 d#2@2]/2", V: "e1 ~@3", W: "~@7 d2",
  X: "[e1@3 ~@3 e2@2 g#1@2 a1@3 ~ b1@5 ~@3 b1@2 d2@2 d2@2 d#2@2 e2@2]/2",
  Y: "[e1@3 ~@3 e2@2 g#1@2 a1@3 ~ b1@5 ~@3 b1@2 d2 ~ d2@2 e2@4]/2", Z: "e2@2 e1 e2@2 e1 e2!2",
  AA: "a1@2 a1 a2@2 a1 a2@2", AB: "e1@4 e1@2 e2@4 e1@2 e2@3 ~", AC: "a1@2 a1 a2@2 a1 d2 d#2",
  AD: "[e1@3 ~@3 e2@2 a1@2 a#1@3 ~ b1@5 ~@3 b1@2 d2@4 e2@2 e1 ~]/2", AE: "g#1@6 ~ g#2@2 g#2@4 ~@2 g#2",
  AF: "~ g#1@6 ~@2 c#2@2 ~@2 c#2@3", AG: "~ g#1@6 g#2@2 g#2@4 ~@3", AH: "g#2 ~ g#1@6 ~@2 c#2@2 ~@2 c#2@2",
  AI: "~@2 a2@4 ~@2 a2@2 c#1 ~ d1@4", AJ: "d1 ~ e1@4 ~@2 e1@2 a1@2 e1@2 a1@2", AK: "e1@2 b1@3 ~@3 b1@2 d#1@2 e1@3 ~",
  AL: "f#1 b1 ~@6", AM: "~@3 b1@2 ~@4 b1 ~ b1 ~@3 b1", AN: "~@3 e1@3 ~@3 e2@2 a1@2 a#1@3",
  AO: "[~ b1@5 ~@3 b1@2 d2@2 b1@2 e1@2 b1@2 e1@3 ~@3 e2@2 a1@2 a#1@3]/2",
  AP: "[~ b1@5 ~@3 b1@2 d2@2 d2@2 e2@2 e2@2 e1@3 ~@3 e2@2 g#1@2 a1@3]/2",
  AQ: "[~ b1@5 ~@3 b1@2 d2@2 d2@2 e2@2 e2@2 e2@4 e1@2 e2@4 e1@2 e2@2 e2@2 a1@4 a1@2 a2@4 a1@2 a2@4 e1@4 e1@2 e2@4 e1@2 e2@3 ~ a1@4 a1@2 a2@4 a1@2 d2@2 d#2@2 e2@3 ~ e1@2 ~@7]/6",
})).s("gm_acoustic_bass").gain(0.54)

// chords · piano
const piano = note(`<
  ~@2 A@2 B C D C E F@2 G H I@2 J@2 G H K@2 G H L@2 M N O@2 P Q R S@8 T ~ U V@2 W@2 X@2 Y@2 Z@2 AA@2 AB@2 AC@2 AD@2 AE
  ~@3 AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT@4 AU@2 AV AW AX AY AZ@2 ~ BA BB BC@2 BD@2 BE@2 BF@6
>`.pickRestart({
  A: "[~@13 e1@7 ~ a1@2 a#1@3 ~ b1@5]/2", B: "~@3 b1@2 d2@4 e2@2 ~@3 g#4@2, ~@13 [e2,b3,e4]@2 ~",
  C: "~@3 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@5", D: "~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@3 ~ [e2,b3,e4,g#4]@2 ~",
  E: "~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2 [e2,b3,e4,g#4,d5,e5]@3", // B D E E7
  F: "[~ [d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@3 ~ a#4 b4 ~@2 a#4 b4 [d2,d3]@2 [d#2,d#3,e4] ~ g#4 a4 e4 ~ f#4 g#4@2, ~@15 [b1,b2,d5]@3 ~ [b1,b2,d5]@2 ~@4 [e2,e3,c#5]@2 ~@2 [e2,b3,e4,b4,d5,e5]@3]/2", // Dsus2 E A A# B D Emaj7 Bm …
  G: "~ [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@5", // E7 E A A# B
  H: "~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2 [e2,b3,e4,g#4,b4,d5,e5]@2 ~", // B D E E7
  I: "[~ [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@3 ~ [b1,b2]@3 ~ [b1,b2]@2 [d2,d3]@2 [d#2,d#3]@2 [e2,e3]@3 ~ [e2,b3,e4,g#4,b4,d5,e5]@2 ~]/2", // E7 E A A# B D D# E …
  J: "[~ [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@3 ~ a#4 b4 ~@2 a#4 b4 [d2,d3]@2 [d#2,d#3,e4]@2 [e2,e3]@2 d4 ~ [e2,b3,e4,g#4,b4,e5]@2 ~, ~@15 [b1,b2,d5]@3 ~ [b1,b2,d5]@2 ~@4 [f#4,g4] ~@3 d5 ~@2]/2", // E7 E A A# B D Emaj7 E …
  K: "[~ [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@3 ~ a#4 b4 ~@2 a#4 b4 [d2,d3]@2 [d#2,d#3] ~ f#4 ~ d4 ~ [e2,b3,e4,g#4,b4,e5]@2 ~, ~@15 [b1,b2,d5]@3 ~ [b1,b2,d5]@2 ~@2 e4@2 [e2,e3]@3 ~@4, ~@13 g4 ~@2]/2", // E7 E A A# B D D# E …
  L: "[~ [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@3 ~ [b1,b2]@3 ~ [b1,b2]@2 [d2,d3]@2 ~@2 [e2,e3]@2 ~@2 [a1,a2,a3,e4,a4]@2 ~]/2", // E7 E A A# B D E A5
  M: "~ [a1,a2,a3,e4,a4]@2 a2@2 c#1@2 [d1,d2]@2 ~@2 [e1,e2]@5, ~@5 c#2 ~@10", // A5 D E
  N: "~@3 e2 ~ g2@3 ~ a2@3 ~ [a3,e4,a4]@2 ~, ~@13 a1 ~@2", // A5
  O: "[~ [a3,a4]@2 a2@2 [c#1,c#2]@2 [d1,d2]@2 ~@2 e1@4 [g4,b4]@4 [e2,a4]@2 [g2,g4]@4 a2@4 [e2,b3,e4,g#4,b4,d5,e5]@2 ~, ~ [a1,e4] ~@9 e2@6 ~@15, ~@15 a#4 ~@9 e4 ~@6]/2", // A C# D G A5 G E7 A5
  P: "~ [b4,d5,e5]@2 [e2,e3]@2 [g#1,g#2]@2 [a1,a2]@3 ~ [b1,b2]@4 [e5,a#5,d6], ~@11 [e5,b5] ~@4", // E7 E G# A B Em7b5 E5
  Q: "~@3 [b1,b2,e5,a#5,b5,d6]@2 ~@2 e5@2 g#5 a5@2 e5 ~ b5@2, ~@5 [d2,d3]@4 [e2,e3]@2 ~@2 [e2,b3,e4,g#4,b4,d5,e5,g5]@2 ~, ~@14 g#5 ~", // E7 D E E7
  R: "~ [b4,d5,e5,b5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@5", // E7 E A A# B
  S: "[~@3 [b1,b2]@2 [d2,d3]@2 ~@3 [e2,e3]@3 ~ [d#4,b4]@8 [d#4,g#4,b4]@6 [g#4,b4] ~ [g#4,b4,d#5]@6 ~@2 [c#4,g#4]@2 ~@2 [c#4,g#4]@2 ~@2 [d#4,b4]@8 ~ [d#4,g#4,b4]@6 [g#4,b4] ~ [g#4,b4,d#5]@6 ~@2 [c#4,g#4]@2 ~@2 [c#4,g#4]@2 ~@2 [e4,a4,c#5]@14 ~@2 a4@8 [a4,d5,f#5]@4 [a4,d5,f#5]@2 ~@2 [b4,d5]@2 f#4 b4 f#4 b4 f#4 ~ b4 f#4 b4 f#4 b4 ~ b4@3, ~@28 d#5@2 ~@31 d#5@2 ~@32 [e4,c#5]@12 ~@17 f#4@4, ~@103 b4 ~@7 d#5@16 ~]/8", // B D E G#m C#5 G#m C#5 A …
  T: "[b3,f#4,b4] ~@15", // B5
  U: "[d#4,f#4,b4,d#5] ~@5 [b2,d#4,f#4,b4,d#5] ~ [b2,d#4,f#4,b4,d#5] ~@3 [b2,d#4,f#4,b4,d#5] ~@3, b2 ~@7", // B
  V: "[[e2,b3,e4,g#4,a#4,b4,d5,e5]@3 ~ [b4,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~@5 [b4,d5]@2 ~@2 [b1,b2]@2 [d2,d3]@2 [b1,e4]@2 [e2,e3,a4,c#5]@2 [b1,e4]@2, ~@14 [b1,b2]@6 ~@2 a#4 ~@5 g#4 ~@3, ~@18 a#4 ~@3 [b4,d5]@5 ~@5]/2", // E7 E5 E A A# Bm B D …
  W: "[[e2,b3,e4,d5,e5]@2 ~@2 [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@4 [a4,d5]@2 ~@2 [b1,b2]@2 [d2,d3]@3 ~ [e2,e3]@2 ~@2, [g#4,b4]@4 ~@14 [a#4,b4] ~@3 [a4,b4,d5]@5 ~@5, ~@22 a#4 ~@9]/2", // E7 E A A# B D5 B D …
  X: "[[e2,e4,g#4,e5]@2 ~@2 [d5,e5]@2 [e2,e3]@2 g#1@2 a1@3 ~ [b1,b2]@6 ~@2 [b1,b2]@2 [d2,d3]@4 [e2,e3]@3 ~, b4 ~@3 b4 ~@27]/2", // E Dsus2 E B D E
  Y: "[[e2,e4,g#4,b4,e5]@2 ~@2 [g#4,b4,e5]@2 [e2,e3,e4]@2 g#1@2 a1@3 ~ [b1,b2]@4 b1@2 ~@2 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2]/2", // E B D E
  Z: "[[e2,e4,g#4,b4,e5]@2 ~@2 [g#4,b4,e5]@2 [e2,e3,e4]@2 g#1@2 a1@3 ~ [b1,b2]@4 [b1,e4,g#4]@3 ~ [b1,b2]@2 g#4@2 g4@2 [e2,d3,f#4]@2 ~@2, ~@18 f#4 ~@5 [d2,d3,e3]@4 ~@4]/2", // E B E B D Dsus2
  AA: "[[e2,e4,g#4,e5]@2 ~@2 e5@2 [e2,e3]@2 g#1@2 a1@3 ~ [b1,b2]@4 b1@2 ~@2 [b1,b2]@2 [d2,d3]@4 d3@2 ~@2, b4 ~@3 b4 ~@27]/2", // E B D
  AB: "[[e2,e4,g#4,b4,e5]@2 ~@2 e5@2 [e2,e3]@2 g#1@2 a1@3 ~ [b1,b2]@4 b1@2 ~@2 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2, ~@4 b4 ~@27]/2", // E B D E
  AC: "[[e2,e4,g#4,b4,e5]@2 ~@2 [b4,e5]@2 [e2,e3]@2 g#1@2 a1@3 ~ [b1,b2]@4 b1@2 ~@2 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2]/2", // E E5 E B D E
  AD: "[[e2,e4,g#4,e5]@2 ~@2 [b4,e5]@2 [e2,e3]@2 g#1@2 a1@3 ~ [b1,b2]@4 b1@2 ~@2 b1@2 d2@4 e2@2 e1@2, b4 ~@31]/2", // E E5 E B
  AE: "[e3,b3,e4] ~@7, e1 ~@15", // E5
  AF: "~ d5 d5@2 d5@2 [b4,d5]@2 ~@2 d5@2 a4@2 d5@2, [a4,a#4]@2 ~@8 a#4 ~@3 e4 ~, ~ b4@4 ~@7 d5 ~@3", // Bm A#maj7
  AG: "[a#4,d5] ~ [a4,d5]@2 ~@2 [a4,e5] ~ a4@2 e4@2 b4@2 e4 ~, ~@6 a#4@2 ~@4 g4 ~@3", // A# D5 A5
  AH: "[g4,b4]@2 g#4 ~ [g4,b4]@2 g#4 ~ b4!2 ~ b4!5", AI: "b4!8 g4 ~ e4@2 a4@2 g4@2, ~@3 e4 b4 ~@3, ~@9 g#4@2 ~@5",
  AJ: "d5 b4 d5 b4 d5 b4 d5 b4 d5 b4 d5 b4 d5 b4 d5 b4", AK: "d5 b4 d5 b4 d5 b4 d5 b4 [a4,c#5]@2 ~@2 d4@2 e4 ~",
  AL: "[g4,b4]@2 g#4@2 [g4,b4]@2 g#4@2 [g4,b4]@2 g#4 ~ e4@3 ~", AM: "~@2 e5 ~ [b5,d6]@3 ~ [a5,c#6]@3 ~@5, ~@4 a#5 ~@11",
  AN: "e4@2 f#4 ~ g4@2 e4 ~ d5@2 g4@4 e4@2", AO: "[g4,d5] g#4 e4 [g4,d5] g#4 e4 [g4,d5] g#4",
  AP: "[e4,g#4]@4 [g4,g#4] ~ [e4,g#4,b4,c#5]@2 ~@8, e2, [b3,b4]@3 ~@5, ~@2 e4 ~@5", // E G#maj7 C#m7 B
  AQ: "~@4 g4 ~ g4@2 ~@4 g4 ~ e4@2, [g3,a3,c#4]@15 ~, a2@3 ~, e4@5 e4@2 ~", // A7
  AR: "[e4,g#4,b4]@3 ~ [e4,g#4]@2 [e4,g#4,b4]@2 ~@4 d5@2 ~@2, e2, b3@4 g4 ~ d5 ~@9", // E
  AS: "g4@2 c#4@2 [c#4,e4,g4] ~ [c#4,e4]@3 ~@3 [c#4,e4,g4] ~@3, a1, [g3,a3]@7 ~, ~@6 g4 ~@9", // C#dim C#m C#dim Gsus2
  AT: "[[e2,b3,e4,g#4,b4,d5,e5]@2 ~@2 [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@4 b1 ~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2]/2", // E7 E A A# B D E
  AU: "[[d#4,b4]@8 ~ [d#4,g#4,b4]@6 [g#4,b4] ~ [g#4,b4,d#5]@6 ~@2 [c#4,g#4]@2 ~@2 [c#4,g#4]@2 ~, ~@15 d#5@2 ~@15]/2", // G#m C#5
  AV: "~ [d#4,b4]@8 [d#4,g#4,b4]@6 ~", AW: "[g#4,b4] ~ [g#4,b4,d#5]@6 ~@2 [c#4,g#4]@2 ~@2 [c#4,g#4]@2, d#5 ~@7",
  AX: "~ [e4,a4,c#5]@7", AY: "~ a4@4 [a4,d5,f#5]@2 [a4,d5,f#5], ~ [e4,c#5]@6 ~, ~@10 b4 ~@5",
  AZ: "[~@2 [b4,d5]@2 f#4 b4 f#4 b4 f#4 b4 f#4 b4 f#4 b4 ~ b4@3 [b3,f#4,b4] ~@13, ~ d#5@8 ~@7, ~@7 f#4@2 ~@7]/2", // Bm B5
  BA: "~@3 [d#4,f#4,b4,d#5] ~@5 [b2,d#4,f#4,b4,d#5] ~ [b2,d#4,f#4,b4,d#5] ~@3 [b2,d#4,f#4,b4,d#5], ~@3 b2@2 ~@11", // B
  BB: "~@3 [e2,b3,e4,g#4,b4,d5,e5]@3 ~ [b4,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#5,b5] ~ b5, ~@3 a#4 ~@9 [a#1,a#2]@3, ~@7 d6", // E7 E5 E A Bmaj7 A#
  BC: "[d6 b5 d6 ~ b5 d6 b5 d6 b5 d6 b5 [d2,b5,d6]@2 ~@2 [e2,e3,c#5,c#6]@2 [b1,e4]@2 [e2,b3,e4,e5,g#5,b5]@3 ~ [e5,g#5,b5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3, ~ [b1,b2]@6 ~@2 b4@4 ~ a5@2 ~@16, ~@9 b1@2 ~@2 b1@2 g#4 ~@16]/2", // G C#m E5 E A A# B
  BD: "[~ [b1,b2]@4 [e5,b5] ~@3 [b1,b2]@2 [d2,d3]@2 c#6@2 [e2,e3,g#5,b5]@2 ~@2 [e2,e4,g#4,b4,e5]@2 ~@2 [e4,g4,g#4,e5]@2 [e2,e3]@2 g#1@2 a1@3, ~@9 [g#5,d6]@5 ~@9 b4 ~@8, ~@9 b5 ~@22]/2", // B E5 B D E G#dim
  BE: "[~ [b1,b2]@6 ~@2 [b1,b2]@2 [d2,d3]@4 [e2,e3]@3 ~ [e2,e4,g#4,b4,e5]@2 ~@2 [g#4,b4,e5]@2 [e2,e3,e4]@2 g#1@2 a1@3]/2", // B D E
  BF: "[~ [b1,b2]@4 b1@2 ~@2 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2 [e4,g#4]@4 [g4,g#4] ~ [e4,g#4,b4,c#5]@2 ~@12 g4 ~ g4@2 ~@4 g4 ~ e4@2 [e4,g#4,b4]@3 ~ [e4,g#4]@2 [e4,g#4,b4]@2 ~@4 d5@2 ~@2 g4@2 c#4@2 [c#4,e4,g4] ~ [c#4,e4]@3 ~@3 [c#4,e4,g4] ~@3 [e2,e4,g#4,b4,e5]@2 ~@2 [e2,g#4,e5]@2 ~@7, ~@19 e2@16 a2@12 ~@4 e2@16 a1@16 ~@13, ~@19 [b3,b4]@6 ~@10 [g3,a3,c#4]@15 ~ b3@4 ~@12 [g3,a3]@14 ~@15, ~@35 e4@10 e4@4 ~@6 g4 ~ d5 ~@15 g4 ~@13 b4 ~@8]/6", // B D E G#maj7 C#m7 E C#dim C#m …
})).s("gm_piano").gain(0.44)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  ~@8 A B A B A B A B C D C B A B A B ~@9 E F E G@3 ~@4 H ~ I ~ J ~ K ~ K ~ K ~ K ~ K ~ L ~ M ~@3 N@2 O P Q@2 R@2 S@2
  ~@4 H ~@3 T U V W X@2 ~@4 Y ~ Z ~ AA ~ AB ~@5 AB
>`.pickRestart({
  A: "~@13 [b4,e5]@2 ~", B: "~ [b4,e5]@2 ~@13", C: "~@13 [b4,e5] ~@2", D: "~ [b4,e5] ~@14", E: "~@2 [b4,d#5] ~@13",
  F: "~@2 [g#4,b4,d#5] ~@3 [g#3,c#4]@2 ~@2 [g#3,c#4]@2 ~@4", // G#m C#5
  G: "[~@3 [g#4,b4,d#5] ~@3 [g#3,c#4]@2 ~@2 [g#3,c#4]@2 ~@2 [e4,a4]@14 ~@2 [e4,a4]@13 ~@4]/3", // G#m C#5 A5
  H: "[b4,d5,e5] ~ [b4,e5] ~@5", I: "[b4,e5] ~ [b4,e5] ~@5", J: "[g#4,b4] ~ [g#4,b4,e5] ~@5",
  K: "[g#4,b4,e5] ~@3 [g#4,b4,e5] ~@11", L: "[b4,d5,e5] ~ [g#4,b4,d5,e5] ~@5", M: "[b4,d5,e5] ~@3",
  N: "~@4 [g#4,b4,d5] ~@11", O: "~@4 [g#4,b4,d5] ~@7 b3 ~@2 e4", P: "~@4 [g#4,b4,d5] ~@11, ~@2 e3@7 ~@7",
  Q: "[[b4,d5,e5] ~@3 [b4,d5,e5] ~ e3@2 g#2@2 a2@3 ~ b2@6 [g#4,b4,d5] ~ b2 ~ d3@3 ~ e3@3 ~, e3 ~@7]/2", // E7 G#dim
  R: "[[b4,d5,e5] ~@3 [b4,d5,e5] ~ e3@2 g#2 ~ a2@2 ~@2 b2@6 [g#4,b4,d5] ~ b2 ~ d3@3 ~ e3@2 ~@2, e3 ~@7]/2", // E7 G#dim
  S: "[[g#4,b4,e5] ~@3 [g#4,b4,e5] ~ e3 ~ g#2@2 a2@3 ~ b2@6 [g#4,b4,e5] ~ b2 ~ d3@3 ~ e3@3 ~, e3 ~@7]/2", // E
  T: "~@4 [b4,d#5] ~@11", U: "~@5 [g#4,b4,d#5] ~@3 [g#3,c#4]@2 ~@2 [g#3,c#4]@2 ~", V: "~@5 [b4,d#5] ~@10",
  W: "~@6 [g#4,b4,d#5] ~@3 [g#3,c#4]@2 ~@2 [g#3,c#4]@2", X: "~ [e4,a4]@7", Y: "~@3 [b4,d5,e5]@2 ~@2 [b4,e5] ~@8",
  Z: "~@3 [b4,e5] ~@3 [b4,e5] ~@8", AA: "~@7 [g#4,b4,e5]@2 ~@7", AB: "~@7 [g#4,b4,e5] ~@8",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.8)

// other · drawbar organ · "Organ"
const drawbar_organ = note("<~@28 A@5 ~@73>".pickRestart({
  A: "[~@13 [b3,b4]@61 ~@6]/5", // B
})).s("gm_drawbar_organ").gain(0.6)

// chords · brass section · "Brass"
const brass_section = note("<~@24 A B A B C D ~@2 E@8 F ~@34 G H ~@5 I J K L M N@4 ~@10 O P ~@3>".pickRestart({
  A: "~@13 [c#4,g4]@2 ~", B: "~ [c#4,g4]@2 ~@13", C: "~@13 [b3,e4] ~@2", D: "~ [b3,e4] ~@14",
  E: "[~@10 f#2@3 ~ [g#2,g#3,b3,d#4]@13 ~ [f#2,g#3,b3] ~ [g#2,g#3,b3,d#4]@6 g#2@2 [c#2,g#3,c#4]@3 ~ [c#2,g#3,c#4]@3 ~ [g#2,g#3,b3,d#4]@13 ~@2 [g#3,b3] ~ [g#2,g#3,b3,d#4]@6 g#2@2 [c#2,g#3,c#4]@3 ~ [c#2,g#3,c#4]@3 ~ [a2,a4]@16 [a2,a4]@16 [b2,b3]@16 ~, ~@13 g2@2 ~@46 f#2@2 ~@16 c#4@12 ~@4 c#4@12 ~@21]/8", // G#m G#m7 G#m C#5 G#m C#5 A B
  F: "b2 ~@7", G: "e2 ~@3", H: "a1 ~@3", I: "~@3 f#2", J: "[g#2,g#3,b3,d#4]@13 ~@2 [f#2,g#3,b3], g2 ~@7",
  K: "~ [g#2,g#3,b3,d#4]@6 g#2@2 [c#2,g#3,c#4]@3 ~ [c#2,g#3,c#4]@3", L: "~ [g#2,g#3,b3,d#4]@13 ~@2",
  M: "[g#3,b3] ~ [g#2,g#3,b3,d#4]@6 g#2@2 [c#2,g#3,c#4]@3 ~ [c#2,g#3,c#4]@2, f#2 ~@7", // G#m C#5
  N: "[~ [a2,a4]@8 [a2,a4]@8 [b2,b3]@8 b2 ~@6, ~ c#4@6 ~@2 c#4@6 ~@17]/4", O: "~@3 e2@4 ~@9", P: "~ a1@2 ~@5",
})).s("gm_brass_section").gain(0.3).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  ~@16 A ~@3 A ~@3 B C D C E F ~ G H ~@11 I@2 J ~@3 I@2 ~ K L@2 ~ M ~@17 N O P Q@2 L@2 ~@13 R S@2 T@2 ~ U V@2 W X
>`.pickRestart({
  A: "~@11 d2@2 e2@2 ~", B: "~@9 a2@7", C: "~ a1@2 ~@13", D: "~@3 a2", E: "~@13 e2 ~@2, ~@6 d2 ~", F: "~ e2 ~@14",
  G: "~@11 b1@3 ~@2", H: "~@5 b1 ~@2", I: "[~@14 d2@5 ~@13]/2", J: "~@5 e2@3", K: "e2 ~@7", L: "[~@7 e2@2 ~@7]/2",
  M: "e2 ~ e2 ~@5", N: "[b3,e4]@5 ~ e2@2 ~@8", O: "~@6 a1@2 ~@2 e2 ~ a1@2 ~@2, [a3,c#4] ~",
  P: "[b3,e4]@3 e2 ~@4, e2 ~@7", Q: "[a1@2 ~@2 a1 ~ a1 ~@5 a1 ~ e2@4 ~@14, [a3,c#4] ~@3]/2", R: "~ d2@5 ~@10",
  S: "[~@13 e2@7 ~@12]/2", T: "[~@15 e2@7 ~@10]/2", U: "~ d2@2 [b3,e4]@5 ~ e2@2 ~@5",
  V: "[~@9 a1@2 ~@2 e2 ~ a1@2 ~@2 [b3,e4]@6 e2@2 ~@5, ~@3 [a3,c#4]@8 ~@8 e2@2 ~@11]/2", // E5 A
  W: "~@3 a1@2 ~@2 a1 ~ a1 ~@5 a1, ~@3 [a3,c#4]@8 ~@5", X: "~@3 e1@2 ~@2 e1@2 ~@7, ~ e2@4 ~@11",
})).s("gm_alto_sax").gain(0.45).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B C B C B D B D B D B C E C B D E C B C E C B C B D B F G H I J I J K L ~ M N O N O N O N O N O N O N O N O N O
  P Q R S N O N O N O N O N O N T N O N U N O V W X Y Z Y Z AA ~ AB AC AD AE AD AC AD AE AD AE AF AC AD AG
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@3 x ~ x ~ x ~@3 x ~ x ~@2", C: "~@3 x ~ x ~@3 x ~@3 x ~@2", D: "~@3 x ~ x ~@5 x ~ x ~@2",
  E: "~@3 x ~ x ~ x ~@3 x ~ x ~ x", F: "~@3 x ~ x ~@4 x ~@3 x ~", G: "~@3 x!2 ~ x!2", H: "~@3 x!5",
  I: "~@7 x ~ x ~@3 x ~ x", J: "~@7 x ~ x ~ x ~ x ~ x", K: "~@4 x!2 ~ x", L: "x", M: "x ~ x!6", N: "x ~@2 x!3 ~ x",
  O: "x ~@2 x!2 ~ x ~", P: "x ~@3 x!2 ~ x", Q: "~ x ~ x!3 ~ x", R: "x ~@4 x ~@2", S: "~@2 x ~@2 x ~ x",
  T: "x ~ x!4 ~ x", U: "x!2 ~ x!2 ~ x ~", V: "x ~@8 x ~ x ~@3 x", W: "~ x ~@7 x ~ x ~ x ~ x", X: "~ x ~@7 x ~ x ~@4",
  Y: "x!2 ~@3 x!3", Z: "x!2 ~@3 x!2 ~", AA: "x!2 ~@6", AB: "~@3 x ~@3 x ~ x ~ x ~ x ~ x",
  AC: "~ x ~ x ~@5 x ~ x ~ x ~@2", AD: "~ x ~ x ~@5 x ~ x ~@3 x", AE: "~@3 x ~@5 x ~ x ~ x ~@2",
  AF: "~ x ~ x ~@3 x ~ x ~ x ~ x ~@2", AG: "~@3 x ~@12",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@3 C B@7 C B@7 C B@3 D B@3 C E@2 F@4 G H G@3 I G J G@11 I G@5 K G@13 L M G M N O P@2 Q@4 R S@13 T U
>`.pickRestart({
  A: "~@5 x ~ x!3 ~@6", B: "~ x ~@7 x ~@6", C: "~ x ~ x ~ x ~ x!3 ~@6", D: "~ x ~ x ~ x!5 ~@6", E: "~ x ~@3 x ~@2",
  F: "~@3 x ~@7 x ~@4", G: "~ x ~ x", H: "x!2 ~ x", I: "~@4 x ~@2 x ~@4 x ~@3", J: "~@3 x!2 ~ x!2 ~@4 x ~@3",
  K: "~@4 x ~ x!7 ~@3", L: "~@4 x ~ x ~ x!5 ~@3", M: "~@2 x ~ x!3 ~", N: "~@4 x ~ x ~ x ~ x!3 ~@3",
  O: "~@4 x ~@8 x ~@2", P: "~@5 x ~@7 x ~@2", Q: "~@3 x ~@3 x", R: "~ x ~ x ~@3 x", S: "~@7 x ~@7 x",
  T: "~@7 x ~ x ~@2 x!4", U: "~@3 x ~@3 x ~@8",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct("<~@5 A@3 B A@7 B A@7 B A@3 B A@3 B C@2 D@4 E@39 F E@3 F G@3 H@4 I@14 J K>".pickRestart({
  A: "~ x ~@7 x ~@6", B: "~ x ~@14", C: "~ x ~@3 x ~@2", D: "~@3 x ~@7 x ~@4", E: "~ x ~ x", F: "~ x ~@2",
  G: "~@5 x ~@7 x ~@2", H: "~@3 x ~@3 x", I: "~@7 x ~@7 x", J: "~@7 x ~@8", K: "~@3 x ~@3 x ~@8",
})).gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@42 [~@7 x] ~@21 [~@7 x] ~@28 [~ x ~@14] ~@12>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@5 A@27 B C@2 A@4 B ~@3 D C@3 D C@16 E C@18 A@2 F G C@3 H ~@2 I A@11 J>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~", C: "x!8", D: "~@2 x!6", E: "x!4 ~@2 x ~",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", G: "x!2 ~ x!5", H: "x", I: "~@7 x ~ x ~ x ~ x ~ x", J: "~ x ~ x ~@3 x ~@8",
})).gain(0.6)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@7 A ~@7 A ~@3 A ~@3 A ~@9 B ~@3 C ~@11 D ~@19 D ~@3 D ~@9 E F ~@10 G ~
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@2 x!6", C: "~ x", D: "~@3 x", E: "~@7 x ~ x ~ x ~ x ~ x", F: "~ x ~@14", G: "~@15 x",
})).gain(0.6)

// drums · high tom
const high_tom = s("ht").struct("<~@42 A ~@15 B ~@20 C ~ C ~@10 D ~@13>".pickRestart({
  A: "~@11 x ~@4", B: "~@11 x!2 ~@3", C: "~@4 x!2 ~ x", D: "~@7 x",
})).gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@19 A ~@3 A ~@3 B ~@10 C ~@35 D ~ B ~ C ~@9 E ~@12>".pickRestart({
  A: "~@13 x ~@2", B: "~@7 x", C: "x", D: "x ~@6 x", E: "~@3 x ~@12",
})).gain(0.54)
// … 23 more lines

More by The Go-Go's