Strudelify
Boogie Wonderland cover art

I Am

Boogie Wonderland

Earth, Wind & Fire

KeyD minorTempo128 bpm
0:00/0:00
// Boogie Wonderland — Earth, Wind & Fire
// 128 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 B C D E ~ F G H I J K L ~@4 M N O P Q R S T U V W X Y Z AA AB I J K L ~@4 M N O P Q R S T U V W AC AD AE AF AG@2
  AH@2 AI AJ AK AL AM AN AO AP I J K L I J K L U V W X Y Z AA AB I J K L ~@4 AQ AR AS AD AE AF AG@2 AH@2 AI AJ AK AL AM
  AN AO AP I J K L I J K L U V W X Y Z AA AB I J K L ~@4
>`.pickRestart({
  A: "[a1,a2,g3,d4]@3 ~ [g3,d4]@2 a2 ~ [g3,db4]@3 ~ db4@2 d4@2, ~@12 g3 ~ f3 ~", // Dsus4 G5 Gdim
  B: "d1@2 [d2,c4,f4]@2 [g3,b3,e4] ~ [d2,a3,c4,f4]@2 ~@2 [d2,a3,d4]@2 [b3,e4]@2 [d2,f3,a3,d4] ~, ~@2 a3 ~@5 d1@5 ~@3, ~@10 f3 ~ g3 ~@3", // Dm7 Em Dm7 D5 E5 Dm
  C: "[a3,c4,f4] ~ [d2,c4,f4]@2 [g3,e4] ~ [a3,c4,f4]@2 e1@2 [a3,d4]@2 [g3,b3,e4] ~ f2@2, d1@5 ~ d2 ~@3 [e2,f3] ~ f1@2 ~@2, ~@2 a3 ~ b3@2 ~@10", // F Dm7 C F D5 Em Fmaj7
  D: "[g1,f3,a3,bb3,d4]@6 f3@2 ~@4 a3@2 bb3 ~, g2@5 f3@2 ~, ~@6 [a3,bb3,d4]@5 ~@5, ~@4 g1@3 ~", // Gm7 Bbmaj7
  E: "[g3,d4]@2 ~@2 d4@2 [a2,g3] ~ [g3,db4]@3 ~ db4@2 [f3,d4]@2, ~@4 g3 ~@7 g3 ~@3", F: "~@6 [g3,e4] ~, ~@12 b3 ~@3",
  G: "[f3,a3,bb3,d4]@10 ~@2 [a3,bb3,d4]@2 [g2,f3] ~, ~@5 f3@2 ~", // Bbmaj7 G7
  H: "[g3,d4]@2 ~@2 d4@2 g3 ~ [g3,db4]@2 ~@2 db4@2 [f3,d4]@2, ~@4 g3 ~@7 g3 ~@3", // G5 Gdim Dm
  I: "~@2 [a3,c4]@2 [g3,b3,e4]@2 [c4,f4]@2 ~@2 [f3,a3,d4]@2 [g3,b3,e4]@2 [f3,a3,d4] ~, ~@2 f4 ~@3 a3 ~@9", // Am Em F5 Dm Em Dm
  J: "[a3,c4,f4] ~ [a3,c4]@2 [g3,b3,e4]@2 [a3,c4,f4] ~@3 [f3,a3,d4]@2 [b3,e4] ~@3, ~@2 f4 ~@9 g3@2 ~@2", // F Am Em F Dm E5
  K: "[f3,a3,bb3,d4]@7 ~", L: "[g3,d4]@3 ~ [g3,d4]@3 ~ [g3,db4]@3 ~ [g3,db4]@2 [f3,d4]@2",
  M: "~@2 [a3,d4,f4]@2 [g3,c4,e4]@2 [a3,d4,f4]@2 ~@2 [f3,d4]@2 [g3,b3,e4]@2 [f3,a3,d4] ~, ~@10 a3 ~@5", // Dm C Dm Em Dm
  N: "[a3,d4,f4] ~ [a3,d4,f4]@2 [g3,c4]@2 [a3,d4,f4] ~@3 [f3,a3,d4]@2 [g3,b3,e4]@2 a3 ~, ~@4 e4 ~@11", // Dm C5 Dm Em
  O: "d4@2 [bb3,d4]@2 c4@2 [bb3,d4]@3 ~ [f3,a3,c4]@2 [bb3,d4]@2 f3 ~, f3@9 ~@7, bb3 ~@3 a3 ~@11", // Bb F Bb
  P: "[a3,d4,e4]@3 ~ [a3,d4,e4]@2 ~@2 [a3,db4,f4]@2 ~@2 [a3,db4,f4]@2 [a3,d4,f4]@2", // Asus4 Aaug Dm
  Q: "~@2 [a3,d4,f4]@2 [g3,c4]@2 [a3,f4]@2 ~@2 [f3,a3,d4]@2 [g3,b3,e4]@2 [f3,a3,d4] ~, ~@4 e4 ~ d4 ~@9", // Dm C5 Dm Em Dm
  R: "[a3,d4,f4] ~ [d4,f4] ~ [g3,c4,e4]@2 [a3,d4,f4] ~@3 [f3,a3,d4]@2 [g3,b3,e4]@2 a3 ~, ~ a3 ~@6", // Dm C Dm Em
  S: "[f3,bb3,d4] ~ [f3,bb3,d4]@2 [a3,c4]@2 [f3,d4]@2 ~@2 [f3,a3,c4]@2 [bb3,d4]@2 f3 ~, ~@6 bb3 ~@9", // Bb Am Dm F Bb
  T: "[a3,d4,e4] ~ [a3,d4,e4] ~ [a3,db4,f4] ~ [db4,f4] [a3,d4,f4], ~@12 a3 ~@3", // Asus4 Aaug Db Dm
  U: "~@2 [a3,f4]@2 [g3,c4]@2 [a3,f4]@2 ~@2 [f3,d4]@2 [g3,e4]@2 [f3,a3,d4] ~, ~@2 d4 ~ e4 ~ d4 ~@3 a3 ~ b3 ~@3", // Dm C5 Dm C Dm
  V: "[a3,d4,f4] ~ [d4,f4] ~ [c4,e4] ~ [d4,f4] ~@3 [f3,d4]@2 [g3,b3,e4]@2 a3 ~, ~@2 a3@2 g3@2 a3@2 ~@2 a3 ~@5", // Dm C Dm Em
  W: "[bb3,d4] ~ bb3@2 [a3,c4] ~ [f3,d4] ~@3 [f3,c4]@2 [bb3,d4]@2 f3 ~, f3@5 ~@11, ~@2 d4 ~@3 bb3@2 ~@2 a3 ~@5", // Bb Am Dm F5 Bb
  X: "[a3,d4,e4]@2 ~@2 [a3,d4,e4]@2 ~@2 [a3,db4,f4]@2 ~@2 [a3,f4] ~ [a3,d4,f4]@2, ~@6 db4 ~", // Asus4 Aaug Dm
  Y: "~@2 [a3,f4]@2 [c4,e4] ~ [a3,f4]@2 ~@2 [a3,d4]@2 [g3,b3,e4] ~ [f3,a3,d4] ~, ~@2 d4 ~ g3@2 d4 ~@3 f3 ~@5", // Dm C Dm D5 Em Dm
  Z: "[a3,d4,f4] ~ [a3,d4,f4]@2 [c4,e4] ~ [a3,d4,f4] ~@3 [f3,d4]@2 [g3,e4]@2 ~@2, ~@4 g3@2 ~@4 a3 ~ b3 ~@3", // Dm C Dm C
  AA: "[bb3,d4] ~ [f3,bb3]@2 [a3,c4] ~ [f3,bb3,d4]@2 ~@2 [f3,c4]@2 d4@2 f3 ~, f3@2 d4 ~@7 a3 ~ bb3 ~@3", // Bb Bb5 Am Bb F5
  AB: "[a3,d4,e4]@2 ~@2 [a3,d4,e4]@3 ~ [a3,db4,f4]@2 ~@2 [a3,f4] ~ [a3,d4,f4]@2, ~@6 db4 ~", // Asus4 Aaug Dm
  AC: "[a3,d4,e4]@2 ~@2 [a3,d4,e4]@2 ~@2 [a3,c4,f4]@2 ~@2 [a3,f4] ~ [a3,d4,f4]@2, ~@6 c4 ~", // Asus4 F Dm
  AD: "d4@12 f4@2 d4 ~, bb3@7 ~, f4@9 ~@7", AE: "~@8 d4 ~@3 d4@2 ~@2, [e4,g4]@7 ~, bb3@3 ~",
  AF: "c4@3 ~ c4 ~@3 [d4,f4]@4 a3@2 d4 ~, [a3,e4,g4]@6 ~@6 c4 ~@3", // Dm A7
  AG: "[~@12 bb3@2 ~@2 [d4,f4]@6 ~@2 [e4,c5]@3 ~@2 e5@3, [d4,f4]@13 ~@11 g4@6 ~@2, bb3@11 ~@5 bb3@11 d5@3 ~@2, ~@8 g3@20 [c4,e4]@3 ~]/2", // Dm C Dm C
  AH: "[[c4,e4,g4]@6 ~@2 [d4,f4]@4 c4@2 d4 ~ [d4,f4]@12 bb3 ~@3, c5@11 ~@5, a3@6 ~@2 g3@7 ~, ~@8 c4@3 ~@5 bb3@8 ~@8]/2", // C Dm
  AI: "[d4,f4]@8 [e4,g4,c5]@3 ~ d4 ~ e5@2, bb3@11 d5@2 ~@3", AJ: "[e4,g4]@5 ~@3 [d4,f4]@4 c4 ~@3, c5, a3@3 ~, c4 ~",
  AK: "[d4,f4]@7 ~@5 bb3 ~ d4 ~, g3@3 ~, bb3@4 [d4,f4]@3 ~", // Dm
  AL: "[bb3,d4]@7 ~ db4@4 a3 ~@3, g3@11 ~@5, e4@5 ~@3 f4@6 ~@2", AM: "d4@6 c4 ~, [a3,f4]@7 ~",
  AN: "d4@8 ~@4 d4 ~@3, [a3,f4]@3 ~, ~@8 a4@7 ~", AO: "[bb3,f4]@12 d4 ~@3, d4@5 ~@3",
  AP: "[a3,db4,e4,g4,a4] ~ [a3,db4,e4,g4,a4] ~ [a3,db4,e4,g4,a4] ~@5 [a3,db4,e4,g4,a4] ~ [a3,db4,e4,g4,a4] ~@3", // A7
  AQ: "~@2 [a3,d4,f4]@2 [g3,c4]@2 [a3,d4,f4] ~@3 [f3,a3,d4]@2 [b3,e4]@2 [f3,a3,d4] ~, ~@4 e4 ~@7 g3 ~@3", // Dm C5 Dm E5 Dm
  AR: "[a3,d4,f4] ~ [a3,d4]@2 [g3,c4]@2 [a3,d4,f4] ~@3 [f3,a3,d4]@2 [g3,b3,e4] ~@3, ~@2 f4 ~ e4 ~@11", // Dm D5 C5 Dm Em
  AS: "[f3,a3,bb3,d4]@13 ~@3", // Bbmaj7
})).s("gm_piano").gain(0.31)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A ~@3 B C D E F G H I J K L I J M N O J M P Q J M R Q J M R Q J G H I J K L I J M N O J M P Q J M R Q J S T U V T U
  W T X Y Z AA AB AC AD G H I J K L I J M R Q J M R Q J G H I J K L I J M P AE AF@2 U V T U W T X Y Z AA AB AC AD G H I
  J K L I J M R Q J M R Q J G H I J K L I J
>`.pickRestart({
  A: "a1@2 ~@2 a1@3 ~ a1@2 ~@2 a1@2 d2@2", B: "a1 ~ a1 ~ a1 ~ a1 d2", C: "~ d2 c2 d2 ~ d2 c2 ~",
  D: "d2!2 f2 ~ f1 ~ gb1 g1", E: "~@2 g2@2 f2@2 g2@2 d2 ~ d2@2 f2@2 g2@2", F: "a2 ~ a2 ~ c3 ~ c3 d3",
  G: "d1@2 d2@2 c2@2 d2@2 c2@2 a1@2 c2@3 ~", H: "[d1,d2]@3 ~ [e1,e2]@3 ~ [f1,f2]@3 ~ [f1,f2]@2 [gb1,gb2]@2",
  I: "g1@2 g2@2 f2@2 g2 ~ g2@2 d2@2 f2@2 g2@2, g2 ~@15", J: "a2 d2 a2 d2 c3 d2 c3 d3",
  K: "d1@2 d2@2 c2@2 d2 ~ d2@2 a1@2 c2@3 ~", L: "[d1,d2]@3 ~ [e1,e2]@3 ~ [f1,f2]@2 ~@2 [f1,f2]@2 [gb1,gb2]@2",
  M: "d2 ~ d2@2 c2@2 d2@2 ~@2 a1@2 c2@2 a1@2", N: "d2 ~ d2@2 e1 ~ e1@2 f1 ~ f1@2 gb1 ~ gb1 ~",
  O: "g1@2 g2@2 f2@2 g2 ~@3 d2@2 f2@2 g2@2", P: "d2 ~ d2@2 e1 ~ e1@2 f1 ~ f1 ~ gb1 ~ gb1@2",
  Q: "g1 g2 f2 g2 ~ d2 f2 g2", R: "d2 ~ d2@2 e1 ~ e1@2 f1 ~ f1 ~ gb1 ~ gb1 ~", S: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~",
  T: "c2@3 ~ c2@3 ~ c2@3 ~ c2@4", U: "a1@3 ~ a1 ~ a1@2 d2@3 ~ d2@4", V: "g1@3 ~ g1@3 ~ g1@3 ~ g1@4",
  W: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~", X: "a1@3 ~ a1 ~ a1@2 d2@4 d2@4", Y: "g1@3 ~ g1@4 c2@3 ~ c2@4",
  Z: "e2@3 ~ e2@4 a1@3 ~ a1@4", AA: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", AB: "c2@3 ~ c2@3 ~ c2@2 ~@2 c2@4",
  AC: "g1@2 g2@2 g1@3 ~ g1@3 ~ g1@4", AD: "a1 ~ a1@2 a1@2 ~@4 a1 ~ a1@2 ~@2", AE: "g1 ~ g1@2 f1@2 g1@2 ~@2 f1@2 g1@3 ~",
  AF: "[c1,c2]", // C
})).s("gm_fretless_bass").gain(0.38)

