Strudelify

Heaven Help Us All

Stevie Wonder

KeyA♭ majorTempo78 bpm
0:00/0:00
// Heaven Help Us All — Wonder Stevie
// 78 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 57 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 · epiano1 · "elec piano"
const epiano1 = note("<A B@2 C@8 D@8 E@2 F@5 G@5 H@4 I@2 J@6 I@2 K@6 L@6>".pickRestart({
  A: "~@2 g7@3 ~@26 db5", B: "[~ eb4 bb4 ab4 ~ bb4 ab4 ~ ab4@24, ~@2 c5@5 ~ eb4@4 ~@2 eb4@50]/2",
  C: "[~@8 ab3@8 bb3@4 ab3 ~@3 db3 ~@3 [db3,f3,ab3]@26 ~@2 eb3@2 f3 ~@14 [ab3,c4]@7 bb3@4 ab3 ~@7 db3@17 ~ db3@2 ~@6 eb3@5 ~ eb3@8 ab3@2 eb3 ~@2 ab3@3 ~@4 bb3@4 ab3 ~@3 db3 ~@2 eb3 [db3,ab3]@18 f3@2 db3@2 eb3@2 db3@2 f3@3 ~ eb3 ~ g3@17 ~ g3@2 eb3@2 ~@2 eb3@4 bb3 ~@3 [c3,eb3,ab3]@26 eb3@2 c3@2 eb3 ~ eb3@4, ~@8 [eb3,c4]@12 ~@34 db3@4 ~@2 eb3@24 ~@8 ab3@31 ~@87 g3@5 ~@41, ~@92 f3@20 d3@9 ~@15 [eb3,c4]@11 ~@9 [eb3,f3]@17 ~@15 [eb3,bb3]@21 ~@47]/8", // Db Ab Db5 Ab Cm Ebsus2 Eb5
  D: "[~@4 ab3@2 ~@2 [ab3,c4]@8 bb3@4 ab3@2 eb3@2 c4 ~@3 [f3,ab3,bb3,db4]@18 ~@2 ab3@2 bb3@2 [f3,db4]@5 ~@3 db4 c4@7 ab3@2 eb3 ~ ab3@7 ~ bb3@4 ab3 ~@3 db3 ~@3 [db3,f3]@20 db3@2 d3@2 eb3 ~ f3@4 db3 ~ eb3@8 [g2,ab3] ~ eb3 ~ [ab3,c4]@8 bb3@4 ab3 ~@3 db3 ~@3 f3@17 ~ f3@2 db3@2 eb3@2 ~@2 ab3@4 eb3 ~ [eb3,bb3]@18 g3@2 eb3@2 f3@2 g3@2 [eb3,bb3] ~@17 [eb4,ab4]@3 ~ [eb4,ab4]@4 ~@16, ~@8 eb3@13 ~@25 f3@4 ~@2 ab3 ~@7 [eb3,ab3]@8 ~@4 [eb3,c4]@11 ~@9 ab3@18 ~@26 eb3@13 ~@7 [db3,ab3]@21 ~@3 f3@4 ~@4 g3@17 ~@51, ~@182 db3 ~@37 [c3,eb3,ab3]@21 ~@15]/8", // Ab Bbm7 Db Abmaj7 Ab Eb5 Ab5 Cm …
  E: "[eb4@2 ab4@2 bb4@2 c5@3 ~ bb4@3 ~ ab4@4 eb4@2 ab4@2 bb4 ~ bb4@3 ~ ab4@12 eb5@12 ab4@12, ~@6 eb4@7 ~@51]/2",
  F: "[~@2 ab4@2 bb4@2 [eb4,c5]@4 bb4@4 ab4@2 eb4@2 ~@2 bb4@3 ~ bb4@3 ~ ab4@12 eb5@16 eb4 ~@3 f4@13 ~ f4@2 ~@2 db5@2 c5@4 bb4@6 ~@2 [c4,eb4,ab4]@16 ~@4 [eb4,ab4,c5]@2 ~@2 [eb4,c5]@7 ~ [g4,bb4]@11 ~@2 ab4@2 ~ g4@2 eb4@4 ~@2 f4@2 g4 ~ ab4@2 ~@2 g4@2 eb4@2, eb4@4 ~@14 ab4@6 ~@36 [ab4,db5]@17 ~@3 eb4@11 ~@25 db5 ~@19 bb4@13 ~@5 bb4@4 ~@2, ~@60 bb4 ~@15 ab4@8 ~@32 ab4@4 ~@4 eb4@16 ~@6 eb4@4 ~@2 eb4@5 ~@3]/5", // Cm Ab Cm Gm Db5
  G: "[~@8 [eb4,bb4]@7 ~ [e4,ab4,b4]@4 [ab4,b4]@2 ~@14 a3@2 ~@2 [a3,db4]@8 b3@4 a3@2 e3@2 db4 ~@3 [gb3,a3,b3,d4]@18 ~@2 a3@2 b3@2 [gb3,d4]@5 ~@3 d4 db4@7 a3@2 e3 ~ a3@7 ~ b3@4 a3 ~@3 d3 ~@3 [d3,gb3]@20 d3@2 eb3@2 e3 ~ gb3@4 d3 ~ e3@4, ~@20 e4 ~@7 [e4,a4,db5]@20 ~@112, ~@40 e3@13 ~@25 gb3@4 ~@2 a3 ~@7 [e3,a3]@8 ~@4 [e3,db4]@11 ~@9 a3@18 ~@18]/5", // Eb5 E Abm A Bm7 D A A5 …
  H: "[~@4 a3 ~ e3 ~ [a3,db4]@8 b3@4 a3 ~@3 d3 ~@3 gb3@17 ~ gb3@2 d3@2 e3@2 ~@2 a3@4 e3 ~ [e3,b3]@18 ab3@2 e3@2 gb3@2 ab3@2 [e3,b3] ~@5 [db3,e3,a3]@21 ~@15, ~@8 e3@13 ~@7 [d3,a3]@21 ~@3 gb3@4 ~@4 ab3@17 ~@51, ~@54 d3 ~@73]/4", // A E5 A D5
  I: "[e4@2 a4@2 b4@2 db5@3 ~ b4@3 ~ a4@4 e4@2 a4@2 b4 ~ b4@3 ~ a4@12 e5@12 a4@12, ~@6 e4@7 ~@51]/2",
  J: "[~@2 a4@2 b4@2 [e4,db5]@4 b4@4 a4@2 e4@2 ~@2 b4@3 ~ b4@3 ~ a4@12 e5@16 e4 ~@3 gb4@13 ~ gb4@2 ~@2 d5@2 db5@4 b4@6 ~@2 [db4,e4,a4]@16 ~@4 [e4,a4,db5]@2 ~@2 [e4,db5]@7 ~ [ab4,b4]@11 ~@2 a4@2 ~ ab4@2 e4@4 ~@2 gb4@2 ab4 ~ a4@2 ~@2 ab4@2 e4@10 ~@24, e4@4 ~@14 a4@6 ~@36 [a4,d5]@17 ~@3 e4@11 ~@25 d5 ~@19 b4@13 ~@5 b4@4 ~@34, ~@60 b4 ~@15 a4@8 ~@32 a4@4 ~@4 e4@16 ~@6 e4@4 ~@2 e4@5 ~@35]/6", // Dbm A Dbm Abm D5
  K: "[~@2 a4@2 b4@2 [e4,db5]@4 b4@4 a4@2 e4@2 ~@2 b4@3 ~ b4@3 ~ a4@12 e5@16 e4 ~@3 gb4@13 ~ gb4@2 ~@2 d5@2 db5@4 b4@6 ~@2 [db4,e4,a4]@16 ~@4 [e4,a4,db5]@2 ~@2 [e4,db5]@7 ~ [ab4,b4]@11 ~@2 a4@2 ~ ab4@2 e4@4 ~@2 gb4@2 ab4 ~ a4@2 ~@2 ab4@2 e4@10 ~@17 gb4@4 ab4@2 ~, e4@4 ~@14 a4@6 ~@36 [a4,d5]@17 ~@3 e4@11 ~@25 d5 ~@19 b4@13 ~@5 b4@4 ~@34, ~@60 b4 ~@15 a4@8 ~@32 a4@4 ~@4 e4@16 ~@6 e4@4 ~@2 e4@5 ~@20 e4@12 ~@3]/6", // Dbm A Dbm Abm D5
  L: "[~ db4@8 ~ db4@13 ~@13 d4@9 d4@7 ~@4 [ab4,b4]@26 ~@14 gb2@65 ~@31, ~ a2@34 ~ d3@19 gb4@27 ~@5 gb4@2 bb4@72 ~@31, ~ [a3,e4]@21 ~@5 a4@27 ~ e3@31 ~ gb3@74 ~@31, ~@36 [e4,gb4]@16 ~@2 e4@27 ~@7 ab4@73 ~@31, ~@90 db5 gb4@70 ~@31]/6", // Abm A5 Esus2
})).s("gm_epiano1").gain(0.36)

