Strudelify

Do I Do

Stevie Wonder

KeyB majorTempo114 bpm
0:00/0:00
// Do I Do — Wonder Stevie
// 114 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · piano
const piano = note(`<
  A@6 B@8 C@3 ~ D ~ D ~ E@6 F@7 ~ G ~ G ~ H@6 I@7 ~@11 J@8 K ~ G ~ G ~ H@6 I@7 ~@23 J@8 K ~ G ~ G ~ H@6 I@7 L ~
>`.pickRestart({
  A: "[~@15 [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@10 ~@2 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@12 f#3@3 [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4], ~@63 [e3,g#3,c#4]@11 ~@22, ~@71 f#2@7 ~@18]/6", // F# D#m E F# D#m Dmaj7 D#m E …
  B: "[~@11 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@12 f#3@2 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@10 ~@2 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@12 f#3@2 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4], ~@31 [e3,g#3,c#4]@11 ~@53 [e3,g#3,c#4]@11 ~@22, ~@39 f#2@7 ~@57 f#2@7 ~@18]/8", // D#m Dmaj7 D#m E F# D#m E F# …
  C: "[~@11 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@3 [e3,g#3,c#4]@8 ~ [f#3,a#3,c#4,f#4]@5 ~ [f#3,b3,d#4,f#4] ~]/3", // D#m Dmaj7 C#m F# B
  D: "[d#1,d#2,d#3,g#3,c#4,f4]@8 [f#3,a#3,c#4,f#4]@5 ~ [f#3,b3,d#4,f#4] ~", // C# F# B
  E: "[f#2@4 f#1@10 ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@10 ~@2 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@12 f#3@3 [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4], ~@63 [e3,g#3,c#4]@11 ~@22, ~@71 f#2@7 ~@18]/6", // F# D#m E F# D#m Dmaj7 D#m E …
  F: "[~@11 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@12 f#3@2 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@10 ~@2 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@3 [e3,g#3,c#4]@8 ~ [f#3,a#3,c#4,f#4]@5 ~ [f#3,b3,d#4,f#4] ~, ~@31 [e3,g#3,c#4]@11 ~@70, ~@39 f#2@7 ~@66]/7", // D#m Dmaj7 D#m E F# D#m E F# …
  G: "[d#1,d#2]@8 [f#3,a#3,c#4,f#4]@5 ~ [f#3,b3,d#4,f#4] ~", // D# F# B
  H: "[f#2@4 f#1@11 [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@8 ~ [d4,d#4,g4,a#4]@7 [c#4,d4,f#4,a4]@12 ~ [d3,f#3,g#3,c#4] [d#3,g3,a#3,d4] ~ [e3,g#3,b3,d#4]@9 [c2,g2,d4,e4,g4,b4]@7 [c#4,d#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4], ~@79 [b1,f#2]@2 ~@15]/6", // F# D#m E F# D#maj7 Dmaj7 D#maj7 Emaj7 …
  I: "[~@8 [d4,d#4,g4,a#4]@7 [c#4,d4,f#4,a4]@12 ~ [d3,f#3,g#3,c#4] [d#3,g3,a#3,d4] ~ [e3,g#3,b3,d#4]@9 [d4,e4,g4,b4]@7 [c#4,d#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@8 ~ [d4,d#4,g4,a#4]@7 [c#4,d4,f#4,a4]@12 ~ [d3,f#3,g#3,c#4] [d#3,g3,a#3,d4] ~ [e3,g#3,b3,d#4]@5 c#7 [a6,b6,c7] [b5,c6,d6,e6,f6,g6] [c5,d5,e5,f5,g5,a5] [f4,g4,a4,b4] [c4,d4,e4] ~@6]/7", // D#maj7 Dmaj7 D#maj7 Emaj7 Em7 D#m7 D#m E …
  J: "[~@11 [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@10 ~@2 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@12 f#3@2 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@10 ~@2 [a#3,d#4,f#4] ~@3 [d3,f#3,g#3,c#4]@12 [d3,f#3,g#3,c#4] ~@3 [e3,g#3,c#4], ~@63 [e3,g#3,c#4]@11 ~@54, ~@71 f#2@7 ~@50]/8", // D#m E F# D#m E F# D#m Dmaj7 …
  K: "~@8 [f#3,a#3,c#4,f#4]@5 ~ [f#3,b3,d#4,f#4] ~", L: "[b2,f#3,a#3,c#4,d#4]",
})).s("gm_piano").gain(0.32).pan(0.7)