// chords · clavinet
const clavinet = note(`<
  ~@6 A B ~@2 C ~@3 A D E ~@17 C ~@3 A D E ~@28 F ~@3 G ~@11 C ~@3 A D E ~@19 F ~@3 G ~@11 C ~@3 A D E ~
>`.pickRestart({
  A: "~@2 [d4,f4] [c4,e4] ~ [d4,f4] [c4,e4] ~@9", B: "~@2 [a3,f4]!2 [g3,e4] [f3,d4] [g3,e4] [f3,d4] ~@8",
  C: "~@2 d3@2 ~@4 d3 ~@5 d3@2", D: "~@2 [a4,f5]!2 [g4,e5] [f4,d5] [g4,e5] [f4,d5] ~@8",
  E: "~@2 [d4,f4] [c4,e4]@2 [d4,f4] [c4,e4]@2 ~@8", F: "~@2 d3@3 ~@3 d3@3 ~@3 d3@2", G: "~ d3 ~@2 d3 ~@2 d3",
})).s("gm_clavinet").gain(0.28).pan(0.7)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@10 A B C ~ D E F@2 ~@12 G@2 H ~ I J@2 ~ K B L@2 ~@8 M N O@2 P Q R S T U V W X Y Z AA AB AC ~ A B C ~ D E F@2 AD AE@3
  AF@2 O@2 AG J@2 ~ AG J@2 ~@4 P Q R S T U V W X Y Z AA AB AC ~ AG J@2 ~ AG J@2 ~ AD AE@3 AF@2 O@2 AG J@2 ~ AG J@2 ~
