Strudelify

Ain't No Mountain High Enough

The Supremes

KeyE♭ majorTempo101 bpm
0:00/0:00
// Ain't No Mountain High Enough — The Supremes
// 101 bpm, 3/4, key D# 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 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(101/3)

// 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.

// other · piano
const piano = note(`<
  A B C@2 D E F G@2 H I@2 ~@31 J K L M N@2 O P Q ~@5 R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH@2 AI@2 ~@10 AJ AK AL AM
  AN AO ~@10 AP AQ
>`.pickRestart({
  A: "~@19 b4@4 ~", B: "gb4@4 a4@4 b4@4 gb4@4 ~ a4@7", C: "[~ b4@4 a4@4 ~ gb4@8 b4@4 gb4@4 ~ b4@4 c5@8 bb4@4 ~ c5@4]/2",
  D: "eb5 bb4 c5 ~@2 [bb1,bb2], ~@12 f5@11 ~", // Bb
  E: "[bb1,bb2] bb2 [bb1,bb2] bb2 [bb1,bb2] bb2, bb5 ~@3 bb5 ~@3 bb5 ~@3 bb5 ~@3 bb5 ~@3 bb5 ~@3", // Bb
  F: "~@2 eb5 f5 g5@2 eb5@2 d5@2 f5@2", G: "[d5@2 f5@2 d5@2 f5@2 d5@2 eb5@4 c5 d5 eb5@2 f5@2 eb5@2 g5@2]/2",
  H: "eb5 g5 d5 f5 d5 f5", I: "[d5 f5 d5 eb5@4 ~@5]/2", J: "~@8 [g3,g5]@3 ~ [g3,g5]@3 ~ [g3,g5]@3 ~ [g3,g5]@3 ~",
  K: "[f3,f5]@6 ~@2 [f3,f5]@7 ~ [f3,f5]@2 ~@2 [f3,f5]@2 ~@2", // F
  L: "[f3,f5]@3 ~ [eb3,eb5]@8 [c3,c5]@4 [eb3,eb5]@4 [f3,f5]@3 ~", M: "~@8 [g3,g5]@2 ~@6 [f3,f5]@3 ~ [f3,f5]@3 ~",
  N: "[[f3,f5]@7 ~ [f3,f5]@2 ~@2 [f3,f5]@2 ~@2 [f3,f5]@4 [eb3,eb5]@7 ~ [c3,c5]@3 ~ [eb3,eb5]@3 ~ [c3,c5]@3 ~@5 [g3,g5]@3 ~]/2", // F Eb C Eb C G
  O: "[g3,g5]@3 ~ [g3,g5]@3 ~ [f3,f5]@7 ~ [f3,f5]@3 ~ [f3,f5]@3 ~", // G F
  P: "[f3,f5]@2 ~@2 [f3,f5]@2 ~@2 [f3,f5]@3 ~ [eb3,eb5]@11 ~", Q: "[c3,c5]@7 ~@17", R: "~@21 [eb4,eb5] [eb4,eb5]@2",
  S: "[eb4,eb5]@2 [c4,c5]@2 [c4,c5]@3 [ab3,ab4] [eb3,eb4]@2 [d3,d4]@2", T: "[c3,c4] [d3,d4] [eb3,eb4]@4",
  U: "~@6 [eb4,eb5]!2 eb5@2 [c4,c5]!2", V: "[c4,c5]@2 [a3,a4]!2 [a3,a4]@8", W: "~@10 [eb5,g5,bb5]!2",
  X: "[eb5,g5,bb5] ~@2", Y: "~@2 [d5,g5,b5]!2 [d5,g5,b5]@4 ~@4", Z: "~@6 [eb5,g5,c6]!2 [eb5,g5,c6]@4",
  AA: "~@2 [bb4,db5,g5]", AB: "[g4,db5,f5]@4 [ab4,c5,eb5]@4 ~@3 [c5,c6]",
  AC: "[c5,c6]@2 [ab4,ab5]!2 [ab4,ab5]@2 [eb4,eb5]!2 [eb4,eb5]@2 [c4,c5]!2", // C Ab Eb C
  AD: "[c4,c5]@2 [eb4,eb5] [d4,d5] [c4,c5] [d4,d5]", AE: "[eb4,eb5]@10 [eb4,eb5]!2",
  AF: "[[eb4,eb5]@2 [c4,c5]!2 [c4,c5]@2 a3 [a3,a4] [a3,a4]@12 ~@4]/2", AG: "~@2 [g4,eb5,g5,bb5]!2 [g4,eb5,g5,bb5]@8",
  AH: "[~@13 [d5,g5,b5] [g4,d5,g5,b5]@2 [g4,d5,g5,b5]@16 ~@16, ~@6 g4 ~@17]/2", // G
  AI: "[[c5,eb5,g5]@16 [e5,g5,c6]@17 ~@15]/2", AJ: "~@5 g5", AK: "~ [eb5,g5]!2 ~@2 [eb5,g5]",
  AL: "~@4 [d5,f5]@2 ~ bb4 ~@2 [d5,f5]@2", AM: "~ [d5,f5] ~ [eb5,g5] ~@2", AN: "[eb5,g5] ~@2 g5 ~ f5",
  AO: "~@4 [d5,f5]@11 ~ e5@6 ~@2", AP: "~@16 [gb4,eb5] ~@3 gb4 ~@3", AQ: "[gb4,eb5] ~@11 [gb4,eb5]@3 ~@9",
})).s("gm_piano").gain(0.3)