// bass · fretless bass
const bass = note(`<
  A@2 B C D E F C G E F C H E B C I J K J K L M E N O P E B C Q E B C I J K J K L R S T U V S W U X Y T U Z AA AB AC AD
  AE AF AG AH AI AJ AK AL S B U H AM B C AN AO K J K AP AQ S W U AR S W U X AS W AT AU AV AW AX AY AE AZ BA BB BC BD BE
  BF@2 BG AK BH BI BJ AK BK@2 BL BM BN@2 B U H AM B C AN AO K J K AP AQ S W U AR S W U X AS W AT BO BP ~
>`.pickRestart({
  A: "[~@15 b1@2 b1!2 ~ g#1 ~ f#1 ~ b1 ~@2 b1 ~ f#1 g#1 b1]/2", B: "~ b1!2 ~ g#1 ~ f#1 ~ b1@2 ~ b1 ~ f#2 f2 e2",
  C: "~ e2!2 ~ c#2 ~ b1 ~ e2@2 ~ e2 ~ e2 f2 f#2", D: "~ c#2 f#2 ~ c#2 ~ g#1 ~ f#1@2 ~ f#1 ~ f#1 g#1 b1",
  E: "~ b1!2 ~ g#1 ~ f#1 ~ b1 ~@2 b1 ~ f#1 g#1 b1", F: "~ b1!2 ~ g#1 ~ f#1 ~ b1@2 ~ b1 ~ b1 c#2 e2",
  G: "~ c#2!2 f#1 g#1 g1 f#1 ~ f#1 g#1 b1 c#2 b1 g#1 f#1 b1",
  H: "~ g#1 c#2 e1 g#1 g1 f#1 ~ f#1 g#1 b1 c#2 b1 g#1 f#1 b1", I: "~ g#1 c#2 f#1!2 ~ f#1 ~ g#1@2 ~ g#1@2 ~ c#2 ~",
  J: "~@2 [d3,d#3] ~ c#3 b2 g#2 c#3 b2 g#2 f#2 b2 g#2 f#2 c#2 d2", K: "d#2@3 ~ d#1@3 ~ g#1@3 g#1@3 c#2@2",
  L: "~@2 [d3,d#3] ~ c#3 b2 g#2 c#3 b2 g#2 f#2 b2 g#2 f#2 c#2 d#2", M: "f#2@3 ~ f#1@3 ~ f#1 g#1 b1 c#2 b1 g#1 f#1 b1",
  N: "~ b1!2 ~ g#1 ~ f#1 ~ b1@2 b1 ~ f#2 f2 ~ e2", O: "~ e2!2 ~ c#2 ~ b1 ~ e2@2 e2 ~ e2 f2 ~ f#2",
  P: "~ g#1 b1 c2 c#2 f#1 g#1 g1 f#1 ~ c#2 ~ f#2 c#2 f#1 b1", Q: "~ g#1 c#2 e1 g#1 g1 f#1 ~ c#2 f#2 c#2 f#1!3 ~ b1",
  R: "f#2@3 ~ f#3@8 f#1@2 ~ b1", S: "~ b1!2 ~ g#1 ~ f#1 ~ b1 ~ b1 ~ f#1 g#1 ~ b1", T: "~ b1!2 ~ g#1 ~ f#1 ~ f2@6 ~ e2",
  U: "~ e2!2 ~ c#2 ~ b1 ~ e2 ~ e2 ~ e2 f2 ~ f#2", V: "~ g#1 c#2 e1 g#1 g1 f#1 ~ c2@6 ~ b1",
  W: "~ b1!2 ~ g#1 ~ f#1 ~ f2@4 f2@3 e2", X: "~ g#1 c#2 e1 g#1 g1 f#1 ~ c2@4 c2@3 b1",
  Y: "~ d#1@3 g#1 ~ f#1 ~ b1 ~ b1 ~ f#1 g#1 ~ b1", Z: "~ g#1 c#2 e1 g#1 g1 f#1 ~ c#2@2 f#2@2 c#2 g#1 f#1@2",
  AA: "g#1@4 ~ d#2 g#2 d#2 g#2@7 ~", AB: "c#3 c3 ~ a#2@2 g#2 ~ d#3 c#3@2 a#2 g#2@2 d#2 c#2@2",
  AC: "a#1@4 ~ f2 a#2 f2 a#2@7 ~", AD: "d#2@2 ~ f2@3 g#2@2 f2@2 d#2@2 a#1@2 b1@2", AE: "c2@4 ~ g2 c3 g2 c3@7 ~",
  AF: "g3 f3@2 e3@2 d3@2 c3@2 c2 g2 f#2 f2 e1 g1 f1", AG: "f#1 ~ f#1 ~ f#1@2 e2 f2 f#2@2 f#2 ~ f#2@2 e1 f1",
  AH: "f#1 ~ f#1 ~ f#1 ~ e2 f2 f#2@2 f#2 ~ f#2 ~ f#2 b1",
  AI: "[b2,b3] [b1,b2] [b2,b3] ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2] ~ [b1,b2] ~ [f#1,f#2] [g#1,g#2] ~ [b1,b2]", // B G# F# B F# G# B
  AJ: "~ [b1,b2]!2 ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2]@2 [b1,b2] ~ [f#2,f#3] [f2,f3] ~ [e2,e3]", // B G# F# B F# F E
  AK: "~ [e2,e3]!2 ~ [c#2,c#3] ~ [b1,b2] ~ [e2,e3] ~ [e2,e3] ~ [e2,e3] [f2,f3] ~ [f#2,f#3]", // E C# B E F F#
  AL: "~ [b1,b2] [c#2,c#3]!2 [g#2,g#3] [g2,g3] [f#2,f#3]!2 [c#2,c#3] [d#1,d#2] [g#1,g#2] [g1,g2] [f#1,f#2] [c#2,c#3] [f#2,f#3] [b1,b2]", // B C# G# G F# C# D# G# …
  AM: "~ b1!2 ~ g#1 ~ f#1 ~ b1@2 ~ b1 ~ f#1 g#1 b1", AN: "~ g#1 c#2 e1 f#1@2 f#1@2 g#1@2 ~ g#1@2 ~ c#2 ~",
  AO: "~@2 [d3,d#3] ~ c#3 ~ g#2 c#3 b2 g#2 f#2 b2 g#2 f#2 c#2 d2, ~@5 b2@2 ~@9", // D#maj7
  AP: "~@2 [d3,d#3] ~ c#3 b2 g#2 c#3 b2 g#2 f#2 g#2 b2 g#2 f#2 d#2", AQ: "f#2@3 ~ f#1@4 c#2 f#2 c#2 g#1 f#1@3 b1",
  AR: "~ g#1 c#2 e1 g#1 g1 f#1 ~ c2@4 c2@2 ~ [b1,b2]", AS: "~ b2 b1 ~ g#1 ~ f#1 ~ b1 ~ b1 ~ f#1 g#1 ~ b1",
  AT: "~ b1 e2 ~ c#2 ~ b1 ~ e2 ~ e2 ~ e2 f2 ~ f#2", AU: "~ g#1 c#2 f#1 g#1@2 g1@2 f#1@2 c#2@2 f#2@2 g2@2",
  AV: "g#1@3 d#2 g#2@4", AW: "d#3@3 c#3@2 ~@5 c#2@4 g#1@2, ~@3 f3@4 ~", AX: "a#1@4 ~ f2 a#2 f2 a#2@7 f3",
  AY: "d#3@2 ~ d3@2 c3 d3 a#2@2 f2 d#2 ~ a#1@2 b1@2", AZ: "g3@3 f3@3 d3@3 c3@3 g2@2 f2@2",
  BA: "f#1 ~ f#1 ~ f#1@2 f#1 ~ e2 f#2 d#1 ~ e1 ~ f1 ~", BB: "f#1 ~ f#1 ~ c#2 f#2 c#2 f#1 g#1 g1 f#1 ~ f#1 ~ f#1 b1",
  BC: "~ [b1,b2] [b2,b3] ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2] ~ [b1,b2] ~ [f#1,f#2] [g#1,g#2] ~ [b1,b2]", // B G# F# B F# G# B
  BD: "~ [b2,b3] [b1,b2] ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2]@2 [b1,b2] ~ [f#2,f#3] [f2,f3] ~ [e2,e3]", // B G# F# B F# F E
  BE: "~ [e2,e3]!2 ~ [c#2,c#3] ~ [b1,b2] ~ [b1,b2] [c#2,c#3] [e2,e3] [f#2,f#3] [e2,e3] [c#2,c#3] [e2,e3] [f#2,f#3]", // E C# B C# E F# E C# …
  BF: "[~ [f#2,f#3]!2 ~ [c#2,c#3] [d#2,d#3] [f#2,f#3] [g#2,g#3] [f#2,f#3] [d#2,d#3] [c#2,c#3] [f#1,f#2]!3 ~ [b1,b2]@2 [b1,b2]!2 ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2] ~ [b1,b2] ~ [f#1,f#2] [g#1,g#2] ~ [b1,b2]]/2", // F# C# D# F# G# F# D# C# …
  BG: "~ [b2,b3] [b1,b2] ~ [g#1,g#2]@2 [f#1,f#2] ~ [b1,b2]@2 [b1,b2] ~ [b1,b2] [c#2,c#3] ~ [e2,e3]", // B G# F# B C# E
  BH: "~ [f#2,f#3] [g#2,g#3] [f#2,f#3]@2 [f#2,f#3] ~ [g#2,g#3] ~ [f#2,f#3]@2 [d#2,d#3] [c#2,c#3]@2 ~ [b1,b2]", // F# G# F# G# F# D# C# B
  BI: "~ [b1,b2]!2 ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2] ~ [b1,b2] ~ [f#1,f#2] [g#1,g#2] ~ [b1,b2]", // B G# F# B F# G# B
  BJ: "~ [b1,b2]@2 [b1,b2] [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2]@2 [b1,b2] ~ [b1,b2] [c#2,c#3] ~ [e2,e3]", // B G# F# B C# E
  BK: "[~ [b1,b2] [c#2,c#3] [f#1,f#2] [g#1,g#2] [g1,g2] [f#1,f#2]@2 [e1,e2]@3 [f1,f2] [f#1,f#2]@3 [b1,b2]@2 [b1,b2]!2 ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2] ~ [b1,b2] ~ [f#1,f#2] [g#1,g#2] ~ [b1,b2]]/2", // B C# F# G# G F# E F …
  BL: "~ [b1,b2]!2 ~ [g#1,g#2] ~ [f#1,f#2] ~ [b1,b2]@2 [b1,b2] ~ [b1,b2] [c#2,c#3] ~ [e2,e3]", // B G# F# B C# E
  BM: "~ [e2,e3]!2 ~ [c#2,c#3] ~ [b1,b2] ~ [e2,e3]@2 ~ [e2,e3] ~ [e2,e3] [f2,f3] [f#2,f#3]", // E C# B E F F#
  BN: "[~ [g#1,g#2] [c#2,c#3] [f#1,f#2] [g#1,g#2] [g1,g2] [f#1,f#2]@2 [e2,e3] [f2,f3] [f#2,f#3]!2 [c#2,c#3] [f#1,f#2]!2 [b1,b2]@2 b1!2 ~ g#1 ~ f#1 ~ b1 ~ b1 ~ f#1 g#1 ~ b1]/2", // G# C# F# G# G F# E F …
  BO: "~ g#1 c#2 f#1 g#1@2 g1@2 f#1@2 c#2@2 f#2@2 f#1@2", BP: "b1",
})).s("gm_fretless_bass").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@8 A B@3 A B@3 ~@6 C@5 B@3 A B@3 ~@6 D@7 ~@5 E F@2 G@2 H I J K ~@3 A B@3 A B@3 ~@6 L@7 ~@5 E F@2 G@2 H I J K ~@15 A
  B@3 A B@3 ~@6 L@7 ~@5 E ~@2
