Strudelify
Another Day in Paradise cover art

1989 · ...But Seriously

Another Day in Paradise

Phil Collins

KeyF♯ minorTempo105 bpm
0:00/0:00
// Another Day in Paradise — Phil Collins
// 105 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · electric bass finger · "Bass"
const bass = note(`<
  ~@10 A B A C A B A C D E F G F H D I D E F G F H D J K L K M K L N O A B A C A B A C D E F G F H D J K L K M K L K P A
  B A C A B A Q R S T U R S T V W D E F G F H D J K L K M K L N P A B A C A B A C A B A C A B A C A B A C ~@8
>`.pickRestart({
  A: "f#2@5 ~ f#2@2 f#2@4 c#2 e2 f#2@2", B: "e2@5 ~ e2@2 b2@4 a2@2 g#2@2", C: "e2@5 ~ e2@2 b2@4 b2@4",
  D: "f#2@5 ~ f#2@2 f#2@7 ~", E: "e2@5 ~ e2 ~ b2@7 ~", F: "f#2@5 ~ f#2 ~ f#2@7 ~", G: "e2@5 a2 g#2 e2",
  H: "e2@5 ~ e2@2 b2@8", I: "e2@4 ~ g#1 e2 a2", J: "e2@6 e2@2 e2@4 c#2@3 ~", K: "f#1@5 ~ f#1@2 f#1@2 c#2!2 e2@2 f#2 ~",
  L: "f#1@5 ~ f#1@4 c#2 ~ e2@2 f#2 ~", M: "f#1@5 ~ f#1@2 f#1@2 b1 c#2 e2@2 c#2@2",
  N: "f#1@5 ~ f#1@2 f#1@2 c#2!2 e2@2 f#2@2", O: "e2@3 ~ f#2@4 e2@3 ~ d2@3 ~", P: "e2@3 ~ f#2@4 e2@4 d2@3 ~",
  Q: "e2@5 ~ e2@2 b1@4 f#2@4", R: "g#2!8", S: "f#2!8", T: "e2!8", U: "a2!8",
  V: "a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 a2@2 e2 [g2,g#2]", W: "a2!6 g#2 c#2",
})).s("gm_electric_bass_finger").gain(0.69)

// chords · pad warm · "Warm Pad"
const pad_warm = note(`<
  A@2 B@8 C D E D E D E D E D E F E D E F E D E F E D E F E G E G E G E H E D E D E D E D E D E F E D E F E G E G E G E
  H E D E D E D E D G E I J G E I K@2 E D E F E D E F E G E G E G E L E D E D E D E D E D E D E D E D E D E M@8 ~
>`.pickRestart({
  A: "c#2/2", B: "[~@3 b4, f#2, ~ [c#4,f#4]@3, ~ g#4]/8", C: "[e4,a4], [c#4,f#4] ~@15", D: "[b3,e4,g#4] [a3,d4,f#4]",
  E: "[c#4,e4,f#4,a4]", F: "[b3,e4,g#4]", G: "[e4,f#4,g#4,b4]", H: "[e4,g#4,b4] [f#4,a4,c#5] [e4,g#4,b4] [d4,f#4,a4]",
  I: "[b3,e4,f#4,g#4]", J: "[c#4,e4,a4]", K: "[[c#4,e4,a4]@15 ~]/2", L: "[e4,g#4] [f#4,a4] [e4,g#4] [d4,f#4]",
  M: "[[b3,e4,g#4] [a3,d4] ~@14, ~ f#4@15]/8", // E D5
})).s("gm_pad_warm").gain(0.58)

