Strudelify
Heaven Help Us All cover art

1998 · Signed Sealed And Delivered

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 16-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, A@4 for four bars: 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@5 ~>".pickRestart({
  A: "~ g7@2 ~@12 db5", B: "[~ eb4 bb4 ab4 ~ bb4 ab4 ~ ab4@24, ~ c5@2 ~ eb4@2 ~ eb4@25]/2",
  C: "[~@4 ab3@4 bb3@2 ab3 ~ db3 ~ [db3,f3,ab3]@13 ~ eb3 f3 ~@6 [ab3,c4]@4 bb3@2 ab3 ~@3 f3@9 db3 d3@3 eb3@2 ~ eb3@4 ab3 eb3 ab3@2 ~@2 bb3@2 ab3 ~ db3 eb3 [db3,ab3]@9 f3 db3 eb3 db3 f3 ~ eb3 [eb3,g3]@9 g3 eb3 ~ eb3@2 bb3 ~ [c3,eb3,ab3]@13 eb3 c3 eb3 eb3@2, ~@4 [eb3,c4]@6 ~@17 db3@2 ~ eb3@12 ~@4 ab3@15 ~@33 bb3@11 g3@3 ~@20, ~@23 db3@4 ~@7 [eb3,c4]@3 ~@2 [eb3,f3]@4 ~@21]/8", // Db Ab Db5 Eb Ab Cm Ebsus2
  D: "[~@2 ab3 ~ [ab3,c4]@4 bb3@2 ~ eb3 c4 ~ [ab3,bb3,db4]@9 ~ ab3 bb3 [f3,db4]@3 ~ db4 c4@3 ab3 eb3 ab3@4 bb3@2 ab3 ~ db3 ~ [db3,f3,ab3]@10 db3 d3 eb3 f3@2 db3 eb3@4 [g2,ab3] eb3 ab3@4 bb3@2 ab3 ~ db3 ~ [db3,ab3]@9 f3 db3 ~@2 ab3@2 eb3 [eb3,bb3]@9 g3 eb3 f3 g3 [eb3,bb3] ~@8 [eb4,ab4] ~ [eb4,ab4]@2 ~@8, ~@4 eb3@6 ab3@2 ~@2 f3@8 ~ f3@2 ~ ab3 ~@3 [eb3,ab3]@4 ~@2 [eb3,c4]@6 ~@26 [eb3,c4]@6 ~@4 f3@8 ~@3 eb3@2 db3 ~@18 [c3,eb3,ab3]@11 ~@7, ~@45 f3 ~ g3@4 ~@13]/8", // Ab Bbm7 Db Abmaj7 Db5 Eb5 Ab5 Cm …
  E: "[eb4 ~ bb4 [eb4,c5]@2 bb4@2 ab4@2 eb4 ab4 bb4 bb4@2 ab4@6 eb5@6 ab4@6, ~ ab4@2 ~@29]/2", // Cm
  F: "[~ ab4 bb4 [eb4,c5]@2 bb4@2 ab4 ~@2 bb4@2 bb4@2 ab4@6 eb5@8 eb4 ~ [ab4,db5]@7 ~@2 db5 c5@2 bb4@3 ~ [c4,eb4,ab4]@8 ~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5]@3 ~ [g4,bb4]@6 ~ ab4 g4 eb4@2 ~ f4 g4 ab4 ~ g4 eb4, eb4@2 ~@6 eb4@2 ~@20 f4@6 ~ f4@2 ~ eb4@6 ~@16 eb4@8 ~@3 eb4@2 ~ eb4@2 ~@2, ~@9 ab4@3 ~@18 bb4 ~@7 ab4@4 ~@16 db5 ~@9 bb4@6 ~@3 bb4@2 ~]/5", // Cm Db5 Ab Gm
  G: "[~@4 [eb4,bb4]@4 [e4,ab4,b4]@2 [e4,ab4,b4] ~@7 a3 ~ [a3,db4]@4 b3@2 ~ e3 db4 ~ [a3,b3,d4]@9 ~ a3 b3 [gb3,d4]@3 ~ d4 db4@3 a3 e3 a3@4 b3@2 a3 ~ d3 ~ [d3,gb3,a3]@10 d3 eb3 e3 gb3@2 d3 e3@2, ~@7 [e4,a4,db5]@5 ~@28, ~@20 e3@6 a3@2 ~@2 gb3@8 ~ gb3@2 ~ a3 ~@3 [e3,a3]@4 ~@2 [e3,db4]@6 ~@22]/5", // Eb5 E A Bm7 D A A5 Dbm
  H: "[~@2 a3 e3 a3@4 b3@2 a3 ~ d3 ~ [d3,a3]@9 gb3 d3 ~@2 a3@2 e3 [e3,b3]@9 ab3 e3 gb3 ab3 [e3,b3] ~@2 [db3,e3,a3]@11 ~@7, ~@4 [e3,db4]@6 ~@4 gb3@8 ~@3 e3@2 d3 ~@36, ~@13 gb3 ~ ab3@4 ~@13]/4", // D5 E5 A Dbm
  I: "[e4 ~ b4 [e4,db5]@2 b4@2 a4@2 e4 a4 b4 b4@2 a4@6 e5@6 a4@6, ~ a4@2 ~@29]/2", // Dbm
  J: "[~ a4 b4 [e4,db5]@2 b4@2 a4 ~@2 b4@2 b4@2 a4@6 e5@8 e4 ~ [a4,d5]@7 ~@2 d5 db5@2 b4@3 ~ [db4,e4,a4]@8 ~@2 [e4,a4,db5] ~ [e4,a4,db5]@3 ~ [ab4,b4]@6 ~ a4 ab4 e4@2 ~ gb4 ab4 a4 ~ ab4 e4@5 ~@12, e4@2 ~@6 e4@2 ~@20 gb4@6 ~ gb4@2 ~ e4@6 ~@16 e4@8 ~@3 e4@2 ~ e4@2 ~@18, ~@9 a4@3 ~@18 b4 ~@7 a4@4 ~@16 d5 ~@9 b4@6 ~@3 b4@2 ~@17]/6", // Dbm D5 A Abm
  K: "[~ a4 b4 [e4,db5]@2 b4@2 a4 ~@2 b4@2 b4@2 a4@6 e5@8 e4 ~ [a4,d5]@7 ~@2 d5 db5@2 b4@3 ~ [db4,e4,a4]@8 ~@2 [e4,a4,db5] ~ [e4,a4,db5]@3 ~ [ab4,b4]@6 ~ a4 ab4 e4@2 ~ gb4 ab4 a4 ~ ab4 e4@5 ~@4 e4@5 ~ ab4 ~, e4@2 ~@6 e4@2 ~@20 gb4@6 ~ gb4@2 ~ e4@6 ~@16 e4@8 ~@3 e4@2 ~ e4@2 ~@15 gb4@2 ~, ~@9 a4@3 ~@18 b4 ~@7 a4@4 ~@16 d5 ~@9 b4@6 ~@3 b4@2 ~@17]/6", // Dbm D5 A Abm
  L: "[~ db4@4 db4@6 ~@7 d4@4 ~ d4@3 ~@2 [gb4,ab4,b4]@13 ~@2 gb4 ~@4 gb2@32, ~ a2@17 d3@10 e3@15 gb3@37, ~ [a3,e4]@11 ~ a4@13 ~@18 ab4@36, ~@18 [e4,gb4]@8 ~ e4@13 ~@5 [gb4,bb4,db5]@35]/5", // Abm7 A5 Esus2 Gb
})).s("gm_epiano1").gain(0.36)