>`.pickRestart({
  A: "~@8 f#4 g#4 a#4 b4 c#5 d#5 e5 f5", B: "f#5/3", C: "[~@15 f#5@57 f#4 g#4 a#4 b4 c#5 d#5 e5 f5]/5",
  D: "[~@15 f#5@25 g5@7 f#5@25 [g5,b5]@7 [f#5,a#5]@25 ~@8]/7", // G F#
  E: "~@9 [g#4,a#4] b4 [a#4,b4] c#5 [b4,c#5] d#5 [c#5,d#5]", F: "[f5@24 g#4 a#4 c5 c#5 d#5 e5 f5 f#5]/2",
  G: "[g5@22 a#4@2 f5@3 d#5@2 a#4@3]/2", H: "a5@8 g5@7 a#5", I: "c6@15 ~, b5 ~@15",
  J: "c#6@4 f#5 [g#5,a#5] b5 [c#6,d6] d#6@4 f#5 [g#5,a#5] b5 [c#6,d#6]", // G#sus2 Dmaj7 G#sus2 C#sus2
  K: "e6@4 f#5 [g#5,a#5] b5 [c#6,d6] d#6 c#6 ~ f#5 ~ g#5 ~ b5", // G#sus2 Dmaj7
  L: "[~@40 g5@7 f#5@25 [g5,b5]@7 [f#5,a#5]@25 ~@8, ~@15 f#5@32 ~@65]/7", // G F#
})).s("gm_string_ensemble_1").gain(0.35)

// chords · epiano1
const epiano1 = note(`<
  ~@16 A ~ B ~ B ~ C@2 ~@10 A ~ B ~ B ~ C@2 ~@30 A ~ B ~ B ~ C@2 ~@42 A ~ B ~ B ~ C@2 ~@13
