Strudelify

Carribean Queen

Billy Ocean

KeyG majorTempo111 bpm
0:00/0:00
// Carribean Queen — Billy Ocean
// 111 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 15 electric guitar muted (copy of ch 12 electric guitar muted)
// note: Full arrangement: all 82 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(111/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 · slap bass 2
const bass = note(`<
  A@2 B C D@3 E F G H I J K L M N O P Q@2 R S T U V W X Y Z AA@2 AB AC@2 AD AE AF AG AH AI AJ E AK AL AM AN AO AP I AQ
  AR AS@2 AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BC BJ BK BL BM@2 BN BO@2 BP BQ@2
>`.pickRestart({
  A: "[d2@4 ~@9 c2@43 ~@4 c2@2 g1@2]/2", B: "a1@2 ~@2 a1@3 a1@4 ~ a#1@8 a#2@2 ~@6 a1@3 ~",
  C: "~ a#1 ~@3 a#1 ~@2 a#1@3 ~ c2@8 c3 ~@7 c2@4", D: "d2@4 c2@4 a1 ~@3 a1@4 c2 ~@3 c2@4 a1@4 c2@2 ~@2",
  E: "d2@4 c2@3 ~ a1 ~@3 a1@4 c2 ~@3 c2@3 ~ a1@4 c2 ~@3", F: "d2@4 c2@3 ~ a1 ~@3 a1@3 ~ c2 ~@3 c2@3 ~ a1@4 c2@3 ~",
  G: "d2@4 c2@3 ~ a1 ~@2 a1@4 ~ c2 ~@3 c2@3 a1@4 ~ c2@2 ~@2",
  H: "d2@4 c2@3 ~ a1 ~@3 a1@3 ~ c2 ~@3 c2@4 a1@3 ~ c2@2 ~@2",
  I: "d2@3 ~ c2@3 ~ a1@2 ~@2 a1@3 ~ c2 ~@3 c2@3 ~ a1@4 c2@2 ~@2",
  J: "d2@3 ~ c2@3 ~ a1@2 ~@2 a1@3 ~ c2 ~@3 c2@3 a1@3 ~@2 c2@2 ~@2",
  K: "d2@4 c2@3 ~ a1@2 ~@2 a1@3 c2 ~@4 c2@3 a1@3 ~@2 c2@2 ~@2",
  L: "d2@3 ~ c2@3 ~ a1@2 ~@2 a1@3 c2 ~@4 c2@3 a1@4 ~ c2@2 ~@2", M: "d2@4 c2@3 a1 ~@4 a1@4 c2 ~@3 c2@3 a1@4 ~ c2@2 ~@2",
  N: "d2@4 c2@3 a1 ~@4 a1@3 ~ c2 ~@3 c2@4 a1@4 c2@2 ~@2", O: "d2@4 c2@3 ~ a1@2 ~ a1@3 ~ c2 ~@4 c2@3 ~ a1@3 ~ c2@2 ~@2",
  P: "d2@4 c2@3 ~ a1 ~@3 a1@3 c2 ~@4 c2@4 a1@3 ~ c2@2 ~@2",
  Q: "[d2@4 c2@3 ~ a1 ~@3 a1@4 c2 ~@3 c2@3 a1@4 c2@2 ~@2 d2@4 ~ c2@2 ~ a1 ~@3 a1@4 ~ c2 ~@3 c2@3 a1@4 ~ c2@2 ~@2]/2",
  R: "d2@3 c2@3 ~ a1 ~@3 a1@3 ~ c2 ~@3 c2@3 ~ a1@4 ~ c2@2 ~@2",
  S: "d2@3 ~ c2@3 ~ a1 ~@3 a1@4 c2 ~@3 c2@3 ~ a1@4 c2 ~@3", T: "d2@4 c2@3 a1 ~@4 a1@3 c2 ~@4 c2@4 a1@4 c2@3 ~",
  U: "a#1 ~@3 a#1@4 g1@4 f1@4 a#1 ~@3 a#1@3 g1@4 ~ f1@4", V: "c2 ~@3 c2@4 a1@4 g1@4 c2 ~@3 c2@4 a1@4 g1@3 a#1",
  W: "~@4 a#1@4 g1@3 f1@4 ~ a#1 ~@2 a#1@4 g1@4 ~ f1@4", X: "c2@2 ~@2 c2@4 a1@4 g1@4 c2 ~@3 c2@4 a1@4 g1@4",
  Y: "a#1 ~@3 a#1@3 g1@4 f1@4 a#1 ~@4 a#1@3 g1@4 ~ f1@4", Z: "a1 ~@3 a1@3 ~ g1@4 e1@4 a1 ~@3 a1@3 g1@4 e1@4 ~",
  AA: "[d2 ~@3 d2@3 c2@4 a1@4 c2 ~@3 c2@4 ~ g1 ~@2 c2@4 d2@4 ~ c2@4 a1 ~@3 a1@4 c2@2 ~@2 c2@4 a1@4 c2@2 ~@2, ~@23 a1@4 ~@37]/2",
  AB: "d2@2 ~@2 d2@4 c2@3 a1@4 ~ d2@2 ~@2 d2@3 c2@4 ~ a1@4",
  AC: "[c2@2 ~@2 c2@3 a1@4 g1@4 c2@2 ~@3 c2@4 a1@4 g1@3 a#1@2 ~@3 a#1@3 g1@4 ~ f1@3 a#1@2 ~@3 a#1@3 g1@4 ~ f1@4]/2",
  AD: "a1@2 ~@2 a1@3 g1@4 f1@4 ~ a1@2 ~@2 a1@3 g1@4 ~ f1@4",
  AE: "g1@2 ~@2 g1@4 f1@4 d1@4 g1@2 ~@2 g1@3 ~ a1@2 ~@2 a#1@2 ~@2",
  AF: "a#1@3 ~ a#1@4 g1@3 f1@4 c2@2 ~@3 c2@3 a1@4 c2@2 ~@3",
  AG: "d2@4 c2@3 ~ a1@2 ~@2 a1@4 c2@2 ~@2 c2@3 a1@4 c2@2 ~@3",
  AH: "d2@4 c2@3 a1@2 ~@3 a1@3 c2@2 ~@3 c2@3 a1@4 ~ c2@3 ~",
  AI: "d2@4 c2@3 a1@2 ~@3 a1@4 c2@2 ~@2 c2@3 a1@4 ~ c2@2 ~@2",
  AJ: "d2@3 c2@3 ~ a1@2 ~@3 a1@4 c2 ~@3 c2@4 a1@4 c2@2 ~@2", AK: "d2@4 c2@3 ~ a1 ~@3 a1@3 c2@2 ~@3 c2@3 a1@4 ~ c2 ~@3",
  AL: "d2@4 c2@3 ~ a1@2 ~@2 a1@3 ~ c2@4 c2 a1@2 ~@2 a1@3 c2@3 ~",
  AM: "d2@3 ~ c2@3 ~ a1 ~@3 a1@3 ~ c2@2 ~@2 c2@4 a1@4 c2 ~@3",
  AN: "d2@4 c2@3 ~ a1@2 ~@2 a1@3 c2 ~@4 c2@4 a1@3 ~ c2 ~@3", AO: "d2@3 ~ c2@3 ~ a1 ~@3 a1@3 c2 ~@4 c2@4 a1@4 c2@2 ~@2",
  AP: "d2@3 ~ c2@3 ~ a1 ~@3 a1@4 c2 ~@3 c2@2 ~@2 a1@4 c2 ~@3",
  AQ: "d2@3 ~ c2@2 ~@2 a1@2 ~@2 a1@3 ~ c2 ~@3 c2@3 a1@4 ~ c2 ~@3",
  AR: "d2@3 ~ c2@3 a1@2 ~@3 a1@3 c2 ~@4 c2@3 a1@4 ~ c2 ~@3",
  AS: "[d2@3 ~ c2@3 a1@2 ~@3 a1@3 c2@2 ~@3 c2@3 a1@4 c2 ~@3 d2@3 ~@2 c2@3 a1@2 ~@3 a1@3 c2@3 ~@2 c2@2 ~ a1@4 c2@2 ~@3]/2",
  AT: "d2@3 ~ c2@3 ~ a1@2 ~@2 a1@4 c2 ~@3 c2@4 a1@4 c2 ~@3", AU: "d2@4 c2@2 ~ a1 ~@4 a1@3 c2 ~@4 c2@3 a1@4 ~ c2 ~@3",
  AV: "a#1@3 ~ a#1@3 g1@4 ~ f1@3 a#1 ~@4 a#1@3 g1@4 ~ f1@3 ~",
  AW: "c2@2 ~@2 c2@4 a1@3 g1@4 c2 ~@3 c2@4 a1@4 ~ g1@3 a#1", AX: "~@3 a#1@4 ~ g1@4 f1@4 a#1 ~@3 a#1@4 g1@3 f1@4 c2",
  AY: "~@3 c2@4 ~ a1@4 g1@3 ~ c2 ~@3 c2@4 a1@4 g1@3 a#1", AZ: "~@4 a#1@4 g1@4 f1@3 a#1 ~@4 a#1@4 g1@3 f1@4 ~",
  BA: "a1 ~@3 a1@3 g1@4 e1@4 a1 ~@4 a1@4 g1@4 c2@4", BB: "d2@4 c2@3 a1 ~@4 a1@4 c2 ~@3 c2@4 a1@4 c2@2 ~@2",
  BC: "d2@4 c2@4 a1@2 ~@2 a1@4 c2 ~@3 c2@4 a1@4 c2@2 ~@2", BD: "d2@2 ~@2 d2@3 ~ c2@3 ~ a1@4 d2 ~@3 d2@4 c2@3 ~ a1@4",
  BE: "c2 ~@3 c2@4 a1@4 g1@4 c2 ~@3 c2@3 a1@4 ~ g1@4", BF: "a#1 ~@3 a#1@4 g1@4 f1@4 a#1 ~@3 a#1@3 ~ g1@3 f1@4 ~",
  BG: "a1 ~@3 a1@3 ~ g1@4 f1@3 ~ a1 ~@3 a1@4 g1@4 f1@4", BH: "g1@2 ~@2 g1@4 f1@4 d1@4 g1@2 ~@2 g1@3 f1@4 ~ d1@4",
  BI: "a#1 ~@3 a#1@4 g1@4 a#1@2 ~@2 c2@2 ~@2 c2@4 a1@4 c2@2 ~@2",
  BJ: "d2@4 c2@4 a1@2 ~@2 a1@4 c2 ~@3 c2@4 a1@3 ~ c2@2 ~@2",
  BK: "d2@4 c2@3 ~ a1@2 ~@2 a1@4 c2 ~@3 c2@4 a1@3 ~ c2@2 ~@2",
  BL: "d2@3 ~ c2@4 a1@2 ~@2 a1@3 c2@2 ~@3 c2@4 a1@3 ~ c2@2 ~@2", BM: "[d2@2 ~@10 c2@41 ~@3 d2@2 c2@2 a1 ~@3]/2",
  BN: "a1@2 ~@2 a1@4 ~ a1@3 a#1@8 a#2@2 ~@6 a1@4",
  BO: "[a#1 ~@3 a#1 ~@6 a#1@8 ~ c2@3 ~ a1@2 ~@2 c2 ~@2 d2@4 c2@4 a1@2 ~@3 a1@3 c2 ~@7 a1@4 ~ c2 ~@3, ~@52 c2@5 ~@7]/2",
  BP: "d2@4 c2@3 a1 ~@3 a1@4 ~ c2 ~@3 c2@4 a1@4 c2 ~@3",
  BQ: "[d2@3 ~ c2@3 a1@2 ~@3 a1@3 ~ c2 ~@3 c2@4 a1@3 ~ c2@2 ~ d2@2 ~@31]/2",
})).s("gm_slap_bass_2").gain(0.73)

