Strudelify
Sing A Song (bonus track) cover art

September

Sing A Song (bonus track)

Earth, Wind & Fire

KeyA majorTempo122 bpm
0:00/0:00
// Sing A Song (bonus track) — Earth, Wind & Fire
// 122 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "JAZZ GTR" electric guitar jazz (copy of ch 3 "MUTED GTR" electric guitar muted)
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · "A.PIANO 2"
const piano = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O P Q@2 R@2 B@2 C@2 S@2 E@2 F@2 G@2 H@2 I@2 J@2 T@2 L@2 M@2
  N@2 O P Q@2 R@2 B@2 C@2 S@2 E@2 F@2 G@2 H@2 M@2 N@2 O P Q@2 ~@3 T@2 L@2 M@2 N@2 O P Q@2 ~@2
>`.pickRestart({
  A: "[[a1,a3,c#4]@2 [b1,e4] ~ [c2,a3] ~ [c#2,c#3,f#4,a4]@6 a3 ~ [d4,f#4,a4]@3 ~@3 [f#4,a4] ~ d3 ~ [d2,d4,f#4,a4]@3 ~ [d4,f#4,b4] ~ e3 ~, [a2,b3]@2 ~ [a3,c#4,e4]@2 ~@2 b1@4 ~@3 e2@2, ~@7 [b2,c#5]@3 d4 ~ e3@2 ~@2]/2", // A E5 F F#m D F#m D Bm …
  B: "[[a1,a3] ~ [b1,e4] ~ [c2,a3] ~ [c#2,c#3,c#4,e4,a4]@6 a3 ~ [d4,f#4,a4,c#5]@8 a2 b2 [e2,d4,f#4,a4]@4 [e1,e3]@4, [a2,b3]@2 ~@5 [b1,b2]@3 ~@6, c#4@2 ~@4 a3@3 ~@23]/2", // A E5 F A Dmaj7 D E Asus2 …
  C: "[c#4@2 [b1,e4] ~ [c2,a3] ~ [c#2,c#3,c#4,e4,f#4,a4]@6 a3 ~ [b1,b2,c#5]@6 [d4,f#4,a4] ~ d3 ~ [e3,a4]@4 [d4,f#4,b4] ~ e3 ~, [a2,b3]@4 ~@2 a3@3 ~@5 [d4,f#4,a4]@3 ~@7 d4@2 ~@2 e1@2 ~@2, a1 ~@23 f#4 ~@7]/2", // E5 F F#m7 Bsus2 D A5 Bm Asus2 …
  D: "[[a1,b3,c#4]@2 [b1,e4] ~ [c2,a3] ~ [c#2,c#3,a4]@6 a3 ~ [d3,e4,c5]@14 ~@4, [a2,a3]@2 ~@5 d2@5 ~@4, ~ b3 ~ [a3,c#4,e4]@2 ~@2 g4@6 ~@3]/2", // A E5 F F#m C A
  E: "[[a1,c#4]@2 e4@2 c2 ~ [c#4,e4,a4]@4 [e4,f#4]@2 a4 ~ [d4,f#4,a4,c#5]@4 [d4,f#4]@2 ~@2 a3 ~ [d4,f#4,a4]@3 ~@3 e3@2, [a2,b3]@5 ~ [c#2,c#3]@6 ~@2 [b1,b2]@7 ~@7 [e1,d4,f#4,b4]@4, a3 ~ b1 ~ [a3,f#4]@6 ~@2 a3@8 ~@4 e3@4 ~@4, ~@18 a4 ~@13]/2", // A Esus2 Dmaj7 D Asus2 C# B Bm …
  F: "[c#4@2 e4@2 f#4@2 c#2@6 a3@2 b1@8 a2 b2 ~@4 [e1,e3]@4, a3@11 ~@21, [a2,b3]@5 ~ [c#3,c#4,f#4,a4]@8 b2@6 ~@4 e2@8, a1 ~ b1 ~ c2 ~ e4 ~@7 [d4,f#4,a4,c#5]@18]/2", // E Asus2 F#m Dmaj7
  G: "[[a1,c#4]@2 e4@2 c2 ~ [c#4,e4,a4]@4 [e4,f#4]@2 a4 ~ [d4,f#4,a4,c#5]@3 ~ [d4,f#4,a4] ~ f#3 ~ a3 ~ [d4,f#4,a4]@3 ~ [d4,f#4]@2 e3@2, [a2,b3]@5 ~ [c#2,c#3]@7 ~ b1@10 ~@8, ~@2 b1 ~ [a3,f#4]@6 ~@2 a3@7 ~@5 e3@4 b4 ~@3, ~@7 b2@4 ~@5]/2", // A Esus2 Dmaj7 D Asus2 C# D
  H: "[[a1,c#4]@2 [b1,e4] ~ f#4@2 [c#4,e4,f#4,a4]@4 [e4,f#4]@2 a4 ~ [b1,b2]@7 ~ a2 b2 ~@4 [e1,e3]@4, a3@5 ~ e2@2, [a2,b3]@4 c2 ~ [c#2,c#3]@8 [d4,f#4,a4,c#5]@18]/2", // A E5 F#m7 Esus2 B E Asus2 C# …
  I: "[[a1,c#4]@2 e4@2 [c2,f#4] ~ [c#4,e4,f#4,a4]@4 [e4,f#4]@2 a4 ~ [d4,a4,c#5]@3 ~ [d4,f#4,a4]@2 f#3 ~ a3 ~ [d4,f#4,a4]@3 ~@3 e3@2, [a2,b3]@4 a3@5 ~@3 a3@8 ~@4 e3@6 ~@2, ~@2 b1 ~@3 [c#2,c#3]@6 ~@2 [b1,b2]@8 ~@6 [e1,d4,f#4,b4]@4, ~@14 f#4 ~@17]/2", // A Cdim F#m7 Esus2 Dmaj7 D Asus2 C# …
  J: "[[a1,a3,c#4]@2 e4@2 c2 ~ [c#4,e4,a4]@4 [e4,f#4]@2 a4 ~ [b1,d4,a4]@9 ~@5 e3@4, [a2,b3]@2 f#4@3 ~@11, ~@2 b1 ~ a3@16 ~@12, ~@6 [c#2,c#3]@6 ~@2 [b2,f#4,c#5]@7 ~@11]/2", // A Esus2 Bm7 Asus2 C# Bsus2
  K: "[[a1,c#4]@2 e4@2 c2 ~ [c#4,a4]@4 [e4,f#4]@2 a4 ~ [d4,f#4,c#5]@4 [d4,a4] ~@3 a3 ~ [d4,f#4,a4]@3 ~@3 e3@2, [a2,b3]@5 ~ [c#2,c#3]@6 ~@2 [b1,b2]@9 ~@5 [e1,d4,f#4,b4]@4, ~@2 b1 ~ [a3,f#4]@6 ~@2 a3@8 ~@4 e3@6 ~@2, ~@7 a4 ~ f#4 ~@6]/2", // A F#m Esus2 Dmaj7 D5 D Asus2 C# …
  L: "[[a1,c#4]@2 e4@2 c2 ~ [c#4,e4,a4]@4 [e4,f#4]@2 a4 ~ b2@9 ~@5 [e1,e3]@3 ~, a3@11 ~@21, [a2,b3]@4 f#4@6 ~@4 [d4,f#4,a4,c#5]@17 ~, ~@2 b1 ~@3 [c#2,c#3]@6 ~@2 b1@6 ~@4 e2@7 ~]/2", // A Esus2 E Asus2 Dmaj7 C#
  M: "[c#4@2 e4@2 ~@2 [c#4,a4]@4 f#4@2 a4 ~ [d4,f#4,a4,c#5]@3 ~ [d4,a4] ~@3 a3 ~ [d4,f#4,a4]@3 ~ [e3,d4,f#4,b4]@4, b3@4 [a3,f#4]@6 ~@2 a3@9 ~@11, ~@6 e4 ~@3 e4 ~@7 f#4@2 ~@12]/2", // F#m Dmaj7 D5 D Bm D
  N: "[c#4@2 e4@2 f#4 ~ [b3,c#4,e4]@4 b3 ~ [a3,e4]@2 [c4,e4,g4,a4]@4 [c4,e4,g4,a4]@5 ~ [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@3 ~, a3@5 ~@11, b3@3 [f#4,a4]@4 ~@9]/2", // C#m7 A5 Am7 D F#m
  O: "c#4 e4 ~ [c#4,e4,a4]@2 f#4 ~ [d4,f#4,c#5], a3, b3@4 f#4@6 e4 ~ a4@4", // A Dmaj7
  P: "~@2 [d4,a4]@2 ~@2 [a3,d4] ~ [e3,d4,f#4,a4]@4 [d4,f#4,b4]@4, ~ f#4@2 ~@5", // D5 D Bm
  Q: "[c#4@2 e4@2 ~@2 c#4@4 c#4@2 a3 ~ [e4,g4,a4,c5]@17 ~, b3@4 [a3,f#4]@9 ~@19, ~@6 [e4,a4]@7 ~@19]/2", // Am7 D A5
  R: "[[a3,c#4]@2 [b1,e4] ~ [c2,a3] ~ [c#2,c#3,f#4,a4]@6 a3 ~ [d4,f#4,a4]@3 ~@3 [f#4,a4] ~ d3 ~ [d2,d4,f#4,a4]@3 ~ [d4,f#4,b4] ~ e3 ~, [a2,b3]@2 ~ [a3,c#4,e4]@2 ~@2 b1@4 ~@3 e2@2, ~@7 [b2,c#5]@3 d4 ~ e3@2 ~@2]/2", // A E5 F F#m D F#m D Bm …
  S: "[[a1,b3,c#4]@2 [b1,e4] ~ [c2,a3] ~ [c#2,c#3,f#4,a4]@6 a3 ~ [d3,e4,a4,c5]@14 ~@4, [a2,a3]@2 ~@5 d2@5 ~@4, ~ b3 ~ [a3,c#4,e4]@2 ~@2 g4@6 ~@3]/2", // A E5 F F#m Am A
  T: "[[a1,c#4]@2 e4@2 c2 ~ [c#4,a4]@4 [e4,f#4]@2 a4 ~ [d4,f#4,c#5]@4 [d4,a4] ~@3 a3 ~ [d4,f#4,a4]@3 ~@3 e3@2, [a2,b3]@2 [a3,f#4]@3 ~ a3@4 ~@2 e3@3 ~, ~@2 b1 ~@3 [c#2,c#3]@6 ~@2 [b1,b2]@9 ~@5 [e1,d4,f#4,b4]@4, ~@7 a4 ~ f#4 ~@6]/2", // A F#m Esus2 Dmaj7 D5 D Asus2 D …
})).s("gm_piano").gain(0.31).pan(0.3)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C@2 D E F@2 G H I@2 A J A K A L M@2 N@2 A O P Q R S T Q U V A B C@2 D E F@2 G H I@2 A J A K A L M@2 N@2 A O P Q
  R S T Q W@2 A B C@2 D E F@2 G H I@2 A J A K P Q R S T Q X@5 N@2 A O P Q R S T Q Y@2 ~ Z
>`.pickRestart({
  A: "a1@2 b1 ~ c2 ~ c#2@8 b1@2", B: "~@2 b1@2 f#2@2 b1@2 e2 ~ e2!2 f#2 e2 c#2 b1",
  C: "[a1@2 b1 ~ c2 ~ c#2@8 b1@4 b2@2 b1@2 b2@2 e1@2 f#1@2 g1@2 g#1@2]/2", D: "a1 ~ b1 ~ c2 ~ c#2@7 ~ b1@2",
  E: "e3 f#3 b2@2 f#3@2 b2@2 e3@4 f#3@3 e2", F: "[a1@2 b1 ~ c2 ~ c#2@4 b1 ~ c#2 ~ d2@4 a2@2 d3 e3 d3@8 ~@2]/2",
  G: "a1 ~ b1 ~ c2 ~ c#2@6 ~@2 b1@2", H: "~@2 b1@2 f#2@2 b1@2 e2 ~ e2 ~ f#2 e2 c#2 b1",
  I: "[a1@2 b1 ~ c2 ~ c#2@8 b1@7 ~ f#2 f2 e2@2 e1@2 f#1!2 g#1 f#1]/2", J: "~@2 b1@2 f#2@2 b1!2 e2 ~ e2 ~ f#2 e2 c#2 b1",
  K: "~@2 b1@2 ~@2 f#2 f2 e2 ~ e2@2 f#2 e2 c#2 b1", L: "~@2 b1!2 f#2@2 b1!2 e2 ~ e2@2 f#2 e2 c#2 b1",
  M: "[a1@2 b1 ~ c2 ~ c#2@8 b1@4 f#2@2 b2@2 d2 d#2 e2 ~ e2!2 f#2 e2 c#2 b1]/2",
  N: "[a1@2 b1 ~ c2 ~ c#2@8 b1@4 c#3@2 f#3@2 c#3@2 e3@4 f#3@4]/2", O: "~@2 b1@2 ~ c#2 f#2@2 e2@2 c#2@2 b1@2 c#2@2",
  P: "a1 ~ a1@2 ~ a1 b1@2 c#2@2 c#2@2 ~@2 c#2@2", Q: "b1 ~ b1 ~@2 b1 c#2 b1 e2@2 f#2 f2 e2!2 c#2 b1",
  R: "a1@2 a1 ~@2 a1 b1@2 c#2 ~ c#2@2 ~ b1 c#2@2", S: "d2 ~ d2@2 ~@2 a2 ~ e3@2 d3 c3 a2 g2 e2 d2, ~@8 d3 ~@7",
  T: "a1 ~ a1@2 ~ a1 b1@2 c#2 ~ c#2@2 ~@2 c#2@2", U: "a1@2 a1@2 ~ a1 b1@2 c#2 ~ c#2 ~@3 d2@2",
  V: "~@2 a2 ~ d3 e3 d3@9 ~", W: "[a1@2 a1@2 ~ a1 b1@2 c#2 ~ c#2 ~@3 d2@3 ~ a2 ~ d3 e3 d3@9 ~, ~@14 [a3,e4]@15 ~@3]/2",
  X: "[a1@2 a1@2 ~ a1 b1@2 c#2 ~ c#2 ~@3 [a3,e4]@15 ~@51, ~@7 d2@33]/5", // A5
  Y: "[a1@2 a1@2 ~ a1 b1@2 c#2 ~ c#2 ~@3 [a3,e4]@18, ~@14 d2@3 ~@15]/2", Z: "a2@3 ~@13",
})).s("gm_fretless_bass").gain(0.38)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E B C F@2 G C H E I J B E K J B E B L H L H M N O H P Q@2 B C D E B C F@2 G C H E I J B E K J B E B L H L H M
  N O H P Q@2 B C D E B C R@2 G C H E I J B E H M N O H P Q@2 ~@3 B L H L H M N O H P Q@2 S T