>`.pickRestart({
  A: "~@8 [c#4,f#4,a#4,c#5]@3 [c#4,f#4,a#4,c#5]@3 [d#4,f#4,b4,d#5]@2", // F# B
  B: "[c#4,f4,a#4]@2 ~@2 [c#4,f#4,a#4,c#5]@3 [d#4,f#4,b4,d#5]", // A#m F# B
  C: "[[d4,f#4,a4,d5]@4 [c4,e4,g4,c5]@9 [d4,d5]@2 [c#4,c#5]@2 [b3,b4]@3 ~@12]/2", // D C D C# B
})).s("gm_epiano1").gain(0.25).pan(0.4)

// chords · trumpet
const trumpet = note(`<
  A@2 B C D E F G H ~@7 I ~ J ~ K L M N B O H ~@3 P ~@3 I ~ J ~ K L Q ~@7 R@5 ~@4 S T U V ~@3 P ~@4 W X Y Z ~ J ~ K L M
  ~@7 R@5 ~@4 S T U V ~@20 W X Y Z ~ J ~ K L M ~@7 R@5 ~@2
>`.pickRestart({
  A: "~@15 a#4", B: "~@15 f#4", C: "~@11 b3 ~@3 c#4", D: "~@11 f#4 ~ g#4 ~ [f#4,a#4]",
  E: "~@3 f#5 [d#5,f5] c#5 ~ c#5@4 f#4 ~ g#4 ~ [f#4,a#4]", F: "~@3 f#5 [d#5,f5] c#5 ~ c#5@7 ~ f#4",
  G: "~@3 f#5 [d#5,f5] c#5 ~ c#5@2 f#4 g#4 [f#4,b4] ~ c#5 b4 [f#4,d5]", H: "~ c#5 d5 [b4,c#5] c#5 b4 g#4 f#4@3 ~@6",
  I: "~@8 [f#4,c#5]@3 [f#4,c#5]@3 [f#4,d#5]@2", J: "f4@3 ~@5 [a#4,c#5]@6 [b4,d#5] ~",
  K: "[f4,c#5]@3 ~@5 [a#4,c#5]@6 [b4,d#5] ~", L: "~@2 d#5 ~ c#5 b4 g#4 c#5 b4 g#4 f#4 b4 g#4 f#4 c#4 d#4",
  M: "[a4,d5]@4 [g4,c5]@10 ~ [c#5,f#5]", N: "~@11 f#4 ~ g#4 ~ [a#4,f#5]", O: "~@9 f#4 g#4 b4 ~ c#5 b4 [f#4,d5]",
  P: "~@15 [f#5,a#5]", Q: "[a4,d5]@2 [g4,c5]@5 ~",
  R: "[~@15 [a#4,c#5]@13 ~ [b4,d#5] ~ [a#4,c#5]@8 ~ [a#4,d5]@7 [a4,c#5]@12 ~ [a4,c#5] [a#4,d5] ~ [b4,d#5]@16 ~]/5", // A#m B A#m A# A A# B
  S: "c5@4 a4@3 ~ g4@3 ~ e5@4", T: "c5@4 a4@3 ~ g5@2 ~ e5@5",
  U: "~ [b4,c#5] ~ [b4,c#5] ~ [b4,c#5] ~@3 [b4,d#5] ~ [b4,d#5] ~ [b4,d#5] ~@2", // Bsus2 B
  V: "~ [b4,c#5,e5] ~ [b4,c#5,e5] ~ [b4,c#5,e5] ~@5 f#4 ~ g#4 ~ b4", W: "~@3 f#5 [d#5,f5] c#5 ~ c#5@9",
  X: "~@3 f#5 [d#5,f5] c#5 ~ c#5@7 ~@2", Y: "~@3 f#5 [d#5,f5] c#5 ~ c#5@2 f#4 g#4 b4 ~ c#5 b4 d5",
  Z: "~ c#5 d5 [b4,c#5] c#5 b4 g#4 f#4 [f#4,c#5]@3 [f#4,c#5]@3 [f#4,d#5]@2", // Bsus2 F#5 D#m
})).s("gm_trumpet").gain(0.4).pan(0.9)

// chords · trombone
const trombone = note(`<
  A@2 B C D@2 E F ~@8 G ~ H ~ I J K D E F ~@8 G ~ H ~ I J K L M N O L M N P L M N Q R S T U ~@2 V W ~@5 X@2 ~@4 G ~ H ~
  I J K L M N O L M N P L M N Q R S T U ~@2 V W ~@17 X@2 ~@4 G ~ H ~ I J K L M N O L M N P L M N Q ~@2
