Strudelify

Everyday

Phil Collins

KeyE♭ majorTempo95 bpm
0:00/0:00
// Everyday — Collins Phil
// 95 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// 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; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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.

// bass · fretless bass
const bass = note(`<
  ~@19 A@2 B@2 C@2 D@2 E F G@2 H I@3 J@2 K@2 L@2 M@2 N@2 O@2 P@4 Q R@3 S T@3 U@2 V@2 W@2 M@2 N@2 X@2 P@4 Y Z AA AB Y AB
  Y AC N@2 AD@2 AE@4 AF@2 AG@2 AH@4 J@2 AI@2 L@2 M@2 N@2 AJ@2 P@4 N@2 AD@2 AK@4 N@2 AL@2 AK@4 AM@4
>`.pickRestart({
  A: "[eb2@6 ab2@5 ~ g2@2 f2@7 ~ eb2@10]/2", B: "[bb1@6 eb2@5 ~ bb1@2 ab1@13 ~ bb1@4]/2",
  C: "[eb2@6 ab2@5 ~ g2@2 f2@8 eb2@10]/2", D: "[bb1@5 ~ eb2@6 bb1@2 ab1@13 ~ bb1@4]/2", E: "eb2@5 ~ f2@10",
  F: "bb2@3 eb2@5", G: "[bb2@3 eb3@3 c3 f3@6 bb2 f2 bb2]/2", H: "eb2@3 f3@5",
  I: "[bb2@6 eb3@12 eb3@2 bb2@2 bb2@2 f2@5 ~ bb2@9 ~ bb2 ~ bb2@2 f3@4]/3", J: "[f2@6 g2@8 ab2@17 ~]/2",
  K: "[f2@3 g2@4 ab2@9]/2", L: "[f2@5 ~ g2@8 ab2@17 ~]/2", M: "[bb2@3 g3@4 c3@4 ab2@2 bb2@3]/2",
  N: "[eb2@6 ab2@4 g2@4 f2@7 ~ eb2@9 ~]/2", O: "[bb1@5 ~ eb2@6 eb2 ~ ab1@11 ~ ab1@2 bb1@3 ~]/2",
  P: "[eb2@6 ab2@4 g2@4 f2@7 ~ eb2@8 bb1@8 eb2@6 eb2 ~ ab1@12 ab1@2 bb1@4]/4", Q: "eb2@5 ~ f2@9 ~",
  R: "[bb2@6 eb2@12 eb2@2 bb2@2 f2@8 bb2@9 ~ c4@2 d4@4 bb3@2]/3", S: "bb3@2 eb2@3 ~ f2@3 ~ f3@6",
  T: "[bb2@5 ~ eb2@14 bb2@2 f2@8 bb2@18]/3", U: "[f2@3 g2@4 ab2@8 eb3]/2", V: "[f2@6 g2@8 ab2@6 eb3@3 ~ bb3@4 ab3@4]/2",
  W: "[f2@5 ~ g2@8 ~@8 eb3@10, ~@14 ab2@17 ~]/2", X: "[bb1@5 ~ eb2@6 eb2 ~ ab1@14 bb1@3 ~]/2", Y: "bb2@11 ~ bb2@2 f2@2",
  Z: "c2@5 ~ f2@9 ~", AA: "bb2@6 bb2 f2", AB: "c2@5 ~ f2@10", AC: "c2 ab1 eb2 bb2@2 ab2@3",
  AD: "[bb1@5 ~ eb2@6 bb2@2 ab2@14 bb2@3 ~]/2",
  AE: "[eb2@6 ab2@4 g2@4 f2@7 ~ eb2@6 bb2@2 bb1@8 eb2@6 bb1@2 ab1@12 ab1@2 bb1@4]/4",
  AF: "[eb2@6 f2@8 bb2@8 eb3@7 ~ bb2@2]/2", AG: "[eb3@2 eb3@2 bb2@2 f3@8 bb2@6 c3@2 d3@4 bb2@3 ~ eb3@2]/2",
  AH: "[eb2@5 ~ f2@7 ~ bb2@8 eb3@12 bb2@2 eb3@2 bb2@4 bb2@4 bb2@10 c3 ~ c3 ~ c3 d3 bb2@2]/4",
  AI: "[f2@3 g2@4 ab2@3 bb3 c4 ab3@4]/2", AJ: "[bb1@5 ~ eb2@6 eb2 ~ ab2@8 ab2@3 ~ ab2@2 bb2@4]/2",
  AK: "[eb3@6 ab3@4 g3@4 f3@7 ~ eb3@8 bb2@8 eb3@6 bb2@2 ab2@12 ab2@2 bb2@4]/4",
  AL: "[bb1@5 ~ eb2@6 bb2@2 ab2@10 ab2@4 bb2@3 ~]/2",
  AM: "[eb3@3 ab3@2 g3@2 f3@3 bb3 eb3@4 bb2@4 eb3@3 bb2 ab2@6 ab2 ~@2]/4",
})).s("gm_fretless_bass").gain(0.42)