>`.pickRestart({
  A: "[a4,d5]@3 ~@13", B: "~@4 [a4,f5] [g4,e5] [f4,d5] [g4,e5]", C: "[g4,e5] [f4,d5]@3", D: "[f4,d5,a5]@3 ~@13",
  E: "~@4 [a4,f5,a5] [g4,e5,g5] [f4,d5,f5] [g4,e5,g5]", F: "[[a4,f5,a5]@7 ~]/2",
  G: "[~ [a4,f5]@2 [g4,e5]@2 [f4,d5] [e4,c5] [f4,d5]@2 [a4,f5]@2 [g4,e5]@2 [f4,d5]@2 [a4,f5]]/2", H: "[f4,d5] ~@7",
  I: "[f4,d5]@3 ~", J: "[~@4 [a4,f5] [g4,e5] [f4,d5] e5 e5@2 [f4,d5]@6, ~@7 g4@3 ~@6]/2", K: "[f4,d5] ~",
  L: "[[a4,f5]@15 ~]/2", M: "~ [a4,f5]@2 [g4,e5]@2 f4@2 f4, ~@5 d5@3",
  N: "~ [a4,f5]@2 [g4,e5]@2 [f4,d5] [e4,c5] [g4,e5]", // Dm C Dm C
  O: "[[f4,d5] [a4,f5]@2 [g4,e5]@2 [f4,d5]@2 [a4,f5]@2 [g4,e5] [f4,d5] [a4,f5]@5]/2", P: "f4", Q: "g4@11 ~@5",
  R: "a4@3 e4@3 g4@2 f4@3 a3@3 c4@2", S: "bb3@15 ~", T: "a4@2 g4 f4 g4@4", U: "a4@3 e4@2 g4@3 f4@2 a3@3 c4@3",
  V: "bb3@13 ~@3", W: "f4 g4", X: "a4@3 bb4@3 a4@2 g4@3 f4@3 g4@2", Y: "a4@3 bb4@3 a4@2 g4@3 f4@5",
  Z: "a4@3 bb4@3 a4@2 g4@2 f4@2 a4@2 g4@2", AA: "a4 g4 f4@14", AB: "~@2 f4 a4", AC: "g4@6 a4 g4 f4@7 ~",
  AD: "~ a4@2 g4@2 f4@2 f4, ~@2 ab4 ~@13",
  AE: "[~@2 a4@4 c5@4 f4@2 d4@2 f4@4 a4@4 g4@4 f4@4 [f4,a4,f5]@4 [e4,g4,e5]@2 [d4,f4,d5]@2 [f4,a4,f5]@9 ~, ~@6 b4 ~@41]/3", // F Em Dm F
  AF: "[~ [a4,f5]@2 [g4,e5]@2 f4@2 f4@2 [a4,f5]@2 [g4,e5]@2 [f4,d5] [e4,c5] [g4,e5], ~@5 d5@4 ~@7]/2", // Dm C Dm C Dm C
  AG: "[f4,d5] ~@3", // Dm
})).s("gm_acoustic_guitar_nylon").gain(0.29)

// bass · synth bass 1 · "SYN BASS 1"
const bass_2 = note("<~@54 A B C D A C E F G H I J K D L ~@27 A B C D A C E F G H I J K D L ~@24>".pickRestart({
  A: "c2 c3 c2 c3 c2 c3 c2 c3", B: "c2 ~ c3@2 c2 ~ c3@2 c2@2 c3@2 c2@2 c3@2",
  C: "a1@2 a2@2 a1@2 a2@2 d2@2 d3@2 d2 ~ d3@2", D: "g1 g2 g1 g2 g1 g2 g1 g2",
  E: "g1@2 g2@2 g1@2 g2@2 g1@2 g2@2 g1@2 g2 ~", F: "c2@2 c3@2 c2@2 c3@2 c2@2 c3@2 c2@2 c3 ~",
  G: "a1@2 a2@2 a1 ~ a2@2 d2@2 d3@2 d2@2 d3@2", H: "g1 g2 g1 g2 c2 c3 c2 c3", I: "e2 e3 e2 e3 a1 a2 a1 a2",
  J: "d2 d3 d2 d3 d2 d3 d2 d3", K: "c2@2 c3@2 c2 ~ c3@2 c2@2 c3@2 c2@2 c3@2", L: "a1 ~ a1 ~ a1@2 ~@4 a1 ~ a1@2 ~@2",
})).s("gm_synth_bass_1").gain(0.31)

// other · pad poly · "POLYSYNTH"
const pad_poly = note("<~@62 A@2 B C ~ D@2 ~@35 A@2 B C ~ D@2 ~@24>".pickRestart({
  A: "[~@2 c4@2 c5@11 a4]/2", B: "d5@8 c5@5 bb4@2 ~", C: "a4 g4 f4@14",
  D: "[[db5,d5] ~ d5 c5 a4 g4 f4@2 d5@4 f5@16 ~@4, ~@8 db5 ~@23]/2", // Dmaj7
})).s("gm_pad_poly").gain(0.32)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~ A B C D E F G H I ~@2 J K F G H L ~@8 M ~ N O M P Q R S ~ J K F G H L ~@8 M ~ N O ~@14 T S ~ U V W ~ X Y M ~ N O M P
  Q R S ~ J K F G H L ~@17 T S ~ U V W ~ X Y M ~ N O M P Q R S ~ J K F G H L
>`.pickRestart({
  A: "a5@2 ~@2 g5@2 ~@2 a5@2 ~@2 a5 ~ [c6,d6] c6", B: "b5 a5 ~@6 a4@2 c5 ~ g4 f4 d4 ~, ~@8 ab4 ~@7",
  C: "e4 [e4,f4] d4 c4 ~@12", D: "~@8 a4@2 c5 ~@5, ~@8 ab4 ~@7", E: "a5 ~ g5 ~ a5 ~ a5 d6, ~@14 c6 ~",
  F: "~@10 c6!2 ~ c6!2 ~", G: "~@8 f4 g4 a4 bb4 c5 d5 f5 g5", H: "a5!2 ~@6 c6!3 ~@5",
  I: "a5@2 ~@2 g5@2 ~@2 a5@2 ~@2 a5 ~ d6@2", J: "~@2 bb5 ~@5 bb5@2 d4@2 f4@2 d4@2",
  K: "a4 g4 [e4,f4] ~ g4@2 d4@2 [f4,gb4] f4@3 d4@2 d4 ~, ~@2 d4@2 ~@5 gb4 ~@6", // Fmaj7 Gbmaj7
  L: "a5@2 ~@2 g5@2 ~@2 a5@2 ~@2 a5 ~ [c6,d6] ~", M: "a4@2 c5 ~@13, ab4 ~@15", N: "f4@2 d4 ~@13", O: "~@2 d6 ~@13",
  P: "~@12 a4 c5 d5 f5", Q: "d5 ~@15", R: "a4 c5 d5 f5 g5 ~ d5 f5 g5 a5 c6 ~ a5 c6 [f5,g5,a5,b5] [c5,d5,e5], ~@6 d6 ~",
  S: "~@2 e5 ~@5 e5 ~@5 e5 ~", T: "[a4,a5] ~ [a4,a5] ~ [a4,a5] ~@5 [a4,a5] ~ [a4,a5] ~@3",
  U: "~@2 bb5 ~@5 a5 ~ d4@2 f4@2 d4@2", V: "[ab4,a4] ab4 d4@2 g4@2 d4@2 [f4,gb4] f4@3 d4@2 d4 ~, ~@2 g4 ~@6 gb4 ~@6",
  W: "~@2 e5 ~@5 e5 ~@5 e5@2", X: "~ bb5 ~@2 a5 d4 f4 d4",
  Y: "[ab4,a4] ab4 d4@2 g4@2 d4@2 [f4,gb4] f4@3 g4@2 d4 ~, ~@2 g4 ~@13", // Amaj7 Gbmaj7
})).s("gm_brass_section").gain(0.36).pan(0.4)