// bass · electric bass finger · "bass"
const bass = note("<~@10 A@3 B@8 C@5 D E@8 F@7 G@8 H ~@2 I@4>".pickRestart({
  A: "[~@28 ab1@14 ab2 ~@3 eb2 ~ ab1 ~@3 ab1@5 ~ ab1 ~ bb1@14 ab1@2 bb1 ~ c2 ~ db2@5 db2@2 ~@3 db2 ~ ab1@4]/3",
  B: "[~@10 ab2 ~@3 eb2 ~ ab2 ~@5 eb2@2 ab1@3 ~ db2@15 ~ db2@3 ~ eb2@6 db2 ~@5 ab1@16 ~@2 ab1@2 ab2 ~@5 eb2 ~ ab1 ab1@2 ~ db2@18 ab1 ~ db2 ~@3 db2 ~@3 ab1@2 db2 ~ eb2@27 ~ eb2 ~@3 ab1@30 ~@2 bb1@13 ~ bb2@2 gb2@2 bb1@2 db2@6 bb1 ~ db2@3 ~ ab1@17 ~ ab1 ~ ab1 ~@3 ab1@4 ab2 ~@3 bb1@4]/8",
  C: "[~@10 ab1 ~ bb1@2 bb1 ~ db2@6 ab1@2 db2@4 ab1@18 eb2 ~ ab2 ~ eb2 ~ ab1@2 eb2@3 ~@3 db2@14 ab1 ~ db2 ~ ab1 ~ db2 ~@3 eb2@8 ab1@14 ab2 ~@3 eb2 ~ ab2 ~ eb2 ~ ab1 ~ ab2@4 ab1 ~ db2@8 eb2 ~@3 eb2@5 ~ ab1 ~ eb2 ~@3 eb2@5 ~ eb2@2 ab1 ~@3]/5",
  D: "eb2@2 ~@2 eb2@7 ~ ab1@2 eb2 ~ e2@3 ~ e2 ~@7 a1@3 ~",
  E: "[~@10 a2 ~@3 e2 ~ a1 ~@3 a1@5 ~ a1 ~ b1@14 a1@2 b1 ~ db2 ~ d2@5 d2@2 ~@3 d2 ~ a1@14 a2 ~@3 e2 ~ a2 ~@5 e2@2 a1@3 ~ d2@15 ~ d2@3 ~ e2@6 d2 ~@5 a1@16 ~@2 a1@2 a2 ~@5 e2 ~ a1 a1@2 ~ d2@18 a1 ~ d2 ~@3 d2 ~@3 a1@2 d2 ~ e2@27 ~ e2 ~@3 a1@30 ~@6]/8",
  F: "[~@10 b2@2 g2@2 b1@2 d2@6 b1 ~ d2@3 ~ a1@17 ~ a1 ~ a1 ~@3 a1@4 a2 ~@3 b1@13 ~ a1 ~ b1@2 b1 ~ d2@6 a1@2 d2@4 a1@18 e2 ~ a2 ~ e2 ~ a1@2 e2@3 ~@3 d2@14 a1 ~ d2 ~ a1 ~ d2 ~@3 e2@8 a1@14 a2 ~@3 e2 ~ a2 ~ e2 ~ a1 ~ a2@4 a1 ~ d2@8 e2 ~@3 e2@5 ~ a1 ~ e2 ~@3 e2@5 ~ e2@2 a1 ~@3]/7",
  G: "[e2@2 ~@14 e2@12 ~@14 b2@2 g2@2 b1@2 d2@6 b1 ~ d2@3 ~ a1@17 ~ a1 ~ a1 ~@3 a1@4 a2 ~@3 b1@13 ~ a1 ~ b1@2 b1 ~ d2@6 a1@2 d2@4 a1@18 e2 ~ a2 ~ e2 ~ a1@2 e2@3 ~@3 d2@14 a1 ~ d2 ~ a1 ~ d2 ~@3 e2@8 a1@14 a2 ~@3 e2 ~ a2 ~ e2 ~ a1 ~ a2@4 a1 ~ d2@8 e2 ~@3 e2@5 ~ a1 ~ e2 ~@3 e2@5 ~ e2@2 a1 ~@3, ~@28 a2@19 ~@209]/8",
  H: "e2 ~@15", I: "[~@12 gb1@37 ~@15]/4",
})).s("gm_electric_bass_finger").gain(0.36)