// chords · piano
const piano = note(`<
  A@4 B@7 C@8 D@2 E@2 D@2 E@2 F ~@15 D@2 G@2 D@2 H@2 I ~@15 D@2 G@2 D@2 H@2 J K L M J N O P ~@24 D@2 G@2 D@2 H@2 D@2 G@2
  D@2 H@2 D@2 G@2 D@2 H@2 D@2 Q@2
>`.pickRestart({
  A: "[~@4 [c4,g4,d5]@8 [g3,d4,a4]@8 [f3,c4,g4]@8 [c3,g3,d4]@8 a3@3 ~@13 g2@12, ~@9 g2@4 ~@3, ~@18 d3@5 g3@9, ~@36 g3@5 g3@3 d4@16 ~@4, ~@39 b3@10 d3@15]/4", // Csus2 Gsus2 Fsus2 Csus2
  B: "[~@4 [f3,d4,f4]@4 [g3,eb4,g4]@4 [ab3,eb4,ab4]@4 [eb4,g4]@8 [eb4,ab4]@2 [eb4,g4]@5 ~@11 f5@5 f4@10 [f3,d4,f4]@4 [g3,eb4,g4]@4 [ab3,ab4]@5 eb4@8 [eb4,ab4]@2 [eb4,g4]@5 ~ [bb3,eb4]@26, ~@4 bb2@24 ~@3 [f3,d4]@26 bb2@25 ~@3 [ab2,eb3]@27, ~@16 g3@15 f4@16 [bb4,f5]@12 ~@6 eb4@4 ~ [f3,bb3]@17 ~@25, ~@6 c5 ~@9]/7", // Dm Cm Ab5 Eb Ab5 Eb Dm Cm …
  C: "[eb5@6 ab5@3 ~@5 [ab3,bb4,eb5]@17 eb5@6 ~@3 g5@6 [g3,eb4,f4,g4]@18 ~@10 eb4@4 ~ eb4@4 ~ eb4@22 bb3@2 ~@4 ab2@6 [bb2,bb3,d4,f4]@10, db4@14 ~@17 db4@16 ~@17 [f2,ab3]@12 ~@7 ab3@25 ~@2 ab3@9 ~@9, bb5@8 ~ g5@7 ~@15 bb5@12 ~@40 [ab2,bb3]@23 ab2@6 ~@16, ~@6 eb5@8 ~@24 eb5@9 ~@17 eb4@10 [g2,bb3]@10 ~@44, ~@38 ab5@6 ~@21 f4@19 ~@22 [c4,eb4]@12 ~@10]/8", // Absus2 Cm Bb Fm Absus2 Gm Cm
  D: "[[bb3,eb4,g4]@3 [bb3,eb4,ab4]@2 [bb3,eb4,g4]@2 [bb3,d4,f4]@4 [bb3,eb4,g4]@5]/2", // Eb Ebsus4 Eb Bb Eb
  E: "[[bb3,d4,f4]@3 [bb3,eb4,g4]@4 [ab3,c4,eb4]@7 [bb3,d4,f4]@2]/2", F: "[bb3,eb4,g4]@7 ~",
  G: "[[bb3,d4,f4]@3 [bb3,eb4]@2 [bb3,eb4,bb4]@2 [ab3,c4,eb4]@7 [bb3,d4,f4]@2, ~@3 g4@4 ~@9]/2", // Bb Eb5 Ab Bb
  H: "[[bb3,d4,f4]@3 [bb3,eb4]@2 [eb4,bb4]@2 [ab3,c4,eb4]@7 [bb3,d4,f4]@2, ~@3 g4@4 ~@9, ~@10 bb3@3 ~@19]/2", // Bb Eb5 Ab Bb
  I: "[bb3,eb4,g4] ~", J: "[bb3,d4,f4]@7 ~", K: "[c4,e4,g4]@5 ~ [a3,c4,f4]@10", L: "[bb3,d4,f4]@15 ~",
  M: "[c4,e4,g4]@5 ~ [a3,c4,f4]@9 ~", N: "[c4,e4,g4]@2 ~ [a3,c4,f4]@5", O: "~@3 f5, [bb3,d4,f4]@7 ~, ~@6 ab4 ~",
  P: "[ab4,c5,eb5]@15 ~", Q: "[[bb3,d4,f4]@3 [bb3,eb4]@2 [bb3,eb4,bb4]@2 [ab3,c4,eb4]@7 ~@2, ~@3 g4@4 ~@9]/2",
})).s("gm_piano").gain(0.33)