// other · piano · soft notes
const piano_soft = note("<~@67 A ~@3 B ~@16 C D E F G H ~@10 I J>".pickRestart({
  A: "~@10 [c5,c6] ~", B: "~@6 a4 ~@5", C: "~@4 [c5,eb5] eb5", D: "[c5,eb5] ~@2 [c5,eb5]!2 ~",
  E: "[bb4,d5]@2 [bb4,d5]@2 ~@3 d5 [bb4,d5] bb4@2 ~, ~@9 d5 ~@2", F: "[bb4,d5] ~ [c5,eb5] ~ [c5,eb5] [eb5,g5]",
  G: "~ [c5,eb5]!2 eb5 [bb4,d5] d5", H: "[bb4,d5]@2 ~@6 bb4@3 ~", I: "~@20 eb5 ~@3",
  J: "~@2 [gb4,eb5] [eb4,b4]@2 f4 ~@6, ~@10 db5 ~@13", // Ebm Abm
})).s("gm_piano").gain(0.15)

// bass · acoustic bass
const bass = note(`<
  A@3 B@2 C D E F@2 G H@2 I J K@7 L M@4 N@3 O P@4 Q R@3 S T@3 U V W X Y Z@2 AA AB AC AD AE AF@3 AG AH@3 AI AJ@3 AK AL AM
  AN AO@2 AP@2 AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD@2 BE BF BG BH BI BJ BK BL BM BN BO BP@2 BQ BR BS BT
>`.pickRestart({
  A: "[~@11 b2@48 ~@3 b2@3 ~@5 b2@2]/3", B: "[~@7 bb2@22 ~@3 bb2@3 ~ bb2@11 ~]/2", C: "bb2 bb1 bb2 bb1 bb2 bb1",
  D: "ab2@2 ~@2 ab2@7 ~ eb2@2 f2@2 ab2@3 ~ ab2@3 ~", E: "f2@3 ~ gb2@3 ~ g2@2 ~@2 g1@3 ~ bb1@2 ~@2 c2@4",
  F: "[~@2 g1@2 c2@3 ~ bb1@3 ~ bb1@2 ~@2 ab1@2 ~@2 ab1@7 ~ eb2@3 ~ ab2@2 ~@2 ab2@3 ~ f2@3 ~ gb2@3 ~]/2",
  G: "g2@3 ~ bb2@2 ~@2 b2@2 ~@2 c3@6 g2@2 c2@2 ~@2", H: "[c2@3 ~ eb2@2 c2@2 f1@6 c2 ~ f2 ~@3 f2@20 ~@4 bb1@4]/2",
  I: "c2@2 d2@2 eb2@6 a1 ~", J: "bb1@11 ~",
  K: "[bb1@2 ~@2 bb2@30 ~@2 ab2@24 ~@4 ab2 ~@3 ab2@32 g2@32 c2@15 ~ c3@8 c2@4 c3 ~@3 bb2 ~@3]/7", L: "ab2@11 ~",
  M: "[ab2 ~@3 ab2@31 ~ g2@31 ~ c2@15 ~ c3@8 c2 ~@3]/4",
  N: "[bb1 ~@3 ab1@25 ~@3 ab1 ~@3 bb1@17 ~ f1@2 bb1@6 f1@2 bb1@4 ab1@4]/3", O: "g1@15 ~ g1@4 bb1 ~@3",
  P: "[b1 ~@3 c2@7 ~ c2@8 c2@8 g1@3 ~ a1 ~@3 ab1@26 ~@2 ab1 ~@3 bb1@18 f1@2 bb1@6 f1@2]/4", Q: "bb1@4 ab1@4 g1@15 ~",
  R: "[g1@4 bb1 ~@3 b1 ~@3 c2@8 c2@8 c2@8 g1 ~@3 a1 ~@3 ab1@17 ~ ab1@2 ab1@4 ab1@4]/3",
  S: "a1 ~@3 bb1@7 ~ bb1@9 ~ f1@2",
  T: "[bb1@4 f1@4 bb1 ~@3 ab1 ~@3 g1@13 ~ g2@2 g1@4 bb1@4 b1 ~@3 c2@7 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~]/3",
  U: "c2@3 ~ c2@3 ~ ab1@2 ~@2 ab1@9 ~ eb2@2", V: "f2 ~ ab2@4 f2@2 g2@2 bb2 ~",
  W: "b2@2 ~@2 c3@5 ~ g2@2 c2 ~@3 c2@3 ~ bb1@3 ~", X: "ab1 ~ ab1@5 eb2 ab1 ~ ab1@2",
  Y: "f1@2 gb1@2 g1@2 bb1 ~ b1 ~ c2@2",
  Z: "[~@2 g2@2 c2@2 ~@2 c3@2 g2@2 c3@2 bb2@2 ab1@2 ~@2 ab1@8 ab2@2 ~@2 ab1@2 ~@2 ab1@4 f1@4 gb1@3 ~]/2",
  AA: "g1@2 g2 ~ d2 ~ c2@4 c3@2", AB: "eb2@2 ~@2 g1@2 ~@2 f1@9 ~ c2@3 ~ g1 ~",
  AC: "f1@2 ~@2 f1@7 ~@3 f1 ~ f1@2 ~@2 a1@2 ~@2", AD: "c2@2 ~@2 d2@2 ~@2 eb2@11 ~ a1@2 ~@2", AE: "bb1@23 ~",
  AF: "[bb1 ~ bb2@18 ab2@14 ~ eb2]/3", AG: "ab2", AH: "[~@4 eb2@2 g2@2 a2@27 ~@3 eb2@2 a2@21 ~@3 a2@2 ~@6]/3",
  AI: "bb2@7 ~", AJ: "[bb2@2 ~@6 b2@23 ~ g2@8 c3@21 ~@3 c3@2 ~@6]/3", AK: "bb2@7 g2 eb2@4",
  AL: "bb2@2 eb2 ~@3 eb2 ~ ab1 ~@3 ab1@8 c3@2 ab2@2", AM: "eb2 ~@3 eb2@8 ab2@2 eb2@2 ab2@8",
  AN: "f2@5 ~ f2@2 c2@8 ab1@7 ~", AO: "[a1 ~@3 a1@10 eb2@2 a2 ~@3 a2@10 a1@2 a1@4 a1@2 ~@2 a1@8]/2",
  AP: "[a1@4 a1@4 a1@8 bb1 ~@3 bb1@10 eb2@2 bb2@4 bb1@4 a1@4 bb1@3 ~]/2", AQ: "b1 ~@3 b1@8 f2@2 g2@2 b2@4 b2@4",
  AR: "g2@4 b2@4 c3@7 ~ g2@6 g2@2", AS: "eb2@4 eb2@4 d2@3 ~ b1@3 ~ c2@4 c2@4", AT: "c2!6", AU: "ab1 ~@7",
  AV: "~@4 ab1@3 ~ g1@2 ~@14", AW: "~@6 g1 ~ f1 ~@3", AX: "~@10 f1 ~", AY: "eb1 ~@5 c1@4 c1@2",
  AZ: "c2@4 bb1@3 ~ ab1@2 ~@14", BA: "~@2 ab1 ~ ab1 ab1@3 g1 ~@3", BB: "~@6 g1 ~ g1 g1@3", BC: "f1 ~@9 f1 ~",
  BD: "[f1@2 f1@6 eb1@4 g1@4 bb1@4 c2@8 c2@4 c2@4 bb1@4 ab1@7 ~]/2", BE: "ab1@3 eb2 ab1@2 bb1@2 c2@2 db2@2",
  BF: "eb2 ~@3 eb2@6 gb1@6 g1 ~@3 c2@2 bb1 ~", BG: "~@2 c2@2 c2@2 bb1@2 ab1 ~@3 ab1@4 ab2@8",
  BH: "c2@4 bb1@3 ~ c2@3 ~ db2@4 eb2@6 ~@2", BI: "d2 ~@3 c2@8 c3 ~@3 bb2 ~@3 g2 ~@3",
  BJ: "db2@4 db3@4 ab2@4 eb2@4 db2 ~ db2@2 ab2@4", BK: "db3@4 db2@2 f2@2 gb2@2 ~@2 gb2@9 ~ db2@2",
  BL: "gb2@2 f2@2 e2@2 eb2@5 ~ d2@2 ~@2 db2@5 ~ db2@2", BM: "ab2@2 ~@2 db3@8 ab2@2 db3@2 ab2@2 eb2@2 db2@3 ~",
  BN: "gb2@2 gb2@2 db2 ~ bb2@4 f2 bb2", BO: "eb2@2 eb2@2 eb2@2 ~@2 db2@3 ~ f1@2 gb1@2 g1@2 ab1@2 a1@2 bb1@2",
  BP: "[b1@3 ~ b1@2 db2@2 eb2@4 bb1@3 ~ gb2@2 ~@2 gb2@2 db2@4 ~@2 db2@2 ~@2 gb2@2 db2@2 eb2@2 f2@2 gb2@2 db2@2 eb2@2 d2@2]/2",
  BQ: "db2@4 db2@2 ab2@5 ~ ab2@2 db2@2 ~@2 db2@2 eb2@2 db2@2",
  BR: "eb2@2 db2@2 eb2@2 f2@2 gb2@3 ~ gb2@2 ~@2 db2@2 ~@2 bb1@4", BS: "~@2 f2@2 bb1@2 ~@2 eb2@4 eb3 ~@11",
  BT: "eb2 ~@3 eb2@2 b1@3 ~ db2@2 eb2@3 ~@9",
})).s("gm_acoustic_bass").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B C D E@2 F@4 G@4 H I@2 ~@10 J@5 K@7 L@3 ~ M@3 N@4 O@4 P Q@2 ~@9 R S@3 T@2 U@2 V@2 W X Y Z AA AB AC AD AE AF AG AH@7
  AI@4 AJ AK@3 AL@3 ~