// bass · electric bass finger · "bass" · soft notes
const bass_soft = note("<~@12 A B C ~@7 D ~@2 E ~@2 F G H ~@7 I ~@2 J ~@4 I ~@2 J K L@3 ~@3>".pickRestart({
  A: "~@24 eb2 ~@7", B: "~@18 eb2 ~@13", C: "~@12 eb2 db2 ~@2", D: "~@6 ab1 ~", E: "~@29 bb1@2 ~", F: "~@24 e2 ~@7",
  G: "~@18 e2 ~@13", H: "~@12 e2 d2 ~@2", I: "~@6 a1 ~", J: "~@29 b1@2 ~", K: "~@25 e2@7",
  L: "[~ a1@35 d2@19 e2@34 ~@7]/3",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · synth brass 2 · "synth brass"
const synth_brass_2 = note("<~@2 A@4 B@5 C@2 D@6 E@8 F@8 G@8 H@8 I J@2 ~@3>".pickRestart({
  A: "[~@16 [db2,db3] ~@3 [eb2,eb3] ~@3 [ab2,ab3] ~@3 [ab1,ab2]@32 [bb1,bb2]@20 [db2,db3] ~@3 [eb2,eb3] ~@3 [ab2,bb2,ab3] ~@3 [ab1,ab2]@32 [bb1,bb2]@4]/4", // Db Eb Ab Bb Db Eb Absus2 Ab …
  B: "[~@16 [db2,db3] ~@5 [db2,db3] ~ [eb2,eb3] ~@3 [ab1,ab2]@31 ~ [bb1,bb2]@32 ~@16 ab3@12 bb3@3 ~ ab3@31 ~@5, ~@92 eb2@63 ~@5, ~@23 eb3@10 ~@7]/5", // Db Eb Ab Bb
  C: "[~@8 [eb4,ab4]@6 c4@2 ~@2 c4@2 ~@8 [db4,f4]@26 db4@2 ~ f4@2 ~ [c4,eb4]@4, ~@4 c4@2 ~@4 eb4@4 ~@14 eb4 ~@3, ~@12 ab4@15 ~@5]/2", // Ab5 Db Cm
  D: "[~@4 c4@3 [c4,eb4,ab4]@7 c4 ~ [eb4,ab4]@3 ~ [eb4,ab4] ~@3 c4@2 ~@2 [db4,eb4,f4]@26 db4@2 eb4@2 f4@2 [c4,eb4,ab4]@11 ~ eb4@6 c4@2 eb4@2 c4@2 ~@4 ab4@3 ~ [db4,eb4,f4,ab4]@24 db4@4 ab4@2 ~@2 [eb4,g4,bb4]@28 bb4@3 ~ [c4,eb4]@29 ~@3 ab4@4, ~@16 c4 ~@55 ab4@12 eb4@4 ~@104, ~@86 f4@5 ~@64 ab4@29 ~@8]/6", // Ab Ab5 Db Ab Db Eb Cm
  E: "[~@16 eb5@33 ~ ab4@2 bb4@2 c5@2 bb4@4 ab4@26 c4@2 ~ ab4@2 ~ ab4@27 ~@5 db5@16 ~ db5@2 ~ [ab4,c5]@4 bb4@7 ~ [c4,eb4,ab4]@17 ~@3 [eb4,ab4]@2 ~@2 [eb4,ab4,c5]@7 ~ [eb4,bb4]@51 ~ [e4,ab4,b4]@3 ~ [ab4,b4]@2 ~@6 [e4,a4,db5]@2 ~@2, ~@88 eb4@2 ~@34 ab4@20 ~@32 c5 ~@79, ~@124 f4@14 ~@2 f4@2 ~@2 eb4@11 ~@33 g4@48 ~@8 e4 ~@11]/8", // Ab Ab5 Ab Eb5 E Abm A
  F: "[~@8 [e4,a4]@6 db4@2 ~@2 db4@2 ~@8 [d4,gb4]@26 d4@2 ~ gb4@2 ~ db4@7 ~ db4@3 [db4,e4,a4]@7 db4 ~ [e4,a4]@3 ~ [e4,a4] ~@3 db4@2 ~@2 [d4,e4,gb4]@26 d4@2 e4@2 gb4@2 [db4,e4,a4]@11 ~ e4@6 db4@2 e4@2 db4@2 ~@4 a4@3 ~ [d4,e4,gb4,a4]@24 d4@4 a4@2 ~@2 [e4,ab4,b4]@28 b4@3 ~ [db4,e4]@29 ~@7, ~@8 db4@4 ~@8 e4@8 ~@28 e4@2 ~@2 e4@11 ~@9 db4 ~@67 e4@4 ~@104, ~@24 a4@30 ~@82 a4@12 ~@2 gb4@5 ~@64 a4@29 ~@8]/8", // A5 D A A5 D A D E …
  G: "[~@16 e5@33 ~ a4@2 b4@2 db5@2 b4@4 a4@26 db4@2 ~ a4@2 ~ a4@27 ~@5 d5@16 ~ d5@2 ~ [a4,db5]@4 b4@7 ~ [db4,e4,a4]@17 ~@3 [e4,a4]@2 ~@2 [e4,a4,db5]@7 ~@45 d5@11 ~ a4@12, ~@88 e4@2 ~@34 a4@20 ~@32 db5 ~@11 ab4@48 ~@20, ~@124 gb4@14 ~@2 gb4@2 ~@2 e4@11 ~@33 [e4,b4]@51 ~@17]/8", // A A5 A E5
  H: "[~@16 e5@33 ~ a4@2 b4@2 db5@2 b4@4 a4@26 db4@2 ~ a4@2 ~ a4@27 ~@5 d5@16 ~ d5@2 ~ [a4,db5]@4 b4@7 ~ [db4,e4,a4]@17 ~@3 [e4,a4]@2 ~@2 [e4,a4,db5]@7 ~ e4@44 ~@17 b3@7, ~@88 e4@2 ~@34 a4@20 ~@32 db5 ~@11 b4@51 ~@17, ~@124 gb4@14 ~@2 gb4@2 ~@2 e4@11 ~@33 ab4@48 ~@20, ~@116 e4@11 ~]/8", // A A5 A
  I: "~@2 db4@25 ~@5", J: "[~@4 d4@20 ~@11 e4@23 ~@6, ~@3 gb4@40 ~@21]/2",
})).s("gm_synth_brass_2").gain(0.36)

// chords · synth brass 2 · "synth brass" · soft notes
const synth_brass_2_soft = note("<~@11 A B@3 C D ~@2 E ~@7 F G@3 H I ~@2 J ~@7 J ~@6 K L M@5>".pickRestart({
  A: "~@8 eb4 ~@7", B: "[~@27 ab4@11 ~@12 c4@3 ~@4 ab4@2 ~ ab4@26 ~@10]/3", C: "~@2 c4 ~@5", D: "~@28 f4 ~@3",
  E: "~@17 g7 ~@14", F: "~@8 e4 ~@7", G: "[~@27 a4@11 ~@12 db4@3 ~@4 a4@2 ~ a4@26 ~@10]/3", H: "~@2 db4 ~@5",
  I: "~@28 gb4 ~@3", J: "~@17 [ab7,a7] ~@14", K: "~@17 a3@9 ~@6", L: "~ a3@15, ~@2 e4@25 ~@5",
  M: "[~@24 e4@10 ~@36 db4@63 ~@27, ~@4 a3@37 ~@17 gb4@75 ~@27, ~@59 bb4@75 ~@26]/5",
})).s("gm_synth_brass_2").gain(0.1)

// other · pad metallic · "pad"
const pad_metallic = note("<~ A B ~@3 C@2 D@3 ~@8 E F G H@2 I@3 ~@8 J K L M@2 N@4 K L M@2 O@3 ~@6>".pickRestart({
  A: "~@8 ab4@8 ~ bb4 ~@2 c5 db5 ~@2 eb5@7 ~", B: "~ eb5 ~@30", C: "[~@16 db4 ~@5 db4@2 eb4 ~@3 ab3@29 ~@7]/2",
  D: "[~@10 db4 ~ f4 ~ ab4@31 ~@3]/3", E: "~@2 ab5 ~@5 ab5@3 ~@3 ab5@2 ~@4 ab5@2 ~@6 db6@2 ~@2",
  F: "~@2 db6 ~@5 ab5 ~@4 ab5@2 ~@4 ab5@2 ~@7 ab5 ~@3", G: "~@2 ab5 ~@5 ab5@2 ~@4 ab5 ~@5 ab5 ~@7 ab5 ~@3",
  H: "[~@2 ab5@2 ~@4 ab5@2 ~@4 ab5 ~@5 ab5 ~@7 db5@18 ~@2 c5@4 bb4@7 ~@5]/2",
  I: "[db5@3 ~ c5@8 bb4@4 ab4@11 bb4@52 ~ e5@3 ~ e5@2 ~@6 a5@2 ~@2]/3",
  J: "~@2 a5 ~@5 a5@3 ~@3 a5@2 ~@4 a5@2 ~@6 d6@2 ~@2", K: "~@2 d6 ~@5 a5 ~@4 a5@2 ~@4 a5@2 ~@7 a5 ~@3",
  L: "~@2 a5 ~@5 a5@2 ~@4 a5 ~@5 a5 ~@7 a5 ~@3", M: "[~@2 a5@2 ~@4 a5@2 ~@4 a5 ~@5 a5 ~@7 d5@18 ~@2 db5@4 b4@7 ~@5]/2",
  N: "[d5@3 ~ db5@8 b4@4 a4@11 b4@45 ~@26 a5 ~@5 a5@3 ~@3 a5@2 ~@4 a5@2 ~@6 d6@2 ~@2, ~@72 b4@41 ~@15]/4",
  O: "[d5@3 ~ db5@8 b4@4 a4@11 b4@52 ~@17]/3",
})).s("gm_pad_metallic").gain(0.46)

// other · pad metallic · "pad" · soft notes
const pad_metallic_soft = note("<~@2 A@2 ~@4 B ~@14 C ~@15 D ~@7 D ~@9>".pickRestart({
  A: "[~@3 f5 ~@4 ab5@33 ~@23]/2", B: "~@22 eb4 ~@9", C: "~@29 ab4 ~@2", D: "~@29 a4 ~@2",
})).s("gm_pad_metallic").gain(0.2)

// other · string ensemble 1 · "strings"
const string_ensemble_1 = note("<~@2 A@4 B@4 C@6 D@8 E@3 ~ F@7 ~@3 G@5 ~@3 G@5 ~@6>".pickRestart({
  A: "[~@16 [db2,db3]@2 ~@2 eb3@2 ~@2 [ab2,ab3] ~@3 [ab1,ab2]@31 ~ [bb1,bb2]@19 ~ [db2,db3] ~@3 eb3@2 ~@2 [ab2,ab3] ~@3 [ab1,ab2]@31 ~ [bb1,bb2]@4, ~@20 eb2 ~@63 eb2 ~@43]/4", // Db Ab Bb Db Ab Bb
  B: "[~@16 db2@2 ~@4 db3@2 [eb2,eb3]@2 ~@2 [ab1,ab2]@31 ~ [bb1,bb2]@32 ~@20 ab3@11 ~ [ab1,ab3]@4, ~@16 db3 ~@5 db2 ~@69 [eb2,eb3]@32 ~@4]/4", // Eb Ab Bb Ab Eb
  C: "[~@7 ab4@41, ~@28 ab3 ~@163]/6",
  D: "[~@14 c5 ~ [bb4,bb5] ~@3 ab5 ~@3 [ab4,gb5] ~@3 bb5@15 ~ bb5 db6 c6 ~ c6 eb6 ~ f6 ~ ab6 ~ bb6@4 ~ ab6@27 ~@5 ab4@128 bb4@32 ab4@4, ~@12 [db5,db6]@2 ~@14 bb4@59 ~@169, ~@13 c6@2 ~@241]/8", // Bb Ab7 Db
  E: "[~@27 db5@16 eb5@36 ~ e5@3 ~ e5@2 ~@6 a5@2 ~@2]/3",
  F: "[~@28 a4@32 b4@32 a4@32 b4@15 ~@3 db5 ~ [b4,b5] ~@3 a5 ~@3 [a4,g5] ~@3 b5@15 ~ b5 d6 db6 ~ db6 e6 ~ gb6 ~ a6 ~ b6@4 ~ a6@27 ~@9, ~@140 [d5,d6]@2 ~@14 b4@59 ~@9, ~@141 db6@2 ~@81]/7", // B A7 D
  G: "[~@28 b4@32 a4@31 d5@16 e5@36 ~@17]/5",
})).s("gm_string_ensemble_1").gain(0.41)

// other · string ensemble 1 · "strings" · soft notes
const string_ensemble_1_soft = note("<A@3 ~@3 B ~@44 C@6>".pickRestart({
  A: "[~@24 ab4@53 ~@19]/3", B: "~@24 db3 ~@7",
  C: "[~@45 d4@9 e4@37 ~@34 db5@42 ~@25, ~@2 a2@22 ~@67 gb4@76 ~@25, ~@18 a3@74 gb3@75 ~@25, ~@109 gb5@59 ~@24]/6",
})).s("gm_string_ensemble_1").gain(0.2)

// other · electric guitar muted · "muted guitar"
const electric_guitar_muted = note("<~@27 A B C D E F G H I J E K A L E M I N O P Q R S T ~@6>".pickRestart({
  A: "~@2 gb3 ~ e3@2 gb3@2 a3 ~ a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@9",
  B: "~@2 a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~@3 a3 ~ e3@2 gb3@2 a3 ~ b3 ~@3 a3 ~ gb3 ~ e3@2",
  C: "a3 ~ gb3 ~ e3@2 gb3 ~ a3 ~ a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@9",
  D: "~@2 a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~@3 a3 ~ e3@2 gb3@2 a3 ~ b3 ~@3 a3 ~@3 b3 ~",
  E: "~@2 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@9",
  F: "~@2 a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ b3 ~@3 a3 ~@5", G: "~@2 gb3 ~ e3@2 gb3@2 a3 ~ a3 ~@21",
  H: "~@2 a3 ~ e3@2 gb3@2 a3 ~ a3 ~@21", I: "~@2 a3 ~ e3@2 gb3@2 a3 ~ a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@9",
  J: "~@2 a3 ~ e3@2 gb3@2 a3 ~ a3 ~ e3 ~ b3 ~@3 a3 ~@3 gb3 ~ e3 ~ gb3 ~ b3 ~ a3 ~",
  K: "~@2 [a3,b3] ~ e3@2 gb3@2 a3 ~ a3 ~@3 b3 ~@3 a3 ~@3 gb3 ~ e3@2 gb3 ~ a3 ~@3", // Asus2
  L: "~@2 a3 ~ e3@2 gb3@2 a3 ~ a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ b3 ~@3 a3 ~@5", M: "~@18 b3 ~ a3 ~@3 gb3 ~ e3 ~ gb3 ~ a3 ~",
  N: "~@2 a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~ e3 ~ b3 ~@3 a3 ~@3 gb3 ~ e3@2 gb3 ~ a3 ~@3",
  O: "~@2 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@3 a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~@9",
  P: "~@2 a3 ~ e3 ~ gb3 ~ a3 ~ e3 ~ gb3 ~ b3 ~@3 a3 ~@3 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~",
  Q: "~@2 gb3 ~@2 e3 gb3 ~ a3 ~ a3 ~@7 e3@2 gb3 ~ a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~",
  R: "~@2 a3 ~ e3 ~ gb3 ~ a3 ~ a3 ~@11 a3 ~ e3@2 gb3 ~ a3 ~@3", S: "~@2 a3 ~ e3@2 gb3 ~ a3 ~ a3 ~@15 e3 ~@3 e3 ~",
  T: "a3 ~@31",
})).s("gm_electric_guitar_muted").gain(0.36)

// chords · rock organ · "organ"
const rock_organ = note("<~@18 A@2 B@7 C D E F G H@4 I@8 J@7 ~@6>".pickRestart({
  A: "[~@8 [eb4,ab4,c5]@3 ~ [ab4,c5]@4 [ab4,db5]@3 ~ eb5@2 ~@6 ab4@13 ~@5 f5 ~ eb5@4 db5@6 ~@2 [eb4,ab4,c5]@4, ~@3 eb4@2 ~@2 [db5,f5]@4 db5 ~@4, ~@21 ab4@3 ab4@5 ~@3]/2", // Ab Db5 Ab Db
  B: "[~@6 eb4@2 [eb4,c5]@4 [eb4,c5]@3 ~ eb4@4 eb5@2 ~@6 [db5,f5]@14 ab4@2 ~ f5@2 ~ eb5@4 db5@7 ~ [ab4,c5]@12 ab4@3 ~@5 bb4@4 c5 ~@7 f4@13 ~@5 db5@2 c5@4 bb4@7 ~ [c4,eb4,ab4]@19 ~ [eb4,ab4,c5]@3 ~ [eb4,ab4,c5]@7 ~ [eb4,g4,bb4]@51 ~ [e4,ab4,b4]@4 [e4,ab4,b4]@3 ~@5 [a4,db5,e5]@2 ~@2, ~@8 ab4@11 ~@9 ab4@13 ~@7 ab4@10 ~@2 eb4@24 ~@22 f4@4 ~@2 eb4@11 ~@101, ~@16 db5@3 ~@25 db5@4 ~@28 ab4@9 ~@7 [ab4,db5]@16 ab4@7 ~@109]/7", // Cm Db Ab Eb E A Db5
  C: "~@2 [a4,db5,eb5,e5] ~@5 [a4,db5,e5]@6 [a4,e5] ~ [a4,db5,eb5,e5] ~ a4 ~ e5@3 ~ e5@2 ~@2 [a4,d5,gb5]@4, ~@20 [a4,db5]@7 ~@5", // A A5 A D A
  D: "~@2 [a4,d5,gb5] ~@3 a4 ~ [a4,d5,gb5]@5 ~ [a4,d5,gb5] ~@3 a4 ~ a4 a4@3 ~ gb5 ~@2 [a4,db5,e5]@4, ~@10 [d5,gb5] ~ d5 ~@3", // D A D
  E: "~@2 [a4,db5,e5] ~@5 [a4,db5,e5]@5 ~ [a4,db5,e5] ~@3 a4 ~ [db5,e5]@4 a4 ~ a4 ~ [a4,d5,gb5]@4, ~@20 a4@3 ~@9", // A Dbm D
  F: "~@2 [a4,d5,gb5] ~@3 a4 ~ [a4,d5,gb5]@5 ~ [a4,d5,gb5] ~@3 [a4,gb5] ~ a4@2 d5@2 e5@2 [a4,gb5] ~ a4@2 c5 ~", // D
  G: "[a4,e5] ~ [b4,c5,eb5,ab5] ~@3 db5 ~ [db5,e5,a5]@5 ~ [db5,e5,a5] ~@3 db5 ~ [db5,e5,a5]@4 db5@2 e5@2 [d5,gb5,a5]@4, ~@20 eb5 ~@11", // A5 Ab A D
  H: "[~@2 [d5,gb5,a5] ~@3 d5 ~ [d5,gb5,a5]@5 ~ [d5,gb5,a5] ~ [d5,gb5,a5] ~@3 [d5,gb5,a5]@3 ~ [d5,gb5,a5]@2 ~@2 [e5,ab5,b5]@17 ~ [e5,ab5,b5] ~@3 e5 ~ [e5,ab5,b5]@3 ~ [e5,ab5,bb5,b5] ~@3 db5@12 [e4,a4,db5]@4 a4@4 [a4,d5]@3 ~ [e5,a5]@3 ~@5 a4@13 ~@5 gb5 ~ e5@4 d5@6 ~@2 [e4,a4,db5]@4, ~@15 [e5,a5]@6 ~@2 [d5,gb5]@4 d5 ~@4, ~@38 [e4,db5]@4 ~@11 a4@3 a4@5 ~@3]/4", // D E A D5 A5 A A5 D …
  I: "[~@6 e4@2 [e4,db5]@4 [e4,db5]@3 ~ e4@4 e5@2 ~@6 [d5,gb5]@14 a4@2 ~ gb5@2 ~ e5@4 d5@7 ~ [a4,db5]@12 a4@3 ~@5 b4@4 db5 ~@7 gb4@13 ~@5 d5@2 db5@4 b4@7 ~ [db4,e4,a4]@19 ~ [e4,a4,db5]@3 ~ [e4,a4,db5]@7 ~ e4@44 [e4,a4,db5]@4 [a4,db5]@4 [a4,d5]@3 ~ [e5,a5]@3 ~@5 a4@13 ~@5 gb5 ~ e5@4 d5@6 ~@2 [e4,a4,db5]@4, ~@8 a4@11 ~@9 a4@13 ~@7 a4@10 ~@2 e4@24 ~@22 gb4@4 ~@2 e4@11 ~@81 e4@8 ~@22 a4@6 a4@10 ~@6, ~@16 d5@3 ~@25 d5@4 ~@28 a4@9 ~@7 [a4,d5]@16 a4@7 ~@41 [ab4,b4]@51 ~@13 [d5,gb5]@16 d5@4 ~@16]/8", // Dbm D A D5 A5 A D5 Abm …
  J: "[~@6 e4@2 [e4,db5]@4 [e4,db5]@3 ~ e4@4 e5@2 ~@6 [d5,gb5]@14 a4@2 ~ gb5@2 ~ e5@4 d5@7 ~ [a4,db5]@12 a4@3 ~@5 b4@4 db5 ~@7 gb4@13 ~@5 d5@2 db5@4 b4@7 ~ [db4,e4,a4]@19 ~ [e4,a4,db5]@3 ~ [e4,a4,db5]@7 ~ [e4,ab4,b4]@51 ~@17, ~@8 a4@11 ~@9 a4@13 ~@7 a4@10 ~@2 e4@24 ~@22 gb4@4 ~@2 e4@11 ~@101, ~@16 d5@3 ~@25 d5@4 ~@28 a4@9 ~@7 [a4,d5]@16 a4@7 ~@109]/7", // Dbm D A E D5
})).s("gm_rock_organ").gain(0.41)

// drums · kick
const kick = s("bd").struct("<~@2 A B C D C D B E F C D C D B E F G B@8 C D C D B E F G B@7 G B@7 ~@7>".pickRestart({
  A: "~@15 x", B: "x ~@6 x!2 ~@5 x ~", C: "~ x ~@5 x!2 ~@5 x ~", D: "~@3 x ~@3 x!2 ~@5 x ~",
  E: "~ x ~@2 x ~@2 x!2 ~@5 x ~", F: "~@4 x!2 ~ x", G: "x ~ x ~ x ~@2 x",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<~@3 [~ x ~ x]!6 [~@3 x] ~ [~ x ~ x]!5 [~@3 x] ~@40>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@10 A ~@6 A@2 B@13 A@3 B@7 A B@7 ~@7>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.51)

// drums · clap
const clap = s("cp").struct("<~@27 [~ x ~ x]!23 [~ x ~@2] ~@6>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  A@2 B C D E F G H I J D E F G H I J ~ K@8 D E F G L M N O M P@2 N@2 Q N@5 R S T U ~@7
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~ x!4 ~ x", C: "x ~ x!3 ~ x ~", D: "x ~@3 x ~@3 x ~ x!3 ~@3", E: "~@8 x ~@2 x ~ x ~@2",
  F: "x ~@3 x ~@3 x!2 ~@2 x ~@3", G: "x ~@3 x ~ x ~@2 x ~@3 x ~@2", H: "x ~ x ~ x ~ x ~@2 x ~ x ~@4",
  I: "x ~@3 x ~@3 x ~@2 x!2 ~@3", J: "x ~ x ~ x!2 ~@2", K: "x ~@4 x!2 ~ x ~@3 x!2 ~@2", L: "x!12 ~ x!3", M: "x!14 ~@2",
  N: "x!16", O: "x!10 ~@2 x!4", P: "x!15 ~", Q: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~",
  R: "x!9 ~ x ~ x!4", S: "x ~@2 x!2 ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", T: "x ~ x!9 ~ x!4",
  U: "x!3 ~ x!10 ~@2",
})).gain(0.46)

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

// drums · crash
const crash = s("cr").struct("<~@4 A ~ A ~@2 A@3 ~ A ~@2 A@12 ~ A ~@2 A@18 ~@7>".pickRestart({
  A: "~@7 x",
})).gain(0.41)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@5 A ~@2 A ~@3 A ~@2 A ~@12 A ~@2 A ~@25>".pickRestart({
  A: "~@7 x",
})).gain(6.02)

stack(
  epiano1, bass, bass_soft, synth_brass_2, synth_brass_2_soft, pad_metallic, pad_metallic_soft, string_ensemble_1,
  string_ensemble_1_soft, electric_guitar_muted, rock_organ, kick, rim, snare, clap, hihat, open_hat, crash, vibraslap
)

More by Stevie Wonder