// other · acoustic guitar steel · "Steel Gt"
const acoustic_guitar_steel = note(`<
  ~@3 A B ~@2 C ~@2 D E D F D E D G H@2 ~ I J ~@6 K ~@11 L D E D F D E D G M N@2 O P ~@2 Q R ~@6 S D E D F D E D T U V W
  X Y Z AA AB AC ~@3 AD AE ~@2 AF ~@7 AG D E D F D E D G D E D F D E D G D E D AH@8 ~
>`.pickRestart({
  A: "~@12 e4 c#4 e4@2", B: "f#4@3 ~", C: "~@4 b3 c#4 b3@3 a3 f#3@6", D: "f#3@11 b2 [c3,c#3] e3 f#3@2",
  E: "e3@4 b3@2 a3 g#3, ~@8 a#3 ~@7", F: "e3@8 b3@4 b3@3 [g#3,a3], ~@8 a#3 ~@7", G: "e3@2 b3!2, ~@8 a#3 ~@7",
  H: "[f#3@9 ~@7]/2", I: "~@5 [g#3,a3] g#3 e3", J: "f#3@3 ~", K: "~@8 c#5@2 b4 ~ c#5@2 b4 ~",
  L: "e3@3 ~ f#3@4 e3@3 ~ d3@3 ~", M: "f#3", N: "[~@12 [a#3,b3] [b3,c4] b3@8 ~@10]/2", O: "~@8 f#4@2 e4 f#4 f#4@2 e4@2",
  P: "f#4@9 ~@7", Q: "~@5 g#4 ~ e5, ~@3 a4", R: "c#5@7 ~", S: "e3@3 ~ f#3@4 e3@4 d3@3 ~", T: "e3@2 b3 a3, ~@8 a#3 ~@7",
  U: "[e3,g#3] ~ [e3,g#3] ~ [e3,g#3] ~ [e3,g#3,c#4] ~ [e3,g#3,e4] ~ [e3,g#3,c#4] ~ [e3,g#3,e4] ~ [e3,g#3,c#4] ~", // E C#m E C#m E C#m
  V: "[f#3,a3] ~ [f#3,a3] ~ [f#3,a3] ~ [f#3,a3,c#4] ~ [f#3,a3,e4] ~ [f#3,a3,c#4] ~ [f#3,a3,e4] ~ [f#3,a3] ~", // F#m F#m7 F#m F#m7 F#m
  W: "[e3,g#3] ~ [e3,g#3] ~ [e3,g#3] ~ [e3,g#3,c#4] ~ [e3,g#3,e4] ~ [e3,g#3,b3] ~ [e3,g#3] ~ [e3,g#3] ~", // E C#m E
  X: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3,c#4] ~ [e3,a3,e4] ~ [e3,a3,c#4] ~ [e3,a3,e4] ~ [e3,a3,c#4] ~", // A5 A A5 A A5 A
  Y: "[e3,g#3] ~ [e3,g#3] ~ [e3,g#3] ~ [e3,g#3] ~ [e3,g#3,e4] ~ [e3,g#3] ~ [e3,g#3,e4] ~ [e3,g#3] ~", // E
  Z: "[f#3,a3] ~ [f#3,a3] ~ [f#3,a3] ~ [f#3,a3] ~ [f#3,a3,e4] ~ [f#3,a3] ~ [f#3,a3,e4] ~ [f#3,a3] ~", // F#m F#m7 F#m F#m7 F#m
  AA: "[e3,g#3] ~ [e3,g#3] ~ [e3,g#3] ~ [e3,g#3,b3] ~ [e3,g#3,e4] ~ [e3,g#3,b3] ~ [e3,g#3,e4] ~ [e3,g#3] ~", // E
  AB: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~", // A5
  AC: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4]@2 e4@2 [e4,a4]@2 [e4,a4]@2", AD: "~@4 a3 g#3 f#3 e3",
  AE: "f#3@5 ~@3", AF: "~@4 g#4 ~ a4 b4 c#5 ~ a4 b4 c#5@2 a4@2", AG: "e3@3 ~ f#3@4 e3@4 d3@4",
  AH: "[e3@8 b3@4 b3@3 g#3@113, ~@8 a#3 ~@6 a3 ~@112]/8",
})).s("gm_acoustic_guitar_steel").gain(0.63).pan(0.6)

