Strudelify

Tell Me Something Good (live)

Chaka Khan

KeyE♭ minorTempo76 bpm
0:00/0:00
// Tell Me Something Good (live) — Chaka Khan
// 76 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/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 · electric bass finger · "Track 2"
const bass = note(`<
  ~@2 A B C D E F C G H F I J H K L M N ~ O P Q R S T Q U V W X K Y Z AA K V AB@2 AC AD M N ~ AE AF Q AG AH AI AJ AK AL
  AM AN AO I AP@2 K AL AQ AR AO L AS N ~ AT AU AV AW AX AY AZ BA BB BC AH BD BB BE BF BG AH BC AH BH BI
>`.pickRestart({
  A: "~@14 gb3 ~", B: "gb3@11 ~@7 db3@3 ~@3 db3@8 ~@4 bb2@5 ~ gb2@4 ~@2", C: "ab1@6 ~@6 gb1@7 ~@5 f1@7 ~@5 eb2@6 ~@6",
  D: "db2@6 ~@6 b1@6 ~@6 bb1@7 ~@5 ab1@6 ~@6", E: "gb1 ~ gb1 ~@2 gb1 ~@2", F: "~@5 gb1@6 ~@37",
  G: "db2@7 ~@5 b1@6 ~@6 bb1@7 ~@5 ab1@7 ~@5", H: "gb1@7 ~@5 gb1@5 ~@12 gb1@6 ~@13",
  I: "ab1@6 ~@6 gb1@7 ~@5 f1@6 ~@6 eb2@7 ~@5", J: "db2@7 ~@5 b1@6 ~@6 bb1@6 ~@6 ab1@7 ~@5", K: "~ gb1 ~@6",
  L: "bb1@6 ~@6 c2@6 ~@6 db2@7 ~@5 d2@6 ~@6", M: "eb2@7 ~@5 e2@6 ~@6 f1@7 ~@5 gb1@2 ~@4 g1@3 ~@3", N: "ab1 ~@7",
  O: "ab1@6 ~@3 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@6 ~@18", P: "bb1@6 ~@6 bb1@3 c2@2 db2@3 d2@3 eb2@3 bb1@3 eb2@5 ~@14",
  Q: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@6 ~@18",
  R: "bb1@7 ~@7 c2@3 ~ db2@3 d2@3 eb2@2 bb1@3 ~ eb2@5 ~@13, ~@3 bb1 ~@8", S: "ab1@2 ~ ab1 bb1 ~ eb2 ~ f2@2 ~@6",
  T: "bb1@7 ~@5 bb1@3 c2@3 db2@2 d2@3 eb2@3 bb1@3 ~ eb2@5 ~@13",
  U: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@3 d2@3 eb2@3 bb1@3 eb2@4 ~@14", V: "ab1@7 ~@5 gb1@7 ~@5 f1@6 ~@6 eb2@6 ~@6",
  W: "db2@6 ~@6 b1@6 ~@6 bb1@7 ~@5 ab1@7 ~@5", X: "gb1@7 ~@6 gb1@5 ~@11 gb1@7 ~@12",
  Y: "ab1@7 ~@5 gb1@7 ~@5 f1@6 ~@6 eb2@7 ~@5", Z: "db2@7 ~@5 b1@7 ~@5 bb1@7 ~@5 ab1@7 ~@5",
  AA: "gb1@7 ~@5 gb1@6 ~@12 gb1@7 ~@11",
  AB: "[db2@7 ~@5 b1@7 ~@5 bb1@7 ~@5 ab1@7 ~@4 gb1@7 ~@6 gb1@6 ~@12 gb1@7 ~@11]/2", AC: "~@6 gb1@7 ~@35",
  AD: "bb1@6 ~@6 c2@6 ~@6 db2@7 ~@5 d2@7 ~@5", AE: "ab1@6 ~@3 ab1@3 bb1@4 ~@2 eb2@3 ~@3 f2@6 ~@18",
  AF: "bb1@6 ~@6 bb1@3 c2@3 db2@2 d2@2 ~@2 eb2@3 bb1@3 eb2@5 ~@13",
  AG: "bb1@7 ~@5 bb1@3 c2@2 db2@3 ~ d2@2 eb2@3 bb1@3 ~ eb2@5 ~@13", AH: "ab1@5 ~@4 ab1@3 bb1@2 ~@4 eb2@2 ~@4 f2@5 ~@19",
  AI: "bb1@6 ~@6 bb1@3 c2@3 db2@2 d2@3 eb2@3 ~ bb1@3 eb2@5 ~@13", AJ: "ab1@5 ~@4 ab1@3 bb1@2 ~@4 eb2@2 ~@4 f2@6 ~@18",
  AK: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@2 d2@3 eb2@3 bb1@3 ~ eb2@4 ~@14", AL: "ab1@6 ~@6 gb1@7 ~@5 f1@6 ~@6 eb2@6 ~@6",
  AM: "db2@7 ~@5 b1@7 ~@5 bb1@6 ~@6 ab1@6 ~@6", AN: "gb1@6 ~@6 gb1@5 ~@13 gb1@7 ~@11", AO: "~ gb1 ~@3 gb1 ~@2",
  AP: "[db2@7 ~@5 b1@7 ~@5 bb1@7 ~@4 ab1@7 ~@5 gb1@7 ~@5 gb1@6 ~@12 gb1@6 ~@13]/2",
  AQ: "db2@7 ~@5 b1@7 ~@5 bb1@7 ~@5 ab1@6 ~@6", AR: "gb1@6 ~@6 gb1@5 ~@13 gb1@6 ~@12",
  AS: "eb2@7 ~@5 e2@6 ~@6 f1@7 ~@5 gb1@3 ~@3 g1@2 ~@4", AT: "ab1@5 ~@4 ab1@3 bb1@4 ~@2 eb2@3 ~@3 f2@6 ~@18",
  AU: "bb1@6 ~@6 bb1@2 c2@3 db2@3 ~ d2@3 eb2@3 bb1@3 eb2@5 ~@13", AV: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@2 ~@5 f2@7 ~@16",
  AW: "bb1@6 ~@6 bb1@2 c2@3 ~ db2@3 d2@3 eb2@3 bb1@3 eb2@4 ~@14", AX: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@2 ~@5 f2@5 ~@18",
  AY: "bb1@6 ~@8 c2@3 db2@3 ~ d2@3 eb2@3 bb1@3 eb2@5 ~@13, ~@3 bb1 ~@8",
  AZ: "ab1@5 ~@4 ab1@3 bb1@3 ~@4 eb2@2 ~@3 f2@5 ~@19", BA: "bb1@7 ~@5 bb1@3 c2@3 db2@3 d2@3 eb2@3 bb1@2 ~ eb2@4 ~@14",
  BB: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@5 ~@19", BC: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@3 d2@3 eb2@3 bb1@2 ~ eb2@4 ~@14",
  BD: "bb1@6 ~@6 bb1@2 c2@3 ~ db2@2 d2@3 ~ eb2@3 bb1@2 ~ eb2@4 ~@14",
  BE: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@2 d2@3 ~ eb2@2 bb1@3 ~ eb2@5 ~@13",
  BF: "ab1@4 ~@5 ab1@3 bb1@2 ~@4 eb2@2 ~@4 f2@6 ~@18", BG: "bb1@6 ~@6 bb1@3 c2@3 db2@3 d2@3 eb2@3 bb1@2 ~ eb2@5 ~@13",
  BH: "bb1@6 ~@6 bb1@3 c2@2 db2@3 d2@3 ~ eb2@2 bb1@2 ~@2 eb2@4 ~@14",
  BI: "ab1@6 ~@3 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@5 ~@19",
})).s("gm_electric_bass_finger").gain(0.72)

