Strudelify

I Wish It Would Rain Now

Phil Collins

KeyA♭ majorTempo133 bpm
0:00/0:00
// I Wish It Would Rain Now — Collins Phil
// 133 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(133/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 · "Acou Piano"
const piano = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J K@8 L@7 M@4 N@6 O@2 G@2 P@2 Q R@2 S@3 T@5 S@3 U V W X@5 Y@4 Z@6 AA@7 AB@8 AC@5
>`.pickRestart({
  A: "[[eb4,ab4,c5]@3 [ab4,c5,eb5]]/2", B: "[[eb4,g4,bb4]@3 [g4,bb4,eb5]]/2",
  C: "[[f4,ab4,c5,eb5]@3 [f4,ab4,c5,eb5]]/2", D: "[[f4,ab4,c5,eb5]@3 [g4,bb4,eb5]]/2",
  E: "[~@5 eb5!3 eb5!5 ~@2 c5, c5@13 c5@2 ~, [eb4,ab4]@3 eb4, ~@6 ab4!2]/2", // Ab5
  F: "[~@15 [ab4,c5] eb5@2 eb5@2 eb5@4 bb4@2 ab4@2 f4@2 bb4@2, [eb4,g4]@3 ~, ~@7 bb4@5 ~@4]/2", G: "[f4,ab4,eb5]/2",
  H: "[[f4,ab4,eb5]@3 [g4,bb4,eb5]]/2", I: "[~@6 eb5!2 eb5@2 eb5@2 eb5 c5 ab4 c5, [eb4,ab4,c5]@6 [eb4,ab4] ~]/2",
  J: "bb4@7 bb4, [eb4,g4]", // Eb
  K: "[eb5!2 bb4 ab4 f4 bb4 [f4,ab4,eb5]@16 ab4@12 ab4 bb4@3 [f4,ab4,db5]@8 db5@2 db5 c5 db5 c5 ~@2 eb4@2 eb4@2 ~@4 [eb4,g4,bb4]@2, ~@11 [f4,eb5]@8 ~@4 f4@4 ~@5, ~@23 ab4@3 ab4 ab4@4 ~, ~@53 bb4@9 ~@2]/8", // Fm7 Db Eb F7
  L: "[~@2 f4 ab4@2 ~ db5@8 db5@2 db5 c5 db5 c5 ~ c5 bb4@4 c5@2 ~@2 ab4@3 ab4@3 bb4 ~ db5@8 db5@2 db5 c5 db5 c5 ~ bb4 eb4 f4, ~@5 ab4@15 ab4@2 ~@6 eb5@5 ~@5 f4@16 ~@2, ~@6 f4@16 [eb4,ab4]@8 [eb4,bb4]@4 ~@3 ab4@15 ab4@2 ~@2]/7", // Ab5 Eb5
  M: "[ab4@2 db5@2 ~@10 eb5@2 eb5@2 eb5@2 eb5@2 eb5@2 eb5@2 eb5@2 eb5@2 ~@4 c5@2 ~@15 [ab4,c5] eb5@2 eb5@2 eb5@4 bb4@2 ab4@2, ~@2 c5@13 c5@2 ~@8 bb4@5 ~@2, ~ [eb4,ab4]@6 eb4@2 [eb4,g4]@6 ~, ~@7 ab4 ab4 ~@7]/4", // Ab Ab5 Eb
  N: "[f4 bb4 [f4,ab4,eb5]@16 [f4,ab4,eb5]@12 [g4,bb4,eb5]@4 ~@6 eb5!2 eb5@2 eb5@2 eb5 c5, ~@17 [eb4,ab4,c5]@6 [eb4,ab4]]/6", // Fm7 Eb Ab Ab5
  O: "[ab4 c5 bb4@7 ~ eb5!2 bb4 ab4 f4 bb4, ~ [eb4,g4]@5 ~@2, ~@9 bb4@3 ~@4]/2", P: "[ab4@12 ab4 bb4@3, [f4,eb5]]/2",
  Q: "[f4,ab4,db5]", R: "[db5@2 db5 c5 db5 c5 ~@2 eb4@2 eb4@2 ~@4, f4 ~, ab4@3 ab4 ab4@4, ~@7 bb4@9]/2",
  S: "[[eb4,g4,bb4]@4 f4 ab4@2 ~ db5@8 db5@2 db5 c5 db5 c5 ~ c5, ~@7 ab4@15 ab4@2, ~ f4@2]/3", // Eb
  T: "[bb4@4 c5@2 ~@2 ab4@3 ab4@3 bb4 ~ db5@8 db5@2 db5 c5 db5 c5 ~@2 eb4@2 eb4@2 ~@4, [eb4,ab4]@8 [eb4,bb4]@4 ~@3 ab4@15 ab4@2 ab4@8, ~@6 eb5@5 ~@5 f4@16 ~@8, ~@31 bb4@9]/5", // Ab5 Eb5
  U: "[eb4,ab4,bb4]@4 c5 c5@3, ~ [db4,f4,ab4]", V: "[eb4,bb4,eb5]", W: "[c4,eb4,ab4] [ab3,eb4] [c4,eb4,ab4] ab3",
  X: "[[c4,eb4,ab4]@4 [ab3,eb4]@4 [c4,eb4,ab4]@4 ab4@2 ab4@2 ~@4 f5@4 f5@2 [d4,f4,bb4]@4 ab3@4 [d4,f4,bb4]@4 c4@4 [d4,f4,bb4]@4 [ab3,ab4]@4 [f4,ab4,db5]@4 ab5@2 ~@2 [f4,ab4,db5]@4 db4@4 f5 eb5 [f4,ab4,db5]@4 db4@4 [f4,ab4,db5,f5]@4, ~@7 ab3@2 [d4,f4]@2 ~@16 db4@2 ~@11, ~@8 bb4@2 ~@3 f5@4 ~@11 ab5@10 ~@2]/5", // Ab Ab5 Ab Bb Ab Db Dm
  Y: "[db4@4 [eb4,ab4,c5]@4 c4@4 [c5,f5]@2 ~@2 c4@4 [eb4,ab4,c5]@4 c4@4 c5@2 bb4@2 ~@2 bb4@2 [c4,eb4,ab4]@4 ab3@4 ab5 ab5@2 [ab3,bb5]@4 bb5@2 ab5@2 ab5@2 ~@4 bb5!2 [ab3,ab5], eb5@12 [eb4,ab4]@4 ~@12 c4@8 ~@8 [c4,eb4,ab4]@4 ~@3 [c4,eb4,ab4]@4 ab3@4 [c4,eb4,ab4]@4 ~, ~@14 c5@6 ~@8 ab4@4 ab4@4 ~@21 bb5@4 ~@3]/4", // Ab F5 Ab Absus2 Ab Ab5 Ab
  Z: "[ab5!2 ~ [d4,f4,bb4]@4 ab3@4 ~@2 ab5@2 c5@2 bb4@2 [d4,f4,bb4]@4 ab3@4 [db4,f4,bb4]@4 ab4@2 ab4@2 [f4,ab4,db5]@4 [db4,ab5]@4 [f4,ab4,db5]@4 db4@4 f5 eb5 db5@2 db4@4 [f4,ab4,db5,f5]@4 db4@4 [eb4,ab4,c5]@4 c4@4 [eb4,ab4,c5]@4 c4@4 [eb4,ab4,c5]@2 ab3@2 bb3@2 ab3@2 c4@2 eb4@2 f4, ~@2 ab5@11 ~@30 ab5@8 db5@2 ~@10 eb5@20 ~@13, ~@11 [d4,f4,bb4]@4 ab3@4 ~@12 ab3@4 ~@16 [f4,ab4]@4 ~@41]/6", // Bb Bbm Db Db5 Db Ab Bb Fm
  AA: "[~ eb4@2 [ab4,c5,eb5]@4 eb4@4 [ab4,c5,eb5]@4 f4@4 [ab4,c5,eb5]@4 eb4@4 [ab4,c5,eb5]@4 f4@4 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@8 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@8 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@4 c4]/7", // Ab Eb Fm
  AB: "[~@3 [f4,ab4,c5]@4 c4@4 [g4,bb4,eb5]@4 [g4,bb4,eb5]@4 [ab4,c5,eb5]@4 eb4@4 [ab4,c5,eb5]@4 f4@4 [ab4,c5,eb5]@4 eb4@4 [ab4,c5,eb5]@4 f4@4 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@4 eb4@4 [g4,bb4,eb5]@8 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@8 [f4,ab4,c5]@4 c4@4 [f4,ab4,c5]@4 c4]/8", // Fm Eb Ab Eb Fm
  AC: "[~@3 [f4,ab4,c5]@4 c4@4 [g4,bb4,eb5]@4 [g4,bb4,eb5]@4 [f4,ab4,c5]@4 c4@4 ~@4 eb4@4 f4@4 ab4@4 [eb4,ab4,c5,f5]@32 ~@5, ~@27 [c4,f4,ab4,c5]@8 ~@45]/5", // Fm Eb Fm Fm7 Fm
})).s("gm_piano").gain(0.36)

// bass · piano · "Bass Guitar/Piano"
const bass = note(`<
  A B C D E F G H I@2 J@2 K@2 G H I@2 L@3 M@6 N@7 O@7 P@5 Q@2 R@2 S@2 T@2 S@2 U@2 S@2 T@2 V@2 W X Y Z AA@5 AB AC@8 AD@4
  AE@3 AF@5 AE@3 AG@2 AH@3