>`.pickRestart({
  A: "~@15 a#3", B: "~@15 f#3", C: "~@11 [g#3,b3] ~@3 [g#3,b3]", D: "~@11 f#3 ~ g#3 ~ [a#3,c#4]", E: "~@15 [g#3,d4]",
  F: "~@11 [a#3,d#4] ~@3 [a#3,d#4]", G: "~@8 [f#3,a#3]@3 [f#3,a#3]@3 [f#3,b3] ~",
  H: "[g#3,c#4,f4]@3 ~@5 [a#3,c#4,f#4]@5 ~ [b3,d#4,f#4] ~", I: "[g#3,c#4,f4]@3 ~@5 [a#3,c#4,f#4]@6 [b3,d#4,f#4] ~",
  J: "~@2 d#4 ~ c#4 b3 g#3 c#4 b3 g#3 f#3 b3 g#3 f#3 c#3 d#3", K: "[d4,f#4]@4 [c4,e4]@11 [c#4,f#4]",
  L: "~ [d#3,g#3,a#3,c#4] ~ [d#3,g#3,a#3,c#4] ~ [d#3,g#3,a#3,c#4] ~@10", // D#sus4
  M: "~ [d#3,g#3,a#3,c#4] ~ [d#3,g#3,a#3,c#4] ~ [d#3,g#3,a#3,c#4] ~@2 [d#3,g3,a#3,d4]@6 ~@2", // D#sus4 D#maj7
  N: "~ [d3,f#3,a3,c#4] ~ [d3,f#3,a3,c#4] ~ [d3,f#3,a3,c#4] ~@10", // Dmaj7
  O: "~ [e3,g#3,b3,d#4] ~ [e3,g#3,b3,d#4] ~ [e3,g#3,b3,d#4] ~@2 [c3,e3,g3,b3,d4]@7 [b2,d#3,f#3,a#3]", // Emaj7 Cmaj7 Bmaj7
  P: "~ [e3,g#3,b3,d#4] ~ [e3,g#3,b3,d#4] ~ [e3,g#3,b3,d#4] ~@2 [c3,e3,g3,b3]@7 [b2,d#3,f#3,a#3]", // Emaj7 Cmaj7 Bmaj7
  Q: "~ [e3,g#3,b3,d#4] ~ [e3,g#3,b3,d#4] ~ [e3,g#3,b3,d#4] ~@10", R: "g#3@3 ~ f3@4 d#3@3 ~ c4@4",
  S: "g#3@4 f3@3 ~ d#4@3 c4@3 ~@2", T: "d#4 d4, [g#3,c4]@15 ~", U: "[g3,a#3,d4]",
  V: "[e3,g#3,b3]@7 ~ [e3,g#3,b3]@6 ~@2, c4 ~@15", W: "[e3,g#3,b3]@7 ~ [e3,g#3,b3]@6 ~ [b3,d#4,f#4,a#4]",
  X: "[~@15 [d3,f#3,g#3]@12 ~ [d3,f#3,g#3]!2 ~ [e3,g#3,a#3]]/2", // G#m7b5 A#m7b5
})).s("gm_trombone").gain(0.28).pan(0.3)

// chords · alto sax
const alto_sax = note(`<
  ~@6 A@3 ~@15 A@3 ~@17 B@6 C@3 D E F G H I J@2 ~@5 K@3 ~@13 B@6 C@3 D E F G H I J@2 ~@17 K@3 ~@13 B@6 C@3 ~@2
