Strudelify
I Wanna Dance With Somebody (Who Loves Me) cover art

1987 · Whitney

I Wanna Dance With Somebody (Who Loves Me)

Whitney Houston

KeyD♭ majorTempo118 bpm
0:00/0:00
// I Wanna Dance With Somebody (Who Loves Me) — Whitney Houston
// 118 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/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 · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@6 A@7 B C D@3 ~ E@2 ~@2 F G ~@2 H I@2 J K@7 L M@7 N O P@3 ~ E@2 ~@2 F G ~@2 H I@2 J Q@7 L M@7 R ~@7 S T ~ U F V@2 W
  X@7 Y Z@7 AA ~@8 AB@7 AC AD@7 AC AE@7 AF@2 AG
>`.pickRestart({
  A: "[[db5,gb5,ab5,bb5]@27 ~ [db5,f5,ab5]@2 [db5,gb5,ab5,bb5]@27 ~@3 [db5,f5,ab5]@2 [eb5,gb5,ab5,bb5]@27 ~@3 [f5,ab5]@2 [b4,db5,eb5,gb5]@17 ~]/7", // Gb Db Gb Db Ebm Fm B
  B: "[db5,gb5,b5]@4 [db5,gb5,bb5]@4 [db5,gb5,ab5]@4 [db5,gb5]@3 ~", C: "[db5,gb5,ab5,bb5]",
  D: "[[db5,gb5,bb5]@2 ab5@2 [db5,gb5] ~ [db5,ab5]@2 ~@4 [db5,gb5,ab5,bb5]@2 [db5,f5,ab5]@22 ~@12, ~@6 [gb5,bb5] ~@41]/3", // Gb Gb5 Db5 Gb Db Gb
  E: "[~ bb5 gb5 eb5 b4 eb5 bb5 ab5@5 ~@4]/2", F: "~@4 [eb5,gb5] [f5,ab5] [gb5,bb5] ~", G: "[ab5,b5] ~, bb5 ~@15",
  H: "~@4 [eb5,gb5] f5 [gb5,bb5] ~, ~@10 ab5 ~@5", I: "[[ab5,b5]@5 ~ [gb5,bb5]@2 ~@2 [f5,ab5]@13 ~@9]/2",
  J: "[b4,b5] [bb4,bb5] [b4,b5] [db5,db6] ~@4", // B Bb B Db
  K: "[[db5,gb5,bb5]@26 ~@2 [db5,f5,ab5] ~ [db5,gb5,bb5]@28 ~ db5 [f5,ab5] ~ [eb5,gb5,bb5]@28 ~@2 [f5,ab5] ~ [b4,eb5,gb5]@16 ~@2]/7", // Gb Db Gb Fm Ebm Fm B
  L: "gb5@2 ab5@2 bb5@2 ab5@6 gb5 ~@3",
  M: "[[db5,gb5,bb5]@27 ~ [db5,f5,ab5] ~ [db5,gb5,bb5]@27 ~@3 [f5,ab5] ~ [eb5,gb5,bb5]@27 ~@3 [f5,ab5]@2 [b4,eb5,gb5]@17 ~]/7", // Gb Db Gb Fm Ebm Fm B
  N: "gb5@2 ab5@2 bb5 ~ ab5@6 gb5@2 ~@2", O: "[gb5,bb5]@13 ~@3, db5@11 ~@5",
  P: "[bb5@2 ab5@2 gb5 ~ gb5 ~@5 [db5,gb5,ab5,bb5]@2 [db5,f5,ab5]@22 ~@12]/3", // Gb Db
  Q: "[[db5,gb5,bb5]@25 ~@3 [db5,f5,ab5] ~ [db5,gb5,bb5]@28 ~ db5 [f5,ab5] ~ [eb5,gb5,bb5]@28 ~@2 [f5,ab5] ~ [b4,eb5,gb5]@16 ~@2]/7", // Gb Db Gb Fm Ebm Fm B
  R: "[gb4,gb5]@2 [ab4,ab5]@2 [bb4,bb5] ~ [ab4,ab5]@6 [gb4,gb5]@2 ~@2", S: "~@8 [db5,f5]@3 [eb5,gb5]@3 [f5,ab5]@2",
  T: "[ab5,b5]@7 ~@9", U: "[db5,gb5,bb5]@3 [db5,gb5,bb5] ~@12", V: "[[ab5,b5]@5 ~ [gb5,bb5]@2 ~@2 [f5,ab5]@15 ~@7]/2",
  W: "b5 bb5 b5 db6 ~@4",
  X: "[[eb5,ab5,c6]@26 ~@2 [eb5,g5,bb5] ~ [eb5,ab5,c6]@28 ~ eb5 [g5,bb5] ~ [f5,ab5,c6]@28 ~@2 [g5,bb5] ~ [db5,f5,ab5]@16 ~@2]/7", // Ab Eb Ab Gm Fm Gm Db
  Y: "ab5@2 bb5@2 c6@2 bb5@6 ab5 ~@3",
  Z: "[[eb5,ab5,c6]@27 ~ [eb5,g5,bb5] ~ [eb5,ab5,c6]@27 ~@3 [g5,bb5] ~ [f5,ab5,c6]@27 ~@3 [g5,bb5]@2 [db5,f5,ab5]@17 ~]/7", // Ab Eb Ab Gm Fm Gm Db
  AA: "[ab4,ab5]@2 [bb4,bb5]@2 [c5,c6] ~ [bb4,bb5]@6 [ab4,ab5]@2 ~@2", // Ab Bb C Bb Ab
  AB: "[[eb5,ab5,c6]@26 ~@2 [eb5,g5,bb5]@2 [eb5,ab5,c6]@28 ~@2 [eb5,g5,bb5]@2 [eb5,ab5,c6]@28 ~@2 [g5,bb5]@2 [db5,f5,ab5]@15 ~@3]/7", // Ab Eb Ab Eb Ab Gm Db
  AC: "ab5 bb5 c6 bb5@3 ab5 ~",
  AD: "[[eb5,ab5,c6]@27 ~ [eb5,g5,bb5] ~ [eb5,ab5,c6]@28 ~@2 [eb5,g5,bb5]@2 [eb5,ab5,c6]@28 ~@2 [g5,bb5]@2 [db5,f5,ab5]@16 ~@2]/7", // Ab Eb Ab Eb Ab Gm Db
  AE: "[[eb5,ab5,c6]@27 ~ [eb5,g5,bb5]@2 [eb5,ab5,c6]@28 ~@2 [eb5,g5,bb5]@2 [eb5,ab5,c6]@27 ~@3 [g5,bb5]@2 [db5,f5,ab5]@16 ~@2]/7", // Ab Eb Ab Eb Ab Gm Db
  AF: "[ab5@2 bb5@2 c6@2 bb5@6 ab5@2 [eb5,ab5,c6]@15 ~@3]/2", AG: "eb5@3 ~@13",
})).s("gm_pad_new_age").gain(0.2)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@2 A B A C D E F G H I J K L M N O P Q N R S T U V W X Y@2 Z AA AB L AC AD AE AF AG AA AH L AI AD AJ AK AL AM AN N AO
  AP AQ N AR AS AT AU AV W AW AX@2 AY AZ AB L BA H BB BC BD BE BF AZ BG BH BI BJ BK AD BL BM BN BO BP BQ BR BS BT W BU
  BV@2 BW BX BY BZ CA CB CC CD CE CF CG BZ CH CI CJ CK CL CM ~ CN ~ CO ~ CO ~ CP CQ CP CR CS CT CU CV CW CX CY CZ CS DA
  DB DC CP DD CP DE CS DA DB DC CP ~
>`.pickRestart({
  A: "[gb1,gb2]@2 ~ [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@7 [eb1,eb2] ~", B: "[gb1,gb2]@5 ~ [gb1,gb2] ~@9",
  C: "[gb1,gb2]@6 [gb1,gb2] ~@5 [db2,db3]@4", // Gb Db
  D: "[gb1,gb2]@2 ~ [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@5 [eb1,eb2]@2 [gb1,gb2] ~", // Gb Eb Gb Eb Gb
  E: "[gb1,gb2]@2 ~ [gb1,gb2] [gb1,gb2]@2 [gb1,gb2] ~@5 [eb1,eb2]@2 ~@2", // Gb Eb
  F: "[gb1,gb2]@3 [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@5 [eb1,eb2]@2 [gb1,gb2] ~", // Gb Eb Gb Eb Gb
  G: "[gb1,gb2]@3 [gb1,gb2]!2 ~@3 [gb1,gb2]@4 [f1,f2]@2 [eb1,eb2] ~", // Gb F Eb
  H: "[eb1,eb2]@3 [eb1,eb2] [db1,db2]@2 [eb1,eb2] ~@5 [db1,db2]@2 ~@2", // Eb Db Eb Db
  I: "[eb1,eb2]@2 ~ [eb1,eb2] [eb1,eb2]@2 ~@2 [eb1,eb2]@4 [db1,db2]@2 [bb0,bb1] ~", // Eb Db Bb
  J: "[b1,b2]@2 ~ [b1,b2] [ab1,ab2]@2 [b1,b2] ~@7 [b1,b2]!2", // B Ab B
  K: "[ab1,ab2]@4 [bb1,bb2]@3 [ab1,ab2] [b1,b2]@3 [ab1,ab2] [db2,db3]@3 ~", // Ab Bb Ab B Ab Db
  L: "[gb1,gb2]@3 [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@5 [eb1,eb2]@2 ~@2", // Gb Eb Gb Eb
  M: "[gb1,gb2] [eb1,eb2] [db1,db2] [gb1,gb2] ~@4", N: "[db1,db2]@2 ~ [db1,db2] [bb0,bb1]@2 [db1,db2] ~@7 [bb0,bb1] ~",
  O: "[db1,db2]@3 [db1,db2] [db1,db2]@2 [db1,db2] ~@5 [db1,db2] ~ [bb0,bb1] [db1,db2]", // Db Bb Db
  P: "[eb1,eb2]@2 ~ [eb1,eb2]!2 ~ [eb1,eb2] ~@7 [db1,db2] ~", // Eb Db
  Q: "[eb1,eb2]@3 [eb1,eb2]!2 ~@3 [ab0,ab1]@4 [bb0,bb1]@3 ~", // Eb Ab Bb
  R: "[db1,db2]@2 ~ [db1,db2] [db1,db2]@2 [db1,db2] ~@5 [db1,db2] ~ [bb0,bb1] [db1,db2]", // Db Bb Db
  S: "[eb1,eb2]@3 [eb1,eb2] [eb1,eb2]@2 [eb1,eb2] ~@7 [db1,db2] ~", // Eb Db
  T: "[eb1,eb2]@2 ~ [eb1,eb2]@3 [db1,db2] ~ [eb1,eb2]@4 [bb0,bb1]@3 ~", // Eb Db Eb Bb
  U: "[ab0,ab1]@2 ~@5 [ab0,ab1] [ab0,ab1]@2 [bb0,bb1]@2 [b0,b1]@2 [db1,db2]@2", // Ab Bb B Db
  V: "~@6 [bb0,bb1] ~ [db1,db2]@3 [bb0,bb1] [db1,db2] ~ [db1,db2] [b0,b1]", // Bb Db Bb Db B
  W: "[bb0,bb1]@2 ~@5 [bb0,bb1] [bb0,bb1]@2 [ab0,ab1]@2 [bb0,bb1]@2 [b0,b1]@2", // Bb Ab Bb B
  X: "~@6 [b0,b1] ~ [b0,b1]@4 [bb0,bb1]@3 ~", Y: "[[ab0,ab1]@6 [ab0,bb0,ab1,bb1] ~@3 [eb1,eb2]@19 ~@3]/2",
  Z: "[b0,b1]@2 [bb0,bb1]@2 [b0,b1]@2 [db1,db2]@2 ~@3 [db2,db3]@5", // B Bb B Db
  AA: "[gb1,gb2]@3 [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@5 [eb1,eb2] ~@3", // Gb Eb Gb Eb
  AB: "[gb1,gb2]@3 [gb1,gb2] [gb1,gb2]@2 [gb1,gb2] ~@5 [eb1,eb2] ~@3", // Gb Eb
  AC: "[gb1,gb2]@3 [gb1,gb2] [gb1,gb2]@2 ~@2 [gb1,gb2]@4 [f1,f2]@2 ~@2", // Gb F
  AD: "[eb1,eb2]@2 ~ [eb1,eb2] [db1,db2]@2 [eb1,eb2] ~@5 [db1,db2]@2 ~@2", // Eb Db Eb Db
  AE: "[eb1,eb2]@2 ~ [eb1,eb2]!2 ~ [eb1,eb2] ~ [eb1,eb2]@3 [eb1,eb2] [bb1,bb2]@3 ~", // Eb Bb
  AF: "[b1,b2]@2 ~ [b1,b2]!2 ~ [b1,b2]@2 ~@4 [b1,b2]@2 ~@2", // B
  AG: "[b1,b2]@3 [b1,b2]!2 ~ [b1,b2] ~ [b1,b2]@4 [db2,db3]@3 ~", // B Db
  AH: "[gb1,gb2]@2 ~ [gb1,gb2] [gb1,gb2]@2 [gb1,gb2] ~@5 [eb1,eb2]@3 ~", // Gb Eb
  AI: "[gb1,gb2]@2 ~ [gb1,gb2] [gb1,gb2]@2 [gb1,gb2] ~ [gb1,gb2]@4 [f1,f2]@2 ~@2", // Gb F
  AJ: "[eb1,eb2]@2 ~ [eb1,eb2] [eb1,eb2]@2 [eb1,eb2] ~ [eb1,eb2]@2 ~ [eb1,eb2] [bb1,bb2]@3 [bb1,bb2]", // Eb Bb
  AK: "[b1,b2]@2 ~ [b1,b2] [b1,b2]@2 [b1,b2] ~@7 [b1,b2] [bb1,bb2]", // B Bb
  AL: "[ab1,ab2]@3 ~ [bb1,bb2]@3 [ab1,ab2] [b1,b2]@3 ~ [db2,db3]@3 ~", // Ab Bb Ab B Db
  AM: "[gb1,gb2]@2 ~ [gb1,gb2] [eb1,eb2]@2 [gb1,gb2]@2 ~@4 [eb1,eb2] ~@3", // Gb Eb Gb Eb
  AN: "[gb1,gb2]@2 [eb1,eb2]@2 [db1,db2]@2 [gb1,gb2] ~@9", // Gb Eb Db Gb
  AO: "[db1,db2]@3 [db1,db2] [db1,db2]@2 [db1,db2] ~@7 [db1,db2]!2", // Db
  AP: "[eb1,eb2]@3 [eb1,eb2]!2 ~ [eb1,eb2] ~@7 [db1,db2] ~", // Eb Db
  AQ: "[eb1,eb2]@2 ~ [eb1,eb2]!2 ~ [eb1,eb2] [db1,db2] [ab0,ab1]@4 [bb0,bb1]@3 ~", // Eb Db Ab Bb
  AR: "[db1,db2]@2 ~ [db1,db2] [db1,db2]@2 [db1,db2] ~@5 [db1,db2] ~@3", // Db
  AS: "[eb1,eb2]@2 ~ [eb1,eb2] [eb1,eb2]@2 [eb1,eb2] ~@7 [db1,db2] ~", // Eb Db
  AT: "[eb1,eb2]@2 ~ [eb1,eb2] [eb1,eb2]@2 [db1,db2] ~ [eb1,eb2]@4 [bb0,bb1]@3 ~", // Eb Db Eb Bb
  AU: "[ab0,ab1] ~@3 [ab0,ab1] [bb0,bb1] [b0,b1] [db1,db2]", AV: "~@8 [db1,db2]@4 [b0,b1]@3 [b0,b1]",
  AW: "~@2 [b0,b1] [bb0,bb1]", AX: "[[ab0,ab1]@3 [bb0,bb1] ~ [eb1,eb2]@9 ~@2]/2",
  AY: "[b0,b1] [bb0,bb1] [b0,b1] [db1,db2] ~@2 [db2,db3]@2", // B Bb B Db
  AZ: "[gb1,gb2]@2 ~ [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@5 [eb1,eb2]@2 ~@2", // Gb Eb Gb Eb
  BA: "[gb1,gb2]@3 [gb1,gb2]!2 ~@3 [gb1,gb2]@4 [f1,f2]@3 ~", // Gb F
  BB: "[eb1,eb2]@2 ~ [eb1,eb2]!2 ~ [eb1,eb2] ~@5 [bb1,bb2]@2 ~@2", // Eb Bb
  BC: "[b1,b2]@3 [b1,b2] [b1,b2]@2 [b1,b2] ~@7 [b1,b2] ~", BD: "[b1,b2]@3 [b1,b2]@2 ~ [b1,b2] ~ [b0,b1]@4 [db1,db2]@4",
  BE: "[gb1,gb2]@2 ~ [gb1,gb2] [eb1,eb2]@2 [gb1,gb2] ~@5 [eb1,eb2] ~@3", // Gb Eb Gb Eb
  BF: "[gb1,gb2]@3 [gb1,gb2]!2 ~ [gb1,gb2] ~@5 [eb1,eb2]@2 ~@2", // Gb Eb
  BG: "[gb1,gb2]@2 ~ [gb1,gb2] [gb1,gb2]@2 [gb1,gb2] ~ [gb1,gb2]@4 [f1,f2]@3 ~", // Gb F
  BH: "[eb1,eb2]@2 ~ [eb1,eb2] [db1,db2]@2 [eb1,eb2] ~@5 [db1,db2] ~@3", // Eb Db Eb Db
  BI: "[eb1,eb2]@3 [eb1,eb2]!2 ~ [eb1,eb2] ~ [eb1,eb2]@3 [eb1,eb2] [bb1,bb2]@2 ~ [bb1,bb2]", // Eb Bb
  BJ: "[b1,b2]@3 [b1,b2]!2 ~ [b1,b2] ~@7 [b1,b2] [bb1,bb2]", // B Bb
  BK: "[ab1,ab2]@2 ~ [ab1,ab2] [bb1,bb2]@3 [ab1,ab2] [b1,b2]@4 [db2,db3]@4", // Ab Bb Ab B Db
  BL: "[eb1,eb2]@3 [eb1,eb2]!2 ~ [eb1,eb2] ~@5 [db1,db2] ~@3", // Eb Db
  BM: "[db1,db2]@2 ~ [db1,db2] [bb0,bb1] ~ [db1,db2]@2 ~@4 [eb1,eb2]@2 ~@2", // Db Bb Db Eb
  BN: "[db1,db2]@3 [db1,db2] [db1,db2]@2 [db1,db2] ~ [ab0,ab1]@4 [bb0,bb1]@3 ~", // Db Ab Bb
  BO: "[eb1,eb2]@2 ~ [eb1,eb2] [db1,db2]@2 [eb1,eb2]@2 [eb1,eb2]@6 ~@2", // Eb Db Eb
  BP: "[eb1,eb2]@3 [eb1,eb2]!2 ~@9 [db1,db2] [eb1,eb2]", BQ: "[db1,db2]@3 [db1,db2]!2 ~ [db1,db2] ~@7 [bb0,bb1] ~",
  BR: "[db1,db2]@3 [db1,db2] [db1,db2]@2 [bb0,bb1] ~ [db1,db2]@3 [b0,b1]@3 [bb0,bb1]@2", // Db Bb Db B Bb
  BS: "[ab0,ab1]@3 ~@4 [ab0,ab1] [ab0,ab1]@2 [bb0,bb1]@2 [b0,b1]@2 [db1,db2]@2", // Ab Bb B Db
  BT: "~@6 [db1,db2] [bb0,bb1] [db1,db2]@3 ~ [b0,b1]@3 [ab0,ab1]", BU: "~@6 [b0,b1] ~ [b0,b1]@4 [bb0,bb1]@3 [bb0,bb1]",
  BV: "[[ab0,ab1]@5 ~ [bb0,bb1] ~@3 [eb1,eb2]@18 ~@4]/2", // Ab Bb Eb
  BW: "[b0,b1]@2 [bb0,bb1]@2 [b0,b1]@2 [db1,db2] ~@5 [bb1,bb2]@4", // B Bb B Db Bb
  BX: "[ab1,ab2]@2 ~ [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~@5 [f1,f2] ~@3", // Ab F Ab F
  BY: "[ab1,ab2]@3 [ab1,ab2] [ab1,ab2]@2 [ab1,ab2] ~@5 [f1,f2]@3 ~", // Ab F
  BZ: "[ab1,ab2]@3 [ab1,ab2] [f1,f2]@2 [ab1,ab2]@2 ~@4 [f1,f2]@2 ~@2", // Ab F Ab F
  CA: "[ab1,ab2]@2 ~ [ab1,ab2] [ab1,ab2]@2 [ab1,ab2] ~ [ab1,ab2]@4 [g1,g2]@3 [g1,g2]", // Ab G
  CB: "[f1,f2]@3 [f1,f2] [eb1,eb2]@2 [f1,f2] ~@5 [eb1,eb2]@2 ~@2", // F Eb F Eb
  CC: "[f1,f2]@2 ~ [f1,f2]!2 ~ [f1,f2] [eb1,eb2] [f1,f2]@2 ~ [f1,f2] [c2,c3]@4", // F Eb F C
  CD: "[db2,db3]@3 [db2,db3] [bb1,bb2]@2 [db2,db3] ~@7 [bb1,bb2] ~", // Db Bb Db Bb
  CE: "[db2,db3]@2 ~ [db2,db3] [db2,db3]@2 [db2,db3] ~ [db2,db3]@4 [eb2,eb3]@3 ~", // Db Eb
  CF: "[ab1,ab2]@3 [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~@5 [f1,f2] ~@3", // Ab F Ab F
  CG: "[ab1,ab2]@3 [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~@5 [f1,f2]@2 ~@2", // Ab F Ab F
  CH: "[ab1,ab2]@3 [ab1,ab2]!2 ~@2 [f1,f2] [ab1,ab2]@4 [g1,g2]@4", // Ab F Ab G
  CI: "[f1,f2]@2 ~ [f1,f2] [eb1,eb2]@2 [f1,f2] ~@5 [eb1,eb2] ~@3", // F Eb F Eb
  CJ: "[f1,f2]@2 ~ [f1,f2]!2 ~ [f1,f2] ~ [f1,f2]@4 [c2,c3]@4", // F C
  CK: "[db2,db3]@2 ~ [db2,db3] [bb1,bb2]@2 [db2,db3] ~@7 [db2,db3] [c2,c3]", // Db Bb Db C
  CL: "[bb1,bb2]@3 [bb1,bb2] [c2,c3]@3 [bb1,bb2] [db2,db3]@3 [bb1,bb2] [eb2,eb3]@3 ~", CM: "[ab1,ab2]@3 [ab0,ab1] ~@4",
  CN: "[ab1,ab2]@5 ~ [ab1,ab2] ~@9", CO: "[ab1,ab2]@6 [ab1,ab2] ~@9",
  CP: "[ab1,ab2]@3 [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~@9", // Ab F Ab
  CQ: "[ab1,ab2]@2 ~ [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~ [ab1,ab2]@4 ~@4", // Ab F Ab
  CR: "[ab1,ab2]@2 ~ [ab1,ab2] [f1,f2]@2 [ab1,ab2]!2 [ab1,ab2]@4 [g1,g2]@4", // Ab F Ab G
  CS: "[f1,f2]@2 ~ [f1,f2] [eb1,eb2]@2 [f1,f2] ~@7 [eb1,eb2] ~", // F Eb F Eb
  CT: "[f1,f2]@3 [f1,f2] [eb1,eb2]@2 ~@2 [f1,f2]@2 ~ [f1,f2] [c2,c3]@2 ~ [c2,c3]", // F Eb F C
  CU: "[db2,db3]@3 [db2,db3] [bb1,bb2]@2 [db2,db3] ~@7 [db2,db3] [c2,c3]", // Db Bb Db C
  CV: "[bb1,bb2]@2 ~ [bb1,bb2] [c2,c3]@3 [bb1,bb2] [db2,db3]@3 [bb1,bb2] [eb2,eb3]@2 ~@2", // Bb C Bb Db Bb Eb
  CW: "[ab1,ab2]@2 ~ [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~@7 [f1,f2] ~", // Ab F Ab F
  CX: "[ab1,ab2]@2 ~ [ab1,ab2]!2 ~ [ab1,ab2] ~ [ab1,ab2]@3 ~ [ab1,ab2]@2 ~@2", // Ab
  CY: "[ab1,ab2]@3 [ab1,ab2] [f1,f2]@2 [ab1,ab2] ~@7 [f1,f2] ~", // Ab F Ab F
  CZ: "[ab1,ab2]@3 [ab1,ab2]!2 ~ [ab1,ab2] [eb1,eb2] [ab1,ab2]@4 [g1,g2]@3 ~", // Ab Eb Ab G
  DA: "[f1,f2]@3 [f1,f2] [f1,f2]@2 [f1,f2] ~ [f1,f2]@4 [c2,c3]@4", // F C
  DB: "[db2,db3]@2 ~ [db2,db3] [bb1,bb2]@2 [db2,db3] ~@7 [db2,db3] ~", // Db Bb Db
  DC: "[db2,db3]@3 [db2,db3] [bb1,bb2]@2 [db2,db3] ~ [db2,db3]@4 [eb2,eb3]@3 ~", // Db Bb Db Eb
  DD: "[ab1,ab2]@3 [ab1,ab2] [ab1,ab2]@2 [ab1,ab2] ~@9", // Ab
  DE: "[ab1,ab2]@3 [ab1,ab2]!2 ~ [ab1,ab2] ~ [ab1,ab2]@4 [g1,g2]@4", // Ab G
})).s("gm_synth_bass_1").gain(0.38)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@6 A B A B C D E F A G H@3 I J K@2 L M N O P Q@2 R A B A B C D C S A B A B C D E T U V W@3 I J X@2 L M N O P Q@2 R A
  B A B C D C S A B A B C D E Y Z AA AB AC AD AE AF AG AH N O P Q@2 R AI AJ AI AJ AK AL AK AM AI AJ AI AJ AK AL AN AO AP
  AQ@4 AR@2 AS@2 AJ AI AJ AT AL AT ~ AU AJ AU AJ AT AL AT ~ AU AJ AU AJ AT AL AT ~ AU AV