// chords · electric guitar clean · "Clean Gt"
const electric_guitar_clean = note(`<
  ~@5 A@2 B C ~ D E F E F E F E G ~@6 H I ~@14 J F E F E F E F E G ~@8 K@2 ~@2 K@2 J F E F E F E F L ~@8 M N O P Q N O R
  Q ~ K@2 ~@2 K@2 J F E F E F E F E F E F E F E F E F E F S@8 ~
>`.pickRestart({
  A: "[~@8 f3 ~@5 c#4@17 ~, ~@8 f#3@23 ~, ~@10 e4@21 ~]/2", B: "~@7 [c4,c#4]", C: "f#4, f4 ~@15",
  D: "e3 ~@3 e4@4 ~@2 e4@2 e4@3 ~, f#3@3 ~, ~@2 c#4@5 ~ a4@7 ~", E: "~ b3 e4@2 ~@2 d4 a3, e3@7 ~ f#3@8, ~@10 f#4@5 ~",
  F: "~@4 e4@4 ~@2 e4@2 e4@3 ~, f#3@3 ~, ~@2 c#4@5 ~ a4@7 ~", G: "f#3", H: "~@5 e4 ~ e3, ~ e4@2 f#4@3 ~@2, ~ b3@2 b3",
  I: "f#3@15 ~", J: "[g#3,b3] [a3,c#4] [g#3,b3] [f#3,a3]", K: "[~@14 c#4@5 ~@13, ~@2 f#3!2 ~@4, ~@5 e4@2 ~@9]/2",
  L: "~ b3 e4@2 ~@2 d4@2, e3@7 ~ f#3@8, ~@10 f#4@5 ~", M: "~@3 [a3,e4,a4]!2 [a3,e4] [a3,e4,a4]!2",
  N: "~@4 f#4@9 ~@3, f#3@13 ~@3, ~@2 c#4@11 ~@3", O: "~@2 e4@2 ~@2 d4 a3, e3 b2, ~@2 b3@6 ~@2 f#4@5 ~",
  P: "~@2 f#4@5 ~, f#3@7 ~, ~ c#4@6 ~", Q: "e3@13 ~@3", R: "~@6 f#4@9 ~, f#3 f#3@2 ~, ~@2 c#4@13 ~",
  S: "[~ b3 e4@2 ~@2 d4 a3@57, e3@7 ~ f#3@8 ~@112, ~@10 f#4@5 ~@113]/8",
})).s("gm_electric_guitar_clean").gain(0.65)

// other · electric guitar muted · "Mute Gt"
const electric_guitar_muted = note("<~@34 A@7 B C ~@15 A@7 B ~@25 A@7 B ~@28>".pickRestart({
  A: "[~@8 f#5@11 ~@5 e5@11 ~@5 c#5@10 ~@6 b4@14 ~@2 f#5@12 ~@4 e5@12 ~@4 c#5@6 ~@2]/7", B: "b4@4 c#5@3 ~ b4@4 a4@4",
  C: "f#4 ~",
})).s("gm_electric_guitar_muted").gain(0.65).pan(0.4)

// chords · rock organ · "Mute Gt"
const rock_organ = note("<~@74 A B C D A B C E@2 ~@44>".pickRestart({
  A: "[e5,g#5,b5,e6]", B: "[c#5,f#5,a5,c#6]", C: "[e5,g#5,b5]", D: "[e5,a5,c#6]", E: "[e5,a5,c#6]/2",
})).s("gm_rock_organ").gain(0.51).pan(0.7)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@34 A B C D A E F G ~@16 A H C D A E F I ~@8 J@2 K L M@2 N@3 O@2 P@2 Q@2 R S A H C D A E F I T ~@6 U V W X Y Z AA AB
  AC AD AA AE ~@9