>`.pickRestart({
  A: "[e4,f#4,a4,b4]@2 [e4,a4] ~ [b3,c#4,e4,f#4]@2 [b3,e4] ~ [a3,b3,c#4]@2 [f#3,b3] ~ [e3,f#3] e3 c#3@2", // Esus4 A5 Bsus4 E5 A B5 Esus2
  B: "e3 f#3 a3 ~ a3@2 ~ a3 ~ a3 ~ f#3 a3@2 a3!2", C: "e3 f#3 a3 ~ a3!2 b3 a3 [b3,c#4] ~ b3 ~ a3@2 b3 a3",
  D: "e3 f#3 a3!2 a3@2 ~ a3 ~ f#3 a3 ~ a3@2 f#3 a3", E: "e3 f#3 a3 ~ a3!2 b3 a3 [b3,c#4] ~ b3 ~ a3@2 b3 c#4",
  F: "[e3 f#3 a3 ~ a3@3 ~ a3 ~ f#3 a3@3 d3@8 ~@10]/2", G: "e3 f#3 a3 ~ a3@2 ~ a3 ~ a3 ~ f#3 a3@2 [a3,b3] a3",
  H: "e3 f#3 a3 ~ a3@2 ~ a3 ~ a3 ~ f#3 a3 ~ a3!2", I: "~ f#3 a3 ~ a3@2 ~ a3 ~ a3 ~ f#3 a3@2 a3!2",
  J: "e3 f#3 a3 ~ a3!2 b3 a3 [b3,c#4] ~ b3 ~ a3 ~ b3 a3", K: "~ a3!2 ~ a3@2 ~ a3 ~ f#3 a3 ~ a3 ~ a3!2",
  L: "e3 f#3 a3 ~ a3!2 b3 a3 c#4 ~ b3 ~ a3@2 b3 a3", M: "e3 f#3 a3 ~ a3@2 ~ a3 ~ a3 ~ a3 c4!2 b3 a3",
  N: "e3 f#3 a3 ~ a3@2 f#3 a3 ~ a3 ~ f#3 a3 ~ a3!2", O: "~ f#3 a3 ~ a3@3 ~ c4!2 b3 a3 b3 a3 ~ a3",
  P: "~ f#3 a3 ~ a3@2 ~ a3 ~ a3 ~ f#3 a3!2 b3 a3", Q: "[e3 f#3 a3 ~ a3 ~ f#3 a3 ~ a3 ~ f#3 a3 ~ d3@12 ~@6]/2",
  R: "[e3 f#3 a3 ~ a3@3 ~ a3 ~ f#3 a3@3 ~@6 a3 ~@3 a3@2 ~ a3 ~ a3 ~ a2, ~@7 d3@4 ~@5]/2",
  S: "[e3,e4,f#4,a4,b4] ~ [e4,a4] ~ [b3,c#4,e4,f#4]@2 [b3,e4] ~ [a3,b3,c#4]@2 [f#3,b3] ~ e3 [e3,f#3] c#3@2", // Esus4 A5 Bsus4 E5 A B5 Esus2
  T: "a2 ~@15",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.6)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@11 A@2 ~@2 A@2 ~@2 B@2 ~@2 C@5 D@4 E F G F G F G H@2 ~@2 I@2 ~@2 I@2 ~@2 J@2 ~@2 K@5 D@4 E F G F G F G L M ~@7 N@4
  D@4 O P Q R S ~@13
>`.pickRestart({
  A: "[~@2 e4 c#4 e4@2 c#4 f#4@2 e4 ~@6]/2", B: "[~@4 e4@2 c#4@2 e4@4 c#4@2 f#4@13 ~@5]/2",
  C: "[~@4 e4@2 c#4@2 e4@4 c#4@2 f#4@11 ~ e4@2 f#4@2 a4@28 [c#4,e4,a4]@2 [d4,f#4,b4]@2 [e4,a4,c#5]@16 [d4,f#4,b4] [e4,a4,c#5]]/5", // A Bm A Bm A
  D: "[[d4,f#4,b4]@2 [c4,e4,g4,a4]@8 e4@2 f#4@2 a4@28 [c#4,e4,a4]@2 [d4,f#4,b4]@2 [e4,a4,c#5]@16 [d4,f#4,b4] [e4,a4,c5]]/4", // Bm Am7 A Bm A Bm Am
  E: "[d4,f#4,b4] [c4,e4,g4,a4]@7", F: "e5 f#5 ~@4 f#5 ~", G: "e5 f#5 ~@6", H: "[e5@2 f#5@2 ~@10 g5@11 ~@7]/2",
  I: "[~@2 e4 c#4 e4@2 c#4 f#4@2 e4@5 ~@2]/2", J: "[~@2 e4 c#4 e4@2 c#4 f#4@2 e4@3 ~@4, ~@7 [f#3,a4]@5 ~@4]/2",
  K: "[~@4 e4@2 c#4@2 e4@4 c#4@2 f#4@4 e4@7 ~ e4@2 f#4@2 a4@28 [c#4,e4,a4]@2 [d4,f#4,b4]@2 [e4,a4,c#5]@16 [d4,f#4,b4] [e4,a4,c#5], ~@14 [f#3,d4,a4]@11 ~@55]/5", // A Bm A Bm A D
  L: "e5 f#5 ~@4 [e4,f#4,c#5] [e4,a4,c5]", M: "[d4,f#4,b4] [c4,e4,a4]@7",
  N: "[~@10 e4@2 f#4@2 a4@28 [c#4,e4,a4]@2 [d4,f#4,b4]@2 [e4,a4,c#5]@16 [d4,f#4,b4] [e4,a4,c#5]]/4", // A Bm A Bm A
  O: "[d4,f#4,c5] b4 ~ b4 [e4,c5] [e4,b4] [d4,f#4]@2, a4, ~ c4@7, ~ e4@3 ~@4", // D7 C E5 D
  P: "a4 g4 a4 g4 a4 [b3,f#4] [a3,e4] [b3,f#4], d4, c4@5 ~@3", // B5 A5 B5
  Q: "[d#3,c4,d#4] [d3,b3,d4]!2 [c3,a3,c4]!2 [a2,f#3,a3]!2 [f#2,d3,f#3]", // Cm G F D
  R: "f#3@2 e3@2 e3@2 d3@2 d3@2 c3 b2 [a2,d3,f#3,a3]@4, [a2,a3] [g2,g3] [f#2,f#3] ~", S: "[a2,e3,a3]",
})).s("gm_epiano1").gain(0.19)