// chords · trumpet
const trumpet = note(`<
  ~ A B ~@2 C D E F G ~@2 H I J E F G ~@8 K ~ L M N O P ~ Q ~ H I J E F G ~@8 K ~ L M ~@14 R Q ~ S T Q ~ U V K ~ L M N O
  P ~ Q ~ H I J E F G ~@17 R Q ~ S T Q ~ U V K ~ L M N O P ~ Q ~ H I J E F W
>`.pickRestart({
  A: "[a4,a5]@2 ~@2 [a4,g5]@2 ~@2 a5@2 ~@2 a5 ~ [g4,a4,c6,d6] [g4,c6], ~@8 a4 ~@7", B: "[f4,b5] [d4,e4,a5] ~@14",
  C: "[a4,a5]@2 ~@2 [a4,g5]@2 ~@2 [a4,a5]@2 ~@2 [a4,a5]@2 [g4,c6]!2, ~@7 [a4,d6]", // A A7 A C5 D5
  D: "[e4,f4,e5,f5,g5,a5,b5] [c4,d4,d5] ~@8 [d5,g5]!2 ~ [d5,g5]!2 ~", E: "~@8 f4 g4 a4 bb4 c5 d5 f5 g5",
  F: "f5!2 ~@6 a5!3 ~@5", G: "[a4,a5]@2 ~@2 [a4,g5]@2 ~@2 a5@2 ~@2 a5 ~ [a4,d6]@2, ~@8 a4 ~@7",
  H: "~@2 [d5,f5,a5,bb5] ~@5 [d5,f5,bb5]@2 d4@2 f4@2 d4@2, ~@8 a5 ~@7", // Bbmaj7 Bb
  I: "a4 [f4,g4] d4@2 g4@2 d4@2 [f4,gb4] f4@3 d4@2 d4 ~, ~@2 e4 ~@6 gb4 ~@6", J: "~@10 [d5,g5]!2 ~ [d5,g5]!2 ~",
  K: "a4 c5 ~@6, ab4 ~@15", L: "f4@2 d4 ~@13", M: "~ d6 ~@6, ~@2 d5 ~@13", N: "a4@2 c5 ~@13, ab4 ~@15",
  O: "~@12 a4 c5 d5 f5", P: "d5 ~@15", Q: "~@2 [f4,a4,b4,e5] ~@5 [f4,a4,b4,e5] ~@5 [f4,a4,b4,e5] ~",
  R: "[g4,db5] ~ [g4,db5] ~ [g4,db5] ~@5 [g4,db5] ~ [g4,db5] ~@3", // Gdim
  S: "~@2 [d5,f5,bb5] ~@5 [d5,a5] ~ d4@2 f4@2 d4@2, ~@4 f5 ~@3", // Bb D5
  T: "[ab4,a4] ab4 d4@2 g4@2 d4@2 [f4,gb4] f4@3 d4@2 d4 ~, ~@2 g4 ~@6 gb4 ~@6", // Amaj7 Gbmaj7
  U: "~@2 [d5,bb5] ~@5 [d5,a5] ~ d4@2 f4@2 d4@2, ~ f5 ~@2 f5 ~@3", // Gm D5
  V: "[ab4,a4] ab4 d4@2 g4@2 d4@2 [f4,gb4] f4@3 g4@2 d4 ~, ~@2 g4 ~@13", // Amaj7 Gbmaj7
  W: "[a4,a5]@2 ~@2 [a4,g5]@2 ~@2 a5@2 ~@2 a5 ~ a4@2, ~@8 a4 ~@5 d6 ~", // A A7
})).s("gm_trumpet").gain(0.31).pan(0.4)