>`.pickRestart({
  A: "c#5@4 ~@8 a4@3 ~", B: "g#4@2 ~@3 f#4!3", C: "a4@2 a4@2 g#4@2 f#4@2 g#4@2 f#4 ~ g#4@2 f#4 ~",
  D: "g#4@4 a4@2 a4@3 ~@7", E: "g#4@5 ~@5 f#4 ~ f#4@2 f#4@2", F: "a4@2 a4@2 g#4@2 f#4@2 g#4 f#4 ~@6",
  G: "g#4!2 a4@2 g#4@2 f#4!2", H: "g#4@4 ~@6 f#4 ~ f#4@2 f#4@2",
  I: "[g#4,g#5]!2 [a4,a5] [g#4,g#5]@2 [f#4,f#5] [g#4,g#5]@2", // G# A G# F# G#
  J: "[~@8 [b4,g#5]@6 [a4,f#5] [f#4,e5]@4 ~@9 [a4,e5]@2 [a4,e5]@2]/2", // E D F#7 A5
  K: "g#4@2 [g#4,e5]@5 ~ [g#4,e5]@2 f#4@2 [f#4,d5]@2 e4@2, e5 ~@9 e5 ~@3 c#5 ~", L: "~@2 [a4,a5]@4 [a4,a5]@5 ~@5",
  M: "[[b4,b5]@4 [b4,a5]@6 [g#4,e5]@2 [b4,g#5]@2 [a4,f#5] [f#4,e5]@5 ~@6 [f#4,c#5]@2 [g#4,d5]@2 [a4,e5]@2]/2", // B B7 C#m E D F#7 F#5 G#dim …
  N: "[[g#4,e5]@2 [g#4,e5]@3 ~ [g#4,e5]@4 [e4,c#5]@3 ~ [a4,a5]@33 ~]/3", // C#m A
  O: "[~@2 [a4,c#5]@2 [b4,d5]@2 [c#5,e5]@4 [b4,d5]@2 [a4,c#5]@2 [g#4,b4]@4 [f#4,a4]@2 [e4,g#4]@2 [d4,f#4]@5 ~@5]/2", // A Bm C#m Bm A G#m F#m E …
  P: "[~ [a4,c#5] [b4,d5] [c#5,e5]@2 [b4,d5] [a4,c#5] [g#4,b4]@2 [b4,e5]@3 ~@4]/2", // A Bm C#m Bm A G#m E5
  Q: "[~ [a4,c#5] [b4,d5] [c#5,e5]@2 [b4,d5] [a4,c#5] [g#4,b4]@2 [f#4,a4] [e4,g#4] [d4,f#4]@3 ~@2]/2", // A Bm C#m Bm A G#m F#m E …
  R: "~@2 [a4,c#5] [b4,d5] [c#5,e5]@2 [b4,d5] [a4,c#5]", S: "[g#4,b4] [b4,e5]@3 ~@4", T: "[c#5,a5]",
  U: "~@10 [c#5,a5] ~ [c#5,a5]@2 c#5@2, ~@14 a5 ~", V: "[c#5,a5]@4 [c#5,a5]@2 [c#5,a5]@3 ~@5 [f#4,a5]@2",
  W: "[g#4,g#5]@2 [b4,b5] a4 ~@3 [g#4,g#5], ~@6 a5 ~@9", X: "[a4,a5]@2 f#5!2 ~@4",
  Y: "~@5 f#4 [a4,f#5] [b4,g#5], ~@10 f#5 ~@5", Z: "[c#5,a5]@2 [c#5,a5]!2 ~@3 [f#4,a5]",
  AA: "[g#4,g#5]@2 [b4,b5] [a4,a5] ~@3 [g#4,g#5]", AB: "[a4,a5]@2 [f#4,f#5]!2 ~@4",
  AC: "~@5 [f#4,f#5] [a4,f#5] [b4,g#5]", AD: "[c#5,a5]@3 ~ [c#5,a5]@2 [c#5,a5]@2 ~@6 [f#4,a5]@2",
  AE: "[a4,a5]@4 f#5 ~ f#5@2 ~@8", // A
})).s("gm_string_ensemble_1").gain(0.58)

// bass · drawbar organ · "Drums"
const bass_2 = note(`<
  ~@18 A@24 ~@8 A@8 ~@7 B C D C D C D C D C@8 E A@7 F C@7 G C D C D C D C D C D C D C D C D C D C D ~@8