// other · epiano1 · "E.PIANO 1"
const epiano1_2 = note(`<
  ~@92
  [~@8 a4 e4 d4 a4 e4 a#4 b4 e4]
  [c#5 e4 c5 g4 c#5 d5 d#5 e5 c#5 f5 c#5 f#5 c#5 g#5 a5@2]
  ~@12
>`).s("gm_epiano1").gain(0.33).pan(0.3)

// bass · synth bass 1 · "SYN BASS 1"
const bass_2 = note(`<
  ~@25 A B A C A B D@2 ~@24 A B A C A B D@2 ~@16 A B A C A B D@2 ~@7 A B A C A B D@2 ~ E
>`.pickRestart({
  A: "a1!2 ~@2 c#2!2 ~@2", B: "b1!2 ~@2 e2!2 ~@2", C: "d2!2 ~@2 d2@3 ~", D: "[a1@2 a1@2 ~@4 c#2@2 c#2 ~@3 d2@14 ~@4]/2",
  E: "a1 ~@3",
})).s("gm_synth_bass_1").gain(0.32).pan(0.2)

// other · tuba
const tuba = note(`<
  A B C D A B C D ~@24 E F G F G F G H@2 ~@7 I J ~ K L J ~ M N O P Q R Q P S@2 F G F G F G T@2 ~@8 O P Q R Q P U@2 ~@7 O
  P Q R Q P S@2 V ~
>`.pickRestart({
  A: "~@15 b4", B: "c#5@2 e5 ~@13", C: "~@8 c5 b4 a4 f#4 b4@2 a4 f#4", D: "f#5@2 a5 ~@13",
  E: "~@2 e3 f#3 a3 b3@2 ~ b3 c#4@2 ~ e4 f#4@2 ~", F: "e5@2 f#5 ~@9 f#5 ~ c#5 ~", G: "e5@2 f#5 ~@13",
  H: "[e5@2 f#5 ~@11 g5@16 ~@2]/2", I: "~@15 b3", J: "c#4@2 e4 ~@13", K: "~@4 b4@2 a4 ~ c5@2 b4 ~@4 f#4",
  L: "a4@2 b4 ~@4 d4 e4@2 d4 ~ c4 b3 a3 ~", M: "~@8 d#5@2 d5 ~@4 a4", N: "d5@2 c5 ~@9 [b4,c5] b4 a4 ~",
  O: "~@2 a3 g3 c4 g3 ~@2 a3 ~@5 [c#4,a4] d4", P: "~@2 a3 g3 d#4 d4 ~@2 c4 ~@5 [d4,a4] ~",
  Q: "~@2 a3 g3 c4 g3 ~@2 a3 ~@5 [d4,a4] ~", R: "~@7 d4 d#4!2 d4 c4 d4 c4@3",
  S: "[~@2 a3 g3 c4 g3 ~@2 a3 ~@9 e3 f#3 a3 b3@2 ~ b3 c#4@2 ~ e4 f#4@2 ~, ~@7 a4@7 ~@2, ~@7 d4@3 ~@6]/2",
  T: "[e5@2 f#5 ~@11 a4@14 ~@4, ~@7 d4@3 ~@6]/2", U: "[~@2 a3 g3 c4 g3 ~@2 a3 ~@5 a4@14 ~@4, ~@7 d4@3 ~@6]/2",
  V: "e5 ~@7",
})).s("gm_tuba").gain(0.32).pan(0.8)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  A B C D A B C E ~@24 F G H G H G H I@2 ~@16 J K L M L N O@2 G H G H G H P@2 ~@8 J K L M L N Q@2 ~@7 J K L M L N O@2 R
  ~