>`.pickRestart({
  A: "[~@14 [e2,g#3,d4,f#4,g#4,c#5]@17 [e3,a#3,d#4,f#4,c#5]@14 ~@3]/3", // C#m D#m7
  B: "[~@15 [c#4,f#4,a#4]@11 ~ [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [c#4,f#4,a#4]@8 ~ [d4,g4]@7 [c#4,f#4]@12 ~ [c#4,f#4] [d4,g4] ~ [d#4,g#4]@8 ~ [d4,g4]@7 [c#4,f#4]@13 ~ [d#4,g#4] ~ [c#4,f#4]]/6", // F# D#m E F# G5 F#5 G5 G#5 …
  C: "[~@8 [d4,g4]@7 [c#4,f#4]@12 ~ [c#4,f#4] [d4,g4] ~ [d#4,e4,g#4]@17]/3", D: "c#4@8 c4@7 ~, [f#3,a#3,f4]@15 ~",
  E: "[f3,g#3,c4,d#4]@15 ~", F: "~@3 g4 ~ f4 ~@6 a#4@4, [g#3,c4], d#4@7 d4@9", G: "~ g4@14 ~, [g3,a#3,d4]@15 ~",
  H: "[f4,a4] [e4,g4], [a#3,d4]", I: "[a3,c4,e4,g4]", J: "[[g#3,b3,c#4,e4,f#4]@31 ~]/2",
  K: "[~@14 c#5@13 ~ a#4 b4 ~ [e3,a#3,d#4,f#4,g#4]@14 ~@3, ~@7 [e2,g#3,d4,f#4,g#4]@9 ~@8]/3", // D#m E7
})).s("gm_alto_sax").gain(0.18).pan(0.8)

// other · baritone sax
const baritone_sax = note("<~@17 A B A B C ~@13 A B A B C ~@33 A B A B C ~@45 A B A B C ~@15>".pickRestart({
  A: "~@2 d#3 ~ c#3 b2 g#2 c#3 b2 g#2 f#2 b2 g#2 f#2 c#2 d2", B: "d#2@3 ~@13",
  C: "~@2 d#3 ~ c#3 b2 g#2 c#3 b2 g#2 f#2 b2 g#2 f#2 c#2 d#2",
})).s("gm_baritone_sax").gain(0.35).pan(0.9)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  A B C D E B C D E B C F G B C F H I J I J K ~ B C D E B C D L B M D H I J I J K ~ N C O@2 N C O@2 N C O P ~@12 B C D L
  B M D H I Q I Q K R N C O@2 N C O@2 N C O S ~@16 T U D V T C D O B C D L B M D H I Q I Q K R N C O@2 N C O@2 N C O S
  ~@2
>`.pickRestart({
  A: "~@11 [a#3,d#4,f#4] ~ [b3,e4,g#4] ~ [b2,c#4,f#4,a#4]", B: "f#3@2 ~ b2 g#3@3 b2 f#3@2 ~ g#3 ~ b2 g#3 ~",
  C: "~ f#3!2 ~ g#3 ~ f#3 ~ c#4 ~ c#4 ~ b3 a3 g#3 f#3", D: "~ f#3!2 ~ e3@2 ~ g#3 f#3@2 ~ e3!4 f#3",
  E: "~ f#3!2 ~ e3 ~ e3 ~ f#3@2 ~ f#3 e3 f#3 e3 f#3", F: "~ f#3!2 ~ e3@2 ~ g#3 f#3@2 ~ b3!4 f#3",
  G: "~ f#3!2 ~ e3 ~ e3 ~ f#3@2 ~ b3!4 f#3", H: "~ f#3!2 ~ e3 ~ e3 ~ a#3@3 a#3@3 b3 ~",
  I: "~@2 [d5,d#5] ~ c#5 b4 g#4 c#5 b4 g#4 f#4 b4 g#4 f#4 c#4 d4", J: "d#4@3 ~@5",
  K: "~@2 [d5,d#5] ~ c#5 b4 g#4 c#5 b4 g#4 f#4 b4 g#4 f#4 c#4 d#4", L: "~ f#3!2 ~ e3 ~ e3 ~ f#3@2 ~ e3!4 b2",
  M: "f#3 ~ f#3 ~ g#3 ~ f#3 ~ c#4 ~ c#4 ~ b3 a3 g#3 f#3", N: "f#3@2 ~ b2 g#3@3 b2 f#3@2 ~ g#3 ~ g#3!2 f#3",
  O: "~ f#3!2 ~ e3 ~ e3 ~ f#3@2 ~ e3!4 f#3", P: "~ f#3!2 ~ e3 ~ e3 ~ f#3@2 ~@6", Q: "d#4@6 ~@2 a#3@3 a#3@2 ~ b3@2",
  R: "f#4@4 e4@10 ~ b2", S: "~ f#3!2 ~ e3 ~ e3 ~ f#3@2 ~ e3!2 ~@3", T: "f#3@2 ~ b2 g#3@3 b2 f#3@2 ~ g#3 ~ b2 g#3 f#3",
  U: "~ f#3!2 ~ g#3 ~ g#3 ~ f#3 ~ c#4 ~ c#4 b3 a3 f#3", V: "~ f#3!2 ~ e3 ~ f#3 ~ e3@2 ~ f#3 b3 c4 c#4 ~",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.2)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A B C D C B C D C B C D C B C D E F G F G H ~ B C D C B C D C B C D E F G F G H ~@25 B C D C B C D E F G F G H ~@28 I
  J K L M N@3 O B C D C B C D E F G F G H ~@15
>`.pickRestart({
  A: "~@11 [d#4,f#4] ~ [e4,g#4] ~ [f#4,a#4]", B: "~@3 g#3 b3!4 ~@3 c#4 ~ c#4 ~ b3",
  C: "~ b3 g#3 ~ b3 ~ c#4 ~ b3 ~ g#3 ~ [c#4,d4] c#4 ~ b3", D: "~ b3 g#3 ~ b3@3 b3 ~@3 c#4 ~ c#4 ~ b3",
  E: "~ b3 g#3 ~ b3 ~ c#4 ~@9", F: "~@2 [d4,d#4] ~ c#4 b3 g#3 c#4 b3 g#3 f#3 b3 g#3 f#3 c#3 d3", G: "d#3@3 ~@5",
  H: "~@2 [d4,d#4] ~ c#4 b3 g#3 c#4 b3 g#3 f#3 b3 g#3 f#3 c#3 d#3", I: "~@15 c#4",
  J: "~ b3 ~ g#3 b3@3 ~@4 c#4 ~ c#4 ~ b3", K: "~ b3 g#3 ~ b3@4 ~@3 [c#4,d4] ~ c#4 ~ b3",
  L: "~ b3 ~ b3 b3@3 d4 ~@3 c#4 ~ b3 ~ d4", M: "~ d4 c#4 ~ b3@3 b3 ~@2 b3 d4 ~ c#4 ~ b3",
  N: "~ b3 g#3 ~ b3@3 b3 ~@3 d4 ~ c#4 ~ b3", O: "~ b3 g#3 ~ b3 ~ c#4 ~ b3 ~@2 d#4 ~ c#4 ~ b3",
})).s("gm_overdriven_guitar").gain(0.28).pan(0.2)

// other · brass section
const brass_section = note(`<
  A@2 B C D E F G H ~@12 I J K L M H ~@3 K ~@8 I J ~@16 N O ~ P ~@3 K ~@4 Q R S T ~@4 I J ~@16 N O ~@17 K ~@4 Q R S T
  ~@4 I J ~@14
>`.pickRestart({
  A: "~@15 a#4", B: "~@15 f#4", C: "~@11 b3 ~@3 c#4", D: "~@11 f#4 ~ g#4 ~ [f#4,a#4]",
  E: "~@3 f#5 [d#5,f5] c#5 ~ c#5@8 [f#4,a#4]", F: "~@3 f#5 [d#5,f5] c#5 ~ c#5@7 ~ f#4",
  G: "~@3 f#5 [d#5,f5] c#5 ~ c#5@2 f#4 g#4 [f#4,b4] ~ c#5 b4 d5", // D#sus2 B5
  H: "~ c#5 d5 [b4,c#5] c#5 b4 g#4 f#4@3 ~@5 [c#5,f#5,a#5]", // Bsus2 F#
  I: "~@2 d#5 ~ c#5 b4 g#4 c#5 b4 g#4 f#4 b4 g#4 f#4 c#4 d#4", J: "[d5,f#5]@4 [c5,e5]@10 ~ [c#5,a#5]",
// … 109 more lines

More by Stevie Wonder