// bass · slap bass 1 · "Track 3"
const bass_2 = note(`<
  A B C D E F G@2 H I J@2 E K L M N O P ~ Q R S T Q U V W X B Y@2 Z AA AB AC AD@2 AE AF AG AH AI ~ AJ AK AL AM AJ AN Q
  AO X K AP AQ@2 AR@2 AS AT AU AV AW AG AH P ~ AX AY AZ BA BB BC BD BE BB BF BD BG BD BH BD BI BB BF BJ BK BD
>`.pickRestart({
  A: "ab1@6 ~@5 gb1@6 ~@6 f1@6 ~@7 eb2@5 ~@7", B: "db2@7 ~@5 b1@6 ~@6 bb1@6 ~@6 ab1@6 ~@6",
  C: "gb1@7 ~@5 gb1@5 ~ f2@3 gb2@3 gb1@7 ~@5 gb1@6 f2@3 gb2@3", D: "gb1@6 ~@6 gb1@6 f2@3 gb2@3 gb1@7 ~@5 gb1@7 ~@5",
  E: "ab2@7 ~@5 gb2@6 ~@6 f2@6 ~@6 eb2@7 ~@5", F: "db2@7 ~@5 b1@7 ~@5 bb1@7 ~@5 ab1@7 ~@5",
  G: "[gb1@7 ~@5 gb1@5 ~ f2@2 gb2@3 gb1@7 ~@6 gb1@5 ~ f2@2 gb2@3 gb1@7 ~@6 gb1@6 f2@2 gb2@3 gb1@6 ~ f2@3 gb2@3 gb1@6 ~@6]/2",
  H: "ab2@7 ~@5 gb2@6 ~@6 f2@6 ~@5 eb2@7 ~@6", I: "db2@7 ~@5 b1@6 ~@6 bb1@6 ~@5 ab1@7 ~@6",
  J: "[gb1@7 ~@5 gb1@5 f2@3 gb2@3 gb1@6 ~@6 gb1@6 f2@3 gb2@3 gb1@7 ~@6 gb1@6 f2@2 gb2@4 gb1@6 ~@6 gb1@6 ~@6]/2",
  K: "db2@6 ~@6 b1@6 ~@6 bb1@7 ~@5 ab1@6 ~@6", L: "gb1@6 ~@6 gb1@5 f2@3 gb2@3 gb1@6 ~@7 gb1@6 f2@2 gb2@4",
  M: "gb1@7 ~@5 gb1@5 ~ f2@3 gb2@3 gb1@6 f2@3 gb2@3 gb1@6 ~@6", N: "bb1 ~ c2 ~ db2 ~ d2 ~",
  O: "eb2@3 ~@3 e2@3 ~@3 f2@3 ~@3 gb2 ~@2 g2 ~@2", P: "ab2@5 ~@43", Q: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@7 ~@17",
  R: "bb1@7 ~@5 bb1@3 c2@2 db2@3 d2@3 eb2@3 bb1@3 ~ eb2@5 ~@13", S: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@3 ~@3 f2@6 ~@18",
  T: "bb1@7 ~@5 bb1@3 c2@2 db2@3 d2@3 eb2@3 bb1@3 eb2@5 ~@14",
  U: "bb1@6 ~@6 bb1@3 c2@3 db2@2 d2@3 eb2@3 bb1@3 eb2@5 ~@14", V: "ab1@5 ~@5 ab1@2 bb1@2 ~@4 eb2@3 ~@3 f2@6 ~@18",
  W: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@3 d2@3 eb2@3 bb1@3 eb2@4 ~@14", X: "ab2 ~ gb2 ~ f2 ~ eb2 ~",
  Y: "[gb1@7 ~@5 gb1@5 ~ f2@3 gb2@2 gb1@7 ~@6 gb1@6 f2@2 gb2@3 gb1@7 ~@6 gb1@6 f2@3 gb2@3 gb1@6 ~@6 gb1@6 ~@6]/2",
  Z: "ab2@7 ~@5 gb2@7 ~@5 f2@6 ~@6 eb2@6 ~@6", AA: "db2@6 ~@6 b1@7 ~@5 bb1@6 ~@6 ab1@7 ~@5",
  AB: "gb1@6 ~@6 gb1@5 ~ f2@2 gb2@3 ~ gb1@6 ~@6 gb1@6 f2@2 gb2@3 ~",
  AC: "gb1@6 ~@6 gb1@6 f2@2 gb2@3 ~ gb1@6 f2@2 gb2@3 ~ gb1@7 ~@5",
  AD: "[ab2@6 ~@6 gb2@6 ~@6 f2@6 ~@6 eb2@6 ~@5 db2@7 ~@6 b1@7 ~@5 bb1@7 ~@5 ab1@7 ~@5]/2",
  AE: "gb1@7 ~@5 gb1@5 ~ f2@3 gb2@3 gb1@6 ~@6 gb1@6 f2@2 gb2@3 ~",
  AF: "gb1@6 ~@6 gb1@6 f2@2 gb2@3 ~ gb1@6 ~@6 gb1@6 ~@6", AG: "bb1@7 ~@5 c2@7 ~@5 db2@7 ~@5 d2@6 ~@6",
  AH: "eb2@7 ~@5 e2@6 ~@6 f2@6 ~@6 gb2@2 ~@4 g2@2 ~@4", AI: "ab2 ~@7",
  AJ: "ab1@5 ~@4 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@6 ~@18", AK: "bb1@7 ~@5 bb1@3 c2@2 ~ db2@3 d2@2 ~ eb2@3 bb1@3 eb2@5 ~@13",
  AL: "ab1@6 ~@3 ab1@3 bb1@3 ~@3 eb2@2 ~@4 f2@6 ~@18",
  AM: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@2 ~ d2@2 ~ eb2@3 bb1@2 ~ eb2@5 ~@13",
  AN: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@3 d2@2 ~ eb2@3 bb1@3 eb2@5 ~@13",
  AO: "~ bb1@6 ~@5 bb1@3 c2@2 db2@3 d2@3 eb2@4 bb1@3 eb2@6 ~@12",
  AP: "gb1@7 ~@5 gb1@6 f2@3 gb2@3 gb1@6 ~@6 gb1@6 ~ f2@2 gb2@3",
  AQ: "[gb1@6 ~@6 gb1@6 f2@3 gb2@3 gb1@6 ~@6 gb1@6 ~@5 ab2@7 ~@6 gb2@6 ~@6 f2@6 ~@6 eb2@6 ~@6]/2",
  AR: "[db2@7 ~@5 b1@6 ~@6 bb1@6 ~@6 ab1@6 ~@5 gb1@7 ~@6 gb1@5 f2@3 gb2@3 gb1@7 ~@6 gb1@6 f2@2 gb2@3 ~]/2",
  AS: "gb1@6 ~@6 gb1@6 f2@2 gb2@3 ~ gb1@6 f2@3 gb2@3 gb1@7 ~@5", AT: "ab2@6 ~@6 gb2@6 ~@6 f2@7 ~@5 eb2@7 ~@5",
  AU: "db2 ~ b1 ~ bb1 ~ ab1 ~", AV: "gb1@2 ~@2 gb1@2 f2 gb2 gb1@2 ~@2 gb1@2 f2 gb2",
  AW: "gb1@6 ~@6 gb1@5 ~ f2@3 gb2@3 gb1@6 ~@6 gb1@6 ~@6", AX: "ab1@5 ~@3 ab1@3 bb1@3 ~@4 eb2@2 ~@4 f2@6 ~@18",
  AY: "bb1@7 ~@5 bb1@3 c2@3 db2@3 d2@2 ~ eb2@3 bb1@3 eb2@5 ~@13", AZ: "ab1@5 ~@4 ab1@3 bb1@2 ~@4 eb2@2 ~@5 f2@6 ~@17",
  BA: "bb1@7 ~@5 bb1@3 c2@3 db2@3 d2@3 eb2@3 bb1@3 eb2@4 ~@14", BB: "ab1@6 ~@3 ab1@3 bb1@2 ~@4 eb2@2 ~@4 f2@6 ~@18",
  BC: "bb1@6 ~@6 bb1@3 c2@2 ~ db2@3 d2@3 eb2@3 bb1@3 eb2@5 ~@13", BD: "ab1@5 ~@4 ab1@3 bb1@2 ~@4 eb2@2 ~@4 f2@6 ~@18",
  BE: "bb1@7 ~@5 bb1@3 c2@2 db2@3 ~ d2@2 eb2@3 bb1@3 ~ eb2@5 ~@13",
  BF: "bb1@7 ~@5 bb1@3 c2@3 db2@3 d2@3 eb2@3 bb1@3 eb2@5 ~@13",
  BG: "bb1@6 ~@6 bb1@3 c2@2 db2@4 d2@3 eb2@3 bb1@3 eb2@5 ~@13",
  BH: "bb1@6 ~@6 bb1@3 c2@2 db2@3 d2@3 eb2@3 bb1@3 ~ eb2@5 ~@13",
  BI: "bb1@6 ~@6 bb1@3 c2@3 db2@3 d2@2 eb2@3 ~ bb1@2 eb2@5 ~@14", BJ: "ab1@5 ~@4 ab1@3 bb1@2 ~@4 eb2@2 ~@4 f2@5 ~@19",
  BK: "bb1@7 ~@5 bb1@3 c2@2 ~ db2@3 d2@3 eb2@3 bb1@3 eb2@5 ~@13",
})).s("gm_slap_bass_1").gain(0.29)