>`.pickRestart({
  A: "~@15 b3", B: "c#4@2 e4 ~@13", C: "~@8 c4 b3 a3 f#3 b3@2 a3 f#3", D: "[f#4,c#5]@2 [a4,e5] ~@13",
  E: "f#4@2 a4 ~@13", F: "~@8 e4 f#4@2 ~ a4 b4@2 ~", G: "[f#4,b4]@2 [a4,c#5] ~@9 [a4,c#5] ~ [e4,a4] ~",
  H: "[f#4,b4]@2 [a4,c#5] ~@13", I: "[[f#4,b4]@2 [a4,c#5] ~@11 c5@14 ~@4]/2",
  J: "~@2 a4 g4 c5 g4 ~@2 a4 ~@5 [c#5,a5] d5", K: "~@2 c5 a4 d#5 d5 ~@2 c5 ~@5 [d5,a5] ~",
  L: "~@2 a4 g4 c5 g4 ~@2 a4 ~@5 [d5,a5] ~", M: "~@7 d5 d#5!2 d5 c5 d5 c5@2 ~",
  N: "~@2 a4 g4 d#5 d5 ~@2 c5 ~@5 [d5,a5] ~", // D5
  O: "[~@2 a4 g4 c5 g4 ~@2 a4 ~@15 e4 f#4@2 ~ a4 b4@2 ~, ~@14 [a4,e5]@15 ~@3]/2", // A5
  P: "[[f#4,b4]@2 [a4,c#5] ~@11 [a4,e5]@15 ~@3]/2", Q: "[~@2 a4 g4 c5 g4 ~@2 a4 ~@5 [a4,e5]@15 ~@3]/2",
  R: "[f#4,b4] ~@7", // B5
})).s("gm_brass_section").gain(0.36).pan(0.6)

// other · french horn · "FR.HORN"
const french_horn = note(`<
  A B C D A B C D ~@24 E F G F G F G H@2 ~@7 I J ~ K L J ~ M N ~@7 E F G F G F G@2 ~@31 E O ~
