Strudelify
Ribbon in the Sky cover art

Original Musiquarium

Ribbon in the Sky

Stevie Wonder

KeyA♭ majorTempo65 bpm
0:00/0:00
// Ribbon in the Sky — Wonder Stevie
// 65 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C@3 D E F G H I J K L M N O P Q R S@2 T U@3 V W X Y Z AA AB@2 AC AD AE AF AG AH AI@2 AJ@8 AK@7 ~@2
>`.pickRestart({
  A: "~@23 [c4,db4]", // Dbmaj7
  B: "eb3@8 ~ ab3 gb3 ~ gb3@6 ~@3 db4@2 eb2, eb2@21 ab3 ~@2, db4@3 bb2, ~@2 bb3@3 gb3, ~@11 eb3@12 ~",
  C: "[~@4 c4 ~ c4@2 ~ [f3,ab3,c4,eb4]@15 ~@2 ab4 gb4@2 ~ [f2,bb3]@2 [gb2,bb3,eb4] ~@2 [ab2,gb3,ab3,bb3,db4]@6 ab2 [gb3,ab3,bb3,db4] ~ b3 b3@5 ~@3 d4 [b3,e4]@2 ~@3 e2 a2@6 d4@2 ~ b3 ~@2, f2@9 bb2@17 [eb2,eb3,bb3]@3 ~@14 ab2@2 e2@13 ~@10 a2@4, ~@2 f3@2 ~ [f3,eb4]@3 ~@37 d4@4 ~ d4@2 b3@2 d4 ~ d4@2 b3@10 ~@4, ~@3 ab3@3 ~@24 f4 ~@14 g4@8 ~@7 [e4,g4]@10 ~@2, ~@51 e3@5 ~ e3@2 ~ d4@5 ~@7]/3", // Fm7 Bb5 Ebm Gb E5 Eb5 F7 Em
  D: "[bb3,ab4]@6 [db4,d4] ~ eb3 [ab2,gb3,ab3,bb3,db4]@10 ~ [ab2,gb3,ab3,bb3,db4] ~@3, eb2 ~@2, db4 ~@5", // Bb7 Dmaj7 Gb
  E: "ab3@4 ~ ab3 ~@2 gb3 ~@2 gb3 ~@8 gb3 ~ gb3 eb2, db4@11 ~, bb3@4 eb2@3 ~, eb2@9 bb2@5 gb3 ab3@2 bb3@5 ~@2, eb3 ~@5 eb3@15 bb2@2 ~",
  F: "[f3,ab3]@2 ~@4 eb4 ~ f2 ab3@4 ~@7 eb3@3 bb2, f2@7 ~@8 bb2@6 ~@3, [c4,eb4]@5 ~@4 c4@9 ab3@5 ~, ~@2 ab3@3 f3@2 ~@7 ab3@3 f3@5 ~@2, ~@3 c3@4 ~@2 [bb2,eb3,f3]@7 eb3@3 c4@4 ~", // Fm Cm Bbsus4
  G: "gb3 ~ bb3@3 ~ gb3 ab3 bb3 c4@3 bb3@2 ~ ab3 ~ gb3 gb3@2 ~ gb3@2 eb2, eb2@7 ~, ~@5 eb3@9 bb2@8 ~@2, ~@9 gb3 ~@6 eb3@3 ~ eb3@4",
  H: "[bb3,c4]@6 ab3@2 eb4 bb3@4 ~@8 eb4@2 bb2, f2@9 eb4@11 bb3@2 ~@2, [ab3,eb4]@5 ~@4 c4@13 ~@2, ~@9 [bb2,ab3]@6 bb2@7 ~@2, ~@14 bb3@3 ab3@6 ~", // Bbsus2 Ab5 Bb7
  I: "~@3 db4@2 ~ db4@2 ~ db4@2 ~ [db4,gb4]@2 f4 eb4@2 bb3 ~@2 bb3 ~ bb3 eb2, eb2@7 ~, ~@2 bb3@3 eb4@6 eb3@9 ~ eb3@3, ~@6 [bb3,gb4]@6 bb3@4 ~ db4@5 ~@2", // Gb5 Ebm
  J: "[f2,c4]@5 ~@2 c4 f2 [eb4,f4,ab4]@8 ~@4 c4@3, [f4,ab4]@8 ~@9 ab4@4 ~@3, eb4@4 ~ eb4@2 ~@2 c4@11 eb4@2 ~@2, ~@6 f3@2 ~ bb2@15, ~@9 f4@2 ~", // F5 Fm7 Fm
  K: "[bb3,db4,ab4]@3 ~ db4 ~ [f2,bb3,f4]@2 [gb2,eb4] ~@2 [ab2,gb3]@3 ab3 ~ gb3 ab3 gb3@2 [ab3,bb3] ~ bb3 db4, eb2@5 ~@6 ab3@2 ~@2 ab2@5 ~ ab2@3, ~@3 [bb3,gb4]@2 ~@6 [bb3,db4]@6 ~@7", // Bbm7 Bb5 Ebm Ab7 Absus2 Ebm Bbm
  L: "[b2,bb3,eb4,gb4]@5 db4 bb3 ~ b2 [ab2,bb3]@5 ~@4 eb4@2 [bb3,eb4,gb4]@3 ab2, db4@4 ~@5 [eb4,gb4]@8 db4@2 ~ db4 ~@3, a2 ~@8 db4@4 ~ db4@2 bb3@2 bb3 ~@5, ~@15 ab2@7 ~@2", // Bmaj7 Absus2 Ebm
  M: "eb2@2 [bb3,db4,eb4,gb4] ~@3 [bb3,eb4,gb4]@5 [bb3,db4,eb4,gb4] ~@2 bb3 bb3@3 eb3@2 [bb3,db4] eb2 bb3 [eb2,eb3], ~@5 eb3@7 eb2@4 ~@4 gb4@2 ~@2, ~@6 db4@2 ~@7 [db4,eb4,gb4]@6 ~@3", // Ebm7 Ebm Ebm7 Bbm Eb Ebm7
  N: "[f2,c4]@5 ~ f3 c3 f2 [bb2,c4,eb4]@5 ~@4 f4@2 eb4 c4@2 bb2, [f4,ab4]@8 ~ [f4,ab4]@8 eb4@2 ~@5, eb4@4 ~ eb4@3 ~@6 eb4@2 c4@2 c4 ~@5, ~@15 bb2@7 ~@2", // F5 Cm7 Fm
  O: "~@2 gb3 ~@2 ab3 bb3@2 [gb3,c4]@3 bb3@3 ab3 ~ gb3 ~ gb3@2 ab3 gb3@2 [eb2,bb2], eb2@5 ~@3, ~@3 eb3@12 bb2@2 eb3@7, ~@4 gb3@2 ab3 ~@17", // Gbdim Eb5
  P: "[f3,ab3]@5 ~ c3 f3 f2 [bb2,eb3]@5 ~@4 ab3@3 eb3@2 bb2, [f2,c4,eb4]@7 ~@2 ab3@4 ~ ab3@2 eb3@3 ~@5, ~@5 ab3@2 ~@2 [f3,c4]@8 f3@2 ~@5, ~@15 bb2@7 ~@2", // Fm Eb5 F7 F5
  Q: "gb3@5 ~@6 gb3@3 ~@2 gb3 ~ gb3@2 ~ [gb3,db4]@2 eb3, bb3@18 ~@3 bb3 ~@2, eb2@15 eb3@2 eb2@7, db4@8 gb3 ab3@2 db4@8 ~@5, ab3@4 ~ ab3 eb3@8 ab3@2 ~@4 ab3@4", // Gb5
  R: "g3 ~@2 ab3@2 ~ f3@2 f2 [bb2,ab3]@5 ~@2 eb3 ~ eb3@2 f3 bb2@2 bb3, [f2,f3,c4,eb4]@5 c3@4 c4@12 ~@3, ~@9 [eb3,f3]@6 bb2@5 ~@4, ~@14 ab3@7 ~@3, ~@17 f3@2 ~@5", // Bb7 F7 Ebsus2
  S: "[[db4,ab4]@3 [db4,gb4]@3 [f2,bb3,f4]@2 [gb2,eb4] ~@2 [ab2,gb3]@3 ab3 ~@2 ab3 gb3@2 ~ ab2@2 ~ ab3@5 ~@3 db3 ab2 ~ db2@3 ~@3 ab2 [db2,db3,f3,ab3,bb3,db4] ~ gb3@3 [bb2,c5,db5], [eb2,bb3]@5 ~@6 [bb3,db4]@7 [bb3,db4]@5 db4@18 ~@7, ~@11 ab3@2 ~@2 ab2@5 ~@4 db2@8 ~@16, ~@16 gb3@2 ab3 ~ ab3@2 ~@2 f3@14 ~ db3@2 ~@7, ~@30 ab3@7 ~ ab3@2 f3@2 ~@6]/2", // Db5 Gb5 Bb5 Ebm Ab7 Bbm7 Bbm Eb5 …
  T: "[gb3,ab3]@5 ~@3 eb3 bb2 ~ [c5,db5] db5 ~ gb3 ~@2 ab3 [ab3,bb3]@2 [gb3,db4] ~ c5 ~, [bb3,db4]@16 gb3@2 gb3 ~@5, db5@10 ~ eb2@10 eb2@2 ~, eb2@6 gb3@7 c5@5 db5@5 ~, ~@5 ab3@9 ~ eb3@9", // Gbsus2 Dbmaj7 Absus2 Gb5 Bbm
  U: "[[ab3,bb3,c4,eb4]@5 bb3 ab3 ~ f3 c5@5 db5 c5 ~@4 ab3 bb3 ~ bb2 [bb3,db4,ab4]@3 [bb3,db4,gb4,ab4]@2 bb4 [e2,f2,c5] ~ [gb2,bb3,eb4,db5] eb5 ~ gb5 ab5@2 ~ [ab3,gb5]@2 ab2 [gb3,ab3,db4] ~ db5 [g3,a3]@5 ~@4 a2 ~ e2 e5 [f5,g5] [a5,b5,c6] [d6,e6,f6,g6,a6] ~ [g6,a6] [e6,f6] [g3,b5,c6,d6] [a3,f5,g5,a5] [g3,c5,d5,e5] [a4,b4] [a1,a2,g3,a3,b3,d4,e4,f4,g4] [b3,c4,d4] [g3,a3] [d3,e3,f3], [f2,eb5]@8 ~ [bb2,ab3,eb4]@9 bb2@4 ~@2 [eb2,eb3]@5 ~@6 [ab2,ab3]@5 ~@5 a2@8 a3@5 ~@2 b6@2 ~ a2@4 ~@5, db5 ~@8 c4@11 ~@25 [b3,d4]@14 [b3,d4]@6 ~@7, ~@9 bb3@7 ~ bb3@4 ~@9 [bb3,f4]@2 ~@3 [gb3,bb3,db4]@7 ~@3 eb5@2 ~@3 a3 g3@7 ~ [a2,g3,a3]@3 a3@2 ~@8, ~@9 bb4 ~@5 bb4@11 ~@16 eb5@2 ~ e5@12 a1@9 ~@6]/3", // Ab Bbm7 Gb Fmaj7 Ebm7 Ab7 Gbsus2 Gsus2 …
  V: "e2@2 [b3,d4,e4,g4] ~@3 [b3,e4,g4]@5 [b3,d4,e4,g4] ~@2 b3 b3@3 e3@2 [b3,d4] e2 b3 [e2,e3], ~@5 e3@7 e2@4 ~@4 g4@2 ~@2, ~@6 d4@2 ~@7 [d4,e4,g4]@6 ~@3", // Em7 Em Em7 Bm E Em7
  W: "[gb2,db4]@5 ~ gb3 db3 gb2 [b2,db4,e4]@5 ~@4 gb4@2 e4 db4@2 b2, [gb4,a4]@8 ~ [gb4,a4]@8 e4@2 ~@5, e4@4 ~ e4@3 ~@6 e4@2 db4@2 db4 ~@5, ~@15 b2@7 ~@2", // Gb5 Dbm7 Gbm
  X: "~@2 g3 ~@2 a3 b3@2 [g3,db4]@3 b3@3 a3 ~ g3 ~ g3@2 a3 g3@2 [e2,b2], e2@5 ~@3, ~@3 e3@12 b2@2 e3@7, ~@4 g3@2 a3 ~@17", // Gdim E5
  Y: "[gb3,a3]@5 ~ db3 gb3 gb2 [b2,e3]@5 ~@4 a3@3 e3@2 b2, [gb2,db4,e4]@7 ~@2 a3@4 ~ a3@2 e3@3 ~@5, ~@5 a3@2 ~@2 [gb3,db4]@8 gb3@2 ~@5, ~@15 b2@7 ~@2", // Gbm E5 Gb7 Gb5
  Z: "g3@5 ~@6 g3@3 ~@2 g3 ~ g3@2 ~ [g3,d4]@2 e3, b3@18 ~@3 b3 ~@2, e2@15 e3@2 e2@7, d4@8 g3 a3@2 d4@8 ~@5, a3@4 ~ a3 e3@8 a3@2 ~@4 a3@4", // G5
  AA: "ab3 ~@2 a3@2 ~ gb3@2 gb2 [b2,a3]@5 ~@2 e3 ~ e3@2 gb3 b2@2 b3, [gb2,gb3,db4,e4]@5 db3@4 db4@12 ~@3, ~@9 [e3,gb3]@6 b2@5 ~@4, ~@14 a3@7 ~@3, ~@17 gb3@2 ~@5", // B7 Gb7 Esus2
  AB: "[d4@2 ~ [b3,d4,g4]@3 [b3,gb4]@2 [g2,b3,e4] ~@2 [a2,a3]@4 a3@2 a2 [g3,a3,d4] ~@2 [ab3,bb3]@5 ~@4 bb2 ~ f2 ~@2 [bb2,ab3,bb3]@3 ~@2 ab3 bb3 ab3 ~ [bb1,bb2,ab3,bb3,c4,eb4] ~@3, e2@5 ~ [f2,gb2] ~@4 [g3,b3,d4]@7 ~@3 [c4,eb4]@14 [c4,eb4]@6 ~@7, ~@21 bb2@8 ~@4 bb1@9 ~@6, ~@26 bb3@2 ~ bb3@5 ~@4 bb3@2 ~@8, ~@27 ab3@7 ~@5 bb2@4 ~@5]/2", // G B5 Em A Gsus2 Absus2 Bb7 Ab …
  AC: "f2@2 [c4,eb4,f4,ab4] ~@3 [c4,f4,ab4]@5 [c4,eb4,f4,ab4] ~@2 c4 c4@3 f3@2 [c4,eb4] f2 c4 [f2,f3], ~@5 f3@7 f2@4 ~@4 ab4@2 ~@2, ~@6 eb4@2 ~@7 [eb4,f4,ab4]@6 ~@3", // Fm7 Fm Fm7 Cm F Fm7
  AD: "[g2,d4]@5 ~ g3 d3 g2 [c3,d4,f4]@5 ~@4 g4@2 f4 d4@2 c3, [g4,bb4]@8 ~ [g4,bb4]@8 f4@2 ~@5, f4@4 ~ f4@3 ~@6 f4@2 d4@2 d4 ~@5, ~@15 c3@7 ~@2", // G5 Dm7 Gm
  AE: "~@2 ab3 ~@2 bb3 c4@2 [ab3,d4]@3 c4@3 bb3 ~ ab3 ~ ab3@2 bb3 ab3@2 [f2,c3], f2@5 ~@3, ~@3 f3@12 c3@2 f3@7, ~@4 ab3@2 bb3 ~@17", // Abdim F5
  AF: "[g3,bb3]@5 ~ d3 g3 g2 [c3,f3]@5 ~@4 bb3@3 f3@2 c3, [g2,d4,f4]@7 ~@2 bb3@4 ~ bb3@2 f3@3 ~@5, ~@5 bb3@2 ~@2 [g3,d4]@8 g3@2 ~@5, ~@15 c3@7 ~@2", // Gm F5 G7 G5
  AG: "ab3@5 ~@6 ab3@3 ~@2 ab3 ~ ab3@2 ~ [ab3,eb4]@2 f3, c4@18 ~@3 c4 ~@2, f2@15 f3@2 f2@7, eb4@8 ab3 bb3@2 eb4@8 ~@5, bb3@4 ~ bb3 f3@8 bb3@2 ~@4 bb3@4", // Ab5
  AH: "a3 ~@2 bb3@2 ~ g3@2 g2 [c3,bb3]@5 ~@2 f3 ~ f3@2 g3 c3@2 c4, [g2,g3,d4,f4]@5 d3@4 d4@12 ~@3, ~@9 [f3,g3]@6 c3@5 ~@4, ~@14 bb3@7 ~@3, ~@17 g3@2 ~@5", // C7 G7 Fsus2
  AI: "[eb4@2 ~ [c4,eb4,ab4]@3 [c4,g4]@2 [ab2,c4,f4] ~@2 [bb2,bb3]@4 bb3@2 bb2 [ab3,bb3,eb4] ~@2 f4@4 ~@5 f4@2 d4 d3 ~ g2 [d4,f4,bb4]@4 ~@4 d4 [d4,f4] ~ c3, f2@5 ~ [gb2,g2] ~@4 [ab3,c4,eb4]@7 ~@3 g2@12 ~@3 c3@10 ~@2, ~@21 bb4@10 ~@11 c2@5 ~, ~@21 d4@6 g3@5 ~@2 d4@2 ~@5 d4@2 ~@5, ~@26 f4@3 d4@3 [f4,bb4]@4 ~@5 [f4,bb4]@4 bb4@2 ~]/2", // Ab C5 Fm Bb Absus2 Bb Dm Gmaj7 …
  AJ: "[[c4,bb4]@3 [c4,ab4]@3 [g2,c4,g4]@3 [ab2,c4,f4]@3 bb2@5 ~ bb2 ~ c4 bb2 c4 ~ c4@3 ~@3 bb2 ~ [bb2,c4,eb4] ~@3 f4@6 ~@3 [c4,ab4]@2 db2 [c3,bb3]@6 eb4@2 c3 eb4@7 ~@7 eb2 ~@3 db4@2 ~ f4@2 [db4,f4,ab4]@3 bb2 f4@5 ~@4 c4@2 db2 eb4@5 ~ eb4@2 c3 eb4@8 ~@6 bb2 eb3@2 bb2 eb2@2 [db4,ab4] [eb2,eb3] ~ [d2,d3,d4,ab4]@4 f4@5 ~@4 c4@2 [db2,db3] [c3,bb3]@6 eb4@2 c3 eb4@7 ~ gb2 ~@2 eb3 ~@5 eb4 db4@2 ~ bb2@2 [eb2,eb3,db4,eb4,f4,ab4] ~@2 eb2 f4@5 ~ f4@5 db2, [f2,eb4]@6 ~@6 eb4@19 ~@5 [db2,c4,ab4]@9 ~@3 [c2,g4]@9 eb2@13 ~@2 eb2@7 ~@5 [db2,db3,ab4]@11 ~ [c2,c3,bb3,g4]@8 ~ eb2@13 ~@14 [db2,ab4]@11 ~ [c2,g4]@9 eb2@11 ~@3 eb2@7 ~@6 db2@9 ~@3, ~@12 c4@4 ~ c4@2 ~@4 bb2@6 c4@2 ~@5 db3@11 ~ eb4@4 ~@5 db4@11 db4@5 ~ eb3@9 ~@31 eb4@8 ~@22 eb4@5 ~@4 db4@15 eb3@6 ~@6 [db3,c4,ab4]@11 ~, ~@36 eb4 ~@5 f4@14 ~ [f4,ab4]@19 ~@14 f4@14 ~ [f4,ab4]@19 ~@14 f4@14 ~ [f4,ab4]@17 ~@3 eb4@3 ~@16, ~@66 eb4@9 ~@2 eb4@3 ~@4 c4@8 ~@13 db4@17 ~@10 c4@8 ~@4 ab4 ~@17 eb4@7 db4@2 ~@21]/8", // C7 Fm C5 Fm Cm7 Fm C7 Db …
  AK: "[[c3,bb3,g4]@6 eb4@2 c3 eb4@8 ~@6 [eb2,e2] eb2 ~@4 [db4,ab4] eb2 ~ [d2,d4,ab4]@4 f4@4 ~@5 c4@2 db2 [c3,bb3]@6 eb4@2 c3 eb4@7 ~@7 eb2 ~@3 eb4@2 [db4,ab4] ~@2 [eb2,db4,eb4,f4,ab4] ~@2 eb2 f4@5 ~@6 ab4 [c3,bb3,g4]@6 eb4@2 c3 eb4@9 ~@5 eb2 ~@3 db4@8 ~@2 [ab1,c4]@22 ~@13, c2@9 eb2@13 ~@14 [db2,c4]@6 db3@6 [c2,g4]@9 eb2@13 ~@2 eb2@6 ~@6 db2@12 c2@9 eb2@9 eb4@41 ~@13, eb4@5 ~@4 [db4,f4,ab4]@20 ~@12 f4@15 ~ [f4,ab4]@19 ~@14 f4@14 ~ ab4@50 ~@13, ~@18 eb4@11 ~@7 ab4@12 eb4@5 ~@4 db4@16 ~ db4@2 ~@8 [c4,ab4]@10 ~@11 db4@15 eb2@13 ~@35, ~@66 eb4@8 ~@22 eb4@4 ~@5 f4@26 ~@37]/7", // C7 Emaj7 Db5 Ddim C7 Db5 Db C7 …
})).s("gm_piano").gain(0.36)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@6 A B A C A D E F A G A H A I J K L M N@2 O P O Q O R S@2 T U T V T W X@2 Y Z AA AB AC AD AC AE AF AG AH AI AA AJ@3
  ~
>`.pickRestart({
  A: "eb2 ~@10 bb1 eb2 ~@7 eb2 bb1 eb2 bb1", B: "f2 ~@8 bb1@13 ~ bb1", C: "f2 ~@7 f2 bb1@11 bb2 ~@2 bb1",
  D: "f2 ~@7 f2 bb1@15", E: "eb2 ~@4 bb1 eb2@2 gb2 ab2@2 ~ bb2@6 ab2@5 ~, ~@9 gb2 ~@14",
  F: "b2@5 f2 b1@2 b2 ab1@11 ab2 eb2 ab1!2", G: "f2 ~@7 f2 ab1@6 bb1@5 ab1 bb1 ab1 b1",
  H: "f2 ~@7 f2 ab1@11 ab2 bb1@2 bb2", I: "f2 ~@7 bb1 bb2@15", J: "eb2@3 bb1@2 eb2 gb2@2 eb2 ab2@2 bb2 bb2@6 ab2@5 bb2",
  K: "db2@14 ab2 db3 ab2 db2 db2@3 ~@2 bb1", L: "eb2 ~@10 bb1 eb2 ~@10 bb1", M: "f2 ~@8 bb1@11 bb2 gb2@2 bb1",
  N: "[eb2@4 ~ eb2 f2@3 gb2@3 ab2@6 ~@3 a2@8 e2 a2@2 e2 a1 ~ a1@9 a2 ~@3, ~@21 b2 ~@26]/2",
  O: "e2 ~@10 b1 e2 ~@7 e2 b1 e2 b1", P: "gb2 ~@7 gb2 a1@6 b1@5 a1 b1 a1 c2", Q: "gb2 ~@7 gb2 a1@11 a2 b1@2 b2",
  R: "gb2 ~@7 b1 b2@15", S: "[~@5 e2 gb2@3 g2@3 a2@6 ~@3 bb2@8 f2 bb2@2 f2 bb1 ~ bb1@9 bb2 ~@3, ~@21 c3 ~@26]/2",
  T: "f2 ~@10 c2 f2 ~@7 f2 c2 f2 c2", U: "g2 ~@7 g2 bb1@6 c2@5 bb1 c2 bb1 db2", V: "g2 ~@7 g2 bb1@11 bb2 c2@2 c3",
  W: "g2 ~@7 c2 c3@15", X: "[~@5 f2 g2@3 ab2@3 bb2@6 ~@3 g2@8 d2 g1@2 g2@3 d2 c2@8 c3 g2@2 c2]/2",
  Y: "f2@2 ~ c2@2 ~ f2@2 g2 ab2@2 ~ bb2@9 f2@2 bb2", Z: "bb1@11 bb1 [db2,d2] ~@10 db2", AA: "c2 ~@8 eb2@13 ~ c2",
  AB: "eb2 ~@10 c2 db2 ~@8 db2 ~ db2", AC: "c2 ~@7 c2 eb2@13 ~ eb2", AD: "f2 eb2 f2 eb2@4 ~ d2@4 db2 ~@10 db2",
  AE: "f2 eb2 f2 g2@3 bb2@3 c3@2 bb2 db2 ~@10 db2", AF: "c2 ~@7 c2 eb2@10 ~ eb2 db2 ~ bb1",
  AG: "ab1@3 bb1@3 db2 ~ d2@4 db2 ~@10 db2", AH: "c2 ~@7 c2 eb2@13 ~ c2", AI: "eb2 ~@7 eb2 c2@2 eb2 db2 ~@10 db2",
  AJ: "[eb2 ~@11 ab1@42 ~@18]/3",
})).s("gm_fretless_bass").gain(0.41)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@14 A B C D E F@2 G H I J@2 K L M N O P@3 Q R S T U V@3 W@2 X Y@2 Z@6 AA@2 AB@2 ~@2
>`.pickRestart({
  A: "gb3@2 ~ bb3@3 gb3@2 ~ ab3@2 ~ ab3@2 bb3 ~@6 ab3@2 db4, ~ ab3@2 db4@4 ~@2 bb3@3, ~@8 bb3@3 gb3@4 [gb3,db4]@6 ~@3", // Gb5
  B: "~@3 c4@3 eb4@3 [c4,eb4]@11 ~ c4@2 ab3, f3@9 f3@14 ~, ~@2 ab3@18 eb4@3 ~", // Cm
  C: "gb3@2 ~ bb3@2 ~ [gb3,c4]@2 ~ ab3@2 ~ ab3@2 bb3 [gb3,db4]@5 bb3 ~@2 bb3, ~@2 ab3@2 ~@4 bb3@3 gb3@3 ~@7 gb3@2 ~, ~@11 ab3", // Gbdim Gb5
  D: "f3@2 ~ c4@2 ~ eb4 ~@2 [f3,ab3,c4,eb4]@9 ~@3 db4@2 eb4, ~@2 ab3@4 ~@14 bb3@3 ~", // Fm7
  E: "~@6 db4@2 ~@7 db4@5 ~@2 eb4 gb4, gb4@9 db4@4 ~@8 db4@2 ~, ~@3 eb4@5 bb3@6 ~@6 bb3@2 ~@2, ~@11 eb4@9 ~@4",
  F: "[~@3 eb4@2 f4 ab4 ~@2 [c4,eb4]@10 ~@2 eb4@2 ~ db4@3 gb4@2 ~ [bb3,f4]@2 eb4 ~@2 db4@10 bb3@2 ~, c4@5 ~@4 f4@14 ab4@4 ~@21, ~@9 ab4@11 c4@2 ~@2 bb3@5 ~@6 bb3@7 ~@6]/2", // Cm Bb5
  G: "[ab3,db4]@18 f3@3 ab3@2 bb3, f3@17 ~@7", // Db5
  H: "gb3@2 ~ bb3@3 gb3@2 ~ ab3@2 ~ ab3@2 gb3 c4@3 bb3@2 ab3 gb3@3, ~@2 ab3@4 db4@5 gb3@2 ~@2 gb3@5 ~@4, ~@2 bb3 ~@3",
  I: "[ab3,c4,eb4]@5 ~@2 c4 ~ ab3@10 ~@2 eb4@3, f3@4 ~ f3@3 ~ [f3,c4]@13 ~@2, ~@3 ab3 eb4@6 ab3 ~", // Ab F5
  J: "[bb3@2 ~ gb4@3 ab4@2 gb4 f4@3 eb4@3 db4@3 bb3 ~@2 [b3,d4]@8 ~ d4@2 ~@3 b3@3 ~ b3@2 d4 g4@2 [b3,d4,g4] ~@3, ~@2 db4@6 ~@13 g4@10 ~ g4@9 ~@7, ~@6 bb3@10 ~@13 b3@4 d4@4 ~ d4@2 ~@8]/2", // Bm G
  K: "g3@2 ~ b3@3 g3@2 ~ a3@2 ~ a3@2 b3 ~@6 a3@2 d4, ~ a3@2 d4@4 ~@2 b3@3, ~@8 b3@3 g3@4 [g3,d4]@6 ~@3", // G5
  L: "~@3 db4@3 e4@3 [db4,e4]@11 ~ db4@2 a3, gb3@9 gb3@14 ~, ~@2 a3@18 e4@3 ~", // Dbm
  M: "g3@2 ~ b3@2 ~ [g3,db4]@2 ~ a3@2 ~ a3@2 b3 [g3,d4]@5 b3 ~@2 b3, ~@2 a3@2 ~@4 b3@3 g3@3 ~@7 g3@2 ~, ~@11 a3", // Gdim G5
  N: "gb3@2 ~ db4@2 ~ e4 ~@2 [gb3,a3,db4,e4]@9 ~@3 d4@2 e4, ~@2 a3@4 ~@14 b3@3 ~", // Gbm7
  O: "~@6 d4@2 ~@7 d4@5 ~@2 e4 g4, g4@9 d4@4 ~@8 d4@2 ~, ~@3 e4@5 b3@6 ~@6 b3@2 ~@2, ~@11 e4@9 ~@4",
  P: "[~@3 e4@2 gb4 a4 ~@2 [db4,e4]@10 ~@2 e4@2 a4@3 ~ g4@3 a4@2 g4 gb4@3 e4@3 d4@3 b3 ~@2 [c4,eb4]@8 ~ eb4@2 ~@3 c4@3 ~ c4@2 eb4 ab4@2 [c4,eb4,ab4] ~@3, db4@5 ~@4 gb4@14 ~@7 b3@10 ~@13 c4@4 eb4@4 ~ eb4@2 ~@8, ~@9 a4@11 db4@2 ~@4 d4@6 ~@13 ab4@10 ~ ab4@9 ~@7]/3", // Dbm Cm Ab
  Q: "ab3@2 ~ c4@3 ab3@2 ~ bb3@2 ~ bb3@2 c4 ~@6 bb3@2 eb4, ~ bb3@2 eb4@4 ~@2 c4@3, ~@8 c4@3 ab3@4 [ab3,eb4]@6 ~@3", // Ab5
  R: "~@3 d4@3 f4@3 [d4,f4]@11 ~ d4@2 bb3, g3@9 g3@14 ~, ~@2 bb3@18 f4@3 ~", // Dm
  S: "ab3@2 ~ c4@2 ~ [ab3,d4]@2 ~ bb3@2 ~ bb3@2 c4 [ab3,eb4]@5 c4 ~@2 c4, ~@2 bb3@2 ~@4 c4@3 ab3@3 ~@7 ab3@2 ~, ~@11 bb3", // Abdim Ab5
  T: "g3@2 ~ d4@2 ~ f4 ~@2 [g3,bb3,d4,f4]@9 ~@3 eb4@2 f4, ~@2 bb3@4 ~@14 c4@3 ~", // Gm7
  U: "~@6 eb4@2 ~@7 eb4@5 ~@2 f4 ab4, ab4@9 eb4@4 ~@8 eb4@2 ~, ~@3 f4@5 c4@6 ~@6 c4@2 ~@2, ~@11 f4@9 ~@4",
  V: "[~@3 f4@2 g4 bb4 ~@2 [d4,f4]@10 ~@2 f4@2 bb4@3 ~ ab4@3 bb4@2 ab4 g4@3 f4@3 eb4@3 c4 ~@2 [d4,f4,bb4]@8 ~ f4 ab4 ~ ab4@3 ab4@3 g4@3 f4@3 d4@2 ~, d4@5 ~@4 g4@14 ~@7 c4@10 ~@16 bb4@2 ~@14, ~@9 bb4@11 d4@2 ~@4 eb4@6 ~@21 d4@6 ~ d4@5 ~@7]/3", // Dm Bb
  W: "[bb4@3 ab4@3 [c4,g4]@2 f4 eb4@3 f4@3 eb4@3 c4@19 ~ [c4,f4,ab4] ~@2 c4 [f4,ab4]@2 ~ f4@2 ab4, [c4,eb4]@5 ~@7 eb4 ~@29 c4 ~ c4@3 ~]/2", // C5 Fm Cm
  X: "bb3@2 eb4 bb3@2 eb4 [bb3,eb4,g4] ~@2 [db4,eb4,f4,ab4]@5 [db4,eb4,f4,ab4] ~@2 db4 [f4,ab4]@2 ~ eb4 ~ [db4,f4], ~@6 db4 ~, ~@18 eb4 ~@5", // Eb Db Fm Db
  Y: "[~@2 db4 [db4,f4,ab4]@4 ~ [db4,eb4]@3 ~ c4@2 ~ [c4,ab4] ~@2 [f4,ab4]@2 ~@3 ab4 [bb3,g4]@2 eb4 [bb3,g4] ~ bb3 [bb3,eb4,g4] ~ db4 [db4,eb4,f4,ab4]@5 [db4,f4,ab4] ~@2 db4 db4@2 eb4 db4@2 eb4, ~@14 f4@2 ~@2 c4 ~ c4@3 ~@19 eb4 ~@5, ~@21 f4@5 ~@16 [f4,ab4]@4 ~@2]/2", // Db Dbsus2 Fm Eb Db Fm
  Z: "[f4@2 eb4 db4 ~ eb4@2 ~ [db4,d4,eb4] d4@3 c4@2 [f4,ab4] ~@2 c4 [f4,ab4]@2 ~@3 ab4 [bb3,eb4,g4]@2 eb4 bb3 ~ bb3 [bb3,eb4,g4] ~ db4 [db4,eb4,f4,ab4]@5 [db4,eb4,f4,ab4] ~@2 db4 [db4,f4,ab4]@2 eb4 db4 ~ f4@3 eb4 db4@2 eb4 f4@3 eb4@2 c4 c4@2 [f4,ab4] ~@3 [f4,ab4]@2 ~@3 ab4 [bb3,eb4,g4] ~ eb4 ~@2 bb3 [bb3,eb4,g4] ~@2 [db4,eb4,f4,ab4]@5 [db4,eb4] ~@2 db4 db4@2 eb4 db4@2 f4@3 eb4 db4@2 eb4 ab4 ~ d4@4 c4@2 [f4,ab4] ~@2 c4 [f4,ab4]@2 ~@3 ab4 [bb3,g4]@2 eb4 bb3 ~ bb3 [bb3,eb4,g4] ~ db4 [db4,eb4,f4,ab4]@4 ~ [db4,eb4,ab4] ~@2 db4 [db4,f4,ab4]@2 eb4 db4 ~ [db4,eb4,ab4], db4 ~@17 c4 ~ c4@3 ~@43 c4 ~ c4@3 ~@19 eb4 ~@4 eb4 ~@18 c4 ~ c4@2 ~@26, ~@21 f4@5 ~@16 eb4 ~@4 eb4 ~@6 eb4 ~@14 f4@5 ~@16 [f4,ab4]@4 ~@23 f4@5 ~@16 eb4 ~@5]/6", // Fm Eb Db Fm Eb Db Dbsus2 Fm …
  AA: "[~@3 eb4@2 f4 ab4 ~ f4 eb4@2 db4 c4@2 [f4,ab4] ~@2 c4 [f4,ab4]@2 ~@3 ab4 [bb3,eb4,g4]@2 eb4 bb3 ~ bb3 [bb3,eb4,g4] ~@2 [db4,eb4,f4,ab4]@4 ~ [db4,ab4] ~@2 db4 [db4,eb4,f4,ab4]@4 ~ [db4,eb4,f4,ab4], ~@2 db4@2 ~@14 c4 ~ c4@2 ~@26, ~@21 f4@5 ~@22]/2", // Fm Eb Db Db5 Db
  AB: "[[db4,ab4] ~@5 eb4@2 f4 ab4@3 ~@3 bb4@2 ~@6 bb4@2 ~ ab4@2 bb4@2 ~ c5@3 bb4 c5@8 ~@5, ~@5 db4@2 ~@5 c4@2 ab4@2 ~ ab4@6 ~@8 bb4 ~@16, ~@13 eb4@5 c4@2 ~ c4@21 ~@6, ~@19 eb4@6 ~@23]/2", // Db5
})).s("gm_acoustic_guitar_nylon").gain(0.31)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@33 A B C B D E F G@2 H@2 I@2 J K@2 L@6 M@4>".pickRestart({
  A: "~@3 eb4", B: "g4", C: "f4", D: "f4@3 bb4@5", E: "[eb4,g4]", F: "f4@3 g4, d4", G: "[eb4@20 ~ f4@21 g4@6]/2",
  H: "[~@2 eb5 ab5, eb4@13 ~@3]/2", I: "[g5@3 [f5,ab5]@9 ab5@4]/2", J: "g5@3 [f5,ab5]@5",
  K: "[~@12 ab5@12 g5@8 ~ [f5,ab5]@15, ~ c6@7]/2", // Fm
  L: "[~@12 ab5@12 g5@8 ~ [f5,ab5]@27 ab5@12 g5@9 f5@27 ab5@12 g5@9 f5@15, ~ c6@23]/6", // Fm
  M: "[~@67 ab2@17 ~@12, ~ ab5@6 ~, ~@10 eb5@11 ~@3]/4",
})).s("gm_string_ensemble_2").gain(0.36)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@56 A B@2>".pickRestart({
  A: "~@3 eb5 ~@2", B: "[~@4 ab2@15 ~@29, ~ [eb2,eb3]@35 ~@12]/2",
})).s("gm_string_ensemble_2").gain(0.15)

// other · brass section · "BRASS 1"
const brass_section = note("<~@5 A ~@39 B@3 ~ C@3 ~ D@3 ~@3>".pickRestart({
  A: "~@20 [ab2,ab3,bb4,db5,eb5,ab5] ~@3", // Absus4
  B: "[[ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4]@2 [bb3,bb4] c5@2 [eb4,eb5]@43 ~@2 [d4,d5]@4 ~@12, ~@9 c4 ~@62]/3", // Ab Bb Eb D
  C: "[[ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4]@2 [bb3,bb4] c5@2 [eb4,eb5]@43 ~@2 [d4,d6]@4 ~@12, ~@9 c4 ~@62]/3", // Ab Bb Eb D
  D: "[[ab3,ab4] ~@2 [ab3,ab4] ~@2 [ab3,ab4] ~ [bb3,ab4,bb4] [c4,c5] ~ [eb4,eb5]@44 ~@17]/3", // Ab Bb7 C Eb
})).s("gm_brass_section").gain(0.46)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@26 A@2 B C B D@3 E F G F H I@3 J K L M N@2 L M O P L M Q R@3 ~>".pickRestart({
  A: "[d4@23 ~ e4@9 d4@9 e4@5 ~, g4@47 ~]/2", B: "g4, d4@11 ~", C: "[e4,a4]@8 ~ [e4,a4]@14 ~",
  D: "[e4@35 ~ e4@9 bb4@22 ~@5, a4@25 ~@47, f4 ~@71]/3", E: "ab4@12 ab4@5 ~ ab4@2 bb4 c5@3, [eb4,c5]@3 ~",
  F: "bb4@23 ~", G: "[eb4,ab4,c5]@18 ab4 ~ bb4 c5@3", H: "[eb4,ab4,c5]@18 ab4@2 bb4 c5@3",
  I: "[bb4@31 ~@23 d5@6 c5@6 d5@5 ~, ~@5 g4@3]/3", J: "~ bb4@3", K: "bb4 ~@17 g4@2 ab4 g4@2 ab4",
  L: "g4 ~@2 eb4 ~@2 c4 ~@2 f4@8 [f4,g4] eb4@5 c4, ~@9 eb4 ~@14", M: "eb4 f4 ~@16 g4@2 ab4 g4@2 ab4",
  N: "[g4 ~@2 eb4 ~@2 c4 ~@2 bb3@7 bb3 c4 ab3@13 ~ d4@4 eb4@6 g4@2 ab4 g4@2 ab4, ~@9 ab3 ~@8 bb3 ~@29]/2",
  O: "g4 ~@2 eb4 ~@2 c4 ~@2 [a3,bb3,b3] ~@7 [ab3,bb3] bb3@5 ab3, ~@9 c4@8 ~@7", // Absus2
  P: "bb3@3 c4@5 d4@4 eb4@6 g4@2 ab4 g4@2 ab4", Q: "g4 ~@2 eb4 ~@2 c4 ~@2 c4@8 [ab3,bb3] bb3@5 ab3, ~@9 bb3 ~@14",
  R: "[bb3 ~ db4 eb4@2 ~ f4@3 eb4@3 ab3@60, ~@6 eb4 ~@65]/3",
})).s("gm_lead_2_sawtooth").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C D E F G F G F G F G F G F G F G F H F G I J F G F G F G I J F G F G F G I K F K L M N O N K L P N Q N ~@4
>`.pickRestart({
  A: "~ x", B: "~@3 x ~@4", C: "~@11 x!2 ~@11", D: "~@6 x ~@10 x!2 ~@5", E: "x ~@19 x ~@2 x", F: "x ~@10 x!2 ~@11",
  G: "x ~@8 x ~@13 x", H: "x ~@22 x", I: "x ~@10 x!2 ~@8 x ~@2", J: "~@3 x ~@5 x ~@13 x", K: "x ~@10 x!2 ~@10 x",
  L: "x ~@2 x ~ x ~@2", M: "x ~@10 x ~@11 x", N: "x ~@8 x ~@7 x ~@6", O: "x ~@7 x ~@3 x ~@4 x ~@5 x",
  P: "x ~@7 x ~@3 x ~@10 x", Q: "x ~@11 x ~@10 x",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<A B C D E F G ~ G ~ G ~ G ~ G ~ G ~ G ~ G H G ~ G ~@34>".pickRestart({
  A: "~@15 x ~ x ~@6", B: "~@3 x ~@11 x ~ x ~@6", C: "~@3 x ~ x ~@17 x", D: "~@2 x!2 ~@3 x", E: "~@3 x ~@3 x",
  F: "~@11 x ~@12", G: "~ x ~ x", H: "~ x ~@2",
})).gain(0.51)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~ [~@5 x ~@18] [~@7 x] [~@11 x ~@11 x]!2 [~@3 x ~@4] ~@53>").gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A ~@19 A B ~ B ~ B ~ C D B ~ B ~ B ~ E ~ B F B F B F B F B F B G B ~@4
>`.pickRestart({
  A: "~@5 x", B: "~ x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~@3 x ~@6 x ~", E: "~@6 x ~@3 x ~@6 x!2 ~@5", F: "~@3 x",
  G: "~@4 x ~@4 x ~@2",
})).gain(0.36)

// drums · clap
const clap = s("cp").struct(`<
  ~@2 A ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~@5
>`.pickRestart({
  A: "~ x ~@2",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@43 [~ x ~@2] ~@15>").gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@5 B C B C B C B C B C B C B C B D B C E C B C B C B C E C B C B C B C E C B F G D G H G C G H G I G ~@4
>`.pickRestart({
  A: "x!4", B: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3 x ~ x!2 ~ x", C: "x ~ x ~@3 x ~@5 x ~ x!2 ~@2 x ~ x!2 ~@2",
  D: "x ~ x ~@3 x ~@2 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2", E: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3 x ~ x ~@2 x",
  F: "x ~@11 x ~ x!2 ~@2 x ~ x!2 ~@2", G: "x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x!2 ~ x",
  H: "x ~ x ~@3 x ~@11 x ~ x!2 ~@2", I: "x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C A B A B A B A B A B A ~@4
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@3 x ~@13 x ~@6", C: "~@17 x ~@6",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A B A ~ A ~ A ~ A B A ~ A ~ A ~ A B ~@3 A ~ A C A ~ A C A ~ A ~@4
// … 29 more lines

More by Stevie Wonder