// chords · tuba
const tuba = note(`<
  ~ A B ~@2 C D E F G H ~@3 I E J K ~@15 L ~@4 I E J K ~@20 M@2 N O ~ P ~@5 Q R S T ~@7 L ~@4 I E J K ~@5 U V W U V W
  X@2 N O ~ P ~@16 L ~@4 I E J K
>`.pickRestart({
  A: "[g4,d5]@2 ~@2 [g4,d5]@2 ~@2 [g4,db5]@2 ~@2 [g4,db5] ~ [e4,f4,c5,d5] [e4,c5]", B: "[d4,b4] [a3,c4,a4] g4 ~@13",
  C: "[g4,d5]@2 ~@2 [g4,d5]@2 ~@2 [g4,db5]@2 ~@2 [g4,db5] ~ [f4,db5] e4, ~@7 d5", // G5 Gdim Db
  D: "[b3,c4,d4,c5] [a4,b4] g4 ~@7 [d4,g4,c5]!2 ~ [d2,d4,g4,c5]!2 ~, ~@5 d2 ~@2", E: "~@8 f3 g3 a3 bb3 c4 d4 f4 g4",
  F: "d5!2 ~@6 f5@2 f5 ~@5", G: "[g4,d5]@2 ~@2 [g4,d5]@2 ~@2 [g4,db5]@2 ~@2 [g4,db5] ~ [f4,d5]@2",
  H: "~@2 [f4,a4,e5] ~@5 [f4,a4,e5] ~@5 [f4,a4,e5] ~", I: "~@10 [d4,g4,c5]!2 ~ [d2,d4,g4,c5]!2 ~, ~@5 d2 ~@2",
  J: "d5!2 ~@6 f5!3 ~@5", K: "[g4,d5]@2 ~@2 [g4,d5]@2 ~@2 [g4,db5]@2 ~@2 [g4,db5] ~ f4@2, ~@14 d5 ~",
  L: "a3 c4 d4 f4 g4 ~ d4 f4 g4 a4 c5 ~ d5@2 [a4,b4,c5] g4, ~@12 a4 ~@3", M: "[~@2 c4@2 c5@11 a4]/2",
  N: "d5@2 ~ d5@2 ~ d5@2 c5@5 a4 bb4 ~", O: "a4 g4 f4@14", P: "d5@2 d5 c5 a4 g4 f4@2 d5@4 f5@3 ~, ~@8 db5 ~@7",
  Q: "d4@3 ~@3 a3 ~ c4 ~ d4@4 c4@2", R: "d4@2 ~@4 a3 ~ c4@2 d4@4 c4@2", S: "d4@3 ~@3 d4@2 c4@2 a3@2 g3@2 f3@2",
  T: "a3 ~@3, ab3 ~@15", U: "c4@3 d4", V: "f3@13 ~@3", W: "a3 f3 g3 a3 bb3 g3 a3 bb3 c4 a3 c4 d4 ~ d4 c4 bb3",
  X: "[c4@4 ~@2 d4@2 f3@7 a4, ~@4 c5@11 ~]/2",
})).s("gm_tuba").gain(0.36).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A B C@3 B D@2 E ~ C@3 B F G H I J@3 K ~@8 L M E ~ C@3 B F G H I J@3 K ~@4 N O P Q O P R O P S T@3 U V W M X ~ W M
  Y ~@9 L M E ~ C@3 B Z@2 AA AB@2 P Q O P R O P S AC@4 V W M X ~ W M Y ~@9 L M E ~ C@3 B