// bass · electric bass finger · "bass"
const bass = note("<~@10 A@4 B@7 C@5 D E@8 F@7 G@8 H ~@2 I@4>".pickRestart({
  A: "[~@14 ab1@7 ab2 ~ eb2 ab1 ~ ab1@2 ~ ab1 bb1@7 ab1 bb1 c2 db2@2 ~ db2 ~ db2 ab1@7 ab2 ~ eb2 ab2 ~@2 eb2 ab1@2 db2@2]/4",
  B: "[~@6 db2@2 eb2@3 db2 ~@2 ab1@8 ~ ab1 ab2 ~@2 eb2 ab1!2 db2@9 ab1 db2 ~ db2 ~ ab1 db2 eb2@13 ~ eb2 ~ ab1@15 ~ bb1@7 bb2 gb2 bb1 db2@3 bb1 db2@2 ab1@8 ~ ab1!2 ~ ab1@2 ab2 ~ bb1@2]/7",
  C: "[~@5 ab1 bb1!2 db2@3 ab1 db2@2 ab1@9 eb2 ab2 eb2 ab1 eb2@2 ~ db2@7 ab1 db2 ab1 db2 ~ eb2@4 ab1@7 ab2 ~ eb2 ab2 eb2 ab1 ab2@2 ab1 db2@4 eb2 ~ eb2@3 ab1 eb2 ~ eb2@3 eb2 ab1 ~]/5",
  D: "eb2 ~ eb2@4 ab1 eb2 e2@2 e2 ~@3 a1@2",
  E: "[~@5 a2 ~ e2 a1 ~ a1@2 ~ a1 b1@7 a1 b1 db2 d2@2 ~ d2 ~ d2 a1@7 a2 ~ e2 a2 ~@2 e2 a1@2 d2@7 ~ d2@2 e2@3 d2 ~@2 a1@8 ~ a1 a2 ~@2 e2 a1!2 d2@9 a1 d2 ~ d2 ~ a1 d2 e2@13 ~ e2 ~ a1@15 ~@3]/8",
  F: "[~@5 b2 g2 b1 d2@3 b1 d2@2 a1@8 ~ a1!2 ~ a1@2 a2 ~ b1@7 a1 b1!2 d2@3 a1 d2@2 a1@9 e2 a2 e2 a1 e2@2 ~ d2@7 a1 d2 a1 d2 ~ e2@4 a1@7 a2 ~ e2 a2 e2 a1 a2@2 a1 d2@4 e2 ~ e2@3 a1 e2 ~ e2@3 e2 a1 ~]/7",
  G: "[e2 ~@7 e2@6 ~@7 b2 g2 b1 d2@3 b1 d2@2 a1@8 ~ a1!2 ~ a1@2 a2 ~ b1@7 a1 b1!2 d2@3 a1 d2@2 a1@9 e2 a2 e2 a1 e2@2 ~ d2@7 a1 d2 a1 d2 ~ e2@4 a1@7 a2 ~ e2 a2 e2 a1 a2@2 a1 d2@4 e2 ~ e2@3 a1 e2 ~ e2@3 e2 a1 ~, ~@14 a2@9 ~@105]/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: "~@12 eb2 ~@3", B: "~@9 eb2 ~@6", C: "~@12 eb2 db2 ~@2", D: "~@6 ab1 ~", E: "~@15 bb1", F: "~@12 e2 ~@3",
  G: "~@9 e2 ~@6", H: "~@12 e2 d2 ~@2", I: "~@6 a1 ~", J: "~@15 b1", K: "~@13 e2@3", L: "[~ a1@17 d2@9 ~ e2@17 ~@3]/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: "[~@8 [db2,db3] ~ [eb2,eb3] ~ [ab2,ab3] ~ [ab1,ab2]@16 [bb1,bb2]@10 [db2,db3] ~ [eb2,eb3] ~ [ab2,bb2,ab3] ~ [ab1,ab2]@16 [bb1,bb2]@2]/4", // Db Eb Ab Bb Db Eb Absus2 Ab …
  B: "[~@8 [db2,db3] ~@2 [db2,db3] [eb2,eb3] ~ [ab1,ab2]@16 [bb1,bb2]@16 ~@8 ab3@6 bb3@2 ab3@16 ~@2, ~@23 eb2@16 ~, ~@23 eb3@10 ~@7]/5", // Db Eb Ab Bb
  C: "[~@4 [c4,eb4,ab4]@3 c4 ~ c4 ~@4 [db4,f4]@13 db4 eb4 f4 [c4,eb4]@2, ~@5 eb4@2 ~@9, ~@12 ab4@15 ~@5]/2", // Ab Db Cm
  D: "[~@2 c4 ~ [eb4,ab4]@3 c4 [eb4,ab4]@2 [eb4,ab4] ~ c4 ~ [db4,eb4,f4]@13 ~ eb4 f4 [c4,eb4,ab4]@5 ~ eb4@3 c4 eb4 ~@3 ab4 ~ [db4,eb4,f4,ab4]@12 db4@2 ab4 ~ [eb4,g4,bb4]@14 bb4@2 [c4,eb4,ab4]@15 ~ ab4@2, ~@4 c4@2 ~@2 c4 ~@18 db4@2 ~@7 ab4@5 c4@2 f4@2 ~@51, ~@21 eb4 ~@26]/6", // Ab5 Db Ab Db Eb Ab
  E: "[~@8 eb5@17 ab4 bb4 c5 bb4@2 ab4@13 c4 eb4 ab4 ab4@13 ~@3 [f4,db5]@8 f4 db5 [ab4,c5]@2 bb4@3 ~ [c4,eb4,ab4]@9 ~ [eb4,ab4,c5] ~ [eb4,ab4]@4 [eb4,bb4]@26 [e4,ab4,b4]@2 [e4,ab4,b4] ~@3 [e4,a4,db5] ~, ~@62 ab4@10 eb4@5 ~@13 c5@2 ~@2 g4@24 ~@10]/8", // Db Ab Ab5 Eb5 E A
  F: "[~@4 [db4,e4,a4]@3 db4 ~ db4 ~@4 [d4,gb4]@13 d4 e4 gb4 [db4,e4]@4 db4 ~ [e4,a4]@3 db4 [e4,a4]@2 [e4,a4] ~ db4 ~ [d4,e4,gb4]@13 ~ e4 gb4 [db4,e4,a4]@5 ~ e4@3 db4 e4 ~@3 a4 ~ [d4,e4,gb4,a4]@12 d4@2 a4 ~ [e4,ab4,b4]@14 b4@2 [db4,e4,a4]@15 ~@3, ~@10 e4@4 ~@22 db4@2 ~@2 db4 ~@18 d4@2 ~@12 db4@2 gb4@2 ~@51, ~@12 a4@15 ~@41 a4@6 e4@2 ~@52]/8", // A D Dbm A5 D A D E …
  G: "[~@8 e5@17 a4 b4 db5 b4@2 a4@13 db4 e4 a4 a4@13 ~@3 [gb4,d5]@8 gb4 d5 [a4,db5]@2 b4@3 ~ [db4,e4,a4]@9 ~ [e4,a4,db5] ~ [e4,a4]@4 ~@22 d5@6 a4@6, ~@62 a4@10 e4@5 ~@13 db5@2 ~@2 [e4,b4]@26 ~@8, ~@47 ab4@12 ~@5]/8", // D A A5 E5
  H: "[~@8 e5@17 a4 b4 db5 b4@2 a4@13 db4 e4 a4 a4@13 ~@3 [gb4,d5]@8 gb4 d5 [a4,db5]@2 b4@3 ~ [db4,e4,a4]@9 ~ [e4,a4,db5] ~ [e4,a4]@4 ~@31 b3@3, ~@62 a4@10 e4@5 ~@13 db5@2 ~@2 [e4,b4]@26 ~@8, ~@47 ab4@12 ~@5, ~@116 e4@11 ~]/8", // D A A5 E5
  I: "~ db4@13 ~@2", J: "[~ d4@5 ~@3 e4@6 ~, ~ gb4@10 ~@5]/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: "[~@14 ab4@6 ~@5 c4 ~@2 ab4 ~ ab4@13 ~@5]/3", C: "~@2 c4 ~@5", D: "~@14 f4 ~", E: "~@9 g7 ~@6",
  F: "~@8 e4 ~@7", G: "[~@14 a4@6 ~@5 db4 ~@2 a4 ~ a4@13 ~@5]/3", H: "~@2 db4 ~@5", I: "~@14 gb4 ~",
  J: "~@9 [ab7,a7] ~@6", K: "~@8 a3@5 ~@3", L: "~ a3@15, ~ e4@12 ~@3",
  M: "[~@12 e4@5 ~@18 db4@31 ~@14, ~@2 a3@19 ~@8 [gb4,bb4]@38 ~@13]/5", // Gb
})).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: "~@4 ab4@4 ~ bb4 c5 db5 eb5@4", B: "eb5 ~@15", C: "[~@8 db4 ~@2 db4 eb4 ~ ab3@14 ~@4]/2",
  D: "[~@10 db4 ~ f4 ~ ab4@31 ~@3]/3", E: "~ ab5 ~@2 ab5 ~@2 ab5 ~@2 ab5 ~@3 db6 ~",
  F: "~ db6 ~@2 ab5 ~@2 ab5 ~@2 ab5 ~@3 ab5 ~", G: "~ ab5 ~@2 ab5 ~@2 ab5 ~@2 ab5 ~@3 ab5 ~",
  H: "[~ ab5 ~@2 ab5 ~@2 ab5 ~@2 ab5 ~@3 db5@9 ~ c5@2 bb4@3 ~@3]/2",
  I: "[db5@2 c5@4 bb4@2 ab4@6 bb4@26 e5@2 e5 ~@3 a5 ~]/3", J: "~ a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@3 d6 ~",
  K: "~ d6 ~@2 a5 ~@2 a5 ~@2 a5 ~@3 a5 ~", L: "~ a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@3 a5 ~",
  M: "[~ a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@3 d5@9 ~ db5@2 b4@3 ~@3]/2",
  N: "[d5@2 db5@4 b4@2 a4@6 b4@22 ~@13 a5 ~@2 a5 ~@2 a5 ~@2 a5 ~@3 d6 ~, ~@9 b4@5 ~@2]/4",
  O: "[d5 db5@2 b4 a4@3 b4@13 ~@4]/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: "[~@2 f5 ~ ab5@17 ~@11]/2", B: "~@11 eb4 ~@4", C: "~@14 ab4 ~", D: "~@14 a4 ~",
})).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: "[~@8 [db2,db3] ~ [eb2,eb3] ~ [ab2,ab3] ~ [ab1,ab2]@16 [bb1,bb2]@10 [db2,db3] ~ [eb2,eb3] ~ [ab2,ab3] ~ [ab1,ab2]@16 [bb1,bb2]@2]/4", // Db Eb Ab Bb Db Eb Ab Bb
  B: "[~@8 [db2,db3] ~@2 [db2,db3] [eb2,eb3] ~ [ab1,ab2]@15 ~ [bb1,bb2]@16 ~@10 ab3@6 [ab1,ab3]@2, ~@23 [eb2,eb3]@8 ~]/4", // Db Eb Ab Bb Ab Eb
  C: "[~@7 ab4@41, ~@14 ab3 ~@81]/6",
  D: "[~@6 [db5,db6] [c5,c6] [bb4,bb5] ~ ab5 ~ [ab4,gb5] ~ bb5@7 ~ bb5 [c6,db6] c6 eb6 f6 ab6 bb6@2 ab6@13 ~@3 ab4@64 bb4@16 ab4@2, ~@14 bb4@29 ~@85]/8", // Db C Bb Ab7 Dbmaj7
  E: "[~@14 db5@8 eb5@18 e5@2 e5 ~@3 a5 ~]/3",
  F: "[~@14 a4@16 b4@16 a4@16 b4@8 [d5,d6] [db5,db6] [b4,b5] ~ a5 ~ [a4,g5] ~ b5@7 ~ b5 [db6,d6] db6 e6 gb6 a6 b6@2 a6@13 ~@5, ~@78 b4@29 ~@5]/7", // D Db B A7 Dmaj7
  G: "[~@7 b4@8 a4@8 d5@4 e5@9 ~@4]/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: "[~@6 ab4@13 ~@5]/3", B: "~@12 db3 ~@3",
  C: "[~@23 d4@4 e4@19 ~@17 db5@21 ~@12, ~ a2@11 ~@42 gb5@29 ~@13, ~@9 a3@37 [gb3,gb4]@38 ~@12]/6", // Gb
})).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 E I E J A F E K E L E M N O P Q ~@6>".pickRestart({
  A: "~ gb3 e3 gb3 a3!2 ~ a3 e3 gb3 a3!2 ~@4", B: "~ a3 e3 gb3 a3!2 ~ a3 e3 gb3 a3 b3 ~ a3 gb3 e3",
  C: "a3 gb3 e3 gb3 a3!2 ~ a3 e3 gb3 a3!2 ~@4", D: "~ a3 e3 gb3 a3!2 ~ a3 e3 gb3 a3 b3 ~ a3 ~ b3",
  E: "~ a3 e3 gb3 a3!2 ~ a3 e3 gb3 a3!2 ~@4", F: "~ a3 e3 gb3 a3!2 ~ a3 e3 gb3 a3 b3 ~ a3 ~@2",
  G: "~ gb3 e3 gb3 a3!2 ~@10", H: "~ a3 e3 gb3 a3!2 ~@10", I: "~ a3 e3 gb3 a3!2 e3 b3 ~ a3 ~ gb3 e3 gb3 b3 a3",
  J: "~ [a3,b3] e3 gb3 a3!2 ~ b3 ~ a3 ~ gb3 e3 gb3 a3 ~", K: "~@9 b3 a3 ~ gb3 e3 gb3 a3",
  L: "~ a3 e3 gb3 a3!2 e3 b3 ~ a3 ~ gb3 e3 gb3 a3 ~", M: "~ a3 e3 gb3 a3 e3 gb3 b3 ~ a3 ~ a3 e3 gb3 a3!2",
  N: "~ gb3 e3 gb3 a3!2 ~@3 e3 gb3 a3 e3 gb3 a3!2", O: "~ a3 e3 gb3 a3!2 ~@5 a3 e3 gb3 a3 ~",
  P: "~ a3 e3 gb3 a3!2 ~@7 e3 ~ e3", Q: "a3 ~@15",
})).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: "[~@4 [eb4,ab4,c5]@2 [ab4,c5]@2 [ab4,db5]@2 eb5 ~@3 [db5,f5]@7 ~@2 f5 eb5@2 db5@3 ~ [eb4,ab4,c5]@2, ~@6 eb4@4 ~@4 ab4@6 ~ ab4@3 ab4@5 ~@3, ~@11 db5 ~@4]/2", // Ab Db5 Db Ab
  B: "[~@3 eb4 [eb4,c5]@2 [eb4,c5]@2 [eb4,db5]@2 eb5 ~@3 [ab4,db5,f5]@7 ~@2 f5 eb5@2 db5@3 ~ [ab4,c5]@6 ab4@2 ~@2 bb4@2 c5 ~@3 [f4,ab4,db5]@7 ~@2 db5 c5@2 bb4@3 ~ [c4,eb4,ab4]@9 ~ [eb4,ab4,c5] ~ [eb4,ab4,c5]@4 [eb4,g4,bb4]@26 [e4,ab4,b4]@2 [e4,ab4,b4] ~@3 [a4,db5,e5] ~, ~@4 ab4@6 ~@11 ab4@2 ~ ab4@5 ~ eb4@12 ~@11 f4@2 ~ eb4@5 ~@51, ~@11 db5 ~@7 ab4@2 ~@6 ab4@2 ~@27]/7", // Cm Eb7 Db Ab Db Ab Eb E …
  C: "~ [a4,db5,eb5,e5] ~@2 [a4,db5,e5]@3 [a4,e5] [a4,db5,eb5,e5] a4 [a4,db5,e5]@2 e5 ~ [a4,d5,gb5]@2", // A A5 A D
  D: "~ [a4,d5,gb5] ~ a4 [a4,d5,gb5]@2 ~ [a4,d5,gb5] ~ a4 [a4,d5,gb5] ~ d5 gb5 [a4,db5,e5]@2, ~@11 a4@2 ~@3", // D A
  E: "~ [a4,db5,e5] ~@2 [a4,db5,e5]@3 [a4,db5,e5] ~ a4 [a4,db5,e5]@2 a4!2 [a4,d5,gb5]@2", // A D
  F: "~ [a4,d5,gb5] ~ a4 [a4,d5,gb5]@2 ~ [a4,d5,gb5] ~ [a4,gb5] a4 d5 e5 [a4,gb5] ~ c5, ~@7 a4", // D
  G: "[a4,e5] [b4,c5,eb5,ab5] ~ db5 [db5,e5,a5]@2 ~ [db5,e5,a5] ~ db5 [db5,e5,a5]@2 db5 e5 [d5,gb5,a5]@2, ~@10 eb5 ~@5", // A5 Ab A D
  H: "[~ [d5,gb5,a5] ~ d5 [d5,gb5,a5]@3 [d5,gb5,a5]!2 ~ [d5,a5] ~ [d5,gb5,a5] ~ [e5,ab5,b5]@9 [e5,ab5,b5] ~ e5 [e5,ab5]@2 [e5,ab5,bb5,b5] ~ db5@6 [e4,a4,db5]@2 a4@2 [a4,d5]@2 [e5,a5] ~@3 [d5,gb5]@7 ~@2 gb5 e5@2 d5@3 ~ [e4,a4,db5]@2, ~@10 gb5@2 ~@14 b5 ~@3 [e5,a5]@12 ~@12 d5@2 ~@8, ~@38 [e4,db5]@4 ~@4 a4@6 ~ a4@3 a4@5 ~@3]/4", // D D5 D E A D5 A5 D …
  I: "[~@3 e4 [e4,db5]@2 [e4,db5]@2 [e4,d5]@2 e5 ~@3 [a4,d5,gb5]@7 ~@2 gb5 e5@2 d5@3 ~ [a4,db5]@6 a4@2 ~@2 b4@2 db5 ~@3 [gb4,a4,d5]@7 ~@2 d5 db5@2 b4@3 ~ [db4,e4,a4]@9 ~ [e4,a4,db5] ~ [e4,a4,db5]@4 e4@22 [e4,a4,db5]@2 [a4,db5]@2 [a4,d5]@2 [e5,a5] ~@3 [d5,gb5]@7 ~@2 gb5 e5@2 d5@3 ~ [e4,a4,db5]@2, ~@4 a4@6 ~@11 a4@2 ~ a4@5 ~ e4@12 ~@11 gb4@2 ~ e4@5 ~@41 e4@4 ~@12 d5@2 ~@8, ~@22 d5@2 ~@14 a4@4 ~@12 a4@4 ~@20 [ab4,b4]@26 ~@6 a4@6 ~ a4@3 a4@5 ~@3]/8", // Dbm E7 D A D A D5 A5 …
  J: "[~@3 e4 [e4,db5]@2 [e4,db5]@2 [e4,d5]@2 e5 ~@3 [a4,d5,gb5]@7 ~@2 gb5 e5@2 d5@3 ~ [a4,db5]@6 a4@2 ~@2 b4@2 db5 ~@3 [gb4,a4,d5]@7 ~@2 d5 db5@2 b4@3 ~ [db4,e4,a4]@9 ~ [e4,a4,db5] ~ [e4,a4,db5]@4 [e4,ab4,b4]@26 ~@8, ~@4 a4@6 ~@11 a4@2 ~ a4@5 ~ e4@12 ~@11 gb4@2 ~ e4@5 ~@51, ~@11 d5 ~@7 a4@2 ~@6 a4@2 ~@27]/7", // Dbm E7 D A D A E
})).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@8 Q R S T ~@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!9 ~ x ~ x!4", R: "x!7 ~ x!8", S: "x ~ x!9 ~ x!4",
  T: "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