>`.pickRestart({
  A: "~@4 c#2 ~@7 c#2 ~@3", B: "~@14 [d2,e2]!2", C: "~@4 d2 ~@7 d2 ~@3", D: "~@4 d2 ~@5 [g2,b2] ~ d2 ~@3",
  E: "~@4 d2 ~@7 d2 ~ g2 ~", F: "~@4 c#2 ~@7 c#2 ~ [d2,e2,f4] ~", G: "~@4 d2 ~@7 d2 ~ [d2,e2]!2",
})).s("gm_drawbar_organ").gain(0.65)

// other · harpsichord · "Harps Mel"
const harpsichord = note(`<
  ~@10 A B A C A B A C ~@24 A B A C A B A C ~@16 A B A C A B A C ~@25 A B A C A B A C A B A C A B A C A B A C ~@8
>`.pickRestart({
  A: "a5 ~@5 a5 ~ b5 ~@3 a5 ~@3", B: "g#5 ~ f#5 ~ e5 ~@3 f#5 ~@7", C: "g#5 ~ f#5 ~ e5 ~@3 d5 ~@7",
})).s("gm_harpsichord").gain(0.56).pan(0.7)

// other · piano · "Door Left"
const piano = note("<~@4 A B@4 A ~@72 C@2 ~@43>".pickRestart({
  A: "~@3 e2@5 ~@3 e2@5", B: "~@3 e2@5 ~@3 e2@4 ~", C: "[~@6 g2 g2@3 ~@6]/2",
})).s("gm_piano").gain(0.65).pan(0.1)

// other · piano · "Door Right"
const piano_2 = note("<~@4 A B@4 A ~@72 C@2 ~@43>".pickRestart({
  A: "~@3 g2@5 ~@3 g2@5", B: "~@3 g2@5 ~@3 g2@4 ~", C: "[~@6 f2 f2@3 ~@6]/2",
})).s("gm_piano").gain(0.58).pan(0.9)

// other · pad poly · "Swell Pad"
const pad_poly = note("<A B@8 ~@118>".pickRestart({
  A: "c#2", B: "[~ c#4, ~ c#3@31]/8",
})).s("gm_pad_poly").gain(0.42).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 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@2 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 ~@8
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2",
})).gain(0.73)

// drums · snare
const snare = s("sd").struct("<~@10 [~ x ~ x]!8 ~@24 [~ x ~ x]!8 ~@8 [~ x ~ x]!8 ~@61>").gain(0.73)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@10 A ~ A ~ A
  ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8
>`.pickRestart({
  A: "~@14 x!2",
})).gain(2.09)

// drums · congas
const congas_2 = s("conga:18").struct("<~@10 A@24 ~@8 A@16 ~@8 A@8 ~@9 A@8 ~@8 A@20 ~@8>".pickRestart({
  A: "~@3 x ~@2 x ~",
})).gain(2.09)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@10 A ~ A ~ A
  ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(2.09)

// drums · shaker
const shaker = s("sh").struct("<~@10 [x!8]!72 [x!6 ~@2] [x!8]!36 ~@8>").gain(0.58)

stack(
  bass, pad_warm, acoustic_guitar_steel, electric_guitar_clean, electric_guitar_muted, rock_organ, string_ensemble_1,
  bass_2, harpsichord, piano, piano_2, pad_poly, kick, snare, congas, congas_2, congas_3, shaker
)

More by Phil Collins