// chords · epiano2
const epiano2 = note(`<
  A@2 B C D E F G H I@3 J@3 K@2 L M N O@2 P Q R@4 S T@3 U@8 V W M X Y Z@2 AA AB AC@2 AD@4 AE@7 AF AG@2 AH@5 AI AJ AK@2
  AL@2 AM AN AO@2 AP@2
>`.pickRestart({
  A: "[[d4,f4,a4]@2 ~@10 [c4,e4,g4]@42 ~@4 e4@2 g4 ~@3, ~@56 c4@5 ~@3, ~@58 f4 ~@5]/2", // Dm C
  B: "[a3,c4,f4]@2 ~@2 [c4,f4]@2 ~ [a3,f4] ~@4 [a#3,d4,f4]@11 ~@5 [a3,d4,f4] ~@3, ~@4 a3 ~@2 c4@2 ~@3 f#4 ~@19", // F F5 Dm A# Dm
  C: "[a#3,d4,f4]@2 ~@2 [a#3,f4]@2 ~@2 [d4,f4] ~@3 [c4,e4]@12 g3@2 ~@2 a3 ~@3, ~@4 d4 ~@3 a#3@2 ~@2 g3@11 ~@9", // A# A#5 Dm C
  D: "[c4,d4,f4,g4] ~@11 [b3,d4,e4,g4]@16 ~@4, a3 ~@15", E: "[c4,e4,f4,a4] ~@11 [b3,d4,e4,g4]@16 ~@4",
  F: "[a3,d4,f4] ~@5 [b3,d4,e4,g4]@8 ~@2, c4 ~@31", G: "[c4,a4] ~@5 [b3,d4,e4,g4]@8 ~@2, [e4,f4] ~@31",
  H: "[a3,c4,d4] ~@11 [b3,d4,e4,g4]@16 ~@4, f4 ~@15", // D7 Em7
  I: "[[c4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@16 ~@3 [a3,c4,d4,f4]@2 ~@11 [b3,d4,e4,g4]@17 ~@3 [c4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@17 ~@3, e4 ~@62 e4@2 ~@31]/3", // F Em7 Dm7 Em7 F Em7
  J: "[[a3,c4,d4,f4]@2 ~@10 [b3,d4,e4,g4]@16 ~@3 [c4,e4,f4,a4]@2 ~@11 [b3,d4,e4,g4]@16 ~@4 f4@2 ~@10 [b3,d4,e4,g4]@16 ~@4, ~@63 [a3,c4,d4]@2 ~@31]/3", // Dm7 Em7 Fmaj7 Em7 D7
  K: "[[c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@16 ~@3 [a3,c4,d4,f4]@2 ~@11 [b3,d4,e4,g4]@17 ~@3]/2", // Fmaj7 Em7 Dm7 Em7
  L: "[c4,e4,f4,a4]@2 ~@9 [b3,d4,e4,g4]@16 ~@5", M: "[a3,c4,d4,f4]@2 ~@10 [b3,d4,e4,g4]@17 ~@3",
  N: "[c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@17 ~@3", // Fmaj7 Em7
  O: "[[a3,d4,f4]@2 ~@10 b3@16 ~@3 [c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@18 ~@3, c4 ~@10 [d4,e4,g4]@16 ~@37]/2", // Dm Fmaj7 Em7
  P: "[a3,c4,d4,f4] ~@5 [b3,d4,e4,g4]@8 ~@2", // Dm7 Em7
  Q: "[e4,a4]@2 ~@9 [b3,d4,e4] ~@8 [b3,d4,e4,g4]@6 ~@6, [c4,f4] ~@10 g4@2 ~@19", // A5 E7 Em7 F5
  R: "[[a#3,c4,d4,f4]@14 ~@2 [a#3,c4,d4,f4] ~@3 [a#3,c4,d4,f4]@5 ~@6 [g3,a3,c4,e4]@10 ~@3 [g3,c4,e4]@7 ~ [g3,c4,e4]@5 ~@7 d4@11 ~ a#3 ~@3 [a#3,f4]@2 ~@2 d4@4 ~@4 [d4,e4,g4]@9 ~@3 [c4,d4,e4,g4]@4 ~@4 [c4,d4,e4] ~@3 [c4,d4,e4,g4]@3 ~@5 [a#3,d4] ~@3, ~@63 [a#3,c4,f4]@12 ~@5 [c4,d4] ~@2 [a#3,c4,f4]@4 ~@5 c4@6 ~@30]/4", // A# Am7 C A#5 Em7 C A# A#sus2 …
  S: "[a#3,c4,d4,f4]@13 ~@3 [a#3,c4,d4,f4]@3 [a#3,c4,d4,f4]@6 ~@7", // A#
  T: "[~@4 c4@6 ~@2 g3@2 ~ [g3,a3,c4,e4]@2 ~@2 [g3,a3,c4,e4]@6 ~@2 a3 ~@3 [a3,c4,d4,f4]@4 ~@9 [b3,d4,e4,g4]@17 ~@2 [c4,e4,f4,a4]@6 ~@6 [b3,d4,e4,g4]@18 ~@3, [g3,a3,e4]@10 ~@2 a3 ~@83]/3", // Am7 Dm7 Em7 Fmaj7 Em7 A7
  U: "[[a3,c4,d4,f4]@7 ~@5 [a3,f4] ~@2 [a3,c4,d4,f4]@7 ~@6 [a3,c4,d4,f4]@3 ~ c4 ~@7 c4@2 ~@2 g3 ~@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@6 ~@7 [c4,d4]@8 ~@4 a#3 ~@3 d4@3 ~ [c4,d4]@4 ~@8 d4 ~@7 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@3 ~ [a3,c4,f4]@5 ~@7 a#3@7 [g3,a#3,d4]@6 ~@3 [g3,d4]@2 ~@2 d4@2 ~ [a3,f4] e4 ~@3 a#3@7 ~ a#3@3 ~ [d4,f4,f#4] ~@3 [f3,d4] ~@7 g3@3 [g3,e4]@3 ~@5 [a3,c4,d4,f4]@5 ~@7 [b3,d4,e4,g4]@16 ~@5 e4@2 ~@10 [b3,d4,e4,g4]@16 ~@3 [a3,c4,d4], ~@31 [g3,a3,b3,e4]@10 ~@22 [a#3,f4]@9 ~@7 f4@8 ~@4 f4@12 ~@45 a#3 ~@7 [d4,f4]@11 ~@5 c4@14 ~@37 [c4,f4,a4]@2 ~@31, ~@79 [a#3,c4]@4 a#3@4 ~@5 [a3,c4]@12 ~@23 [g3,d4]@7 ~@10 a#3 ~@2 g3@2 ~@19 a#3@2 ~@2 e4@11 ~@73, ~@172 g3@7 ~@77]/8", // Dm7 Dm Dm7 C Csus2 F Gm G5 …
  V: "f4@2 ~@10 b3@17 ~@3, ~@11 [d4,e4,g4]@17 ~@4", W: "[c4,e4,f4,a4]@2 ~@9 [b3,d4,e4,g4]@17 ~@4",
  X: "[c4,e4,f4,a4]@3 ~@9 [b3,d4,e4,g4]@16 ~@4", Y: "[a3,c4,d4,f4]@3 ~@9 [b3,d4,e4,g4]@17 ~@3",
  Z: "[[e4,f4,a4] ~@11 [b3,d4,e4,g4]@16 ~@4 a3@2 ~@10 [b3,d4,e4,g4]@17 ~@3, c4@2 ~@29 [c4,d4,f4]@2 ~@31]/2", // Fmaj7 Em7 Dm7
  AA: "[c4,e4,f4,a4]@3 ~@8 [b3,d4,e4,g4]@17 ~@4", AB: "[a3,c4,d4,f4]@2 ~@11 [b3,e4,g4]@16 ~@3, ~@12 d4@15 ~@5",
  AC: "[[c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@17 ~@2 [a3,c4,d4,f4]@3 ~@10 [b3,d4,e4,g4]@17 ~@3]/2", // Fmaj7 Em7 Dm7 Em7
  AD: "[[c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@17 ~@3 [d4,f4]@2 ~@9 [b3,d4,e4,g4]@17 ~@3 [c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@16 ~@4 [a3,c4,d4,f4]@2 ~@10 [b3,d4,e4,g4]@16 ~@4 [e4,f4,a4], ~@31 [a3,c4]@2 ~@95]/4", // Fmaj7 Em7 Dm Em7 Fmaj7 Em7 Dm7 Em7 …
  AE: "[[d4,g4,b4] ~@10 [b3,d4,e4,g4]@14 ~@6 [a#3,c4,d4,f4]@10 ~@2 [a#3,c4,d4,f4]@7 ~@2 [c4,d4,f4]@7 [a#3,c4,f4] d4 ~@2 [c4,d4,e4,g4]@11 ~@2 [c4,d4,e4,g4]@12 ~@7 [a#3,c4,d4,f4]@10 ~@2 [a#3,c4,d4,f4]@14 ~@6 [c4,d4,e4,g4]@10 ~@3 [c4,d4,e4,g4]@14 ~@5 [a#3,c4,d4,f4]@11 ~@2 [a#3,c4,d4,f4]@13 ~@6 [g3,a3,c4,e4]@10 ~@2 [a3,c4,e4]@15 ~@6, c4@2 ~@49 a#3@7 ~@166]/7", // G Em7 A# Dm7 A#sus2 C A# C …
  AF: "[a3,c4,d4,f4]@5 ~@6 [b3,d4,e4,g4]@17 ~@4", // Dm7 Em7
  AG: "[[c4,e4,f4,a4]@2 ~@9 [b3,d4,e4,g4]@16 ~@4 [a3,c4,d4,f4]@2 ~@31, b3 ~@63]/2", // Fmaj7 Em7 Dm7
  AH: "[[c4,e4,g4]@10 ~@2 [a3,c4,e4,g4] ~@18 [a#3,c4,d4]@8 f4@2 ~@3 [a#3,c4,d4,f4] ~@6 f4 [a#3,c4] ~@6 [a3,c4,d4,f4]@12 ~ [a3,c4,d4]@2 ~@6 [a3,c4,f4]@3 ~ [a3,c4,f4]@5 ~@2 [a#3,d4,f4]@9 g3 ~@11 [g3,a#3,d4,f4] ~@2 [a#3,d4,f4]@2 ~@2 [a3,c4,f4] ~@3 [a#3,c4,d4,f4]@15 ~@2 [a#3,c4,d4,f4] ~@7 [c4,e4,g4] ~@10 [a3,c4,d4,f4], ~@31 f4@6 ~@22 c#4@2 ~@54 g3 ~@44]/5", // C Am7 A# A#sus2 Dm7 D7 F A# …
  AI: "~@12 [b3,d4,e4,g4]@17 ~@3", AJ: "[c4,e4,f4,a4] ~@11 [b3,d4,e4,g4]@17 ~@3",
  AK: "[[a3,c4,d4,f4] ~@11 [b3,d4,e4,g4]@16 ~@3 [c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@17 ~@4]/2", // Dm7 Em7 Fmaj7 Em7
  AL: "[[a3,d4,f4]@4 ~@7 [g3,c4,e4]@38 ~@6 f4 [e4,f4] ~@3 [e4,g4] ~@3, c4@2 ~@53 c4@7 ~@2, e4 ~@54 a4@3 ~@6]/2", // Dm C Fmaj7 Em
  AM: "[a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 ~@2 [c4,f4]@2 ~@2 [a#3,d4,f4]@4 ~@4 [a#3,c4,d4,f4]@3 ~@9, [d4,e4] ~@7 a3 ~@11 f#4 ~@11", // F F5 A# Dsus2
  AN: "[a#3,c4,d4,f4]@3 ~ [a#3,c4,d4,f4]@2 ~@2 [a#3,c4,f4] ~@3 [g3,c4,e4]@4 ~@4 g3@2 ~@2 [g3,e4]@2 ~@6, ~@6 c4 ~", // A# A#sus2 C
  AO: "[[a3,c4,d4,f4,g4] ~@10 [b3,d4,e4,g4]@16 ~@4 [c4,e4,f4,a4]@2 ~@10 [b3,d4,e4,g4]@16 ~@5]/2", // Dm7 Em7 Fmaj7 Em7
  AP: "[[a3,c4,d4,f4]@2 ~@10 [b3,d4,e4,g4]@16 ~@3 [c4,e4,f4] ~@32, ~@31 a4@2 ~@31]/2", // Dm7 Em7 Fmaj7
})).s("gm_epiano2").gain(0.49).pan(0.6)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@9 A@3 ~ B@3 ~@2 C@2 ~@2 D E ~ F ~ G H I J@2 K L M L N O@3 ~@17 P Q@3 ~ R S T L U V W X Y Z AA AB AC ~@3 AD@2 AE ~
>`.pickRestart({
  A: "[~@31 g3@2 a3@2 ~@3 c4 ~@3 c4 ~@2 a3@13 ~@5 g3@2 a3@2 ~@3 c4@2 ~@2 c4 ~@2 a3@13 ~@6, ~@22 g3 ~@15 g3 ~@9]/3",
  B: "[~@31 g3@2 a3@2 ~@3 c4@2 ~@2 c4@2 a3@14 ~@5 g3@2 a3@2 ~@3 c4 ~@3 c4 ~@2 a3@13 ~@6, ~@38 g3 ~@9]/3",
  C: "[~ a3@2 ~@3 c4 ~@3 c4 g3@2 a3@14 ~@4 g3@2 a3@2 ~@3 c4 ~@3 c4 ~@2 a3@12 ~@7, g3 ~@21 g3 ~@9]/2",
  D: "~ a3@2 ~@3 c4 ~@2 c4 ~ g3@2 a3@14 ~@5, g3 ~@15", E: "~ a3@2 ~@2 c4 ~@3 c4 ~@2 a3@10 ~@10, g3@2 ~@9 g3@2 ~@19",
  F: "~@20 c4 ~@2 d4@2 ~@2 c4 ~ d4@2 ~", G: "~@20 c4 ~@3 d4 ~@3 c4 ~ d4@2", H: "~@7 d4 ~@3 c4 ~@3 d4 ~@7 d4 ~@4 c4 ~@3",
  I: "d4 ~@6 d4 ~@4 c4 ~@2 d4 ~@4 c4 ~ d4@2 ~@8",
  J: "[d4 ~@6 d4@2 ~@3 c4 ~@3 d4 ~@3 c4 ~@2 d4@2 ~@3 c4@2 ~ d4@2 ~@6 d4 ~@2 c4 ~@3 c4 ~ d4@2 ~@2 c4 ~@2 d4 ~@3 c4 ~@3 [d4,d5]]/2", // D
  K: "~@7 [d4,d5] ~@8 [d4,d5] ~@6 [d4,d5] ~@8", L: "[d4,d5] ~@6 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5]",
  M: "~@7 [d4,d5] ~@7 [d4,d5] ~@8 [d4,d5] ~@7", N: "~@7 [d4,d5] ~@8 [d4,d5] ~@6 d5 d4 ~@7",
  O: "[[d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@6 g3@2 a3 ~@4 c4 ~@3 c4 ~@2 a3@15 ~@3 g3@2 a3@2 ~@3 c4@2 ~@2 c4 ~@2 a3@5 ~ g3 ~@4 f3@2 d3@2 ~@4, ~@44 g3@2 ~@30 g3@2 ~@9 g3@2 ~@7]/3", // D
  P: "~@20 c4 ~@3 c4@2 d4 ~ a3@2 c4@2", Q: "[~@31 [f4,a4]@2 ~@6 [e4,g4] ~@7 [d4,f4] ~@7 c4 e4 ~@6 [a#3,d4]@13 ~@20]/3",
  R: "[d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@7", S: "[d4,d5] ~@7 [d4,d5] ~@6 c4 c5 ~ [d4,d5] ~@3 [d4,d5] ~@9",
  T: "[d4,d5] ~@6 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@8", U: "~@7 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5]",
  V: "~@7 [d4,d5] ~@7 [d4,d5] ~@8 [d4,d5] ~@6 d5", W: "d4 ~@7 [d4,d5] ~@7 [d4,d5] ~@6 [d4,d5] ~@7 [d4,d5]",
  X: "~@7 [d4,d5] ~@8 [d4,d5] ~@7 [d4,d5] ~@7", Y: "[d4,d5] ~@6 d5 d4 ~@6 d5 d4 ~@6 [d4,d5] ~@7 [d4,d5]",
  Z: "~@8 [d4,d5] ~@7 [d4,d5] ~@7 [d4,d5] ~@7", AA: "[d4,d5] ~@15 [d4,d5] ~@7 [d4,d5] ~@6 [d4,d5]",
  AB: "~@15 [d4,d5] ~@8 [d4,d5] ~@7", AC: "[d4,d5] ~@31",
  AD: "[g3@2 a3@2 ~@2 c4 ~@3 c4@2 g3@2 a3@13 ~@4 g3@2 a3@2 ~@3 c4 ~@3 c4 g3@2 a3@6 ~ g3 ~@2 g3@2 f3@2 d3@2 ~@3]/2",
  AE: "~@3 g3@2 a3@2 c4@2 ~@2 c4 ~ g3@2 a3@9 ~@8",
})).s("gm_electric_guitar_muted").gain(0.32).pan(1)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B@2 C D ~@3 E@4 F@4 G@4 H@2 I@5 J K@2 L@2 M@5 N@2 ~@10 O ~ O ~@2 P@2 ~@2 Q@8 R@4 S ~@2 T@2 U@2 V W@4
>`.pickRestart({
  A: "~ [d5,d6]@3 ~@28", // D
  B: "[~ c6@2 ~@2 g5@2 ~ c6@2 ~ g5@2 ~ f5 ~@2 g5@2 f5 ~ d5@2 f5@2 g5@2 f5@2 d5@2 c5@11 ~ d5@8 ~ f5@5 ~@7, d6 ~ a5 ~@2 a5 ~@2 a5 ~@23]/2",
  C: "d5@7 f5 ~@4 g5@8 f5 ~@3 d5@4 c5 ~@3", D: "d5@3 ~@29", E: "[d4@58 ~@5 d4@58 ~@7]/4", F: "[d4@29 ~@3]/2",
  G: "[d4@59 ~@4 d4@57 ~@8]/4", H: "[d4@61 ~@3]/2",
  I: "[d4@36 ~@7 [f4,f5]@4 [e4,e5]@4 ~ [f4,f5]@4 [c4,c5]@3 [a3,a4]@4 [a#3,a#4]@32 [c4,c5]@32 [d4,d5]@28 ~@5]/5", // F E F C A A# C D
  J: "[e4,e5]", K: "[[f4,f5]@31 [g4,g5]@32 ~]/2", L: "[a4,a5]/2",
  M: "[~@20 d5 ~@6 [c5,c6]@23 ~ [d5,d6]@2 ~@2 [a4,a5] ~@3 [g4,g5]@24 a5@2 ~@2 [f4,f5]@2 ~@2 [f4,f5]@18 ~@7 f4@2 ~ [g4,g5]@2 ~@2 [d4,d5]@29 ~@8, ~@19 d6@2 ~@62 a4 ~@31 f5@2 ~@43]/5", // C D A G F G D
  N: "[~@4 f5@2 ~@2 [f4,f5]@2 ~@2 [g4,g5]@8 [f4,f5]@3 [d4,d5]@4 [f4,f5]@4 [d4,d5]@3 ~@30, ~@4 f4 ~@59]/2", // F G F D F D
  O: "~@20 [a4,a5]@4 [c5,c6]@3 ~@5", // A C
  P: "[~@5 [c5,c6]@3 d6@2 [c5,c6]@2 [a4,a5]@2 ~ [c5,c6]@2 a4@2 [g4,g5]@2 ~@2 [a4,a5]@2 [g4,g5]@2 [f4,f5]@2 ~@5 f5 e5 e4@2 ~@2 [f4,f5]@2 ~@2 d4@3 ~ d6@5 ~@11, ~@3 d6@2 ~@12 a5 ~@14 g5@2 ~@9 d5@3 ~ d5@15 ~@2, ~@4 d5@2 ~@2 d5 ~@22 g4@2 f4@2 ~@7 [e4,e5]@2 ~@20]/2", // C A C G A G F E
  Q: "[~@3 [c5,c6] ~@3 [c5,c6]@4 [d5,d6]@8 [a4,a5]@8 [g4,g5]@25 ~@7 [a4,a5]@4 [f4,f5]@4 ~ d4@11 d4@12 [e4,e5]@16 [f4,f5]@8 [g4,g5]@12 ~ a4@28 [g4,g5]@8 [f4,f5]@8 [e4,e5]@8 [f4,f5]@4 ~@2 a4@5 [a4,a5]@12 ~ d5@34 ~@2 c5@7 ~ [d5,d6]@5 ~@3, ~@67 d5@24 ~@36 a5@29 ~@28 [g4,g5]@2 ~@70, ~@185 a5@5 ~@13 d6@36 c6@9 ~@8]/8", // C D A G A F E F …
  R: "[[a4,a5]@27 [g4,g5]@13 [a4,a5]@4 ~@4 [f4,f5]@11 d4@40 f4@4 ~ f4@4 g4@8 f4@4 d4@4 f4@4, ~@59 d5@17 ~@52]/4", // A G A F
  S: "d4@31 ~", T: "[~@31 [d5,d6]@3 ~@30]/2",
  U: "[d6@2 ~ a5@2 d6@2 c6@2 a5@2 g5@2 a5@2 g5@2 f5@2 d5@2 f5@2 d5@2 c5@2 d5@2 c5@2 a4@4 c5@4 ~ d5@2 ~@2 d5@8 f5@3 ~@5 f5@2 d5@2, ~@2 c6@2 ~@19 e5 ~@40]/2",
  V: "c5@4 f5@7 g5@9 f5@2 ~@2 d5@4 c5@2 ~@2", W: "[d5@63 d4@42 ~@23]/4",
})).s("gm_string_ensemble_1").gain(0.37).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A ~@3 B C D E F G H I J D K I J D@2 L J B C M N O@2 J P J D Q M R H S T U K V W E C P D E G X D@3 M G W E H W M H F@2
  H W Q D K Y@3 N E C K H ~@4 Q@2 B ~