// chords · overdriven guitar · "Track 4"
const overdriven_guitar = note(`<
  A B C D E F D@2 G H I J K L M D N@2 O ~ P Q R@3 S R T U V D@2 U W X D U W X Y N@2 O ~ R@4 Z AA R T AB AC AD AE AF AG
  AH AE AI AJ AK D AL AM ~@2 AN R@3 AO R@6 AA AP AQ R@3 AR R@2 ~
>`.pickRestart({
  A: "~@5 [eb4,ab4] ~@11 eb4 gb4@2 ~@10 [eb4,ab4]@2 ~@10 [eb4,gb4]@2 ~@4", // Ab5 Ebm
  B: "~@5 [db4,f4]@2 ~@10 [b3,eb4]@2 ~@10 [ab3,db4]@2 ~@11 [gb3,b3]@2 ~@4", // Db B Db5 B5
  C: "~@6 [d4,gb4]@2 ~@10 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@5", // D Gb5
  D: "~@6 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@5", // Gb5
  E: "~@6 [eb4,ab4]@2 ~@10 [eb4,gb4]@2 ~@10 [eb4,ab4] ~@11 [eb4,gb4]@2 ~@4", // Ab5 Ebm Ab5 Ebm
  F: "~@5 [db4,f4]@2 ~@10 eb4 b3 ~@11 [ab3,db4]@2 ~@10 [gb3,b3]@2 ~@4", // Db Db5 B5
  G: "~@5 [eb4,ab4] ~@11 [eb4,gb4]@2 ~@10 [eb4,ab4] ~@12 [eb4,gb4] ~@5", // Ab5 Ebm Ab5 Ebm
  H: "~@5 [db4,f4] ~@12 [b3,eb4] ~@11 [ab3,db4]@2 ~@10 gb3 ~@5, ~@41 b3@2 ~@5", // Db B Db5
  I: "~@6 [db4,gb4] ~@10 [db4,gb4] ~@12 [db4,gb4] ~@10 [db4,gb4] ~@6", // Gb5
  J: "~@5 [db4,gb4] ~@12 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@5", // Gb5
  K: "~@5 eb4 ab4@2 ~@10 [eb4,gb4] ~@11 [eb4,ab4] ~@11 [eb4,gb4] ~@5", // Ebm Ab5 Ebm
  L: "~@6 [db4,f4] ~@11 [b3,eb4] ~@11 [ab3,db4]@2 ~@10 [gb3,b3]@2 ~@4", // Db B Db5 B5
  M: "~@6 [db4,gb4]@2 ~@10 [db4,gb4] ~@10 [db4,gb4] ~@12 [db4,gb4] ~@5", // Gb5
  N: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@5", O: "~@6 [eb4,ab4] ~@41",
  P: "~@6 [eb4,f4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Fm7 Ab5
  Q: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~ [eb4,ab4] ~@3", // Ab5
  R: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Ab5
  S: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@10 [eb4,ab4] ~@2 [eb4,ab4] ~@3", // Ab5
  T: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@17", // Ab5
  U: "~@6 [eb4,ab4] ~@11 [eb4,gb4] ~@11 [eb4,ab4] ~@11 [eb4,gb4] ~@5", // Ab5 Ebm Ab5 Ebm
  V: "~@6 [db4,f4] ~@11 [b3,eb4] ~@11 [ab3,db4]@2 ~@10 [gb3,b3] ~@5", // Db B Db5 B5
  W: "~@6 [db4,f4] ~@11 [b3,eb4] ~@11 [ab3,db4] ~@11 [gb3,b3]@2 ~@4", // Db B Db5 B5
  X: "~@6 [db4,gb4]@2 ~@10 [db4,gb4] ~@11 [db4,gb4]@2 ~@10 [db4,gb4] ~@5", // Gb5
  Y: "~@6 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@10 [db4,gb4]@2 ~@5", // Gb5
  Z: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@12 [eb4,ab4] ~ [eb4,ab4] ~@2", // Ab5
  AA: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@10 [eb4,ab4] ~@12 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Ab5
  AB: "~@6 [eb4,ab4]@2 ~@9 eb4 gb4 ~@11 [eb4,ab4] ~@11 [eb4,gb4]@2 ~@4", // Ab5 Ebm
  AC: "~@6 [db4,d4,f4] ~@11 [b3,eb4]@2 ~@10 [bb3,db4] ~@11 [gb3,b3]@2 ~@4", // Db B Bbm B5
  AD: "~@6 [db4,gb4]@2 ~@10 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4]@2 ~@4", // Gb5
  AE: "~@6 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4]@2 ~@4", // Gb5
  AF: "~@6 [eb4,ab4]@2 ~@10 [eb4,gb4] ~@11 [eb4,ab4] ~@11 [eb4,gb4]@2 ~@4", // Ab5 Ebm Ab5 Ebm
  AG: "~@6 [db4,f4]@2 ~@10 [b3,eb4] ~@11 [bb3,db4]@2 ~@10 [gb3,b3]@2 ~@4", // Db B Bbm B5
  AH: "~@5 [db4,gb4]@2 ~@11 [db4,gb4] ~@10 [db4,gb4] ~@12 [db4,gb4] ~@5", // Gb5
  AI: "~@6 [eb4,ab4]@2 ~@10 [eb4,gb4] ~@11 [eb4,ab4] ~@11 [eb4,gb4] ~@5", // Ab5 Ebm Ab5 Ebm
  AJ: "~@6 [db4,f4] ~@11 [b3,eb4] ~@11 [bb3,db4] ~@11 [gb3,b3]@2 ~@4", // Db B Bbm B5
  AK: "~@6 [db4,gb4]@2 ~@10 [db4,gb4] ~@11 [db4,gb4] ~@11 [db4,gb4] ~@5", // Gb5
  AL: "~@3 [eb4,ab4] ~@5 [eb4,ab4] ~@5 [eb4,ab4] ~@5 [eb4,ab4] ~@2", // Ab5
  AM: "~@6 [eb4,ab4]@2 ~@10 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4]@2 ~@4", // Ab5
  AN: "~@6 [eb4,ab4]@2 ~@10 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Ab5
  AO: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,ab4] ~@11 eb4 ab4 ~ [eb4,ab4] ~@2", // Ab5
  AP: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@11 [eb4,a4] ~@11 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Ab5 Ebdim Ab5
  AQ: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@10 eb4 ab4 ~@11 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Ab5
  AR: "~@6 [eb4,ab4] ~@11 [eb4,ab4] ~@10 ab4 eb4 ~@11 [eb4,ab4] ~@2 [eb4,ab4] ~@2", // Ab5
})).s("gm_overdriven_guitar").gain(0.45)