>`.pickRestart({
  A: "~@11 b4!13", B: "b4!18 ~ b4!4 ~", C: "b4!24", D: "b4 ~ b4!5 bb4!17", E: "[bb4!14 bb4@34]/2",
  F: "[[ab4,c5] [g4,bb4] [ab4,c5]]/4", G: "[[g4,f5]@12 [bb4,eb5]@19 ~ bb3@12 a3@16 bb3@28 a3@8, ~@8 eb4@13 ~@3]/4",
  H: "[ab3,c4]", I: "[[c4,eb4] [ab3,d4]@8 ~@3]/2", J: "[~ [c4,eb4]@8 [bb3,d4]@21]/5",
  K: "[c4@3 [c4,eb4]@8 d4@7 f4@2 ~@12 c4@3 [c4,eb4]@7, ~@11 bb3@23 ~@8, ~@20 d4@13 ~@9]/7", // Cm
  L: "[~ d4@7 f4@2 d4@8, ~ bb3@17]/3", M: "[~@8 g4@16 ~@16 d4@12 [bb3,eb4]@19 ~, ~ eb4@4 ~@4, ~@6 f4@7 ~@5]/3",
  N: "[g4@16 ~@16 d4@12 [bb3,eb4]@19 ~ g4@16 f4@16, eb4 ~ eb4, ~@4 f4@7 ~@13]/4", // Eb5
  O: "[[d4,f4]@3 [bb3,eb4]@5 bb3@3 a3@4 bb3@4 a3@5, ~ eb4@2]/4", P: "[c4,eb4]@23 ~", Q: "[[c4,eb4]@3 ~ d4@32 ~@12]/2",
  R: "~@16 [bb3,db4]@7 ~", S: "[[bb3,db4]@7 ~ [ab3,c4]@47 ~ c4@4 d4@4 c4@4 d4@4, ~@7 ab3@2]/3", T: "[[a3,c4]@23 ~]/2",
  U: "[[a3,c4] [bb3,eb4]@2]/2", V: "[[b3,d4]@32 eb4@7 ~ eb4@6 ~@2]/2", W: "eb4@7 ~ eb4@6 ~@2 e4 ~@3 e4 ~@3",
  X: "e4 ~@3 e4 ~@3 e4 ~@3 e4 ~@3 e4 ~@3 e4 ~@3", Y: "g4 ~@11, eb4 ~@23", Z: "~@2 [eb4,g4] ~ [d4,f4] ~@7",
  AA: "~@6 [d4,f4] ~ eb4 ~@3, ~@16 c4 ~@7", AB: "~@20 [c4,eb4] ~@3", AC: "[bb3,d4] ~@11 [bb3,d4]@11 ~",
  AD: "[bb3,e4]@8 [eb4,g4] ~@15", AE: "~@4 [eb4,g4] ~@3 [eb4,g4] ~ [eb4,g4]@5 ~ [d4,f4] ~@7",
  AF: "~@12 [d4,f4] ~@3 [d4,f4] ~ [d4,f4]@4 ~@2", AG: "[c4,eb4] ~@19 [c4,eb4] ~@3",
  AH: "[[c4,eb4] ~ [c4,eb4]@5 ~ [bb3,d4] ~@11 [bb3,d4]@12 [bb3,e4]@8 c5@32 d5@32 c5@32 d5@24 bb4@8, ~@5 g4@16]/7", // Cm Bb Bbdim
  AI: "[[gb4,b4] [f4,bb4] [gb4,b4]]/4", AJ: "[f4,bb4] [ab4,db5]", AK: "[[g4,bb4]@7 ~ [gb4,b4]@31 ~ [f4,bb4]@32]/3",
  AL: "[[gb4,b4]@32 [f4,bb4]@12 [ab4,db5]@12 [g4,bb4]@7 ~@9]/3", // B5 Bb5 Db5 Gm
})).s("gm_string_ensemble_1").gain(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@6 B C D E F G@2 H I J@2 ~@15 K@6 L M N O P Q ~@7 R S T U V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
  ~@13 AP AQ AR AS ~ AT AU ~@10
>`.pickRestart({
  A: "[~@11 [gb3,b3,eb4]@49 ~@2 [gb3,b3,eb4]@2 ~@7 eb4@2 ~@6 [ab3,c4,eb4]@24 ~ [ab3,c4,eb4] ~@3 [bb3,d4,f4]@36, ~@35 [gb3,b3] ~@36]/6", // B Ab Bb B5
  B: "[eb4,g4]@7 ~ [eb4,g4]@7 ~ [d4,ab4]@7 ~", C: "[d4,ab4]@7 ~ [d4,bb4]@6 ~@2 [d4,bb4]@6 ~@2",
  D: "[eb4,g4]@6 ~@2 [eb4,g4]@6 ~@2 [eb4,g4]@7 ~", E: "[eb4,g4]@5 ~@3 d4@5 ~@3 [d4,ab4]@6 ~@2, ~@8 ab4 ~@15",
  F: "[d4,bb4]@3 ~ [d4,bb4]@3 ~ [eb4,g4]@3 ~", // Gm Eb
  G: "[[eb4,g4]@6 ~@2 [bb3,eb4,g4]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 ~@3 g4@7 [a3,eb4,g4]@4 [a3,eb4,g4]@2 ~@3 g4@7 ~ [eb4,g4]@3, ~@20 [a3,eb4]@8 ~@8 [bb3,eb4]@7 ~ bb3@4]/2", // Eb Am7b5 Eb Adim Eb5
  H: "[bb3,eb4,g4]@4 [bb3,eb4,g4]@4 ~ g4@7 [a3,eb4,g4]@7 ~, ~ [bb3,eb4] ~", I: "[ab3,c4,eb4,g4]",
  J: "[~ g4@2 ~@2 [d4,f4]@22 ~@21, eb4@2 ~@2 [ab3,c4]@23 ~@21]/2", // Dm Ab
  K: "[~@13 [eb4,g4]@31 ~ f4@33 ~@2 [bb3,d4,f4]@25 ~@4 [d4,f4]@18 ~ [bb3,c4,e4]@13 ~@3, ~@12 [ab3,c4]@31 ~ [bb3,d4]@34 ~@30 bb3@18 ~@18]/6", // Eb Bb Dm C7 Ab Bb
  L: "[c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~ [c4,eb4,g4] ~@6 g4 [c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~, ~@7 [c4,eb4] ~@4", // Cm
  M: "[c4,eb4,g4] ~@7 [ab3,d4,f4]@3 ~ [ab3,d4,f4]@3 ~ [ab3,d4,f4] ~@6 f4, ~@11 [ab3,d4]", // Cm Ddim Abdim
  N: "[ab3,d4,f4]@3 ~ [ab3,d4,f4]@3 ~ [ab3,d4,f4] ~@3 [g3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [g3,d4,f4]@3 ~", // Ddim G7
  O: "[bb3,d4,f4] ~@6 f4 [g3,d4,f4]@3 ~ [g3,d4,f4]@3 ~ [bb3,d4,f4] ~@3 [g3,d4,f4]@2 ~@2, ~@3 [g3,d4] ~@8", // Bb G7 Bb G7 G5
  P: "~@2 [g3,d4,f4] ~@3 [g3,d4,f4]@2 [g3,bb3,c4,e4] ~@3", Q: "[g3,bb3,e4]@2 ~@6 [bb4,g5] ~@15",
  R: "~@8 [bb3,eb4,g4]@7 ~ [bb3,eb4,g4] ~@3 [a3,eb4,g4]@4", // Eb Am7b5
  S: "~@4 [a3,eb4,g4] ~@3 [a3,eb4,g4] ~@4 g4@7 [a3,eb4,g4] ~@3, ~@3 [bb3,eb4]@2 ~", // Am7b5 Eb5
  T: "[a3,eb4,g4] ~@3 [a3,eb4,f4] ~@3 [a3,eb4,g4]@2 ~@6 [a3,eb4,f4]@2 ~@6", U: "[c4,eb4]@5 ~",
  V: "[[c4,eb4] ~@3 [ab3,d4]@33 ~@3 [ab3,c4,eb4]@8]/2", // Cm Abdim Ab
  W: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4 [ab3,c4,eb4]@7 ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4", // Ab
  X: "[ab3,c4,eb4]@7 ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4 [ab3,c4,eb4]@7 ~", // Ab
  Y: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4 [a3,c4,eb4]@8 [c4,eb4] ~@3 [a3,c4,eb4]@4", // Ab Adim Cm Adim
  Z: "[a3,c4,eb4]@8 [a3,c4,eb4] ~@3 [a3,c4,eb4]@4 [a3,c4,eb4]@8", // Adim
  AA: "[c4,eb4] ~@3 [a3,c4,eb4]@4 [a3,c4,eb4]@7 ~ [a3,c4,eb4] ~@3 [a3,c4,eb4]@4", // Cm Adim
  AB: "[bb3,eb4,g4]@7 ~ [eb4,g4] ~@3 [bb3,eb4,g4]@4 [bb3,eb4,g4]@8", // Eb
  AC: "[bb3,eb4,g4] ~@3 [bb3,eb4,g4]@4 [b3,d4,g4]@7 ~ [b3,d4,g4] ~@3 [b3,d4,g4]@4", // Eb G
  AD: "[b3,d4,g4]@8 [b3,d4,g4] ~@3 [b3,d4,g4]@4 [c4,eb4,g4]@7 ~", // G Cm
  AE: "[c4,eb4,g4] ~@3 [c4,eb4,g4]@4 [c4,eb4,g4]@8 [c4,eb4,g4] ~@3 [c4,eb4,g4]@4", // Cm
  AF: "[bb3,eb4,g4]@7 ~ [eb4,g4] ~@3 [bb3,eb4,g4]@4 [bb3,db4,g4]@8", // Eb Gdim
  AG: "[bb3,db4,g4] ~@3 [bb3,db4,g4]@4 [ab3,c4,eb4]@7 ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4", // Gdim Ab
  AH: "[ab3,c4,eb4]@8 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4 [ab3,c4,eb4]@7 ~", // Ab
  AI: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4 [ab3,c4,eb4]@8 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]@4", // Ab
  AJ: "[a3,c4,eb4]@7 ~ [c4,eb4] ~@3 [a3,c4,eb4]@4 [a3,c4,eb4]@8", // Adim Cm Adim
  AK: "[a3,c4,eb4] ~@3 [a3,c4,eb4]@4 [a3,c4,eb4]@7 ~ [c4,eb4] ~@3 [a3,c4,eb4]@4", // Adim Cm Adim
  AL: "[a3,c4,eb4]@8 [a3,c4,eb4] ~@3 [a3,c4,eb4]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4]@4", // Adim Eb
  AM: "[eb4,g4] ~@3 [bb3,eb4,g4]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4] ~@3 [bb3,eb4,g4]@4", // Eb
  AN: "[b3,d4,g4]@4 [b3,d4,g4]@4 [b3,d4,g4] ~@3 [b3,d4,g4]@4 [b3,d4,g4]@4 [b3,d4,g4]@4", // G
  AO: "[b3,d4,g4] ~@3 [b3,d4,g4]@4 ~@16", AP: "[c5,eb5,g5] ~@15 [c5,eb5,g5] ~@7", AQ: "~@8 [bb4,d5,f5] ~@15",
  AR: "[bb4,d5,f5] ~@15 [g4,c5,eb5] ~@7", AS: "~@8 [g4,c5,eb5] ~@15",
  AT: "[b4,eb5,gb5]@4 [b4,eb5,gb5]@2 ~ gb5 [b4,eb5,gb5]@4 [b4,eb5,gb5]@2 [b4,eb5,gb5]@2 [b4,eb5,gb5]@4 [b4,eb5,gb5]@2 [b4,eb5,gb5]@2, ~@3 [b4,eb5] ~@8", // B
  AU: "[b4,eb5,gb5]@4 [b4,eb5,gb5]@2 ~ gb5 ~@16, ~@3 [b4,eb5] ~@8", // B
})).s("gm_acoustic_guitar_steel").gain(0.13)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B C@2 D E F G@2 H I J ~@19 K L ~@3 M@2 ~@5 N O P Q R@2 S T U ~@4 V@3 W@3 X Y@3 Z AA@3 AB@2 AC@2 AD AE@2 ~@18 AF AG
  AH AI AJ AK AL AM AN AO AP