>`.pickRestart({
  A: "x", B: "x ~@15 x ~@14 x", C: "~ x", D: "x!2", E: "x ~@15 x ~@2 x ~@11 x", F: "~@16 x ~@2 x ~@11 x",
  G: "~@16 x ~@14 x", H: "~@15 x ~@3 x ~@11 x", I: "~@15 x ~@3 x ~@12", J: "x ~@15 x ~@2 x ~@12", K: "x ~@14 x ~@15 x",
  L: "x ~@14 x ~@4 x ~@11", M: "x ~@14 x ~@3 x ~@11 x", N: "~@4 x!2 ~@2", O: "x ~@14 x ~@3 x ~@12", P: "x ~@3 x!2 ~@2",
  Q: "x ~@14 x ~@16", R: "~@3 x ~@12 x ~@14 x", S: "~@3 x ~@11 x ~@3 x ~@11 x", T: "~@16 x ~@2 x ~@12",
  U: "x!2 ~@2 x ~@3", V: "~@15 x ~@5 x ~@9 x", W: "~@15 x ~@16", X: "~@15 x ~@4 x ~@11", Y: "~@15 x ~@15 x",
})).gain(0.68)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@3 B C A C@2 A@2 C B A@2 B A C@2 D B A C B A D B A@2 C@2 B C B A C E C B D A D A@2 B A@3 D@3 A B C@4 A C D A B C
  D C@2 A F A D C ~@4 B D A ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@8 x ~@14 x ~@8", C: "~@7 x ~@15 x ~@8", D: "~@7 x ~@16 x ~@7", E: "~@7 x ~@9 x ~@4 x ~@9",
  F: "~@7 x ~@15 x!2 ~@7",
})).gain(0.68)

// drums · low tom
const low_tom = s("lt").struct("<~ A ~ B ~@71 C D E ~@4>".pickRestart({
  A: "~@25 x ~@6", B: "~@27 x ~@4", C: "~@12 x!2 ~@2", D: "~@7 x", E: "~@13 x ~@2",
})).gain(0.68)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B C D E F G H I A J H K L M N O P Q R S T L U V W L X Y Z AA G@2 AB J AC AD AE AF AE W A AB AG L@3 AH U AI AJ AK
  AL AM G AN AO G AP L AQ AR AS G J AF AE B AT AU ~@4 AV AW AX ~
>`.pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x", B: "~ x!7",
  C: "x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3", D: "x ~@2 x ~@4 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x",
  E: "~@4 x ~@2 x ~@4 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x", F: "~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x",
  G: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", H: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3",
  I: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@4 x ~@3", J: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@2 x ~@3 x",
  K: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3", L: "x!8", M: "x ~@2 x ~@3 x ~@4 x ~@3 x ~@2 x ~@3 x ~@4 x ~@3",
  N: "x ~@3 x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3 x ~@3", O: "x ~@3 x ~@2 x ~@4 x ~@3 x ~@2 x ~@3 x ~@3 x ~@4",
  P: "x ~@2 x ~@4 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x", Q: "~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3",
  R: "x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@4 x ~@2 x", S: "~@3 x ~@4 x ~@2 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3",
  T: "x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", U: "x ~@2 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3",
  V: "x ~@3 x ~@2 x ~@4 x ~@2 x ~@4 x ~@3 x ~@3 x ~@2 x", W: "~@3 x ~@4 x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3",
  X: "x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@4 x ~@3 x ~@3", Y: "x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
  Z: "~@3 x ~@3 x ~@4 x ~@2 x ~@3 x ~@3 x ~@3 x ~@4", AA: "x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x",
// … 84 more lines

More by Billy Ocean