// chords · distortion guitar · "Track 5"
const distortion_guitar = note(`<
  ~@20 A@2 ~@2 B ~@19 C ~@3 D ~@19 E@2 ~@2 F@2 ~@2 G@2 ~@2 H@2 ~@2 I@2 ~@3
>`.pickRestart({
  A: "[~@35 [ab3,db4]@4 ~@3 bb3@11 ~@43, ~@41 db4@12 ~@43]/2", B: "~@18 [ab3,db4]@2 ~ [bb3,db4]@3",
  C: "~@35 [ab3,db4]@4 ~@3 [bb3,db4]@6", D: "~@12 [ab3,db4] ~ [bb3,db4]@2",
  E: "[~@36 db4@5 ~ [bb3,db4]@14 ~@40, ~@35 ab3@4 ~@57]/2", F: "[~@18 [ab3,db4]@2 ~ [bb3,db4]@7 ~@20]/2",
  G: "[~@36 [ab3,db4]@4 ~@2 bb3@17 ~@37, ~@41 db4@17 ~@38]/2", // Db5
  H: "[~@35 [ab3,db4]@4 ~@3 bb3@17 ~@37, ~@41 db4@17 ~@38]/2", I: "[~@35 [ab3,db4]@4 ~@3 [bb3,db4]@16 ~@38]/2",
})).s("gm_distortion_guitar").gain(0.62)