>`.pickRestart({
  A: "~@15 b4", B: "c#5@2 e5 ~@13", C: "~@8 c5 b4 a4 f#4 b4@2 a4 f#4", D: "f#5@2 a5 ~@13",
  E: "~@8 e4 f#4@2 ~ a4 b4@2 ~", F: "e5@2 f#5 ~@9 f#5 ~@3", G: "e5@2 f#5 ~@13", H: "[e5@2 f#5 ~@11 e5@16 ~@2]/2",
  I: "~@15 b3", J: "c#4@2 e4 ~@13", K: "~@4 b4@2 a4 ~ c5@2 b4 ~@4 f#4", L: "a4@2 b4 ~@4 d4 e4@2 d4 ~ c4 b3 a3 ~",
  M: "~@8 d#5@2 d5 ~@4 a4", N: "d5@2 c5 ~@9 [b4,c5] b4 a4 ~", O: "e5 ~@7",
})).s("gm_french_horn").gain(0.28).pan(0.2)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note("<~@7 A@2 ~@97>".pickRestart({
  A: "[~@7 [a4,c5,e5,g5]@7 ~@2]/2", // Am7
})).s("gm_pad_poly").gain(0.4).pan(0.4)

// other · trombone
const trombone = note(`<
  A B C D A E C D ~@24 F G H G H G H I@2 ~@8 J ~ K L M ~ N O ~@7 F G H G H G H@2 ~@31 F P ~
