Strudelify

I Hear a Symphony

The Supremes

KeyF majorTempo120 bpm
0:00/0:00
// I Hear a Symphony — The Supremes
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "Guitar Rhythm/Chords" named as a guitar, played on electric guitar clean (its synth brass 1 patch is not one); ch 7 "Bells" named as a mallet, played on tubular bells (its piano patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 103 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · epiano2 · "ElPiano Chords"
const epiano2 = note(`<
  ~@4 A@2 B@2 C@2 D E F@2 G H I J K L M@2 B@2 N@2 D O P@2 Q R S T U@2 V W X@2 Y Z AA@2 AB@2 AC AD AE AF AG@2 AH@2 AI@2
  AJ AK AL@2 AM AN AO@2 AP AQ AR@2 AM AN AS@2 AT AU AV@2 AW@2 AX@2 AJ AK AV@2 AW@2 AY@7 AN AO@2 AP AQ AR@2 AM AZ ~
>`.pickRestart({
  A: "[b4@28 ~@16 g5@3 ~, [g2,b3,g4]@47 ~, d5@16 d5@7 ~, ~@28 b4@12 b4@7 ~, ~@18 b5@5 ~]/2", // G
  B: "[a4@28 ~@16 gb5@3 ~, [gb3,a3,gb4]@47 ~, d5@16 d5@7 ~, ~@28 a4@12 a4@7 ~, ~@18 a5@5 ~]/2", // Gbm
  C: "[~@21 d4@2 ~, [gb3,a3]@23 ~, [d4,f4]@18 f4@5 ~, ~@17 a4@6 ~]/2", // Gbm Dm
  D: "~@20 c5@3 ~, [a2,g3,c4,e4]@23 ~, ~@12 a5@11 ~, ~@8 e5@3 ~", E: "[g3,c4,e4]@5 ~ [c4,d4,gb4,a4]@5 ~",
  F: "[~@12 b4@4 d5@4 ~@4 d5@13 ~@3 g2@2 [b3,g4,d5]@2 b4 ~@3, ~@4 b3@37 ~@7, ~@4 g4@15 ~@5, ~@20 b4@17 ~@5 b4 ~@5]/2", // G
  G: "a3@8 ~@2 gb4 a4, [d4,gb4,a4]@18 d4@5 ~, ~@2 a3", H: "~@5 a3, a5@2 gb4, ~ gb5@5, ~ d5@2, ~ a4",
  I: "[a3,f4,a4]@7 ~@5 [a3,f4,a4,f5]@3 ~ [f4,a4,d5] ~@7, ~@8 a3 ~@3", // Dm
  J: "~@10 d5 ~ [a3,f4,f5]@6 [a3,f4,d5]@3 ~@3, ~@4 a4@3 ~", K: "~@5 g3, e5@2 c4, ~ c5@5, ~ a4@2, ~ e4",
  L: "c4@4 g3 c4 d4@4 c4 d4, [e4,g4] [gb4,a4], g3 ~ c4 ~", // Em Gbm
  M: "[b3@25 ~@11 b4@4 ~@4 b4@4, g2, d5@19 ~ d5@4, b4@2 g4, g4@7 b3@5]/2",
  N: "[~@44 a4@3 ~, ~@4 a3@43 ~, ~@8 f4@39 ~, ~@12 a4@28 d5@7 ~, ~@12 d5@24 f5@11 ~]/2",
  O: "c4@4 b3 c4 [c4,d4,gb4,a4]@5 ~, [e4,g4] ~, b3 ~@3", P: "[[g3,c4,eb4,g4]@20 c3 [g3,c4,eb4,g4]@2 ~]/2",
  Q: "[f3,bb3,d4,f4]@8 ~ [f3,bb3,d4,f4]@2 ~, bb2@14 ~@2 bb2@5 ~@3", // Bb
  R: "[g3,bb3,d4]@5 ~ a3@4 g3 a3, ~ [c4,e4], ~@2 g3 ~", S: "~@5 [d4,g4,b4]@7, ~ g2@5, ~ b3@3",
  T: "[db4,f4,ab4,bb4]@3 [bb3,db4,eb4,g4]@3 bb3@4 g3 bb3, ~ [db4,eb4], ~@2 g3 ~", // Bbm7 Eb7 Dbsus2
  U: "[~@12 c5@4 eb5@4 ~@4 eb5@13 ~@3 ab2@2 [c4,ab4,eb5]@2 c5 ~@3, ~@4 c4@37 ~@7, ~@4 ab4@15 ~@5, ~@20 c5@17 ~@5 c5 ~@5]/2", // Ab
  V: "[g3,eb4,g4]@7 ~@5 [g3,eb4,g4,eb5]@3 ~ [eb4,g4,bb4] ~@7, ~@8 g3 ~@3", // Cm Eb
  W: "~@10 bb4 ~ [g3,eb4,eb5]@6 [g3,eb4,bb4]@3 ~@3, ~@4 g4@3 ~", // Cm Eb
  X: "[~@12 gb4@4 bb4@4 ~@4 bb4@13 ~@3 gb2@2 [gb3,eb4,bb4]@2 gb4 ~@3, ~@4 gb3@37 ~@7, ~@4 eb4@15 ~@5, ~@20 gb4@17 ~@5 gb4 ~@5]/2", // Ebm
  Y: "~@16 bb4@7 ~, [f3,db4,f4]@23 ~", Z: "~@3 db4@3 ~@2 [ab3,b3,d4,e4]@4, [ab3,f4,ab4] ~",
  AA: "[[e3,a3,db4,e4]@20 a2 [e3,a3,db4,e4]@2 ~]/2", // A
  AB: "[~@44 ab4@3 ~, ~@4 ab3@43 ~, ~@8 e4@39 ~, ~@12 ab4@28 b4@7 ~, ~@12 b4@24 e5@11 ~]/2",
  AC: "~@20 e5@3 ~, [g2,g3,e4,g4]@23 ~, ~@12 b5@11 ~, ~@8 g5@3 ~", // C
  AD: "~@5 [b3,e4,g4]@3 ~ [g3,b3,e4,g4]@2 ~, ~@4 g2@11 ~ g2@6 ~@2, ~@3 g3@5 ~@4", // Em
  AE: "~@20 d5@3 ~, [b2,gb3,d4,gb4]@23 ~, ~@12 b5@11 ~, ~@8 gb5@3 ~", // Bm
  AF: "[a3,d4,gb4]@5 ~ c4@4 a3 c4, ~ [eb4,f4], ~@2 a3 ~", // D Ebsus2
  AG: "[~@44 f4@3 ~, ~@4 f3@43 ~, ~@8 d4@39 ~, ~@12 f4@28 bb4@7 ~, ~@12 bb4@24 d5@11 ~]/2",
  AH: "[~@22 a3 ~, a2@20 c4@3 ~, a3@18 f4@5 ~, c4@14 a4@9 ~, [f4,a4]@12 c5@11 ~]/2", // F
  AI: "[~@20 ab4@3 ~, ab2@47 ~, ab4@18 f4@5 ~, f4@32 c4@15 ~, c4@28 ab3@19 ~]/2",
  AJ: "~@5 [c4,eb4,g4]@7, ~ c3@5, ~ g3@3", AK: "c4@4 a3 c4 c4@2 ~@2 c4@2, [f4,a4] [eb4,f4], a3@6 ~@6 a3@3 ~ a3@8",
  AL: "[[d4,f4]@16 ~@2 bb4@4 f4@11 ~@3 [f3,d4,bb4]@4 ~@2 [f3,d4,f4]@4 ~@2, bb2@16 ~ bb2@2 ~ bb2@2 ~@2, f3@7 ~ f3@5 ~@11, ~@9 d4@8 ~@7]/2", // Dm Bb Dm
  AM: "[a3,f4,a4]@7 ~@5 [a3,f4,a4,f5]@3 ~ [f4,a4,c5] ~@7, ~@8 a3 ~@3", // Dm F
  AN: "~@10 c5 ~ [a3,f4,f5]@6 [a3,f4,c5]@3 ~@3, ~@4 a4@3 ~", // Dm F
  AO: "[~@42 ab4@3 ~ f4 ~, [ab3,f4]@11 ~, c5@34 ab4@4 c5@7 ~@3, ~@11 ab2@11 ~@2, ~@17 f5@5 ~@2]/2", // Db
  AP: "g3@8 ~@2 eb4 g4, [c4,eb4,g4]@18 c4@5 ~, ~@2 g3", AQ: "~@3 c4@3 c4@4 a3 c4, [a3,f4,a4] [eb4,f4], ~@2 a3 ~",
  AR: "[~@12 f4@4 bb4@4 ~@4 bb4@13 ~@3 bb2@2 [f3,d4,bb4]@2 f4 ~@3, ~@4 f3@37 ~@7, ~@4 d4@15 ~@5, ~@20 f4@17 ~@5 f4 ~@5]/2", // Bb
  AS: "[~@12 ab4@4 c5@4 ~@4 c5@13 ~@3 ab2@2 [ab3,f4,c5]@2 ab4 ~@3, ~@4 ab3@37 ~@7, ~@4 f4@15 ~@5, ~@20 ab4@17 ~@5 ab4 ~@5]/2", // Fm
  AT: "~@12 c4@11 ~, [g3,eb4,g4]@23 ~", AU: "~@2 [a3,c4,f4,a4]@4 c4@4 a3 c4, ~ [eb4,f4], ~@2 a3 ~",
  AV: "[~@20 f4@3 ~, bb2@47 ~, f4@18 d4@5 ~, d4@32 bb3@15 ~, bb3@28 f3@19 ~]/2",
  AW: "[a4@28 ~@16 f5@3 ~, [a2,a3,f4]@47 ~, c5@16 c5@7 ~, ~@28 a4@12 a4@7 ~, ~@18 a5@5 ~]/2", // Dm
  AX: "[~@21 c4@2 ~, [ab2,ab3]@23 ~, [c4,f4]@18 f4@5 ~, ~@17 ab4@6 ~]/2", // Ab F5
  AY: "[~@17 c4@7 c3@8 ~@9 f4@7 f3@8 ~@13 f4@3 [a3,f4,a4]@6 [a3,f4,a4]@2 [a3,f4,a4,c5]@4, ab2@24 [g3,c4,eb4,g4]@8 c3@9 [c4,a4]@18 f4@10 ~@9 f5@6, [c4,f4]@17 [f4,ab4]@21 f2@10 [d4,f4]@8 f3@10 [f3,d4]@3 [f3,d4]@15, ab3@5 ab3@6 c4@2 a3@6 [d4,bb4]@3 bb4@6, ~@14 f2@19 [g3,eb4,g4]@15 bb2@17 bb2@3 bb2@16]/7", // Dm F Cm F F5 Fm Dm Gm …
  AZ: "~@10 c5 ~@13",
})).s("gm_epiano2").gain(0.4)

// bass · bassoon · "SlapBass"
const bass = note(`<
  ~@4 A B C D E F G H I J K L M N O P Q R C D S T G U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM Z@2 AN AO AP AQ
  AR AS AT AU AV AW AX AY AZ BA BB BC BD BE AX BF AZ BG BH BI BD BE BJ BK AJ BL BM AM BN BO BJ BK AJ BL BM BP AV BP AX
  AY AZ BA BB BC BD BE AX BF AZ BQ ~
>`.pickRestart({
  A: "g2@2 ~@2 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~", B: "g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 db2 ~",
  C: "gb2@2 ~@2 gb2 ~ gb2 ~@3 gb2 ~ gb2 ~@3 gb2 ~ gb2 ~@3 gb2 ~",
  D: "gb2 ~@3 gb2 ~ gb2 ~@3 gb2 ~ gb2 ~@3 gb2 ~ gb2 ~@3 db2 ~",
  E: "gb2@2 ~@2 gb2@2 gb2@2 ~@2 gb2 ~ gb2@2 ~@2 gb2 ~ gb2@2 ~@2 gb2 ~",
  F: "gb2@2 ~@2 gb2 ~ gb2@2 ~@2 gb2 ~ gb2@2 ~@2 gb2 ~ gb2 ~ gb2 ~ gb2 ~",
  G: "a1 ~@3 a1 ~ a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~", H: "c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ d2 ~@3 d2 ~ d2@2 ~@4",
  I: "g2@3 ~ g2 ~@5 d2@2 g2@3 ~ g2 ~@5 d2@2", J: "g2@4 g2 ~@5 d2@2 g2@3 ~ g2@2 ~@2 g2 ~ g2 ~",
  K: "gb2@3 ~ gb2 ~@5 gb2 ~ gb2@2 ~@2 gb2@2 b1@2 ~@2 db2 ~", L: "gb2@4 gb2 ~@5 a1@2 gb2@3 ~ gb2 ~@5 gb2 ~",
  M: "f2@3 ~ f2 ~@5 a1@2 f2@3 ~ f2 ~@5 a1@2", N: "f2@3 ~ f2@2 ~@4 a1@2 f2@3 ~ a1 ~ f2@3 ~@3",
  O: "a1@3 ~ a1 ~@5 a1 ~ a1@2 ~@2 a1@2 a1@2 ~@2 a1 ~", P: "c2@3 ~ c2 ~@5 g1 ~ d2@3 ~ d2 ~@5 d2 ~",
  Q: "g2@2 ~@2 g2@2 g2@2 ~@2 g2 ~ g2@2 ~@2 g2 ~ g2@2 ~@2 g2 ~",
  R: "g2@2 ~@2 g2 ~ g2@2 ~@2 g2 ~ g2@2 ~@2 g2 ~ g2 ~ g2 ~ g2 ~",
  S: "f2@2 ~@2 f2@2 f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~",
  T: "f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2 ~ f2 ~ f2 ~", U: "c2 ~@3 c2 ~ c2@2 ~@4 d2 ~@3 d2 ~ d2@2 ~@4",
  V: "c2@2 ~@2 c2@2 c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~",
  W: "c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2 ~ c2 ~ c2 ~",
  X: "bb1 ~@3 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1@2 a2 ~ gb2 ~",
  Y: "g2@2 ~@2 g2 ~ g2@2 ~@2 d2 ~ a1 ~@3 a1 ~ a1@2 ~@4", Z: "g2 ~@3 g2 ~ g2@2 ~@2 g2 ~ g2@2 ~@2 g2 ~ g2@2 ~@2 g2 ~",
  AA: "bb1@4 ~@2 eb2@4 ~@2 eb2 ~@3 eb2 ~ eb2@2 ~@4", AB: "ab2@3 ~ ab2 ~@5 eb2@2 ab2@3 ~ ab2 ~@5 eb2@2",
  AC: "ab2@3 ~ ab2@2 ~@4 eb2@2 ab2@3 ~ eb2 ~ ab2@3 ~@3", AD: "g2@3 ~ g2 ~@5 bb1@2 g2@3 ~ g2 ~@5 bb1@2",
  AE: "g2@3 ~ g2@2 ~@4 bb1@2 g2@3 ~ bb1 ~ g2@3 ~@3", AF: "gb2@3 ~ gb2 ~@5 bb1@2 gb2@4 gb2 ~@5 bb1@2",
  AG: "gb2@3 ~ gb2 ~@5 bb1@2 gb2@2 ~@2 gb2@2 gb2@2 ~@2 gb2 ~", AH: "bb1@4 bb1 ~@5 f1@2 bb1@2 ~@2 bb1@2 ~@2 bb1 ~ bb1 ~",
  AI: "db2@3 ~ db2 ~@5 db2 ~ e2@3 ~ e2 ~@5 e2 ~", AJ: "a1@2 ~@2 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1 ~",
  AK: "a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 eb2 ~",
  AL: "ab2@2 ~@2 ab2@2 ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~",
  AM: "ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2 ~ ab2 ~ ab2 ~",
  AN: "b1 ~@3 b1 ~ b1@2 ~@2 b1 ~ b1@2 ~@2 b1@2 b1@2 b1 ~ b1 ~",
  AO: "d2@2 ~@2 d2 ~ d2@2 ~@2 d2@2 f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~",
  AP: "bb1@2 ~@2 bb1 ~ bb1 ~@3 bb1 ~ bb1 ~@3 bb1 ~ bb1 ~@3 bb1 ~",
  AQ: "bb1 ~@3 bb1 ~ bb1 ~@3 bb1 ~ bb1 ~@3 bb1 ~ bb1 ~@3 e2 ~",
  AR: "a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ a1@2 c2@2 d2@2",
  AS: "a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ a1@2 ~@2 a1 ~ a1 ~ a1 ~ a1 ~",
  AT: "ab2@2 ~@2 ab2 ~ ab2 ~@3 ab2 ~ ab2 ~@3 ab2 ~ ab2 ~@3 ab2 ~",
  AU: "ab2 ~@3 ab2 ~ ab2 ~@3 ab2 ~ ab2 ~@3 ab2 ~ ab2 ~@3 b1 ~",
  AV: "c2 ~@3 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2@2 c2@2 c2 ~ c2 ~",
  AW: "f2@2 ~@2 f2 ~ f2@2 ~@2 f2@2 f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~", AX: "bb1@4 bb1 ~@5 f1@2 bb1@2 ~@2 bb1@2 ~@4 f1@2",
  AY: "bb1@3 ~ bb1 ~@5 f1@2 bb1@4 c2@2 bb1@3 ~ eb2 ~", AZ: "a1@3 ~ a1 ~@5 c2@2 a1@3 ~ a1 ~@5 c2@2",
  BA: "a1@4 a1 ~@5 c2@2 a1@3 ~ a1@2 ~@2 g2 ~ a1 ~", BB: "ab2@3 ~ ab2 ~@5 c2@2 ab2@4 ab2 ~@5 c2@2",
  BC: "ab2@3 ~ ab2 ~@5 c2@2 ab2@2 ~@2 ab2@2 ab2@2 ~@2 ab2 ~", BD: "c2@4 c2 ~@5 g1@2 c2@3 ~ c2 ~@5 c2 ~",
  BE: "f2@3 ~ f2 ~@5 c2 ~ f2@3 ~ f2 ~@5 c2 ~", BF: "bb1@3 ~ bb1 ~@5 f1@2 bb1@4 c2@2 bb1@3 ~ bb1 ~",
  BG: "a1@3 ~ a1@2 ~@4 c2@2 a1@3 ~ c2 ~ a1@3 ~@3", BH: "ab2@3 ~ ab2 ~@5 c2@2 ab2@3 ~ ab2 ~@5 c2@2",
  BI: "ab2@3 ~ ab2@2 ~@4 c2@2 ab2@3 ~ c2 ~ ab2@3 ~@3",
  BJ: "bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~",
  BK: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  BL: "a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 e2 ~",
  BM: "ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2@2 c2@2 d2@2",
  BN: "c2 ~@3 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~",
  BO: "f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2@2",
  BP: "f2 ~@3 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~", BQ: "a1@3 ~ a1@2 ~@4 c2@2 ~@12",
})).s("gm_bassoon").gain(0.56)

// chords · electric guitar clean · "Guitar Rhythm/Chords"
const electric_guitar_clean = note(`<
  ~@4 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BB BS BT BU BV BW BZ CA CB
  BC BD BE BF BG BH BI BJ BK BL BM CC ~
>`.pickRestart({
  A: "~@4 g2@2 [d4,g4,b4]@3 ~@5 [g3,d4]@2 ~@2 [g3,d4]@5 ~", B: "~@4 g2 ~ [d4,g4,b4]@3 ~@5 [g3,d4] ~ g2@2 [g3,d4]@3 ~@3",
  C: "~@4 gb3@2 [d4,gb4,a4]@3 ~@5 [gb3,d4]@2 ~@2 [gb3,d4]@5 ~", // D
  D: "~@4 gb3 ~ [d4,gb4,a4]@3 ~@5 [gb3,d4] ~ gb3@2 [gb3,d4]@3 ~@3", // D
  E: "~@4 gb3@2 [d4,f4,a4]@3 ~@5 [f3,d4]@2 ~@2 [f3,d4]@5 ~", // Dm
  F: "~@4 gb3 ~ [d4,f4,a4]@3 ~@5 [f3,d4] ~ gb3@2 [f3,d4]@3 ~@3", // Dm
  G: "~@2 g3@2 a3@2 [g3,a3,c4,e4]@3 ~ [g3,a3,c4]@2 ~@4 a2 ~ [g3,a3,c4]@3 ~@3", // Am7
  H: "[g3,c4,e4]@3 ~ c3@2 [g3,c4,e4]@2 ~@6 [c4,d4,gb4,a4] ~ d3@2 [c4,d4,gb4]@3 ~@3", // C D7
  I: "~@2 [d4,g4] ~ b3@2 [d4,g4]@4 [d4,g4] ~@5 [g3,b3] ~ [d4,g4]@3 ~@3", // G5 G G5
  J: "[d4,g4]@3 ~ b3 ~ [d4,b4]@3 ~ [d4,g4] ~@5 g2@2 [g3,d4]@2 g2@2 [g3,d4]@2", // G5 G G5
  K: "~@2 gb3@2 ~@2 [d4,gb4,a4]@4 [d4,gb4,a4] ~@5 gb3@2 [gb3,d4,gb4]@3 ~@3", // D
  L: "~@4 gb3@2 [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~@5 gb3 ~ [a3,d4,gb4] ~@5", // D
  M: "~@2 [d4,f4] ~ a3@2 [d4,f4]@4 [d4,f4] ~@5 [f3,a3] ~ [d4,f4]@3 ~@3", // Dm F Dm
  N: "[d4,f4]@3 ~ a3 ~ [d4,a4]@3 ~ [d4,f4] ~@5 f3@2 d4@2 f3 ~ [f3,d4]@2", // Dm D5 Dm
  O: "~@4 a2@2 [a3,c4,e4]@3 ~ [a3,c4,e4] ~@5 a2@2 [c3,g3]@3 ~@3, ~@3 g3@2 ~@7", // Am C5
  P: "[g3,c4,e4]@2 ~@6 d3 [c4,d4,gb4,a4]@2 ~", Q: "~@6 [g3,b3,d4]@3 ~@9 [g3,b3,d4]@2 ~@4",
  R: "~@6 [g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~@6 [g3,b3,d4]@2 ~@4", S: "~@6 [a3,d4,gb4]@3 ~@9 [a3,d4,gb4]@2 ~@4",
  T: "~@6 [a3,d4,gb4]@3 ~ [a3,d4,gb4]@2 ~@6 [a3,d4,gb4]@2 ~@4", // D
  U: "~@4 f3@2 [d4,f4,a4]@3 ~@5 [f3,d4]@2 ~@2 [f3,d4]@5 ~", V: "~@4 f3 ~ [d4,f4,a4]@3 ~@5 [f3,d4] ~ f3@2 [f3,d4]@3 ~@3",
  W: "~@4 a2@2 [c4,e4,g4,a4]@3 ~ [c4,e4,g4,a4] ~@5 a2@2 [c4,e4,g4,a4]@2 ~@4", // Am7
  X: "~@4 c3 ~ [b3,c4,e4,g4]@3 ~@3 [c4,d4,gb4,a4]@3 ~ d3@2 [c4,d4,gb4,a4]@2 ~@4", // Cmaj7 D7
  Y: "~@4 c3@2 [g3,c4,eb4,g4]@3 ~@7 c3@2 [g3,c4,eb4,g4]@3 ~@3", // Cm
  Z: "~@4 c3@2 [g3,c4,eb4,g4]@3 ~ [g3,c4,eb4,g4] ~@5 c3 ~ [g3,c4,eb4,g4]@3 ~@3", // Cm
  AA: "~@4 bb2 ~ [f3,bb3,d4,f4]@3 ~@7 bb2 ~ [f3,bb3,d4,f4]@3 ~@3", // Bb
  AB: "~@4 g2 ~ [bb3,d4,g4,bb4]@3 ~@3 [c4,e4,g4,a4]@3 ~ a2@2 [c4,e4,g4,a4]@2 ~@4", // Gm Am7
  AC: "~@4 g2 ~ [b3,d4,g4,b4]@3 ~@7 g2 ~ [b3,d4,g4,b4]@3 ~@3", // G
  AD: "[ab3,db4]@4 ~@2 [g3,db4]@4 ~@6 eb2 ~ [g3,bb3,db4,eb4]@3 ~@3", // Db5 Gdim Eb7
  AE: "~@2 [eb4,ab4,c5] ~ ab2 ~ [eb4,ab4,c5]@3 ~ [eb4,ab4,c5] ~@5 c4 ~ [eb4,ab4,c5]@3 ~ [eb4,ab4,c5]@2", // Ab
  AF: "~@2 c5 ~ c4 ~ [eb4,ab4,c5]@3 ~ [eb4,ab4,c5] ~@5 c4 ~ [eb4,ab4,c5]@2 ~@4", // Ab
  AG: "~@2 [bb3,eb4] ~ g3@2 [bb3,eb4]@4 [bb3,eb4] ~@5 [eb3,g3] ~ [bb3,eb4]@3 ~@3", // Eb5 Eb Eb5
  AH: "[bb3,eb4]@3 ~ g3 ~ [bb3,g4]@3 ~ [bb3,eb4] ~@5 g2@2 [eb3,bb3]@2 g2@2 [eb3,bb3]@2", // Eb5 Eb Eb5
  AI: "~@2 [bb3,eb4] ~ eb3 ~ [bb3,eb4]@3 ~ [bb3,eb4]@3 ~ [eb3,bb3]@2 ~@2 [eb3,bb3]@4 [eb3,bb3]@2", // Eb5
  AJ: "~@2 [bb3,eb4] ~ eb3 ~ [bb3,eb4]@4 [bb3,eb4] ~@3 eb3 ~ bb3@2 eb3 ~ bb3 ~ eb3 ~", // Eb5
  AK: "~@6 [db4,f4] ~ bb3 ~ f3 ~ [db4,f4] ~ bb3 ~ f3@2 [bb3,db4]@3 ~@3", // Db Bbm
  AL: "[ab3,db4,f4,ab4]@3 ~ db3@2 [ab3,db4,f4]@3 ~@7 e2@2 [ab3,b3,d4,e4]@4 ~@2", // Db E7
  AM: "~@4 a2 ~ [e3,a3,db4,e4]@3 ~@7 a2 ~ [e3,a3,db4,e4]@3 ~@3", // A
  AN: "~@4 a2 ~ [e3,a3,db4,e4]@4 ~@6 a2 ~ [e3,a3,db4,e4]@3 ~ [e3,a3,db4,e4] ~", // A
  AO: "~@6 [ab3,b3,e4]@3 ~@9 [ab3,b3,e4]@2 ~@4", AP: "~@6 [ab3,b3,e4]@3 ~ [ab3,b3,e4]@2 ~@6 [ab3,b3,e4]@2 ~@4",
  AQ: "~@6 [g3,b3,e4]@3 ~@7 g2@2 [g3,b3,e4]@3 ~@3", AR: "~@4 g2@2 [g3,b3,e4]@3 ~ [g3,b3,e4] ~@5 g2@2 [g3,b3,e4]@2 ~@4",
  AS: "~@4 b2 ~ [gb3,b3,d4,gb4]@3 ~@7 b2 ~ [gb3,b3,d4,gb4]@3 ~@3", // Bm
  AT: "~@4 d3 ~ [a3,d4,gb4,a4]@3 ~@5 [a3,c4,eb4,f4] ~ f2@2 [a3,c4,eb4]@3 ~@3", // D F7 Adim
  AU: "~@4 bb2 ~ [f3,bb3,d4,f4]@3 ~@9 [f3,bb3,d4,f4]@3 ~@3", // Bb
  AV: "~@4 bb2 ~ [f3,bb3,d4,f4]@3 ~ bb2 ~ [f3,bb3,d4,f4]@3 ~ bb2 ~ [f3,bb3,d4,f4]@3 ~@3", // Bb
  AW: "~@6 [a3,c4,f4]@3 ~@9 [a3,c4,f4]@3 ~ [a3,c4,f4] ~", AX: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@2",
  AY: "~@4 ab2 ~ [ab3,c4,f4,ab4]@3 ~@7 ab2 ~ [ab3,c4,f4,ab4]@3 ~@3", // Fm
  AZ: "~@4 ab2 ~ [ab3,c4,f4,ab4]@4 ~@6 ab2 ~ [ab3,c4,f4,ab4]@3 ~ [ab3,c4,f4,ab4] ~", // Fm
  BA: "~@6 [g3,c4,eb4,g4]@4 ~@6 c3 ~ [g3,c4,eb4,g4]@4 [g3,c4] ~", // Cm C5
  BB: "~@2 [a3,c4,f4,a4] ~ f2@2 [a3,c4,f4]@3 ~@5 [a3,c4,eb4,f4] ~ f2@2 [a3,c4,eb4]@3 ~@3", // F F7 Adim
  BC: "~@2 [bb3,d4,f4] ~ bb2 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~@5 f3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2", // Bb
  BD: "~@2 f4 ~ f3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~@5 f3 ~ [bb3,d4,f4]@2 ~@4", // Bb
  BE: "~@2 [c4,f4,a4] ~ a2 ~ [c4,f4,a4]@3 ~ [c4,f4,a4] ~@5 a3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4]@2", // F
  BF: "~@2 a4 ~ a3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4] ~@5 a3 ~ [c4,f4,a4]@2 ~@4", // F
  BG: "ab2 ~ [c4,ab4] ~ ab2@2 [c4,f4,ab4]@2 ab3@2 [f4,ab4] ~ ab4 ~ [c4,f4,ab4]@2 ab3@2 [c4,f4]@4 [c4,f4,ab4] ~, ~@5 c4 ~@6", // Fm F5 Fm
  BH: "~@4 ab3 ~ [c4,f4]@2 ab3 ~ ab4 ~@3 [c4,ab4]@2 ab3@2 [c4,ab4]@4 ~@2", // F5 Fm
  BI: "~@4 c3@2 [g3,c4,eb4]@3 ~ [g3,c4,eb4] ~@5 c3 ~ [g3,c4,eb4] ~@5", // Cm
  BJ: "[a3,c4,f4,a4]@3 ~ f2@2 [a3,c4,f4]@3 ~@3 [a3,c4,eb4,f4]@3 ~ f2@2 [a3,c4,eb4]@3 ~@3", // F F7 Adim
  BK: "~@2 [bb3,d4] ~ d3 ~ [bb3,d4]@3 ~ [bb3,d4]@3 ~ [d3,bb3]@2 ~@2 [d3,bb3]@4 [d3,bb3]@2", // Bb Gm
  BL: "~@2 [bb3,d4] ~ d3 ~ [bb3,d4]@4 [bb3,d4] ~@3 d3 ~ bb3@2 d3 ~ bb3 ~ d3 ~", // Bb
  BM: "~@2 [c4,f4,a4] ~ a3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4] ~@3 [c4,f4,a4] ~ a3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4] ~", // F
  BN: "~@2 [c4,f4] ~ a3@2 [c4,f4,a4]@2 a3@2 [c4,f4,a4]@2 ~@2 a4 ~ a3@2 f4@2 a3@2 c4 ~, ~@18 a4 ~@5", // F5 F
  BO: "~@2 [c4,f4] ~ ab3@2 [c4,f4]@4 [c4,f4] ~@5 [f3,ab3] ~ [c4,f4]@3 ~@3", // F5 Fm F5
  BP: "[c4,f4]@3 ~ ab3 ~ [c4,ab4]@3 ~ [c4,f4] ~@5 ab2@2 [f3,c4]@2 ab2@2 [f3,c4]@2", // F5 Fm F5
  BQ: "~@6 [eb4,g4] ~ c4 ~ g3 ~ [eb4,g4] ~ c4 ~ g3@2 [c4,eb4]@3 ~@3", // Eb Cm
  BR: "[a3,c4,f4,a4]@3 ~ f2@2 [a3,c4,f4]@3 ~@7 f2@2 [a3,c4,eb4,f4]@4 ~@2", // F F7
  BS: "~@4 bb2 ~ [bb3,d4,f4]@2 ~@8 bb2 ~ [bb3,d4,f4]@3 ~@3", // Bb
  BT: "~@4 bb2@2 [d3,bb3]@5 ~ [d3,bb3]@4 bb2 ~ [d3,bb3]@4 ~@2", BU: "~@6 [a3,c4,f4]@3 ~@9 [a3,c4,f4]@2 ~@4",
  BV: "~@6 [a3,c4,f4]@3 ~ [a3,c4,f4]@2 ~@6 [a3,c4,f4]@2 ~@4", BW: "~@4 ab2 ~ [c4,f4,ab4]@2 ~@8 ab2 ~ [c4,f4,ab4]@3 ~@3",
  BX: "~@4 ab2@2 [f3,c4]@5 ~ [f3,c4]@4 ab2 ~ [f3,c4]@4 ~@2", BY: "~@6 [g3,c4,eb4]@3 ~@7 c3@2 [g3,c4,eb4]@3 ~@3",
  BZ: "~@4 f2 ~ [ab3,c4,f4,ab4]@3 ~@7 f2 ~ [ab3,c4,f4,ab4]@3 ~@3", // Fm
  CA: "~@4 c3@2 [g3,c4,eb4]@3 ~ [g3,c4,eb4] ~@5 c3@2 [g3,c4,eb4]@2 ~@4", // Cm
  CB: "~@4 f2 ~ [a3,c4,f4,a4]@3 ~@7 f2 ~ [a3,c4,f4,a4]@3 ~@3", CC: "~@2 [c4,f4] ~ a3@2 ~@18",
})).s("gm_electric_guitar_clean").gain(0.4)

// other · tubular bells · "Bells"
const tubular_bells = note(`<
  ~@12 A ~ B ~ B ~ C D A ~ E ~ B ~ C F G H I A ~ J K ~ L ~ L ~ M N O ~ P ~ P ~ Q R M ~ S ~ S ~ T U M ~ S ~ S ~ T U M ~ S
  ~ S ~ T U M ~ S ~ S ~ T U M ~ S ~ S ~ T U M ~ S ~ S ~ T U M ~ S ~@2
// … 91 more lines

More by The Supremes