// chords · brass section · "Track 9"
const brass_section = note(`<
  ~@4 A B C ~ D@4 E F G ~ H I ~@2 J K@2 L M N@2 O P Q R ~ S T U V P W C ~ X Y Z ~ AA ~ AB@2 AC ~ AD AE AF AG AH ~ AI AJ
  AK ~ AL AM G ~ AN AO AP ~ AQ ~ AR O AS ~ AT@2 AS ~ AU AV AW ~ AX AY AZ ~ BA@2 BB
>`.pickRestart({
  A: "~@5 c5@6 bb4@12 ab4@9 ~@4 gb4@8 ~@4", B: "f4@7 ~@5 eb4@8 ~@4 db4@8 ~@4 b3@7 ~@5", C: "bb3@17 ab3@30 ~",
  D: "[~@5 c5@6 bb4@12 ab4@9 ~@4 gb4@2 ~@3 gb4@2 ~@4 f4@2 ~@4 f4@2 ~@4 eb4@2 ~@4 eb4@2 ~@5 db4@8 ~@4 b3@7 ~@4 bb3@18 ab3@18 bb3@24 ab3@17 ~@20]/4",
  E: "~@5 c5@6 bb4@13 ab4@9 ~@3 gb4@6 gb4@4 ~@2", F: "f4@2 ~@4 f4@3 ~@3 eb4@3 ~@2 eb4@3 ~@4 db4@8 ~@4 b3@8 ~@4",
  G: "bb3@3 ab3@5", H: "~@6 eb4@3 ~@3 ab4@6 ~@6 ab4@7 ~@5 ab4@7 ~@5",
  I: "ab4@7 ~@5 ab4@7 ~@4 ab4@8 ~@4 ab4@2 ~@4 ab4@5 ~@2",
  J: "[eb3,ab3]@6 ~@3 [eb3,ab3] ~@2 c4@3 ~@3 [bb3,eb4]@2 ~@4 [c4,f4]@9 ~@15, ~@12 ab3 ~@35", // Ab5 Eb5 F5
  K: "[~@48 eb3@6 ~@3 [eb3,ab3] ~@2 c4@2 ~@4 [bb3,eb4]@3 ~@3 [c4,f4]@2 ~@4 [c4,f4]@9 ~@3 c4@4 bb3@2, ~@47 ab3@6 ~@7 ab3 ~@35]/2", // Ab5 Eb5 F5
  L: "~ ab3@12 ~@35", M: "[eb3,ab3]@7 ~@2 [eb3,ab3] ~@2 c4@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@9 ~@15, ~@12 ab3 ~@35",
  N: "[~@48 eb3@6 ~@2 ab3 eb3 ~@2 c4@3 ~@3 [bb3,eb4]@2 ~@4 [c4,f4]@3 ~@3 [c4,f4]@7 ~@5 c4@3 bb3@3, ~@47 ab3@6 ~@7 ab3 ~@35]/2", // Eb5 F5
  O: "ab3@13 ~@35", P: "~@6 c5@2 ~@4 bb4@8 ~@4 ab4@8 ~@4 gb4@7 ~@5", Q: "f4@8 ~@4 eb4@7 ~@5 db4@7 ~@5 b3@7 ~@5",
  R: "bb3@17 ~ ab3@25 ~@5", S: "~@6 c5@2 ~@4 bb4@8 ~@4 ab4@7 ~@5 gb4@2 ~@4 gb4@2 ~@4",
  T: "f4@2 ~@3 f4@2 ~@4 eb4@5 ~@8 db4@2 ~@4 db4@2 ~@4 b3@7 ~@5", U: "bb3@17 ab3@11 bb3@19 ~", V: "ab3@3 ~@5",
  W: "f4@2 ~@4 f4@2 ~@3 eb4@2 ~@5 eb4@2 ~@4 db4@2 ~@3 db4@3 ~@4 b3@7 ~@5",
  X: "~@5 eb4@2 ~@5 ab4@7 ~@5 ab4@7 ~@5 b4@7 ~@5", Y: "ab4@8 ~@3 eb4@8 ~@5 db4@2 ~@4 b3@2 ~@4 db4@4 ~@2 b3@2 ~@4",
  Z: "gb4@7 ~@41", AA: "[eb3,ab3]@6 ~@3 [eb3,ab3]@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@7 ~@17",
  AB: "[[eb3,ab3]@6 ~@3 [eb3,ab3]@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@2 ~@4 [c4,f4]@6 ~@8 bb3@3 ab3@12 ~@37, ~@21 c4@2 ~@25]/2", // Ab5 Ab Eb5 F5
  AC: "[eb3,ab3]@5 ~@4 [eb3,ab3]@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@7 ~@17", // Ab5 Ab Eb5 F5
  AD: "[eb3,ab3]@5 ~@4 ab3@3 [ab3,c4]@2 ~@4 [bb3,eb4]@2 ~@4 [c4,f4]@2 ~@4 [c4,f4]@6 ~@6 c4@3 bb3@3, ~@8 eb3@3 ~@37", // Ab5 Ab Eb5 F5
  AE: "ab3@11 ~@37", AF: "~@6 c5@3 ~@3 bb4@7 ~@5 ab4@8 ~@4 gb4@7 ~@5", AG: "f4@7 ~@5 eb4@7 ~@5 db4@7 ~@4 b3@7 ~@6",
  AH: "bb3@17 ab3@23 ~@8", AI: "~@6 c5@3 ~@3 bb4@8 ~@4 ab4@8 ~@4 gb4@2 ~@4 gb4@2 ~@4",
  AJ: "f4 ~@2 f4 ~@2 eb4@4 ~@2 db4@4 ~@2 b3 ~@2 b3 ~@2", AK: "bb3@5 ~ ab3@10",
  AL: "~@6 c5@2 ~@4 bb4@8 ~@4 ab4@8 ~@3 gb4@8 ~@5",
  AM: "f4@2 ~@4 f4@2 ~@3 eb4@2 ~@4 eb4@2 ~@4 db4@2 ~@4 db4@2 ~@5 b3@8 ~@4",
  AN: "~@6 eb4@2 ~@4 ab4@7 ~@5 ab4@7 ~@4 b4@8 ~@5", AO: "ab4@8 ~@3 eb4@7 ~@6 db4@3 ~@3 b3@2 ~@4 db4@3 ~@3 b3@2 ~@4",
  AP: "gb4 ~@5", AQ: "[eb3,ab3]@6 ~@3 eb3@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@8 ~@16, ~@2 ab3 ~@9",
  AR: "[eb3,ab3]@5 ~@4 [eb3,ab3]@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@2 ~@4 [c4,f4]@7 ~@5 c4@3 bb3@3", // Ab5 Ab Eb5 F5
  AS: "[eb3,ab3]@5 ~@4 [eb3,ab3]@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@8 ~@16", // Ab5 Ab Eb5 F5
  AT: "[[eb3,ab3]@6 ~@3 eb3@2 ~ ab3@3 ~@3 [bb3,eb4]@2 ~@4 [c4,f4]@2 ~@4 [c4,f4]@6 ~@5 c4@3 bb3@3 ab3@12 ~@37, ~@8 ab3@3 c4@2 ~@83]/2", // Ab5 Eb5 F5
  AU: "[eb3,ab3]@5 ~@4 ab3@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@3 ~@3 [c4,f4]@7 ~@4 c4@3 bb3@3 ~, ~@8 eb3@3 ~@37", // Ab5 Ab Eb5 F5
  AV: "ab3@7 ~@41", AW: "[eb3,ab3]@6 ~@3 eb3@2 ~ ab3@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@6 ~@18, ~@8 ab3@3 c4@3 ~@34",
  AX: "[eb3,ab3]@5 ~@4 ab3@3 [ab3,c4]@3 ~@3 [bb3,eb4]@2 ~@4 [c4,f4]@3 ~@3 [c4,f4]@7 ~@4 c4@3 bb3@3 ~, ~@8 eb3@3 ~@37", // Ab5 Ab Eb5 F5
  AY: "ab3@3 ~@13", AZ: "[eb3,ab3]@5 ~@4 ab3@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@7 ~@17, ~@2 eb3 ~@9",
  BA: "[[eb3,ab3]@5 ~@4 [eb3,ab3]@3 [ab3,c4]@3 ~@3 [bb3,eb4]@2 ~@4 [c4,f4]@2 ~@4 [c4,f4]@7 ~@4 c4@4 bb3@2 ab3@8 ~@41]/2", // Ab5 Ab Eb5 F5
  BB: "[eb3,ab3]@5 ~@4 eb3@3 [ab3,c4]@3 ~@3 [bb3,eb4]@3 ~@3 [c4,f4]@7 ~@17, ~@2 ab3 ~@9", // Ab5 Ab Eb5 F5
})).s("gm_brass_section").gain(0.66)

// … 75 more lines

More by Chaka Khan