// chords · vibraphone
const vibraphone = note(`<
  ~@27 A B C@2 D E F@2 G@7 H I J K L I M K ~ N O P@2 Q R S@2 T U@6 H I J K L I M K ~ V W X Y Z AA AB AC@2 ~@7 AD AE AF@3
  AE AG@2 AH@5 AI@2 AJ I J K L I M K ~ AK AL AM AN AO AP AQ AR AK AL AM AN AO AP AQ AR AK AL AM AN
>`.pickRestart({
  A: "~@4 bb3@2 bb3@2 bb3@3 ~ bb3@4", B: "c4@2 bb3@4 g3@5 ~ g3@2 ab3@2",
  C: "[bb3@2 bb3@2 bb3@2 bb3@2 ab3@3 ~ g3@2 f3@12 ~@6]/2", D: "eb4 ~ eb4@2 c4 ~ g3 ~ bb3@3 ~ bb3@2 g3@2",
  E: "~@2 c4@3 g3@3 eb3@3 ~ f3@2 g3 ~", F: "[bb3@4 ~@4 ab3@2 ab3@2 g3@2 f3@15 ~ eb4@2]/2",
  G: "[eb4@2 eb4@2 c4@2 bb3@4 c4@4 eb3@9 ~ [c4,eb4]@2 [g3,c4]@2 eb4@2 eb4@2 eb4@2 eb4@2 c4@2 bb3@4 c4@4 eb3@7 ~@3 [c4,eb4]@2 [g3,c4]@2 eb4@6 eb4@2 eb4@2 d4 ~ bb3@3 ~ bb3@2 c4@4 ~@6 [c4,eb4]@2 [g3,c4]@2 ~@6 f3@2 g3@2 bb3@5 ~@5, ~@28 bb3@10 ~@22 bb3@9 ~@9 bb3 ~@3 bb3@8 ~@2 [bb3,eb4]@9 ~@11]/7", // Cm C5 Cm C5 Cm C5 Eb5
  H: "ab3@2 g3@2 f3 ~ eb3@2 eb3@2 eb3@2 ~@2 [g3,bb3]@2", // Gm
  I: "[g3,bb3]@2 [ab3,c4] ~ [bb3,eb4]@2 [ab3,c4]@3 ~ [g3,bb3]@3 ~ [f3,bb3]@2", // Gm Ab Eb5 Ab Gm Bb5
  J: "~@2 [bb3,f4]@3 ~ [g3,eb4]@5 ~@3 [eb3,c4]@2", K: "[f3,d4]@2 ~@2 [bb3,f4] ~ [g3,eb4]@4 ~@2 [bb3,eb4]@2 [c3,c4]@2",
  L: "~@7 [g3,bb3]", M: "~@2 c4@2 bb3@2 [g3,eb4]@5 ~@3 [eb3,c4]@2, ~ f4@2 ~@5",
  N: "~@2 eb4@2 eb4@2 eb4@2 d4 ~ bb3@3 ~ g3@2", O: "bb3@2 c4@4 bb3@7 ~@3, ~@2 bb3 ~@13",
  P: "[~@2 bb3@2 bb3@2 bb3@3 ~ ab3@2 g3@2 f3@10 ~@6 bb3!2]/2", Q: "eb4@2 eb4 d4@2 d4 bb3@2 bb3@3 ~@3 g3 ~",
  R: "bb3@2 c4 ~ g3@2 eb3@5 ~@3 g3@2", S: "[bb3 bb3@2 ~ bb3 ~ g3@2 c4@4 g3@2 f3@8 ~@10]/2", T: "~ eb4!3 eb4@2 c4 bb3",
  U: "[~@8 [c4,eb4]@2 [g3,c4]@2 eb4@2 eb4@2 eb4@2 eb4@2 c4@2 bb3@3 ~ c4@4 eb3@6 ~@4 [c4,eb4]@2 [g3,c4]@2 eb4@6 eb4@2 eb4@2 d4 ~ bb3@3 ~ bb3@2 c4@4 ~@6 [c4,eb4]@2 [g3,c4]@2 ~@6 f3@2 g3@2 bb3@5 ~@5, ~@2 ab3@8 ~@2 bb3@10 ~@22 bb3@9 ~@9 bb3 ~@3 bb3@8 ~@2 [bb3,eb4]@9 ~@11]/6", // Cm C5 Cm C5 Cm C5 Eb5
  V: "~@6 [g3,c4]@2 [g3,c4]@2 [f3,bb3]@2 [g3,c4]@3 ~", W: "~@6 [c4,f4]@2 [c4,f4] ~ [bb3,d4]@2 [a3,c4]@2 [g3,bb3]@2",
  X: "~@6 [g3,c4]@2 [g3,c4] ~ [f3,bb3]@2 [g3,c4]@2 [g3,c4]@2", // C5 Bb5 C5
  Y: "~@2 [c4,f4]@2 [c4,f4]@2 [a3,c4]@3 ~@3 [c4,f4]@2 [d3,d4]@2", Z: "~@6 [g3,c4]@2 [g3,c4] ~ [f3,bb3]@2 [g3,c4]@2 ~@2",
  AA: "~@6 [c4,f4]@2 [c4,f4]@2 [bb3,d4]@2 [a3,c4] ~ [g3,bb3]@2", AB: "~@6 g3@2 g3 ~ a3@2 f3@3 ~",
  AC: "[~@6 eb4!2 eb4@2 f4@4 bb3@6 ~@12]/2", AD: "~@2 eb4@2 eb4@3 ~ d4 ~ bb3@2 bb3 ~ g3@2",
  AE: "bb3@2 c4@3 ~ bb3@7 ~@3",
  AF: "[~@2 eb4!2 eb4@2 eb4 ~ f4@3 ~ eb4@2 bb3@10 ~@4 bb3 ~ f4@5 ~ eb4@2 d4 bb3@5 ~@2 g3@2]/3",
  AG: "[~@2 g3@2 ab3@2 bb3@3 ~ c4@4 f3@10 ~@6 bb3@2]/2",
  AH: "[eb4@2 eb4@2 eb4@4 eb4@4 c4@2 bb3@4 ~@6 [c4,eb4]@2 [g3,c4]@2 eb4@4 eb4@4 c4@3 ~ bb3@3 ~ c4@2 eb3@8 ~@2 [c4,eb4]@2 [g3,c4]@2 eb4@6 eb4@2 eb4@3 ~ d4 ~ bb3@4 ~@2, ~@18 ab3@9 ~ bb3@11 ~@21 bb3@9 ~@11]/5", // Cm C5 Cm C5
  AI: "[bb3@2 bb3@2 c4@4 [g3,c4,eb4]@2 [eb3,g3,c4]@2 ~@6 f3@2 f3@2 g3 ~ bb3@2 bb3@2 ~@2 bb3@2, ~@12 [bb3,eb4]@9 ~@11]/2", // Cm Eb5
  AJ: "ab3@2 g3@2 f3 ~ eb3@2 eb3@2 eb3@3 ~ [g3,bb3]@2", AK: "~@2 [bb3,eb4]!2 [bb3,eb4]@2 ~@2",
  AL: "~@2 [c4,f4]@3 [c4,f4]@3 [g3,eb4]@5 ~@3", AM: "~@4 [bb3,eb4]@2 [bb3,eb4]@3 ~ [bb3,eb4]@4 [ab3,c4]@2",
  AN: "~ [g3,bb3] f3 [eb3,bb3]@4 ~", AO: "~@5 [bb3,eb4]!3", AP: "~@2 [ab3,f4]@3 ~ [g3,eb4]@2 [eb3,bb3]@6 ~@2",
  AQ: "~@6 [g3,bb3] [ab3,c4]", AR: "~@2 [g3,bb3]@2 [g3,bb3]@2 [f3,g3] ~ [eb3,c4]@4 [f3,bb3]@4",
})).s("gm_vibraphone").gain(0.48)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@19 A@2 B@7 C@7 D@6 E@2 F@2 B@7 C@7 D@6 E@2 F@2 G@7 H@6 I J@8 K@8 D@6 E@2 F@2 L@6 M@16 N@4
>`.pickRestart({
  A: "[g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5, eb4@7 ~@9, bb3@5 ~@11]/2", // Dm Eb
  B: "[[d4,f4]@3 g4@4 [ab3,c4]@7 [d4,f4]@2 g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [d4,f4]@2 [eb4,g4]@3 [c4,f4,ab4]@5, ~@3 eb4@11 bb3@25 ~@7 bb3@5 ~@5, ~@16 eb4@7 ~@12 eb4@11 ~@10]/7", // Dm Ab Dm Eb Dm Ab Dm Eb …
  C: "[d4@3 g4@8 [c4,ab4]@4 [d4,f4]@9 [eb4,g4]@3 [c4,ab4]@5 d4@3 g4@8 [c4,ab4]@4 [bb3,d4,f4]@9, bb3@11 ~@4 bb3@12 ~@5 bb3@11 ~@13, ~@3 eb4@12 ~@12 f4@8 eb4@12 ~@9]/7", // Fm Dm Eb Fm Bb
  D: "[[ab3,c4]@3 [g3,bb3]@4 [ab3,c4]@9, eb4]/2", // Ab Gm Ab
  E: "[bb3@3 bb4@4 g4@4 ab3@2 [bb3,d4,f4]@3, [d4,f4]@7 [c4,eb4]@6 ~@3]/2", // Bb Dm Cm
  F: "[[bb3,g4]@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5, eb4@7 ~@9]/2", // Eb Dm Eb
  G: "[[d4,f4]@3 g4@4 [ab3,c4]@7 [d4,f4]@2 g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [bb3,d4,f4]@10, ~@3 eb4@11 bb3@25 ~@17, ~@16 eb4@7 ~@12 eb4@11 ~@10]/7", // Dm Ab Dm Eb Dm Ab Bb
  H: "[[e4,g4]@3 a4@2 ~@3 bb3@8 e4@3 a4@2 ~@3 bb3@8 e4@3 a4@2 ~@3 bb3@8, c4 ~ c4 ~ c4 ~, ~@3 f4@13 ~@3 f4@13 ~@3 f4@13, ~@5 g4@14 ~@2 g4@14 ~@2 g4@11]/6", // Em
  I: "[ab3,c4,eb4]", // Ab
  J: "[g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [d4,f4]@2 g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [bb3,d4,f4]@2, bb3@23 ~@7 bb3@25 ~@9, eb4@8 ~@11 eb4@11 ~@2 eb4@7 ~@12 eb4@11 ~@2]/8", // Dm Eb Dm Ab Dm Eb Dm Ab …
  K: "[[eb4,g4]@3 [c4,ab4]@5 d4@3 g4@8 [c4,ab4]@4 [d4,f4]@9 [eb4,g4]@3 [c4,ab4]@5 d4@3 g4@8 [c4,ab4]@4 [bb3,d4,f4]@9, ~@3 f4@8 eb4@12 ~@12 f4@8 eb4@12 ~@9, ~@8 bb3@11 ~@4 bb3@12 ~@5 bb3@11 ~@13]/8", // Eb Fm Dm Eb Fm Bb
  L: "[[d4,f4]@3 g4@4 [ab3,c4]@7 [d4,f4]@2 g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [bb3,d4,f4]@2, ~@3 eb4@11 bb3@25 ~@9, ~@16 eb4@7 ~@12 eb4@11 ~@2]/6", // Dm Ab Dm Eb Dm Ab Bb
  M: "[g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [d4,f4]@2 g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 [bb3,d4,f4]@2, bb3@23 ~@7 bb3@25 ~@9, eb4@7 ~@12 eb4@11 ~@2 eb4@7 ~@12 eb4@11 ~@2]/8", // Dm Eb Dm Ab Dm Eb Dm Ab …
  N: "[g4@3 ab4@2 g4@2 [d4,f4]@4 [eb4,g4]@5 [d4,f4]@3 g4@4 [ab3,c4]@7 ~@2, bb3@23 ~@9, eb4@7 ~@12 eb4@11 ~@2]/4", // Dm Eb Dm Ab
})).s("gm_synth_strings_1").gain(0.29)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<A@4 B@7 C@4 D@4 ~@116>".pickRestart({
  A: "[~ [c4,g4,d5]@2 [g3,d4,a4]@2 [f3,c4,g4]@2 [c3,g3,d4]@2 [g2,d3,b3]@7]/4", // Csus2 Gsus2 Fsus2 Csus2 G
  B: "[~@4 [f3,d4,f4]@4 [g3,g4]@4 [ab3,ab4]@4 g4@8 ab4@2 g4@5 [f3,d4,f4]@26 [f3,d4,f4]@4 [g3,g4]@4 [ab3,ab4]@4 ~@9 ab4@2 ~@6 [bb3,eb4]@26, ~@4 bb2@24 ~@29 bb2@23 g4@7 ~@25, ~@8 eb4@23 ~@30 eb4@25 ~@26, ~@16 g3@15 ~@39 f3@18 ~@24, ~@70 bb3@15 [ab2,eb3]@26 ~]/7", // Dm G Ab Dm G Ab Eb5 Ab5
  C: "[[db4,bb4,eb5]@14 [ab3,ab4,c5]@17 [db4,eb5]@15 [eb4,g4]@18, ~@31 bb4@33]/4", // Eb7 Ab Dbsus2 Eb
  D: "[~@10 bb3@9 [ab3,bb3,eb4]@32 ~@3 [bb3,d4,f4]@10, eb4@19 ~@45, ab3@5 ~@27, ~ f4@19 ~@44]/4", // Absus2 Bb
})).s("gm_synth_strings_1").gain(0.17)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@51 A B A C D E A F G H I J K J L M N E B O P Q B R@2 S@2 T@2 U@3 N E B O P Q B V A B A C D E A F G H I J K J L M N E
  B O P Q B V N E B O P Q B V N E B O P Q B V N E B O
>`.pickRestart({
  A: "~@2 [bb4,eb5,g5] ~@2 [c5,f5,ab5] ~@2", B: "~@2 [bb4,d5,f5] ~@2 [bb4,eb5,g5] ~@2",
  C: "~@2 [d5,f5] ~@2 [bb4,d5,f5] ~ [d5,f5]", D: "~@4 [eb5,g5]@3 ~@3 [c5,f5,ab5]@3 ~@3",
  E: "~@2 [bb4,d5,f5] ~@2 [eb5,g5] ~@2", F: "~@2 [bb4,d5,f5] ~@2 [bb4,d5,f5] ~@2", G: "~@2 [f4,ab4] ~@2 g4 ~@2",
  H: "~@2 [eb4,ab4] ~@2 [eb4,ab4,c5] ~@2", I: "~@2 [c4,f4,ab4] ~@2 [g4,bb4] ~@2",
  J: "~@2 [ab4,c5] ~@2 [eb4,ab4,c5] ~@2", K: "~@2 [c4,f4] ~@2 [eb4,g4,bb4] ~@2", L: "~@2 [bb4,d5] ~@2 [f4,bb4,d5] ~@2",
  M: "~@2 [eb5,g5] ~@2 [bb4,d5,f5] ~@2", N: "~@2 [eb5,g5] ~@2 [bb4,eb5,bb5] ~@2", O: "~@2 [c5,eb5] ~@2 [c5,eb5] ~@2",
  P: "~@2 [bb4,eb5,g5] ~@2 [eb5,bb5] ~@2", Q: "~@2 [d5,f5] ~@2 [eb5,g5] ~@2",
  R: "[~@4 [ab4,c5] ~@5 [ab4,c5,eb5]@2 ~@4 [d4,f4,bb4]@2 [d4,f4,bb4]@2 ~@12, ~@15 bb3@3 ~@14]/2", // Ab Bb
  S: "[[g4,c5]@6 ~ c5@6 ~@3 bb4@2 [d4,g4,bb4]@2 ~@12, e4@4 ~@2 [f4,a4]@6 ~@3 bb3@5 ~@12, ~@15 [d4,g4]@3 ~@14]/2", // C5 Gm F G5
  T: "[[c4,e4,g4,c5]@5 ~ [f4,a4,c5]@6 ~@4 bb4@2 [d4,g4,bb4]@2 ~@12, ~@15 [d4,g4]@3 ~@14]/2", // C F Gm G5
  U: "[~ c5@5 [f4,a4,c5]@7 ~@2 [d4,g4]@3 [g4,bb4]@2 ~@12 [eb4,ab4]@15 ~, [e4,g4]@4 ~@11 bb4@2 ~@14 c4@16 ~]/3", // F G5 Gm Ab5 Em
  V: "~@4 [ab4,c5] ~@5 [ab4,c5,eb5]@2 ~@4", // Ab
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.7)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@59 A B C D E D F B G H ~ I ~ G ~ J@3 K@6 G H ~ I ~ G ~ L ~@8 A B C D E D F B G H ~ I ~ G ~ L G H ~ I ~ G ~ L G H ~ I
  ~ G ~ L G H ~ I
>`.pickRestart({
  A: "~@2 c4 ~@2 [eb4,bb4] ~@2", B: "~@2 c5 ~@5", C: "~@5 eb4 ~@2", D: "~@2 eb4 ~@5", E: "~@2 ab4 ~@5", F: "~@2 f4 ~@5",
  G: "~@2 bb4 ~@5", H: "~@5 bb4 ~@2", I: "~@2 ab4 ~@2 ab4 ~@2",
  J: "[~@4 eb5 ~@13 bb3@2 ~@12 c4@4 ~@2 c4@6 ~@4, ~@15 f3@5 ~@11 g3@5 ~@12]/3",
  K: "[~@15 [c3,g3]@5 ~@2 c4@6 ~@3 bb3@5 ~@12 c4@4 ~@2 c4@7 ~@2 f3@5 ~@11 [eb3,ab3]@16 ~, ~@47 g3@5 ~@44]/6", // C5 Ab5
  L: "~@4 eb5 ~@11",
})).s("gm_electric_guitar_clean").gain(0.08).pan(0.7)

// chords · epiano2
const epiano2 = note(`<
  ~@19 A@2 B@2 A@2 B@2 ~@4 C@2 D@2 E@2 F@2 G@2 H@2 A@2 B@2 A@2 B@2 C@2 D@2 C@2 D@2 E@2 F@2 G@2 H@2 A@2 B@2 A@2 B@2 I J K
  J K L M N A@2 B@2 A@2 B@2 C@2 D@2 C@2 D@2 E@2 F@2 G@2 H@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 O@2
>`.pickRestart({
  A: "[[eb4,g4]@3 ~ bb4@2 [eb4,ab4]@4 [eb4,g4]@3 ~ [d4,f4]@6 bb4 ~ [eb4,g4]@7 ~ eb4@2, ~@4 eb4 ~@27]/2", // Eb Ab5 Eb Dm Eb
  B: "[[d4,f4]@4 bb4 ~ g4@3 ~ bb4@3 ~ [c4,eb4]@12 ~@2 [d4,f4]@3 ~, ~@6 eb4@7 ~@19]/2", // Dm Cm Dm
  C: "[[eb4,g4]@5 ~ [f4,ab4]@7 ~ [d4,f4]@6 ~@2 [eb4,g4]@8 ~@2]/2", // Eb Fm Dm Eb
  D: "[[eb4,g4]@5 ~ [eb4,ab4]@3 ~ [eb4,ab4]@3 ~ [d4,f4]@15 ~@3]/2", E: "[[f3,ab3]@2 ~ [bb3,eb4]@3 ~ [ab3,c4]@8 ~]/2",
  F: "[[f3,ab3]@4 ~@2 [bb3,eb4]@6 ~@2 [ab3,c4]@15 ~@3]/2", G: "[[f3,ab3]@5 ~ [bb3,eb4]@6 ~@2 [ab3,c4]@15 ~@3]/2",
  H: "[[d4,f4]@4 ~@2 [d4,bb4]@6 ~@2 [c4,g4]@7 ~ [c4,eb4]@3 ~ [d4,f4]@5 ~]/2", I: "[d4,f4]@9 ~@7",
  J: "[e4,g4]@3 ~ [e4,g4] ~ [f4,a4]@5 ~ [e4,g4]@3 ~", K: "[d4,f4]@7 ~",
  L: "[e4,g4]@4 [e4,g4] ~ [f4,a4]@5 ~ [e4,g4]@3 ~", M: "[d4,f4]@11 ~@5", N: "[c4,eb4]@15 ~",
  O: "[[d4,f4]@4 bb4 ~ g4@3 ~ bb4@3 ~ [c4,eb4]@12 ~@6, ~@6 eb4@7 ~@19]/2", // Dm Cm
})).s("gm_epiano2").gain(0.35).pan(0.3)

// other · oboe
const oboe = note("<~@83 A@4 B C D E F ~@43>".pickRestart({
  A: "[~@5 bb5!2 ~ bb5 ~@2 bb5 ~@2 bb5@4 bb4@2 bb5 ~@6 bb5 ~@2 bb5@4 bb4@2 bb5 ~@9 bb5@4 ab5@2 g5@2 f5@2 ~@4 g5 f5 eb5 ~]/4",
  B: "eb5@3 bb5@5", C: "~@2 bb5@2 eb6@2 bb5 eb5@2 bb5 eb6@2 bb5 eb5 ~ bb5",
  D: "eb6 bb5 eb5@5 ~ bb5@2 ab5 bb5 [ab5,bb5]!2 ab5 [ab5,bb5]", // Absus2
  E: "bb5 [g5,bb5]!2 g5 [g5,bb5]!2 bb5 [g5,bb5] bb5@5 ~ ab5 bb5, ~@8 g5 ~@7", F: "eb6@3 ~",
})).s("gm_oboe").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B
  A C
>`.pickRestart({
  A: "x ~@6 x", B: "x!2 ~@5 x", C: "x!2 ~@6",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<~@17 [~ x ~ x]!117 [~ x ~@2]>").gain(0.54)

// drums · clap
const clap = s("cp").struct("<~@17 [~ x ~ x]!117 [~ x ~@2]>").gain(0.54)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@18 A ~@17 B ~ B ~ B ~ C ~@7 D ~@11 B ~@3 E ~@7 A ~@23 F ~ B ~ B ~ B ~ F ~@7 G ~@3 H ~@3 H ~@3 I ~@3 E ~@4
>`.pickRestart({
  A: "~@5 x!3", B: "~@7 x", C: "x!2 ~ x!2 ~@3", D: "~@3 x!3 ~ x", E: "~ x", F: "~@4 x!4", G: "~@4 x!2 ~ x", H: "~@3 x",
  I: "~@2 x!2",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@17 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A C
>`.pickRestart({
// … 31 more lines

More by Phil Collins