>`.pickRestart({
  A: "~@19 b3@4 ~", B: "gb3@4 a3@4 b3@4 gb3@4 ~ a3@7", C: "[~ b3@4 a3@4 ~ gb3@8 b3@4 gb3@4 ~ b3@4 c4@8 bb3@4 ~ c4@4]/2",
  D: "eb4@4 bb3@4 c4@4 [d4,f4]@7 ~@5, ~@3 bb3 ~@2", E: "bb3!6", F: "~@2 eb3 f3 g3@2 eb3@2 d3@2 f3@2",
  G: "[d3@4 f3@4 d3@4 f3@4 d3@4 eb3@8 c3@2 d3@2 eb3@2 d3@2 c3@3 ~@5 eb3@2 f3@2]/2",
  H: "g3@4 eb3@4 d3@4 f3@4 d3@4 f3@3 ~", I: "d3 f3 d3 eb3@2 ~", J: "g3 f3@3 ~@8", K: "~ [f3,f4]@5",
  L: "[e3,e4]@11 ~@13", M: "[~@12 [f3,f4]@20 [e3,e4]@11 ~@5]/2", N: "~@8 [c4,eb4]@6 ~@2 [c4,eb4]@5 ~@3",
  O: "[ab3,eb4]@5 ~@3 [ab3,eb4]@6 ~@2 [bb3,d4]@6 ~@2", P: "[bb3,d4]@2 ~@3 eb4@11 [c4,eb4]@6 ~@2, ~@4 c4@11 ~@9",
  Q: "[c4,eb4]@6 ~@2 [c4,eb4]@5 ~@3 [ab3,eb4]@5 ~@3", // Cm Ab5
  R: "[[ab3,eb4]@6 ~@2 [bb3,d4]@6 ~@2 [bb3,d4]@2 ~@3 eb4@11 [c4,eb4]@6 ~@2 [c4,eb4]@6 ~@2, ~@20 c4@11 ~@17]/2", // Ab5 Bb Cm
  S: "[c4,eb4]@5 ~@3 [ab3,eb4]@5 ~@3 [ab3,eb4]@6 ~@2", T: "[bb3,d4]@6 ~@2 [bb3,d4]@2 ~@3 eb4@11, ~@12 c4@11 ~",
  U: "[c4,eb4] ~@3", V: "[~@4 [eb3,eb4]@11 ~ [eb3,eb4] [d3,d4]]/3",
  W: "[[c3,c4]@4 [d3,d4]@4 [eb3,eb4]@31 ~ [eb3,eb4]@15 ~ [eb3,eb4]@8 [f3,f4]@7 ~]/3", X: "[g3,g4]",
  Y: "[~@4 [g3,g4] ~@3 [g3,g4]@22 ~@2 [g3,g4]@2 ~@2 [g3,g4]@2 ~@2 [g3,g4]@22 ~@2 [g3,g4]@5 ~@3]/3", // G
  Z: "[g3,g4]@14 ~@2 [g3,g4]@7 ~", AA: "[[f3,f4]@7 ~ [eb3,eb4]@45 ~@3 [eb3,eb4]@4 [d3,d4]@4 [c3,c4]@4 [d3,d4]@3 ~]/3",
  AB: "[[eb3,eb4]@11 ~]/2", AC: "[[eb3,eb4]@7 ~ [f3,f4]@7 ~ [g3,g4]@25 ~@3 [g3,g4] ~@3]/2", AD: "[g3,g4]@7 ~",
  AE: "[[g3,g4]@7 ~ [g3,g4]@32 ~@8]/2", // G
  AF: "~@8 [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6]@2 [db5,db6]@2", // Db
  AG: "~@2 [db5,db6] ~ [db5,db6]@3 ~ [db5,db6]@3 ~ [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6] ~ [db5,db6] ~@3", // Db
  AH: "[db5,db6]@3 ~ [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6]@2 [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6] ~ [db5,db6]@2 [db5,db6] ~", // Db
  AI: "[db5,db6]@3 ~ [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6]@2 ~@2 [db5,db6]@2 [db5,db6]@2", // Db
  AJ: "[db5,db6]@2 [db5,db6] ~ [db5,db6]@2 [db5,db6] ~ [db5,db6]@3 ~ [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6]@4", // Db
  AK: "~@4 [db5,db6] ~ [db5,db6] ~ [db5,db6]@2 [db5,db6] ~ [db5,db6]@2 [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6] ~", // Db
  AL: "[db5,db6]@2 ~@2 [db5,db6]@2 [db5,db6]@3 ~ [db5,db6] ~ [db5,db6]@3 ~ [db5,db6]@3 ~ [db5,db6]@2 ~@2", // Db
  AM: "[db5,db6] ~ [db5,db6] ~ [db5,db6] ~@3 [db5,db6]@3 ~ [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6]@2 [db5,db6]@2 ~@2", // Db
  AN: "[db5,db6] ~ [db5,db6] ~ [db5,db6]@2 [db5,db6] ~ [db5,db6]@3 ~ [db5,db6] ~ [db5,db6]@2 ~@2 [db5,db6] ~ [db5,db6]@2 ~@2", // Db
  AO: "[db5,db6]@2 ~@2 [db5,db6]@2 [db5,db6]@2 [db5,db6]@2 [db5,db6] ~ [db5,db6]@2 [db5,db6] ~ eb5 ~@3 eb5 ~@3", // Db
  AP: "eb5 ~@3 eb5 ~ b4@3 ~ db5@2 [b4,eb5]@2 ~@10", // B
})).s("gm_electric_guitar_jazz").gain(0.19)

// chords · harpsichord
const harpsichord = note(`<
  ~@16 A@3 B@3 C D@5 ~@30 E F@3 G H@3 I J@3 K@2 L@2 M N O P Q R S T U V W X Y Z@2 ~@5 AA AB@2 AC AD AE@2 AF AG AH@2 AI
>`.pickRestart({
  A: "[~@12 [ab4,c5,eb5,g5]@25 ~@3 [ab4,c5,eb5,g5] ~@3 [ab4,bb4,d5,f5]@27 ~]/3", // Abmaj7 Bb7
  B: "[d5@4 [g4,bb4,d5,f5]@26 ~@2 d5@4 [g4,bb4,d5,f5]@15 ~ [g4,bb4,c5,e5]@19 ~]/3", C: "[ab4,c5,eb5]@7 ~, g5@11 ~@13",
  D: "[[ab4,c5,eb5,g5] ~@3 [ab4,bb4,d5,f5]@30 ~@2 [g4,bb4,d5,f5]@28 d5@4 [g4,bb4,d5,f5]@15 ~ [g4,bb4,c5,e5]@19 ~@17]/5", // Abmaj7 Bb7 Gm7 C7
  E: "~@4 [eb4,eb5] [d4,d5]", // Eb D
// … 194 more lines

More by The Supremes