>`.pickRestart({
  A: "ab2@4 ab3@3 ab2", B: "ab2 ab3", C: "g2@4 g3@3 g2", D: "g2@4 c2@2 db2 c2", E: "f2@4 f3@3 f2",
  F: "f2@4 ~ c2 eb2 ab2", G: "f2@3 f2@3 f2!2", H: "f2 g2", I: "[~ ab3@2 eb2, ab2@3 ~]/2",
  J: "[~@7 g2, g2@7 ~, ~ g3@3]/2", K: "[~@4 f3@8 c2 eb2@2 c2, f2@3 ~]/2",
  L: "[~@4 g3@6 c3@4 ~@4 f3@5 c3, g2@5 ~@2 f2@4 ~]/3",
  M: "[ab2 c3 bb2 ab2 f2 eb2 ab2 f2@12 c2@3 ~@8 db2@6 f2@2 ~@8 eb2@2, ~@11 db2@4 ~@4 eb2@4 ~, ~@13 db3@5 ~@3 eb3@3]/6",
  N: "[~ bb2 eb2@4 ~@8 db2@6 f2@2 ~@8 bb2@3 ab2@3 eb3@2 ~@8 db2@6 f2@2 eb2@2, ~@3 db2@4 ~@4 eb2@4 ~@4 db2@4 ~@5, ~@5 db3@5 ~@3 eb3@5 ~@3 db3@5 ~@2]/7",
  O: "[~@6 ab3@8 eb2@4 ~@14 g2@2 ~@4 f3@8 c2 eb2@2 c2 f2@3 f2@3, ~ ab2@6 ~@2 g2@7 ~ f2@6 ~@5, ~@11 g3@6 ~@11]/7",
  P: "[f2!2 f2@4 g2@4 ~@4 ab3@8 eb2@4 ~@4 g3@6 c3@4, ~@5 ab2@6 ~@2 g2@5 ~@2]/5",
  Q: "[~@4 f3@5 c3 ab2 c3 bb2 ab2 f2 eb2, f2 ~]/2", R: "[ab2 f2@12 c2@3]/2", S: "[~@4 db2@3 f2, db2 ~, ~@2 db3@5 ~]/2",
  T: "[~@11 bb2 eb2@4, eb2@2 eb2 ~, ~@4 eb3@7 ~@5]/2", U: "[~@8 bb2@3 ab2@3 eb3@2, eb2 ~, ~@2 eb3@5 ~]/2",
  V: "[~ db2, db2 ~, ~ db3@3]/2", W: "eb2 f2", X: "g2@3 ab2@3 bb2@2", Y: "ab2@3 eb2", Z: "eb2!2",
  AA: "[~ ab2@6 d3@2 f2@8 ab2@8 ~ ab2@4 eb2@4 ab2@6]/5", AB: "eb2@2 ab2@4 c3 bb2",
  AC: "[ab2@2 eb2@2 ab2@11 eb2@4 eb2@8 eb2@8 ab2@12 d3@4 f2@16 ab2@12 ab2@4 ab2@8 eb2@8 ab2@18 ab2@2 bb2@2 ab2@2 c3@2 eb3@2 f3]/8",
  AD: "[~ eb3@2 ~@8 ab3@16 eb2@8 ~@8 g3@16 c2@2 eb2@3, ~@3 ab2@24 ~@8 g2@24 ~@5]/4",
  AE: "[~ c2@2 ~@8 f3@16 ~@2 g2@2 eb2@2 c2@2 f2@6 ~@2 f2@5, ~@3 f2@26 ~@19]/3",
  AF: "[~@3 f2@8 g2@8 ~@8 ab3@16 eb2@8 ~@8 g3@16 c2@2 eb2@3, ~@19 ab2@24 ~@8 g2@24 ~@5]/5",
  AG: "[~@3 f2@8 g2@8 f2@8 f2@4 ~]/2", AH: "[~@3 f2@4 eb2@4 ab2@32 ~@5]/3",
})).s("gm_piano").gain(0.36)

stack(piano, bass)

More by Phil Collins