>`.pickRestart({
  A: "[db4,gb4,bb4]@3 [db4,gb4,bb4] ~@12", B: "[db4,gb4,bb4] ~@2 [db4,gb4,bb4] ~@4 [db4,gb4,bb4] ~@2 [db4,gb4,bb4] ~@4",
  C: "[eb4,gb4,bb4]@3 [eb4,gb4,bb4] ~@12", D: "[eb4,gb4,bb4] ~@2 [eb4,gb4,bb4] ~@4 [eb4,gb4,bb4] ~@2 [eb4,gb4,bb4] ~@4",
  E: "[b3,eb4,gb4]@3 [b3,eb4,gb4] ~@12", F: "[b3,eb4,ab4]@3 [b3,eb4,ab4] ~@4 [db4,ab4]!2 ~@2 [db4,gb4]!2 ~@2",
  G: "[db4,gb4,bb4]@3 [db4,gb4,bb4]!2 ~ [db4,gb4,bb4] ~@9", H: "[[f3,ab3,db4]@3 ~ [bb3,eb4]@2, ~@31 gb3@17]/3",
  I: "~ [gb4,bb4] [eb4,gb4]@2 [eb3,ab3,b3]@2 [eb3,gb3,bb3]@2", J: "[f3,ab3,db4]@7 ~",
  K: "[~@16 [bb3,eb4]@15 ~, ~@15 gb3@16 ~]/2", L: "~@4 [eb4,gb4] [f4,ab4] [eb4,gb4] ~",
  M: "[gb3,b3,eb4]@7 ~@3 [db4,gb4,bb4]@2 ~@2 [db4,gb4,bb4]@2", N: "~@2 [db4,f4,ab4]@2 ~@2 [db4,f4,ab4]@5 ~@5",
  O: "[db4,gb4,bb4]@3 [db4,gb4,bb4]!2 ~@5 [db4,f4,ab4]@2 ~@2 [db4,gb4,ab4]@2", // Gb Db Dbsus4
  P: "~@2 [db4,gb4,bb4]@2 ~@2 [b3,eb4,gb4]@7 ~@3", Q: "[[ab3,b3,eb4]@4 ~@2 [bb3,db4,gb4] ~@3 [ab3,db4,f4]@18 ~@4]/2",
  R: "b4 bb4 b4 db5 ~@4", S: "[b3,eb4,gb4]@3 [b3,eb4,gb4]!2 ~@3 [b3,eb4,gb4]!2 ~@2 [db4,f4,ab4]!2 ~@2",
  T: "[b3,eb4,gb4]@3 [b3,eb4,gb4] ~@4 [b3,eb4,gb4]@2 [b3,eb4,gb4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~", // B Db
  U: "[db4,gb4,bb4]@2 ~ [db4,gb4,bb4] ~@12", V: "[db4,gb4,bb4]@2 [db4,gb4,bb4]!2 gb4 ~ [db4,gb4,bb4] ~@9",
  W: "[[f3,ab3,db4]@24 ~@8 eb4@15 ~, ~@31 [gb3,bb3]@16 ~]/3", X: "[~ [bb3,eb4], ~@15 gb3@17]/2",
  Y: "[b3,eb4,gb4]@3 [b3,eb4,gb4] ~@4 [eb4,gb4,b4]@2 [eb4,gb4,b4] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~", // B Db
  Z: "[bb3,db4,f4] ~@2 [bb3,db4,f4] ~@4 [bb3,db4,f4]@3 [bb3,eb4,gb4] ~@2 [bb3,eb4,gb4]!2", // Bbm Ebm
  AA: "[bb3,db4,f4] ~@2 [bb3,db4,f4] ~@2 [bb3,db4,f4] ~ [bb3,db4,f4]@3 [bb3,eb4,gb4] ~@2 [bb3,eb4,gb4]!2", // Bbm Ebm
  AB: "[ab3,db4,f4] ~@2 [ab3,db4,f4] ~@4 [ab3,db4,f4] ~@2 [ab3,db4,f4]!4 ~", // Db
  AC: "[ab3,db4,f4] ~@2 [ab3,db4,f4] ~@4 [b3,eb4,ab4]@3 ~ [db4,f4,bb4]@4", // Db Abm Bbm
  AD: "[bb3,db4,f4]!2 ~ [bb3,db4,f4] ~@4 [bb3,db4,f4]@2 ~ [bb3,eb4,gb4] ~@2 [bb3,db4,f4]!2", // Bbm Ebm Bbm
  AE: "[bb3,db4,f4] ~@2 [bb3,db4,f4] ~@2 [bb3,db4,f4] ~ [bb3,db4,f4]@3 [bb3,eb4,gb4] ~@4", // Bbm Ebm
  AF: "[ab3,db4,f4] ~@2 [ab3,db4,f4] ~@4 [ab3,db4,f4] ~@2 [ab3,db4,f4] ~@2 [ab3,db4,f4] ~", // Db
  AG: "[ab3,db4,f4] ~@2 [ab3,db4,f4] ~@4 db4@3 b3@3 bb3 ~", // Db
  AH: "[gb3,b3,eb4]@3 [gb3,b3,eb4] ~@6 [db4,gb4,bb4]@2 ~@2 [db4,gb4,bb4]@2", AI: "[eb4,ab4,c5]@3 [eb4,ab4,c5] ~@12",
  AJ: "[eb4,ab4,c5] ~@2 [eb4,ab4,c5] ~@4 [eb4,ab4,c5] ~@2 [eb4,ab4,c5] ~@4", AK: "[f4,ab4,c5]@3 [f4,ab4,c5] ~@12",
  AL: "[f4,ab4,c5] ~@2 [f4,ab4,c5] ~@4 [f4,ab4,c5] ~@2 [f4,ab4,c5] ~@4", // Fm
  AM: "[db4,f4,ab4]@3 [db4,f4,ab4]!2 ~@3 [db4,f4,ab4]!2 ~@2 [eb4,g4,bb4]!2 ~@2", AN: "[db4,f4,ab4]@3 [db4,f4,ab4] ~@12",
  AO: "[db4,f4,ab4]@3 [db4,f4,ab4] ~@4 [db4,f4,ab4]@2 [db4,f4,ab4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4] ~", // Db Eb
  AP: "~@13 ab3 f3 eb3", AQ: "[~@9 [ab3,ab4] ~ [ab3,ab4] ~ [ab3,ab4] ~ [ab3,ab4]@4 ~@10 ab3 f3 eb3]/2",
  AR: "[~@9 [ab3,ab4] ~ [ab3,ab4] ~ [ab3,ab4] ~ [ab3,ab4]@3 ~@11 ab3 f3 eb3]/2", // Ab
  AS: "[~@9 [ab3,ab4] ~ [ab3,ab4] ~ [ab3,ab4] ~ [ab3,ab4]@3 ~@14]/2", AT: "[f4,ab4,c5]@2 ~ [f4,ab4,c5] ~@12",
  AU: "[eb4,ab4,c5]@2 ~ [eb4,ab4,c5] ~@12", AV: "[c4,eb4,ab4]@3 ~@13",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.3)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@31 A@2 B@2 A@2 C D A@2 B@2 A@2 C E@2 ~@16 A@2 B@2 A@2 C D A@2 ~@2 F@2 C G@3 ~ H@3 ~@9 I@2 J@2 I@2 K L M@2 N@2 O@2 K
  P ~@7 Q@6 ~ K R@6 ~ K S ~@10
>`.pickRestart({
  A: "[~@4 [db4,gb4,bb4,db5]@6 [db4,gb4,bb4,db5]@2 [db4,gb4,bb4,db5]!2 [db4,gb4,bb4,db5]@4 [bb3,db4,gb4,bb4]@2 [bb3,db4,gb4,bb4]@2 [bb3,db4,gb4,bb4]@4 [b3,db4,ab4,b4]@4 ~@2]/2", // Gb Db7
  B: "[~@6 [db4,gb4,bb4]@2 [db4,gb4,bb4]!2 [db4,gb4,bb4]@2 [db4,gb4,bb4]@2 [gb4,bb4,db5]@4 [bb3,db4,gb4]@2 [bb3,db4,gb4]@2 [bb3,db4,gb4]@4 [b3,db4,ab4]@4 ~@2]/2", // Gb Db7
  C: "~@2 [b3,eb4,gb4,b4]!2", // B
  D: "[b3,eb4,gb4,b4] [b3,eb4,ab4,b4] [db4,gb4,bb4,db5] [db4,f4,ab4,db5]@3 [bb3,db4,gb4,bb4]@2", // B Abm Gb Db Gb
  E: "[[b3,eb4,gb4,b4] [b3,eb4,ab4,b4] [db4,gb4,bb4,db5] [db4,f4,ab4,db5]@3 [gb4,bb4]@7 ~@3]/2", // B Abm Gb Db Gb
  F: "[~@4 [db4,gb4,bb4,db5]@6 [db4,gb4,bb4,db5]@2 [db4,gb4,bb4,db5]!2 [db4,gb4,bb4,db5]@4 [bb3,db4,gb4,bb4]@2 [bb3,db4,gb4,bb4]@2 [bb3,db4,gb4,bb4]@4 [b3,db4,ab4,b4]@3 ~@3]/2", // Gb Db7
  G: "[[b3,eb4,gb4,b4]@2 [b3,eb4,ab4,b4]@2 [db4,gb4,bb4,db5]@2 [db4,f4,ab4,db5]@6 [bb3,db4,gb4,bb4]@2 bb4@5 bb4 bb4@2 [bb4,eb5]@6 ~@2 bb4@5 bb4 bb4@2 [bb4,eb5]@6 ~@4]/3", // B Abm Gb Db Gb Eb5
// … 191 more lines

More by Whitney Houston