>`.pickRestart({
  A: "~@12 [c4,d4,d6] [a3,b3,b5,c6] [f3,g3,a5] [d3,e3,f5,g5]", B: "[c3,d5,e5] c5 ~@14",
  C: "[d3@44 [c4,d4,d6] [a3,b3,b5,c6] [f3,g3,a5] [d3,e3,f5,g5]]/3", // Csus2 Am F Em7
  D: "[d3@2 d3@6 d3@6 ~@12 a3 bb3 c4 a3 g3 f3, ~@7 d3@9]/2", E: "d3 ~@7", F: "~ e4@3", G: "d4 e4 f4 c5", H: "a4",
  I: "bb4 a4 g4 f4", J: "[e4@4 d4 e4 f4 c5 a4 g4 a4 bb4, c4@3 g3]/3", K: "[a3,a4]@15 ~", L: "~@2 d3 ~@5 d3@2 ~@4 d3@2",
  M: "~@10 a3 bb3 c4 a3 g3 f3", N: "f3 g3 a3 bb3 c4 a3 bb3 c4 d4 bb3 c4 d4 e4 c4 d4 e4",
  O: "f4 d4 e4 f4 g4 e4 f4 g4 a4 f4 g4 a4 bb4 g4 a4 bb4", P: "c5@3 d5", Q: "f4@15 ~", R: "f4@7 ~", S: "f4",
  T: "[g4 a4@5]/3", U: "bb4", V: "[db4,e4,a4] ~ [db4,e4,a4] ~ [db4,e4,a4] ~@5 [db4,e4,a4] ~ [db4,e4,a4] ~@3",
  W: "~ d3 ~@2 d3 ~@2 d3", X: "d3@3 ~", Y: "d3@5 ~@3", Z: "[[c4,c5]@21 [d4,d5]@3 [e4,e5]@4 [f4,f5]@4]/2", AA: "[a4,a5]",
  AB: "[f3 g3 a3 bb3 c4 a3 bb3 c4 d4 bb3 c4 d4 e4 c4 d4 e4 f4 d4 e4 f4 g4 e4 f4 g4 a4 f4 g4 a4 bb4 g4 a4 bb4, c3]/2",
  AC: "[g4@8 a4@55 ~]/4",
})).s("gm_string_ensemble_1").gain(0.31)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
// … 99 more lines

More by Earth, Wind & Fire