Strudelify
For Once in My Life cover art

1968 · For Once In My Life

For Once in My Life

Stevie Wonder

KeyB♭ minorTempo107 bpm
0:00/0:00
// For Once in My Life — Wonder Stevie
// 107 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Pick Gtr.
setcpm(107/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 · acoustic bass · "Bass Gtr"
const bass = note(`<
  ~@7 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@2 AG@2 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@2 BM@4 BN
>`.pickRestart({
  A: "~@13 c1 d1 e1", B: "f1 ~ f1@4 ~@2 f1@3 a1 d2 a1 c2@2", C: "f2@4 ~ e2 ~ a1 d2@2 a1@2 gb1@2 a1@2",
  D: "g1@5 c2 ~ db2 d2@2 ~ d2@3 f2 gb2", E: "g2@2 ~ g2@2 f2 e2 eb2 d2 d2@2 a1@2 ab1@2 ~",
  F: "g1@4 ~ a1 gb1 g1@3 ~ f1@3 gb1@2", G: "g1@4 bb1@2 b1 d2 c2@3 e2 ~ c2 f2 d2",
  H: "f2@2 ~ f2 a1@2 bb1@2 c2@2 ~ c2@2 ~@2 e2", I: "f2@4 ~ a1 d2 b1 c2@4 ~ e1 g1 e1",
  J: "f1@3 ~ f1@2 ~ f1 f1@2 ~ f1 a1 bb1 b1 c2", K: "f1@4 a1@2 d2@2 c2@2 d2 e2 f2 a1 c2@2",
  L: "bb1@6 f2 g2 f2@4 g2@2 a2@2", M: "bb2@5 g2 f2 a1 bb1@2 f1@2 bb1@2 g1@2", N: "a1@6 ~ a1!2 ~ a1@2 c2@2 db2@2",
  O: "d2@4 ~ a2@2 a1 a1@2 d2@2 f1 ~ gb1@2", P: "g1@3 bb1 g1@3 bb1 a1@2 ~ a1 a1@4",
  Q: "bb1@2 ~@2 e2 ~ eb2 ~ d2@2 ~ g1@2 ~ c2 ~", R: "f2 ~ f2@3 ~@2 f2 a1@2 bb1@2 c2@2 d2 e2",
  S: "f2@2 f1@4 ~ a1 gb1 ~ gb1@2 a1@2 gb1@2", T: "g1@4 bb1 d2@2 g2@2 ~ d2@4 b1@2", U: "c2@4 ~ bb1 e1@6 f1@2 gb1@2",
  V: "g1@6 ~ bb1 g1@4 f1@2 gb1@2", W: "g1@5 ~ bb1 b1 c2@3 ~ c2 d2 f2 d2",
  X: "f2@6 ~ f2 a1@3 ~ bb1@2 [b1,d2] ~, ~@8 f2 ~@7", Y: "c2@2 ~ eb2@2 ~ e2@2 f2@3 ~ d2 c2 f1@2",
  Z: "f1@5 ~@2 f1 f1@2 a1@2 d2@2 c2@2", AA: "f2@5 d2 c2 f1 f1@5 a1 bb1 g1", AB: "bb1@6 ~ d2@2 a1 f2 ~ bb2@2 a2@2",
  AC: "g2@4 d2@3 a1 g1@2 a1@2 b1@2 g1 d2", AD: "c2@2 ~ c2 c2@3 db2 d2@2 ~ db2 d2@3 gb2",
  AE: "g2@2 ~ f2 g2@2 ~ d2 c2@3 ~ c2@2 eb2@2", AF: "[f2@3 ~ f2 ~ eb2@3 ~ ab2@2 ~@2 db2@4 ~@2 db2 ~ c2@8 ~@2]/2",
  AG: "[gb2@2 ~@2 gb2 ~ e2@3 ~ a1@3 ~ d2@4 ~@2 d2 ~ db2@4 ~@2 db2 eb2 gb2 eb2]/2",
  AH: "gb1@4 ~ bb1@2 ~ b1@2 c2@2 db2@2 f2@2", AI: "gb2@5 f2 e2 eb2 eb2@2 ~ eb2@2 ~ bb2 a2",
  AJ: "ab2@3 ~ ab2@2 ~ eb2 eb2@5 g2 gb2 g2", AK: "ab2@2 ~@2 ab2@2 ~ eb2 eb2@2 b1@2 bb1@2 ab1 ~",
  AL: "ab1@7 b1@3 eb2@3 ~ bb2@2", AM: "ab2@3 ~ ab2@3 eb2 db2@2 ~ db2!2 eb2 gb2 eb2",
  AN: "gb2@5 eb2 c2 db2 db2@5 eb2 f1@2", AO: "gb1@4 bb1@2 b1 c2 db2@3 eb2 db2 eb2 gb2 eb2",
  AP: "gb2 ~ gb2@3 ~@2 gb2 gb2@2 ~ bb1 bb1@2 b1 db2", AQ: "gb1@5 ~@2 gb1 gb2@3 gb1!2 ab1 bb1 ab1",
  AR: "b1@5 ~@2 eb2@3 e2@2 gb2@2 ab2@2", AS: "b1@4 ~ bb2@3 ab2@2 gb2@2 b1@2 ab1@2",
  AT: "bb1@5 ~@2 db2!2 ~ db2@2 f2@2 e2@2", AU: "eb2@5 bb2@2 bb1 bb1@2 bb2@2 eb2@2 a1@2",
  AV: "ab1@2 ~@2 ab1@2 ~ ab1 bb1@2 ~ bb1 bb1@3 ~", AW: "b1@2 ~@2 f2 ~ e2 ~ eb2@2 ~ ab1@2 ~ db2 ~",
  AX: "gb1 ~ gb1@4 ~ bb1 gb1@2 bb1@2 b1@2 db2@2", AY: "gb1@2 ~@2 gb2 f2@2 gb2 g2@2 ~ g2 eb2@2 g2@2",
  AZ: "ab2@3 ~ b1 eb2@2 a1 ab1@2 ~ ab1 b1@2 c2@2", BA: "db2@4 ~ b2 ~ ab2!2 db2!2 ~ db3 f1 gb1 g1",
  BB: "ab1 ~ ab1@4 ~ ab1 ab1@2 ~ gb1 gb1@2 g1@2", BC: "ab1@3 b1@3 c2@2 db2@2 ~ db2!2 eb2 gb2 eb2",
  BD: "gb2@5 ~@2 gb2 bb1 ~ bb1@2 b1@2 c2@2", BE: "db2@2 ~ db2@2 ~ db2@2 gb1@2 ~ bb1 gb1@2 ~@2",
  BF: "gb1 ~ gb1@5 bb1 bb1@2 b1@2 c2@2 db2@2", BG: "gb2@2 ~@2 gb2 db2@3 gb1@2 ~@2 gb1@2 bb1@2",
  BH: "b1@5 ~@2 eb2@3 e2@2 gb2@4", BI: "ab2@4 ~ ab2@3 b1 ~ eb2@2 ab1@2 c2@2",
  BJ: "db2 ~ db2@3 eb2 db2 d2 eb2 ~ eb2@3 ~ eb2 a1", BK: "ab1@2 ~ ab1 b1@2 c2@2 db2@2 ~ eb2 db2 eb2 gb2 eb2",
  BL: "[gb2@2 ~@2 gb2 ~ e2@3 ~ a1@2 ~@2 d2@4 ~@2 d2 ~ db2@4 ~@2 db2 eb2 gb2 eb2]/2",
  BM: "[gb2@2 ~@2 gb2 ~ e2@2 ~@2 a1@2 ~@2 d2@4 ~@2 d2 ~ db2@4 ~@2 db2 eb2 gb2 eb2]/2", BN: "~@4 gb2@3 ~@9",
})).s("gm_acoustic_bass").gain(0.5)

// chords · piano · "Ac.Piano"
const piano = note(`<
  ~@8 A B C D@2 E F G H I J@2 K L M N O P Q R S T U@2 V W X Y Z AA AB@2 AC@2 AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AD AT AU AV AW AX AY AZ BA BB BC@2 BD BE BF BG BH@2 BI@2 BJ
>`.pickRestart({
  A: "~@2 [ab4,a4,c5] ~@2 [ab4,c5] [ab4,a4] f4 [ab4,a4] ~@2 [ab4,a4] ~ f4 [ab4,a4] ~, [f3,a3,c4]@7 ~ [f3,a3,db4]@7 ~", // Ab Amaj7 F Faug
  B: "a4@3 f4 ab4 [a4,d5] ~@5 [gb4,a4,eb5] ~ [gb4,a4,eb5] ~@2, [f3,a3,d4]@7 ~ [gb3,a3,eb4]@7 ~, ab4 ~@6 [gb4,a4,eb5]@4 ~@5", // D5 Ebdim Dm Ebdim
  C: "[f4,g4,bb4,d5]@3 ~ [f4,g4,bb4,d5]@3 ~@3 [gb4,bb4] ~@2 [gb4,bb4] ~@2, [g3,bb3,d4]@7 [gb4,bb4,d5]@2 ~ d5@2 ~ d5@2 ~, ~@8 [gb3,bb3,d4]@7 ~", // Gm7 Gb Gm Gbaug
  D: "[[f4,g4,bb4,d5] ~@2 f4 db5 d5 [f4,f5] db5 [db5,d5,f5] [f4,bb4,d5] ~@3 [gb4,bb4,d5,gb5] ~@6 [g4,bb4,d5,g5]@2 ~@4 [gb4,bb4]@2 ~@2 [gb4,bb4] db5, [f3,bb3,d4]@7 ~ [gb3,bb3,d4]@7 [g4,bb4,d5,g5]@3 ~@5 [d5,gb5]@8 ~, ~@16 [g3,bb3,d4]@7 [gb4,bb4]@2 ~@7, ~@24 [gb3,bb3,d4]@7 ~]/2", // Gm7 F Db Bb Gbaug Gm Gb Bb …
  E: "[f4,d5,f5]@4 db5 [db5,d5] bb4 f4 ~ [eb4,e4] ~ eb4 g4@2 c4 a3, [f3,bb3,d4]@7 ~ [e3,bb3,c4]@7 ~, ~@9 g4@2 ~ e4 ~@3", // Dm Dmaj7 Emaj7 Bb C7
  F: "[c4,a4]@2 ~@2 [c4,ab4,a4] ~@2 [e4,ab4,c5,e5] ~ [e4,ab4,c5,e5]@2 ~@3 [e4,ab4,c5,e5] f4, [f3,a3]@7 ~ [e3,ab3,c4]@8, ab4 ~@15", // F Eaug F Eaug
  G: "a4@3 f4 [ab4,c5] [a4,c5]!3 ab4 a4 ~ [ab4,a4]!2 f4 g4 ~, [f3,a3,c4]@15 ~, ab4 ~@7 c5@2 ~ c5@3 ~@2", // Ab Am Amaj7 F
  H: "[c4,a4]@2 ~ [ab4,a4] ~ f4 ~ c4 f4 ~ ab4 a4 ~ ab4 a4 ~, [f3,a3]@15 ~, ab4 ~@9 c4@2 ~ c4@2 ~", // F Amaj7 F
  I: "~@3 [ab4,a4,db5] ~ [f4,a4,db5] [db4,f4] ~ f4@2 ~ [ab4,a4,db5] ~@2 [ab4,a4,db5] ~, [f3,a3]@7 ~, db4@3 ~@5", // Amaj7 Faug Db Amaj7 F
  J: "[[d4,f4,a4,d5]@4 ~ [f4,d5,f5] ~@2 [d5,f5]@2 ~@2 a4 bb4 d5 [d4,g4,bb4,f5]@2 ~@3 [bb4,d5]@2 ~ [f4,g4,bb4,d5] ~ [g4,bb4] f4 ~ [f3,bb3,d4,f4]@3 ~, a3@14 ~ [g3,bb3]@11 ~@6, ~@8 [f4,db5] ~@11 [f4,g4] ~@7 bb4 ~@3]/2", // Dm Gm7 Bb Gm7 Gm Bb Gm Db …
  K: "~@3 f4 [ab4,c5] [a4,c5]!3 [ab4,c5] [a4,c5] ~ [f4,ab4,a4,c5] c4 f4 g4 ~, [e3,a3,e4]@15 ~, c4@3 ~, ~@4 g4@3 ~", // Ab Am Ab Am F A5
  L: "[f4,ab4,a4,d5] ~ [f4,ab4,a4] f4 ~@2 ab4 [f4,a4,d5] ~ [f4,a4] d4 [f4,a4]@2 ~@3, [f3,a3]@7 ~, d4@5 ~@3, ~ d5 ~@6", // Dm F Dm F
  M: "[f3,bb3,d4,f4] [c4,e4,g4], ~@4 g3@3 ~", N: "[a3,d4,f4,a4] ~@3 [ab3,d4] ~ [g3,db4] ~ [gb3,c4]@2 ~ [f3,bb3]@3 c3 ~",
  O: "~@4 ab4@2 f4 a4 ~ f4 [db4,f4,a4]!2 ~ [db4,f4,a4] ~@2, [f3,c4]@8 [f3,a3]@7 ~, a3@3 ~ db4 ~@3, ~@4 a4 ~@11", // Dbaug F5 F
  P: "a4@2 ~ f4 ab4 a4 ~@2 eb4@2 [eb4,gb4,ab4,a4] ~@2 [eb4,gb4,ab4,a4] ~@2, [f3,a3,d4]@8 [gb3,a3]@7 ~, ab4 ~@15", // Ebdim Dm Gbm
  Q: "f4 ~@2 f4 ~ [d5,f5] ~ [d5,f5] ~@2 f4 ~ f4 ~ f4 ~, [f3,bb3,d4]", // Dm Bb
  R: "~@2 [c5,eb5,e5] ~@2 [d5,f5] ~@2 bb5 ~@2 f5 ~ e5 ~@2, [e3,bb3,c4]@15 ~", // C Dm C7
  S: "[db5,d5,g5] ~@4 [g4,bb4,d5] ~ [gb4,bb4,d5] ~@2 [gb4,bb4,d5] ~@3 [gb4,bb4,d5] ~, [g3,bb3,d4] [gb3,bb3], ~@4 d4@3 ~", // G Gm Gbaug Gm Gb
  T: "[bb4,d5]@2 ~@2 [d5,f5] [bb4,d5] ~ g4 ~@2 [g4,bb4,e5] ~@3 [g4,bb4,e5] ~, [f3,bb3,d4]@7 ~ [g3,bb3,e4]@8, [f4,g4] ~@15", // Bb Dm Bb Edim Bb Edim Fsus2
  U: "[[e3,a4,c5,e5]@3 ~ [a4,c5,e5]@2 ~ [f4,a4,d5] ~@2 [f4,a4,d5]@2 ~@2 [f4,a4,d5] ~ [g4,bb4,c5,eb5]@3 ~ [g4,bb4,c5,eb5]@2 ~ [f4,a4,c5,eb5] ~@2 [f4,a4,c5,eb5]@2 ~@4, [f3,a3,e4]@8 [a3,d4]@7 g3@6 ~@3 [f3,a3,eb4]@7 ~, ~@8 f3@6 ~ [bb3,eb4]@8 ~@9]/2", // Am Dm Cm7 F7 Fmaj7 D5 F7 Eb5
  V: "c4@2 [c4,a4,c5]@3 [a4,c5]!5 a4 [a4,c5]@2 f4 g4 f4, [f3,a3]@15 ~, ~@2 ab4 ~@8 ab4 ~@4", // F Am F
  W: "~@2 [ab4,a4,db5] ~ [a4,db5]@2 ~@2 [a4,db5]@3 [a4,db5]@2 f4 ~@2, [f3,a3,db4]@15 ~, ~@4 ab4 ~@3 ab4 ~@2 ab4 ~@4", // Amaj7 A Faug
  X: "[d4,f4]@5 ~ f4@2 ~@4 bb4 ~ g4 ~, [f3,a3]@15 ~, db4 ~@15", // Dm F
  Y: "f4@2 [f4,b4,d5]@2 ~ [f4,bb4,d5] ~@2 [f4,b4,d5]@2 ~ [b4,d5]@2 ~ g4 ~, [f3,b3,d4]@15 ~, ~@2 bb4 ~@2 b4@2 ~ bb4 ~@2 [f4,bb4] ~@4", // Bdim Bb Bdim Bm Bdim Bb5
  Z: "[c2,c4,f4,a4]@3 ~ [c4,a4]@2 ~ [a3,d4,f4]!2 ~ [a3,c4,d4,f4]@2 ~ [c4,d4,f4]@2 ~, [f3,a3]@7 ~ f3@7 ~, ab4 ~@3 c2@3 ~ d2@2 ~@2 d2@3 ~, ~@4 [f4,ab4] ~@2 c4@2 ~@4 a3 ~@2", // F Dm Dm7 F Fm
  AA: "[g3,bb3,d4,f4]@2 ~@2 [g2,bb3,d4]@3 [f3,bb3,d4,f4] c2@2 [f3,bb3,d4,f4]@2 c2@2 [f3,bb3,d4,f4] ~, f3@7 ~@9, g2@4 [g3,f4] ~@2 g3@7 ~@2", // Gm7 Gm Bb G7
  AB: "[[c4,f4,a4]@2 ~@2 [c4,f4,a4] ~ [bb3,eb4,g4]@3 ~ [f4,bb4]@2 ~@2 [c4,f4,ab4]@4 ~@2 [c4,f4,ab4] ~ [e4,a4]@8 ~@2, ~@11 db4@3 ~@2]/2", // F Eb Bb5 Fm A5
  AC: "[[db4,gb4,bb4]@2 ~@2 [db4,bb4] ~ [b3,ab4]@2 ~@2 [gb4,b4]@2 ~@2 [db4,gb4,a4]@4 ~@2 [db4,gb4,a4] ~ [f4,bb4]@7 ~@3, ~@4 gb4@2 e4 ~@15 d4@5 ~@5]/2", // Gb E B5 Gbm Bb5
  AD: "[gb3,bb3,db4]@4 [gb3,bb3,db4]@2 ~ [gb3,bb3,d4] [gb3,bb3,d4]@2 [gb3,bb3,d4]@3 ~ [gb3,bb3,d4] ~", // Gb Gbaug
  AE: "[gb3,bb3,eb4]@4 [gb3,bb3,eb4]@2 ~ [g3,bb3,db4,e4] [g3,db4,e4]@2 [g3,bb3,db4,e4]@3 ~ [g3,bb3,db4,e4] ~", // Ebm Gdim Dbdim Gdim
  AF: "[gb3,ab3,b3,eb4]@2 ~@2 [ab3,eb4]@2 ~ [g3,b3,eb4] [g3,b3,eb4]@6 ~@2, ~@4 [gb3,b3] ~@11", // Abm7 Ab5 Gaug B5
  AG: "[ab3,b3,eb4]@4 [gb3,ab3,b3,eb4]@2 ~ [g3,b3,eb4] [g3,b3,eb4]@6 ~@2, gb3 ~@7", // Abm Abm7 Gaug
  AH: "[ab3,b3,eb4,ab4]@3 ~ [ab3,b3,eb4,ab4]@2 ~ [g3,b3,eb4,g4] [b3,eb4]@2 [g3,b3,eb4,g4]@3 ~ [g3,b3,eb4,g4] ~, ~@8 g4 ~@7", // Abm Gaug B Gaug
  AI: "[b3,eb4,gb4]@4 [gb3,ab3,b3,eb4,gb4]@2 ~ [f3,ab3,b3,f4] [ab3,b3,f4] [f3,ab3,b3,f4]@3 ~@2 [f3,ab3,b3,f4] ~, [gb3,ab3] ~@7", // B Abm7 Fdim Gbsus2
  AJ: "[bb3,db4,gb4]@2 ~@2 [bb3,db4,gb4] ~@2 [f3,ab3,a3,db4] [f3,a3,db4]@2 [f3,a3,db4]@3 ~ [f3,a3,db4] ~, gb3@7 ~@3 ab3 ~@5", // Gb Db Faug
  AK: "[bb3,db4]@4 [bb3,db4,gb4]@2 ~ [bb3,db4,gb4] ~@2 [bb3,db4,gb4]@3 ~ [bb3,db4,gb4] ~, gb3@7 ~, gb4 ~@7", // Bbm Gb
  AL: "[bb3,db4,gb4]@3 ~ [bb3,db4,gb4]@2 ~ [bb3,db4,gb4] ~@2 [bb3,db4,gb4]@3 ~ [bb3,db4,gb4] ~, bb4@15 ~", // Gb
  AM: "[bb3,d4,gb4]@4 [bb3,d4,gb4]@2 ~ [bb3,d4,gb4] ~@2 [bb3,d4,gb4]@2 ~@2 [bb3,d4,gb4] ~, bb4@15 ~", // Bbaug
  AN: "[eb4,gb4,bb4]@4 [bb3,eb4,gb4,bb4]@2 ~ [bb3,eb4,gb4,bb4] ~@2 [bb3,eb4,gb4,bb4]@2 ~ [bb3,gb4,bb4]@2 ~, bb3@2 ~@11 eb4 ~@2", // Ebm
  AO: "[ab3,b3,eb4,ab4]@3 ~ [ab3,b3,eb4,ab4]@2 ~ [ab3,b3,eb4,ab4] ~@2 [ab3,b3,eb4,ab4]@2 gb4@2 [ab3,b3,eb4,ab4] ~", // Abm
  AP: "[bb3,db4,f4]@4 [bb3,db4,f4,ab4]@2 ~ [bb3,db4,f4,ab4] ab4@2 [bb3,db4,f4,ab4]@3 [bb3,f4,ab4] ~@2, [f3,ab3]@15 ~, ~@13 db4@2 ~", // Bbm Bbm7 Bb7 Fm
  AQ: "[gb3,bb3,db4,eb4,gb4]@2 ~@2 [gb3,bb3,db4,eb4,gb4]@3 [gb3,bb3,db4,eb4,gb4] ~@2 [gb3,bb3,db4,eb4,gb4]@5 ~", // Ebm7
  AR: "[eb3,gb3,b3,eb4,ab4]@4 ab3@2 ab3 ~, ~@4 [f3,db4,f4,bb4]@3 ~", // Abm7 Bbm
  AS: "[gb3,bb3,eb4]@2 ~@2 [a3,eb4] ~ [ab3,d4] ~ [g3,db4]@2 ~ [gb3,b3]@3 db3 ~", // Ebm Adim Abdim Gdim B5
  AT: "[gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@2 ~ [g3,bb3,db4,e4] [g3,db4,e4]@2 [g3,bb3,db4,e4]@2 ~ [g3,bb3,db4,e4] ~@2", // Ebm Gdim Dbdim Gdim
  AU: "[gb3,b3,eb4]@2 ~@2 [gb3,b3,eb4]@2 ~ [gb3,b3,eb4] ~@2 [gb3,b3,eb4]@2 ~@2 [gb3,b3,eb4] ~", // B
  AV: "[ab3,b3,f4]@3 ~ [ab3,b3,f4]@2 ~ [ab3,b3,f4] ~@2 [ab3,b3,f4]@3 ~ [ab3,b3,f4] ~, db4@15 ~", // Fdim
  AW: "[b3,eb4,ab4] ~ [b3,eb4,ab4]@2 ~ [b3,eb4,ab4]@2 ~ [b3,eb4] ~ [b3,eb4,g4]@2 ~ [b3,eb4,g4]@2 ~, ~@4 g4 ~@3", // Abm B Baug
  AX: "[b3,eb4,gb4]@2 ~@2 [b3,eb4,gb4]@2 ~ [ab3,b3,f4] [ab3,b3,f4]@2 [ab3,b3,f4]@3 ~ [ab3,b3,f4] ~", // B Fdim
  AY: "[gb3,bb3]@4 [gb3,bb3,db4,f4]@2 ~ [gb3,bb3,eb4] [gb3,bb3,eb4]@2 [gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4] ~, [db4,f4] ~@7", // Gb Gbmaj7 Ebm Db
  AZ: "[e3,ab3,b3,e4]@3 ~ [e3,ab3,b3,e4]@2 ~ [gb3,ab3,bb3,e4] [gb3,e4] ~ [gb3,ab3,bb3,e4]@2 ~ [gb3,ab3,bb3,e4]@2 ~, ~@4 bb3 ~@3", // E Gb7
  BA: "[gb3,bb3,db4]@2 ~@2 [gb3,bb3,db4]@2 ~ [gb3,bb3,db4] ~@2 [gb3,bb3,db4]@2 gb2 [gb3,bb3,db4] gb2 ~, gb2@11 ~@5", // Gb
  BB: "[e3,gb3,bb3,d4]@2 ~@2 [e3,gb3,bb3,d4]@2 ~ [e3,gb3,bb3,d4] ~@2 [gb2,e3,gb3,bb3,d4]@2 ~ [e3,gb3,bb3,d4] ~@2, gb2@9 ~@4 gb2@2 ~", // Daug Gbaug Daug
  BC: "[[b3,bb4]@4 b3@2 ~ b3 ~ b3 ~@2 [b2,b3] bb3 [a2,a3] ab3 [gb3,ab3,c4,eb4,gb4]@2 ~@2 [gb3,ab3,c4,eb4,gb4]@2 ~ [gb3,ab3,c4,eb4,gb4] ~@2 [gb3,ab3,c4,eb4,gb4] ~ [gb3,ab3,c4,eb4,gb4] ab2@2 ~, [bb3,eb4,gb4]@7 ~@9, b1@12 ~ bb2@2 ab2@10 ~ ab2@2 ~@4]/2", // Bmaj7 B A Ab7 Ebm
  BD: "[db2,gb3,bb3,db4,gb4,bb4]@3 ~ [gb3,bb3,db4,gb4,bb4]@2 ~ [gb3,bb3,db4,gb4,bb4] [eb2,bb3,db4,gb4]@2 [gb3,bb3,db4,gb4,bb4]@2 ~ [gb3,bb3,db4,gb4,bb4] ~@2, ~@4 db2@3 ~ eb4@7 ~, ~@8 gb3 ~@3 eb2@3 ~", // Gb Ebm7 Gb
  BE: "[ab2,gb3,ab3,b3,eb4,gb4]@3 ~ [ab2,gb3,ab3,eb4,gb4]@3 [gb3,ab3,b3,eb4,gb4] [db2,b3,eb4,gb4]@2 [gb3,ab3,b3,eb4,gb4]@2 ~ [ab3,b3,eb4,gb4]@2 ~, ~@4 b3 ~@3 gb3 ~@3 db2@3 ~, ~@13 gb3 ~@2", // Abm7 Ab7 Abm7 B Abm7
  BF: "[db4,gb4,ab4,bb4]@2 ~@2 [db4,gb4,ab4,bb4] ~ [e4,gb4,ab4]@2 ~@2 [e4,a4,b4,db5]@2 ~@2 [db4,gb4,a4]@2, ~@6 b3 ~@9", // Gb E A Gbm
  BG: "~@4 [db4,gb4,a4] ~ [d4,f4,bb4]@8 ~@2", // Gbm Bb
  BH: "[[db4,gb4,ab4,bb4]@2 ~@2 [db4,gb4,ab4,bb4] ~ [e4,gb4,ab4]@2 ~@2 [a4,db5]@2 ~@2 [db4,gb4,a4]@4 ~@2 [db4,gb4,a4] ~ [d4,f4,bb4]@8 ~@2, ~@6 b3 ~@3 [e4,b4] ~@21]/2", // Gb E A Gbm Bb E5
  BI: "[[db4,gb4,ab4,bb4]@3 ~ [db4,gb4,ab4,bb4] ~ [e4,gb4,ab4]@2 ~@2 [e4,a4,b4,db5]@2 ~@2 [db4,gb4,a4]@4 ~@2 [db4,gb4,a4] ~ [d4,f4,bb4]@8 ~@2, ~@6 b3 ~@25]/2", // Gb E A Gbm Bb
  BJ: "~@2 [db4,gb4,ab4,bb4] ~@5", // Gb
})).s("gm_piano").gain(0.45)

// other · electric guitar muted · "Pick Gtr"
const electric_guitar_muted = note("<~@2 A ~@16 B ~@11 C ~@3 D ~ E ~@15 F ~@11 G ~@3 H ~ I ~@7>".pickRestart({
  A: "[c4,f4,a4] ~@2 [c4,f4,a4]!2 ~@2 [c4,f4,a4] ~ [c4,f4,a4]@2 ~ [c4,f4,a4] ~@3", B: "g4@2 ~ g4 g4@2 ~ g4@2 ~ g4 ~@5",
  C: "~@7 f4@2 ~@7", D: "~@7 g4 ~ g4 ~ g4!2 ~@3", E: "~@9 g4 ~ g4!2 ~ g4 ~", F: "ab4@2 ~ ab4 ab4@2 ~ ab4@2 ~ ab4 ~@5",
  G: "~@7 gb4@2 ~@7", H: "~@7 ab4 ~ ab4 ~ ab4!2 ~@3", I: "~@14 ab4 ~",
})).s("gm_electric_guitar_muted").gain(0.4)

// chords · electric guitar clean · "El. Gtr1"
const electric_guitar_clean = note(`<
  ~@3 A@5 B C D E D F G A@2 H I@2 J K L M B N O P D F Q R A H K S T I ~@4 U V W X W Y Z AA@2 AB AC@2 AD AE AF AG U AH AI
  AJ W Y AK AL AA AB AE AM AN AO@3 ~@5
>`.pickRestart({
  A: "[a3,c4,f4]!16", B: "[a3,c4,f4]!8 [a3,db4,f4]!8", C: "[a3,d4,f4]!8 [a3,eb4,gb4]!8",
  D: "[bb3,d4,g4]!8 [bb3,d4,gb4]!8", E: "[bb3,d4,f4]!8 [bb3,d4,gb4]!8", F: "[bb3,d4,f4]!8 [g3,bb3,e4]!8",
  G: "[a3,c4,f4]!8 [ab3,c4,e4]!8", H: "[a3,db4,f4]!16", I: "[bb3,d4,f4]!16", J: "[a3,c4,e4]!16", K: "[a3,d4,f4]!16",
  L: "[bb3,d4,f4]!8 [c4,e4,g4]!6 ~ [d4,e4,f4,a4], ~@7 [c4,e4,g4]", M: "[d4,f4,a4] ~@15",
  N: "[a3,d4,f4]!8 [a3,eb4,gb4]!5 [a3,gb4] [a3,eb4,gb4]!2", O: "[bb3,d4,g4]!14 [d4,g4] [bb3,d4,g4]",
  P: "[g3,bb3,e4]!16", Q: "[a3,c4,e4]!6 ~ [f3,a3,d4]!9, ~@3 [a3,c4,e4] ~@4",
  R: "[g3,bb3,eb4]!8 [f3,a3,eb4]!4 [a3,eb4] [a3,eb4,f4]!3, ~@3 f3", S: "[b3,d4,f4]!6 [d4,f4] [b3,d4,f4]!9",
  T: "[a3,c4,f4]!8 [a3,c4,d4,f4]!8", U: "[bb3,db4,gb4]!8 [bb3,d4,gb4]!8", V: "[bb3,eb4,gb4]!8 [bb3,e4,g4]!8",
  W: "[b3,eb4,ab4]!8 [b3,eb4,g4]!8", X: "[b3,eb4,gb4]!8 [b3,eb4,g4]!8", Y: "[b3,eb4,gb4]!8 [ab3,b3,f4]!8",
  Z: "[bb3,db4,gb4]!8 [a3,db4,f4]!8", AA: "[bb3,db4,gb4]!16", AB: "[bb3,d4,gb4]!16", AC: "[b3,eb4,gb4]!16",
  AD: "[bb3,db4,f4]!16", AE: "[bb3,eb4,gb4]!16",
  AF: "[b3,eb4,gb4]!8 [db4,f4,ab4]!6 ~ [eb4,f4,gb4,bb4], ~@7 [db4,f4,ab4]", AG: "[eb4,gb4,bb4] ~@15",
  AH: "[bb3,eb4,gb4]!8 [bb3,e4,g4]!5 [bb3,g4] [bb3,e4,g4]!2", AI: "[b3,eb4,ab4]!14 [eb4,ab4] [b3,eb4,ab4]",
  AJ: "[ab3,b3,f4]!16", AK: "[bb3,db4,f4]!6 ~ [gb3,bb3,eb4]!9, ~@3 [bb3,db4,f4] ~@4",
  AL: "[ab3,b3,e4]!8 [gb3,bb3,e4]!4 [bb3,e4] [bb3,e4,gb4]!3, ~@3 gb3", AM: "[c4,eb4,gb4]!6 [eb4,gb4] [c4,eb4,gb4]!9",
  AN: "[bb3,db4,gb4]!8 [bb3,db4,eb4,gb4]!8", AO: "[[b3,eb4,gb4]!15 [b3,eb4,gb4]@32 ~]/3",
})).s("gm_electric_guitar_clean").gain(0.3)

// other · electric guitar clean · "El. Gtr2"
const electric_guitar_clean_2 = note("<~@4 [f3 ~ f3@11 c4 d4 f4]!2 [g4@2 f4@11 a3 bb3 c4] [f3 ~ f3@11 c4 d4 f4] ~@71>")
  .s("gm_electric_guitar_clean").gain(0.4)

// other · french horn · "Horns"
const french_horn = note("<~@23 A ~@2 B C ~@10 D@2 E@2 ~@15 F G ~ H I ~@10 J@6 K>".pickRestart({
  A: "~@4 d4 ~ f4 ~ a4@2 ~ c5@2 [bb4,b4] a4@2", B: "a4@2 ~@2 gb4 ~@2 g4@8 ~", C: "~@2 a4 ~ a4 gb4 ~ g4@6 ~@3",
  D: "[c5@2 ~@2 c5@2 bb4@3 ~ bb4@2 ~@2 ab4@4 ~@2 ab4 ~ [a4,db5]@8 ~@2]/2", // A
  E: "[ab4@3 ab4 ~@2 gb4@2 ~@2 b4@3 ~ a4@4 ~@2 a4 ~ [bb4,d5]@7 ~@3]/2", // Bb
  F: "~@4 eb4 ~ gb4 ~ bb4@2 ~ db5@2 [b4,c5] bb4@2", G: "bb4@3 ~@5", H: "bb4@2 ~@2 g4 ~ ab4@8 ~@2",
  I: "~@2 bb4 ~ bb4 g4 ~ ab4@6 ~@3",
  J: "[[gb4,db5]@2 ~@2 [gb4,db5]@2 b4@3 ~ b4@3 ~ a4@4 ~@2 a4@2 [bb4,d5]@8 ~@2 db5@2 ~ [gb4,db5] ~@2 b4@2 ~@2 b4@2 ~@2 a4@4 ~@2 a4 ~ [bb4,d5]@8 ~ [gb4,db5]@3 ~ [gb4,db5]@2 ~ b4@3 ~ b4@3 ~ a4@4 ~@2 a4 ~ [bb4,d5]@8 ~@2, ~@31 gb4@2 ~@63]/6", // Gb5 Bb Gb5 Bb Gb5 Bb
  K: "~@2 [gb4,db5] ~@5", // Gb5
})).s("gm_french_horn").gain(0.35)

// other · trombone
const trombone = note("<~@22 A B C ~@13 D E F@2 ~@14 G H I ~@13 J K L K M K ~>".pickRestart({
  A: "bb3@8 c4@7 ~", B: "d4@2 ~@2 d4 ~ db4 ~ c4@2 ~ bb3@5", C: "a3@3 ~@5", D: "c4@2 ~@2 c4 ~ bb3@3 ~ c4@2 ~@2 c4@2",
  E: "~@4 c4 ~ a4@7 ~@3", F: "[db4@2 ~@2 db4@2 b3@2 ~@2 db4@2 ~@2 db4@4 ~@2 db4 ~ bb4@6 ~@4]/2", G: "b3@8 db4@7 ~",
  H: "eb4@2 ~@2 eb4 ~ d4 ~ db4@2 ~ b3@4 ~", I: "db4@3 ~@5", J: "db4@2 ~@2 db4 ~ b3@3 ~ db4@2 ~@2 db4@2",
  K: "~@4 db4 ~ bb4@7 ~@3", L: "db4@2 ~@2 db4 ~ b3@2 ~@2 db4@2 ~@2 db4@2", M: "db4@3 ~ db4 ~ b3@3 ~ db4@2 ~@2 db4@2",
})).s("gm_trombone").gain(0.4)

// other · string ensemble 1 · "String 1"
const string_ensemble_1 = note(`<
  ~@22 A B C D E@2 F G H I ~@6 J@2 K@2 ~@4 L M ~@9 N O P Q@2 R S T@2 ~@6 U@2 V W V X Y
>`.pickRestart({
  A: "d6 e6", B: "f6@3 ~ [d5,d6] ~ [f5,f6] ~ a6@2 ~ [c6,c7]@2 ~ [a5,a6]@2, ~@8 a5 ~@7", C: "c5@8 db5@7 ~", D: "d5 eb5",
  E: "[~@3 d5 bb4 d5 f5 a5 c6 bb5 c6@3 bb5 [d5,f5] c5@4 ~@2 bb4 d5 f5 a5 bb5 g5@5 ~]/2", // Dm
  F: "g5@4 ~ g5 d5 bb4 gb5@4 ~ gb5 d5 bb4", G: "f5@4 ~ f5 d5 bb4 e5@7 ~", H: "e5 d5", I: "eb5@15 ~",
  J: "[[f5,f6]@2 ~@2 [f5,f6] ~ [eb5,eb6]@2 ~@2 [ab5,ab6]@2 ~@2 [f5,f6]@4 ~@2 [f5,f6] ~ [a5,a6]@7 ~@3]/2", // F Eb Ab F A
  K: "[[gb5,gb6]@2 ~@2 [gb5,gb6] ~ [e5,e6]@2 ~@2 [a5,a6]@2 ~@2 [gb5,gb6]@4 ~@2 [gb5,gb6] ~ [bb5,bb6]@6 ~@4]/2", // Gb E A Gb Bb
  L: "[ab5,ab6] [g5,g6]", M: "[gb5,gb6]@7 [f5,f6]@8 ~",
  N: "~@4 [eb5,eb6] ~ [gb5,gb6] ~ bb6@2 ~ [db6,db7]@2 ~ [bb5,bb6]@2, ~@8 bb5 ~@7", O: "db5 d5", P: "eb5 e5",
  Q: "[~@3 eb5 b4 eb5 gb5 bb5 db6 b5 db6@3 b5 [eb5,gb5] db5@4 ~@2 b4 eb5 gb5 bb5 b5 ab5@5 ~]/2", // Ebm
  R: "ab5@4 ~ ab5 eb5 b4 g5@4 ~ g5 eb5 b4", S: "gb5@4 ~ gb5 eb5 b4 f5@7 ~", T: "[f5@8 eb5@7 e5@15 ~@2]/2",
  U: "[[gb5,gb6]@2 ~@2 [gb5,gb6] ~ [e5,e6]@2 ~@2 [a5,a6]@2 ~@2 [gb5,gb6]@4 ~@2 [gb5,gb6] ~ [bb5,bb6]@7 ~@3]/2", // Gb E A Gb Bb
  V: "[gb5,gb6]@2 ~@2 [gb5,gb6] ~ [e5,e6]@2 ~@2 [a5,a6]@2 ~@2 [gb5,gb6]@2", // Gb E A Gb
  W: "~@4 [gb5,gb6] ~ [bb5,bb6]@8 ~ [gb5,gb6]", X: "~@4 [gb5,gb6] ~ [bb5,bb6]@8 ~@2", Y: "~@2 [gb5,gb6] ~@5",
})).s("gm_string_ensemble_1").gain(0.35)

// chords · string ensemble 1 · "String 2"
const string_ensemble_1_2 = note(`<
  ~@16 A@2 B@3 C D E F G H I J K L@2 ~@6 M@2 N@2 O@5 P Q@5 R S@2 T U V W X Y Z AA AB@2 AC@4 ~@2 AD@2 AE@2 ~@2 AF
>`.pickRestart({
  A: "[c4@15 db4@16 ~]/2", B: "[d4@31 e4@16 ~]/3", C: "f4", D: "d5 e5", E: "f5 ~@3 d4 ~ f4 ~ a4@2 ~ c5@2 ~ a4@2",
  F: "c4 db4", G: "d4 eb4", H: "~@3 d6 bb5 d6 f6 a6 c7 bb6 c7@3 bb6 [d6,f6] ~", I: "c6@4 ~ bb5 d6 f6 a6 bb6 g6@5 ~",
  J: "g6@5 g6 d6 bb5 gb6@4 ~ gb6 d6 bb5", K: "f6@5 f6 d6 bb5 e6@7 ~", L: "[e6@8 d6@7 eb6@15 ~@2]/2",
  M: "[[c4,f4,a4]@2 ~@2 [c4,f4,a4] ~ [bb3,eb4,g4]@2 ~@2 [eb4,ab4,c5]@2 ~@2 [c4,f4,ab4]@4 ~@2 [c4,f4,ab4] ~ [e4,a4,db5]@7 ~@3]/2", // F Eb Ab Fm A
  N: "[[db4,gb4,bb4]@3 ~ [db4,gb4,bb4] ~ [b3,e4,ab4]@2 ~@2 [e4,a4,db5]@2 ~@2 [db4,gb4,a4]@4 ~@2 [db4,gb4,a4] ~ e4@4 gb4@3 ~@3, ~@22 [bb4,d5]@7 ~@3]/2", // Gb E A Gbm Bb
  O: "[db4@8 d4@7 eb4@8 ~ e4@7 ab4@40 ~ g4@8]/5", P: "gb4 f4", Q: "[db4 gb4]/5", R: "ab4", S: "[bb4@15 gb4@16 ~]/2",
// … 83 more lines

More by Stevie Wonder