>`.pickRestart({
  A: "~@15 b3", B: "c#4@2 [d#4,e4] ~@13", C: "~@8 c4 b3 a3 f#3 b3@2 a3 f#3", D: "f#4@2 a4 ~@13", E: "c#4@2 e4 ~@13",
  F: "~@2 e3 f#3 a3 b3@2 ~ b3 c#4@2 ~ e4 f#4@2 ~", G: "e4@2 f#4 ~@9 f#4 ~ c#4 ~", H: "e4@2 f#4 ~@13",
  I: "[e4@2 f#4 ~@11 g4@14 ~@4]/2", J: "c#3 e3 ~@6", K: "~@4 b3@2 a3 ~ c4@2 b3 ~@4 f#3",
  L: "a3@2 b3 ~@4 d3 e3@2 d3 ~ c3 b2 a2@2", M: "c#3@2 e3 ~@13", N: "~@8 d#4@2 d4 ~@4 a3",
  O: "d4@2 c4 ~@9 [b3,c4] b3 a3@2", P: "e4 ~@7",
})).s("gm_trombone").gain(0.44).pan(0.6)

// other · alto sax
const alto_sax = note("<~@57 A B C D E B F@2 ~@6 G@2 ~@8 A B C D E B F@2 ~@7 A B C D E B F@2 ~@2>".pickRestart({
  A: "~@2 a3 g3 c4 g3 ~@2 a3 ~@5 [c#4,a4] d4", B: "~@2 a3 g3 d#4 d4 ~@2 c4 ~@5 [d4,a4] ~",
  C: "~@2 a3 g3 c4 g3 ~@2 a3 ~@7", D: "~@7 d4 d#4!2 d4 c4 d4 c4@2 ~", E: "~@2 a3 g3 c4 g3 ~@2 a3 ~@5 c#4 d4, ~@7 a4",
  F: "[~@2 a3 g3 c4 g3 ~@2 a3@2 ~@4 a3@14 ~@4]/2", G: "[~@7 a3@7 ~@2]/2",
})).s("gm_alto_sax").gain(0.33).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B C B C B C B A B D B C B D B C B D B C B C B D B C B C B C B ~ B C B C B C B A B D B C B D B C B D B C B C B D B D
  B C B C B ~ B C B C B C B D B D B C B D B C B C B C B C B ~@4 B D B E B D B C B D B C F ~
>`.pickRestart({
  A: "~@3 x", B: "x ~@2 x!2 ~@2 x", C: "~ x ~ x!3 ~@2", D: "~ x ~ x!2 ~@3", E: "x!2 ~ x ~@4", F: "x",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct("<A B@6 C D B@22 C E B@6 C D B@22 C E B@22 C ~@4 B@3 F B@8 ~@2>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~ x ~ x", C: "~ x ~@2", D: "~ x", E: "~ x!2 ~ x ~ x!2", F: "~@4 x ~@2 x!2 ~@3 x!2 ~@2",
})).gain(0.44)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@8 A ~@23 B ~@7 A ~@23 B ~@30 C ~@10>".pickRestart({
  A: "~ x!3 ~@4", B: "~@3 x ~ x ~@2", C: "~@9 x ~@6",
})).gain(0.27)

// drums · clap
const clap = s("cp").struct("<~@104 [~ x ~ x] ~>").gain(0.27)

// drums · hihat
// … 41 more lines

More by Earth, Wind & Fire