Strudelify

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: 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@2 Y@6 Z@2
  AA AB AC AD AE@4 AF AG AH AI AJ AK AL AM ~ AN AO AP@2 AQ@4 AR@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@4 ~@2 e2@2 g#1@2 a1@3 ~ b1@5 ~@3 b1@2 d2@2 d2@2 d#2@2 e2@2]/2",
  Z: "[e1@4 ~@2 e2@2 g#1@2 a1@3 ~ b1@6 ~@2 b1@2 d2 ~ d2@2 e2@4]/2", AA: "e2@2 e1 e2@2 e1 e2!2",
  AB: "a1@2 a1 a2@2 a1 a2@2", AC: "e1@4 e1@2 e2@4 e1@2 e2@3 ~", AD: "a1@2 a1 a2@2 a1 d2 d#2",
  AE: "[e1@3 ~@3 e2@2 a1@2 a#1@3 ~ b1@5 ~@3 b1@2 d2@4 e2@2 e1 ~]/2", AF: "g#1@6 ~ g#2@2 g#2@4 ~@2 g#2",
  AG: "~ g#1@6 ~@2 c#2@2 ~@2 c#2@3", AH: "~ g#1@6 g#2@2 g#2@4 ~@3", AI: "g#2 ~ g#1@6 ~@2 c#2@2 ~@2 c#2@2",
  AJ: "~@2 a2@4 ~@2 a2@2 c#1 ~ d1@4", AK: "d1 ~ e1@4 ~@2 e1@2 a1@2 e1@2 a1@2", AL: "e1@2 b1@3 ~@3 b1@2 d#1@2 e1@3 ~",
  AM: "f#1 b1 ~@6", AN: "~@3 b1@2 ~@4 b1 ~ b1 ~@3 b1", AO: "~@3 e1@3 ~@3 e2@2 a1@2 a#1@3",
  AP: "[~ b1@5 ~@3 b1@2 d2@2 b1@2 e1@2 b1@2 e1@3 ~@3 e2@2 a1@2 a#1@3]/2",
  AQ: "[~ b1@5 ~@3 b1@2 d2@2 d2@2 e2@2 e2@2 e1@3 ~@3 e2@2 g#1@2 a1@3]/2",
  AR: "[~ 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 E F G@2 H I J@2 K@2 H L M@2 N I O@2 P Q R@2 S T U V@8 W ~ X Y@2 Z@2 AA@2 AB@2 AC@2 AD@2 AE@2 AF@2 AG@2
  AH ~@3 AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW@2 AX@2 AY@2 AZ BA BB BC BD@2 ~ BE BF BG@2 BH@2 BI@2 BJ@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 [e2,e3]@2 ~@2 [a#1,a#2]@3 ~ [b1,b2]@5, ~@5 a1@2 ~@9, ~@3 a2 ~@4", // E A# B
  F: "~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2 [e2,b3,e4,g#4,d5,e5]@3", // B D E E7
  G: "[~ [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 …
  H: "~ [b4,d5,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@5", // E7 E A A# B
  I: "~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2 [e2,b3,e4,g#4,b4,d5,e5]@2 ~", // B D E E7
  J: "[~ [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 …
  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,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 …
  L: "~@3 [b1,b2]@2 [d2,d3]@4 [e2,e3]@2 ~@2 [e2,b3,e4,g#4]@2 ~, ~@13 [b4,d5,e5] ~@2", // B D E E7
  M: "[~ [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 …
  N: "~ [b4,e5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@5, ~ d5 ~@14", // E5 E A A# B
  O: "[~ [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
  P: "~ [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
  Q: "~@3 e2 ~ g2@3 ~ a2@3 ~ [a3,e4,a4]@2 ~, ~@13 a1 ~@2", // A5
  R: "[~ [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
  S: "~ [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
  T: "~@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
  U: "~ [b4,d5,e5,b5]@2 [e2,e3]@2 [a1,a2]@2 [a#1,a#2]@3 ~ [b1,b2]@5", // E7 E A A# B
  V: "[~@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 …
  W: "[b3,f#4,b4] ~@15", // B5
  X: "[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
  Y: "[[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 …
  Z: "[[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 …
  AA: "[[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
  AB: "[[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
  AC: "[[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
  AD: "[[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
  AE: "[[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]@3 ~, ~@4 b4 ~@27]/2", // E B D E
  AF: "[[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
  AG: "[[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
  AH: "[e3,b3,e4] ~@7, e1 ~@15", // E5
  AI: "~ 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
  AJ: "[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
  AK: "[g4,b4]@2 g#4 ~ [g4,b4]@2 g#4 ~ b4!2 ~ b4!5", AL: "b4!8 g4 ~ e4@2 a4@2 g4@2, ~@3 e4 b4 ~@3, ~@9 g#4@2 ~@5",
  AM: "d5 b4 d5 b4 d5 b4 d5 b4 d5 b4 d5 b4 d5 b4 d5 b4", AN: "d5 b4 d5 b4 d5 b4 d5 b4 [a4,c#5]@2 ~@2 d4@2 e4 ~",
  AO: "[g4,b4]@2 g#4@2 [g4,b4]@2 g#4@2 [g4,b4]@2 g#4 ~ e4@3 ~", AP: "~@2 e5 ~ [b5,d6]@3 ~ [a5,c#6]@3 ~@5, ~@4 a#5 ~@11",
  AQ: "e4@2 f#4 ~ g4@2 e4 ~ d5@2 g4@4 e4@2", AR: "[g4,d5] g#4 e4 [g4,d5] g#4 e4 [g4,d5] g#4",
  AS: "[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
  AT: "~@4 g4 ~ g4@2 ~@4 g4 ~ e4@2, [g3,a3,c#4]@15 ~, a2@3 ~, e4@5 e4@2 ~", // A7
  AU: "[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
  AV: "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
  AW: "[[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
  AX: "[[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]@3 ~]/2", // E7 E A A# B D E
  AY: "[[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
  AZ: "~ [d#4,b4]@8 [d#4,g#4,b4]@6 ~", BA: "[g#4,b4] ~ [g#4,b4,d#5]@6 ~@2 [c#4,g#4]@2 ~@2 [c#4,g#4]@2, d#5 ~@7",
  BB: "~ [e4,a4,c#5]@7", BC: "~ a4@4 [a4,d5,f#5]@2 [a4,d5,f#5], ~ [e4,c#5]@6 ~, ~@10 b4 ~@5",
  BD: "[~@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
  BE: "~@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
  BF: "~@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#
  BG: "[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
  BH: "[~ [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
  BI: "[~ [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
  BJ: "[~ [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 G H@3 ~@4 I ~ J ~ K ~ L ~ L ~ L ~ L ~ L ~ M ~ N ~@3 O@2 P Q R@2 S@2 T@2
  ~@4 I ~@3 U V W X Y Z ~@4 AA ~ AB ~ AC ~ AD ~@5 AD
>`.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: "~@3 [b4,d#5] ~@12",
  H: "[~@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
  I: "[b4,d5,e5] ~ [b4,e5] ~@5", J: "[b4,e5] ~ [b4,e5] ~@5", K: "[g#4,b4] ~ [g#4,b4,e5] ~@5",
  L: "[g#4,b4,e5] ~@3 [g#4,b4,e5] ~@11", M: "[b4,d5,e5] ~ [g#4,b4,d5,e5] ~@5", N: "[b4,d5,e5] ~@3",
  O: "~@4 [g#4,b4,d5] ~@11", P: "~@4 [g#4,b4,d5] ~@7 b3 ~@2 e4", Q: "~@4 [g#4,b4,d5] ~@11, ~@2 e3@7 ~@7",
  R: "[[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
  S: "[[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
  T: "[[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
  U: "~@4 [b4,d#5] ~@11", V: "~@5 [g#4,b4,d#5] ~@3 [g#3,c#4]@2 ~@2 [g#3,c#4]@2 ~", W: "~@5 [b4,d#5] ~@10",
  X: "~@6 [g#4,b4,d#5] ~@3 [g#3,c#4]@2 ~@2 [g#3,c#4]@2", Y: "~ [e4,a4]@7", Z: "~@2 [e4,a4]@13 ~",
  AA: "~@3 [b4,d5,e5]@2 ~@2 [b4,e5] ~@8", AB: "~@3 [b4,e5] ~@3 [b4,e5] ~@8", AC: "~@7 [g#4,b4,e5]@2 ~@7",
  AD: "~@7 [g#4,b4,e5] ~@8", // E
})).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 K@2 ~ L M@2 ~ N ~@17 O P Q R@2 M@2 ~@13 S T@2 U@2 ~ V W@2 X Y
>`.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: "[~@7 d2@2 ~@7]/2", L: "e2 ~@7",
  M: "[~@7 e2@2 ~@7]/2", N: "e2 ~ e2 ~@5", O: "[b3,e4]@5 ~ e2@2 ~@8", P: "~@6 a1@2 ~@2 e2 ~ a1@2 ~@2, [a3,c#4] ~",
  Q: "[b3,e4]@3 e2 ~@4, e2 ~@7", R: "[a1@2 ~@2 a1 ~ a1 ~@5 a1 ~ e2@4 ~@14, [a3,c#4] ~@3]/2", S: "~ d2@5 ~@10",
  T: "[~@13 e2@7 ~@12]/2", U: "[~@15 e2@7 ~@10]/2", V: "~ d2@2 [b3,e4]@5 ~ e2@2 ~@5",
  W: "[~@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
  X: "~@3 a1@2 ~@2 a1 ~ a1 ~@5 a1, ~@3 [a3,c#4]@8 ~@5", Y: "~@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 E F@2 G@4 H I J@3 K J L J@11 K J@5 M J@13 N O J O P Q R@2 S@4 T U@13 V W
>`.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 ~ x ~ x ~@2 x!3 ~@5", F: "~ x ~@3 x ~@2", G: "~@3 x ~@7 x ~@4", H: "~@3 x ~@8 x ~@3", I: "x!2 ~ x",
  J: "~ x ~ x", K: "~@4 x ~@2 x ~@4 x ~@3", L: "~@3 x!2 ~ x!2 ~@4 x ~@3", M: "~@4 x ~ x!7 ~@3",
  N: "~@4 x ~ x ~ x!5 ~@3", O: "~@2 x ~ x!3 ~", P: "~@4 x ~ x ~ x ~ x!3 ~@3", Q: "~@4 x ~@8 x ~@2",
  R: "~@5 x ~@7 x ~@2", S: "~@3 x ~@3 x", T: "~ x ~ x ~@3 x", U: "~@7 x ~@7 x", V: "~@7 x ~ x ~@2 x!4",
  W: "~@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 F@38 G F@3 G H I@2 J@5 K@13 L M
>`.pickRestart({
  A: "~ x ~@7 x ~@6", B: "~ x ~@14", C: "~ x ~@3 x ~@2", D: "~@3 x ~@7 x ~@4", E: "~@3 x ~@8 x ~@3", F: "~ x ~ x",
  G: "~ x ~@2", H: "~@4 x ~@8 x ~@2", I: "~@5 x ~@7 x ~@2", J: "~@3 x ~@3 x", K: "~@7 x ~@7 x", L: "~@7 x ~@8",
  M: "~@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 D A@3 B ~@3 E C@3 E C@16 F C@18 G A H I C@3 J ~@2 K A@11 L>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~", C: "x!8",
  D: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x", E: "~@2 x!6", F: "x!4 ~@2 x ~", G: "x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x",
  H: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", I: "x!2 ~ x!5", J: "x", K: "~@7 x ~ x ~ x ~ x ~ x", L: "~ 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 B ~@9 C ~@3 D ~@11 E ~@19 E ~@3 E ~@9 F G ~@10 H ~
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@5 x ~@2", C: "~@2 x!6", D: "~ x", E: "~@3 x", F: "~@7 x ~ x ~ x ~ x ~ x", G: "~ x ~@14",
// … 36 more lines

More by The Go-Go's