Strudelify
Sussudio cover art

1985 · No Jacket Required

Sussudio

Phil Collins

KeyF majorTempo118 bpm
0:00/0:00
// Sussudio — Collins Phil
// 118 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 15 "Bell" named as a mallet, played on tubular bells (its pad new age patch is not one)
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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.

// other · brass section · "Brass 1"
const brass_section = note(`<
  ~@2 A B A ~ C D E@2 F ~@16 G ~ H I ~@2 J K@2 ~ L M ~@2 N O ~ A B ~ P Q R A B S@2 ~ T@2 ~@2 G ~ J U ~@2 J K@2 ~ L M ~@2
  N O V W V W X Y X Z G ~ J K@2 ~ L AA ~@2 N O AB AC AB AC AB AC AB AC V W ~@2 V W ~@2 V W ~@2 V W ~@2 AD AE AD AE AD AE
  AD AE AD AE ~@3
>`.pickRestart({
  A: "~@15 c5", B: "[a4,b4] [f4,g4] ~@14", C: "~@12 c5 ~ d5 c5", D: "~@12 c5 [a4,b4] [f4,g4] ~",
  E: "[~@10 c5 a4 c5!2 a4 c5@2 d5 e5 d5 ~@12]/2", F: "~@4 c5 ~ c5 ~ c5 ~ d5 c5 ~ c5@2 ~",
  G: "a4 [gb4,ab4] [d4,e4] ~@13", H: "~@15 g4", I: "a4 ~ e4 ~ g4 a4 ~ a4 ~@4 g4 a4 ~ a4", J: "~@15 a4",
  K: "[~ e4 g4!2 ~ g4 ~ a4 ~@4 bb4 b4 ~ c5@2 ~@15]/2", L: "~@9 c5 a4 ~ c5 ~ a4 c5",
  M: "~ c5 a4 ~ c5 ~ c5 ~ a4 c5 ~@2 c5!2 ~ c5", N: "~@11 c4 e4 g4 a4 ~", O: "bb4 g4 a4 bb4 ~@4 c5 ~ c5@2 ~@2 c5!2",
  P: "~@11 c5 [a4,b4] [f4,g4] ~@2", Q: "c5 ~ c5!2 ~@4 c5!2 a4 g4 c5!2 a4 g4", R: "c5 ~ c5!2 ~@12",
  S: "[~@15 c5@2 a4 ~@14]/2", T: "[~@8 f4 ~ f4@2 ~ f4!2 f4@2 e4 c4 ~@13]/2",
  U: "~@2 e4 ~ g4 a4 ~ a4 ~@2 e4@2 g4 a4 ~ a4", V: "~@3 c5 ~ c5 a4 g4 c5!2 ~@5 c5",
  W: "~ c5 a4 g4 c5!2 a4 g4 c5 g4 a4 c5 ~ c5 ~ c5", X: "~@3 c5 ~ c5 a4 g4 c5!2 ~ d4 e4 g4 a4 g4",
  Y: "bb4 g4 a4 g4 c5!2 a4 ~ c5 g4 a4 c5 ~ c5 ~ c5", Z: "bb4 g4 a4 g4 c5!2 a4 ~ c5 g4 a4 c5 ~ c5 ~@2",
  AA: "~ c5 a4 ~ c5 ~ c5 ~ c5!2 ~@2 c5!2 ~ c5", AB: "~ c5 ~@2 c5 ~ c5 ~@2 c5 ~@2 c5 ~ c5 ~", AC: "~ c5 ~@2 c5 ~ c5 ~@9",
  AD: "~ c5 ~ c5 ~ c5 a4 g4 c5!2 ~ d4 e4 g4 a4 g4", AE: "bb4 g4 a4 g4 bb4!2 a4 g4 c5 g4 a4 c5 ~ c5!3",
})).s("gm_brass_section").gain(0.22).pan(0.8)

// other · brass section · "Brass 1" · soft notes
const brass_section_soft = note(`<
  ~@3 A ~@3 B ~ C ~@17 D ~@7 E ~ F ~@4 G ~@2 A ~ H ~@3 A ~@7 D ~@7 E ~ F ~@4 G ~@5 I ~ I D ~@3 E ~ J ~@4 G ~@34 K L ~
>`.pickRestart({
  A: "~ [d4,e4] ~@14", B: "~@14 [d4,e4] ~", C: "~@3 c5 [g4,a4,b4] f4 ~@10", D: "~@2 [b3,db4] ~@13",
  E: "[a4,b4] [e4,f4,g4] [c4,d4] ~@13", F: "~@11 a4 ~@4", G: "~@13 c5 ~@2", H: "~@13 [d4,e4] ~@2", I: "~@7 g4 ~@8",
  J: "~@11 g4 ~@4", K: "~ c5 ~ c5 ~ c5 a4 g4 c5!2 ~ d4 e4 g4 a4 g4", L: "bb4 g4 a4 g4 bb4!2 a4 g4 c5 g4 a4 c5 ~ c5!3",
})).s("gm_brass_section").gain(0.11).pan(0.8)

// other · trumpet · "Brass 2"
const trumpet = note(`<
  ~@2 A ~ A ~ B C D@2 E ~@16 F ~ G H ~@2 I J ~@2 K L ~@2 M N ~ A ~@2 O P Q A ~ R@2 ~ S@2 ~@2 F ~ I T ~@2 I J ~@2 K L ~@2
  M N U V U V U W U X F ~ I J ~@2 K Y ~@2 M N Z AA Z AA Z AA Z AA U V ~@2 U V ~@2 U V ~@2 U V ~@2 AB AC AB AC AB AC AB
  AC AB AD ~@3
>`.pickRestart({
  A: "~@15 c6", B: "~@12 c6 ~ d6 c6", C: "~@12 c6 ~@3", D: "[~@10 c6 a5 c6!2 a5 c6@2 d6 e6 ~@13]/2",
  E: "~@4 c6 ~ c6 ~ c6 ~ d6 c6 ~ d6 c6 ~", F: "a5 ~@15", G: "~@15 g5", H: "a5 ~ a5 ~ g5 a5 ~ a5 ~@4 g5 a5 ~ a5",
  I: "~@15 a5", J: "~ e5 g5!2 ~ g5 ~ a5 ~@4 bb5 b5 ~ c6", K: "~@9 c6 a5 ~ c6 ~ a5 c6",
  L: "~ c6 a5 ~ c6 ~ c6 ~ a5 c6 ~@2 c6!2 ~ c6", M: "~@11 c5 e5 g5 a5 ~", N: "bb5 g5 a5 bb5 ~@4 c6 ~ c6@2 ~ c6!3",
  O: "~@11 c6 ~@4", P: "c6 ~ c6!2 ~@4 c6!2 a5 g5 c6!2 a5 g5", Q: "c6 ~ c6!2 ~@12", R: "[~@15 c6@2 a5 ~@14]/2",
  S: "[~@8 f5 ~ f5@2 ~ f5!2 f5@2 e5 c5 ~@13]/2", T: "~@2 e5 ~ g5 a5 ~ a5 ~@2 e5 ~ g5 a5 ~ a5",
  U: "~@3 c6 ~ c6 a5 g5 c6!2 ~@5 c6", V: "~ c6 a5 g5 c6!2 a5 g5 c6 g5 a5 c6 ~ c6 ~ c6",
  W: "~ c6 a5 g5 c6!2 ~@2 c6 ~@2 c6 ~ c6 ~ c6", X: "~ c6 a5 g5 c6!2 ~@2 c6 ~@2 c6 ~ c6 ~@2",
  Y: "~ c6 a5 ~ c6 ~ c6 ~ c6!2 ~@2 c6!2 ~ c6", Z: "~ c6 ~@2 c6 ~ c6 ~@2 c6 ~@2 c6 ~ c6 ~", AA: "~ c6 ~@2 c6@2 c6 ~@9",
  AB: "~ c6 ~ c6 ~ c6 a5 g5 c6!2 ~@6", AC: "~@8 c6 ~ c6 ~@2 c6!3", AD: "~@8 c6 ~ c6 ~@5",
})).s("gm_trumpet").gain(0.25).pan(0.2)

// other · trumpet · "Brass 2" · soft notes
const trumpet_soft = note("<~@5 A ~@31 B ~@31 B ~@19 C ~@38 D E F ~>".pickRestart({
  A: "[a5,b5] [d5,e5,f5,g5] ~@14", B: "~@11 a5 ~@4", C: "~@11 g5 ~@4", D: "~@13 c6!3",
  E: "~ c6 ~ c6 ~ c6 a5 g5 c6!2 ~@6", F: "~@8 c6 ~ c6 ~@2 c6!3",
})).s("gm_trumpet").gain(0.11).pan(0.2)

// other · brass section · "Brass echo"
const brass_section_2 = note("<~@119 A B C B D B C B D B E ~@2>".pickRestart({
  A: "~@3 c6 ~ c6 ~ c6 ~@2 c6!2 ~@2 c6!2", B: "~ c6 ~@8 c6 ~ c6 ~@2 c6", C: "c6!2 ~ c6 ~ c6 ~ c6 ~@2 c6!2 ~@2 c6!2",
  D: "c6 ~@2 c6 ~ c6 ~ c6 ~@2 c6!2 ~@2 c6!2", E: "c6!2 ~ c6 ~ c6 ~@10",
})).s("gm_brass_section").gain(0.17).pan(1)

// other · brass section · "Brass echo" · soft notes
const brass_section_soft_2 = note("<~@120 A ~ A ~ A ~ A ~ A B C D>".pickRestart({
  A: "~@11 c6 ~@4", B: "~@7 c6 ~@2 c6!2 ~@2 c6!2", C: "~ c6 ~@8 c6!3 ~@2 c6", D: "c6 ~@15",
})).s("gm_brass_section").gain(0.08).pan(1)

// other · tubular bells · "Bell"
const tubular_bells = note("<~@28 A ~@3 A ~@27 A ~@3 A ~@19 A ~@47>".pickRestart({
  A: "f6@2 ~@2 e6 ~@3 c6 ~@3 d6@3 e6",
})).s("gm_tubular_bells").gain(0.22).pan(0)

// chords · lead 2 sawtooth · "Synth Pad"
const lead_2_sawtooth = note(`<
  ~@3 A@2 B@2 C@2 D@2 E@2 F@2 G@2 F@2 E@2 F@2 G@2 F@2 H@8 A@2 B@2 C@2 D@2 E@2 F@2 G@2 F@2 E@2 F@2 G@2 F@2 H@8 A@2 B@2
  C@2 D@2 I@2 B@2 J@2 K@2 H@4 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 I@2 B@2 C@2 D@2 I@2 B@2 C@2 D@2 ~@4 I@2 B@2 C@2 D@2 ~
>`.pickRestart({
  A: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,f5,a5]@3 ~ [c5,f5,a5]@2 ~ [bb4,d5,f5]@16 ~]/2", // C F Bb
  B: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,f5,a5]@3 ~ [c5,f5,a5]@2 ~ [bb4,d5,f5]@6 ~@3 [d5,f5,bb5]@3 ~ [c5,f5,a5]@3 [c5,e5,g5]]/2", // C F Bb F C
  C: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5]@3 ~ [c5,f5,a5]@3 [bb4,d5,f5]@16 ~]/2", // C F Bb
  D: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,f5,a5]@3 ~ [c5,f5,a5]@2 ~ [bb4,d5,f5]@7 ~@2 [d5,f5,bb5]@3 ~ [c5,f5,a5]@2 ~ [c5,e5,g5]]/2", // C F Bb F C
  E: "[~@8 [c4,e4]@2 ~@4 [c4,f4,a4]@17 ~, ~@8 g4 ~@23]/2", F: "[~@8 [d4,g4,bb4]@2 ~@4 [c4,f4,a4]@17 ~]/2",
  G: "[~@4 [c4,e4,g4] ~@2 [c4,f4,a4]@9]/2", H: "[[a4,c5,e5]@8 [g4,b4,d5]@7 [f4,a4,c5,e5]@16 ~]/2",
  I: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5]@3 ~ [c5,f5,a5]@2 ~ [bb4,d5,f5]@16 ~]/2", // C F Bb
  J: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,f5,a5]@3 ~ [c5,f5,a5]@3 [bb4,d5,f5]@16 ~]/2", // C F Bb
  K: "[~@4 [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,f5,a5]@3 ~ [c5,f5,a5]@2 ~ [bb4,d5,f5]@7 ~@2 [d5,f5,bb5]@3 ~ [c5,f5,a5]@3 ~]/2", // C F Bb F
})).s("gm_lead_2_sawtooth").gain(0.11).pan(1)

// other · electric guitar muted · "Mute Guitr"
const electric_guitar_muted = note(`<
  ~@15 A B C D ~@4 A B C D ~@2 E ~ F ~@15 A B C D ~@4 A B C D ~@2 E ~ F ~@19 F ~ E ~@46
>`.pickRestart({
  A: "~@3 c4!2 ~@2 c4!2 ~@3 c4 ~@3", B: "~@2 c4 c4@2 c4 ~ c4 ~ c4 ~@4 c4 ~", C: "~@7 c4 ~ c4 ~ c4 ~ c4 ~ c4",
  D: "~ c4 ~@2 c4 ~ c4!3 ~ c4!3 ~ c4!2", E: "~ a3!3 ~@12", F: "c4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.1).pan(0.8)

// other · electric guitar muted · "Mute Guitr" · soft notes
const electric_guitar_muted_2 = note("<~@15 A B C ~@5 A B C ~@21 A B C ~@5 A B C ~@74>".pickRestart({
  A: "~@5 c4 ~@3 c4 ~@5 c4", B: "~@15 c4", C: "~ c4 ~@14",
})).s("gm_electric_guitar_muted").gain(0.05).pan(0.8)

// chords · electric guitar clean · "Rhythm Gtr"
const electric_guitar_clean = note(`<
  ~@7 A B A C ~@4 D E F G H ~@3 D E F G I J K@2 L M N O A B A C A B A C ~@4 D E F G H ~@3 D E F G I J K@2 L M N O A B A
  C A B A C P ~@7 I J Q R A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~@4 A B A C A S ~@3
>`.pickRestart({
  A: "[c4,e4,g4] c4 e4 c4 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5", // C
  B: "[bb3,d4,f4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,f4,g4] ~@5 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~@2", // Gm7 Gm Gm7 Bb
  C: "[bb3,d4,f4,g4] bb3!3 [bb3,d4,f4,g4] ~@4 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@2", D: "c4@2 c4 ~@3 c4 ~ c4!3 ~@3 c4 ~",
  E: "c4 ~ c4 ~@2 c4!2 ~ c4 ~ c4 ~ c4 ~ c4 ~", F: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~@2 c4!2 ~",
  G: "c4 ~ c4 ~ c4 ~ c4 ~ d4@2 ~@2 d4@2 ~@2", H: "[c4,e4,g4] ~@3 [c4,e4,g4] ~@2 [c4,e4,g4] ~@8", I: "~@8 g3 ~@3 g3 ~@3",
  J: "f3 ~, a3 ~@3", K: "[[a3,a4] a3 ~ a3 ~ a3 ~@2 g3 ~@3 g3@3 [f3,a3,c4]@10 ~@7]/2", L: "a3@4 ~@4 g3 ~@3 g3 ~@3",
  M: "f3@9 ~@7", N: "[a3,a4] a3 ~ a3 ~@2 a3 ~ a3 ~@3 g3 ~@2 g3", O: "f3 ~", P: "[c4,e4,g4] c4 e4 c4 [c4,e4,g4] ~@11",
  Q: "[a3,a4] a3 ~ a3 ~ a3 ~@2 g3 ~@3 g3@3 g3", R: "f3@5 ~@3", S: "[bb3,d4,f4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,f4,g4] ~@11",
})).s("gm_electric_guitar_clean").gain(0.11).pan(0.8)

// chords · electric guitar clean · "Rhythm Gtr" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@7 A B A C ~@7 D E ~@6 D ~@2 F ~@3 F ~ A B A C A B A C ~@7 D E ~@6 D ~@2 F ~@3 F ~ A B A C A B A C A ~@9 F ~ A B A C
  A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~@4 A B A C A G H I ~
>`.pickRestart({
  A: "~@2 g4 ~@13", B: "~ bb3 ~ bb3 ~@12", C: "~@2 d4 ~@8 bb3 ~@4", D: "~@10 c4 ~@3 c4 ~",
  E: "~ c4 [e4,g4] c4 ~ c4 [e4,g4] ~@9", F: "~@2 a3 ~@13", G: "~ bb3 ~ bb3 ~@6 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~@2",
  H: "[c4,e4,g4] c4 [e4,g4] c4 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5", // C Em C
  I: "[bb3,d4,f4,g4] bb3 [bb3,d4] bb3 [bb3,d4,f4,g4] ~@4 [bb3,d4,f4] ~ bb3 ~ [bb3,d4,f4] ~@2", // Gm7 Bb Gm7 Bb
})).s("gm_electric_guitar_clean").gain(0.05).pan(0.8)

// chords · synth bass 1 · "Synth"
const synth_bass_1 = note(`<
  ~@3 A B C D A B C D ~@24 A B C D A B C D ~@24 A B C D A B C D ~@12 A B C D A B C D A B C D A B C D A B C D A B C D A B
  C D A B C D ~@4 A B C D A B C D ~
>`.pickRestart({
  A: "~@4 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4] ~@2 [c4,f4,a4] ~@4, ~@4 g4 ~@3", // C F
  B: "~@4 [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4] ~@3 [bb3,d4,a4]@2 ~ [c4,e4,g4], ~@4 g4 ~@3", // Gm Bb Bbmaj7 C
  C: "~@4 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,f4,a4]@3 [c4,f4,a4] ~@4", // C F
  D: "~@4 [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~@3 [bb3,d4,a4]@3 [c4,e4,g4]", // Gm Bbmaj7 C
})).s("gm_synth_bass_1").gain(0.12).pan(0)

// bass · synth bass 1 · "Synth Bass"
const bass = note(`<
  ~@2 A@4 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@8 A@4 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@8 A@4 ~@2 A@2 ~@2
  A@2 ~@2 A@2 ~@4 A@4 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@4 A@4 ~@2 A@4
>`.pickRestart({
  A: "[~@15 c2@4 ~@13]/2",
})).s("gm_synth_bass_1").gain(0.25)

// bass · electric bass finger · "Elec Bass"
const bass_2 = note(`<
  ~@3 A B A B A B A B A B A B A B A B A B A B A B A B C D C E C D C F A B A B A B A B A B A B A B A B A B A B A B A B C
  D C E C D C F A B A B A B A B A B A B A B A B C D C E 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
  ~@4 A B A B A B A B ~
>`.pickRestart({
  A: "~@3 c2 ~ c2 a1 g1 c2!2 ~@5 c2", B: "~ c2 a1 g1 c2!2 a1 g1 c2 g1 a1 c2 ~ c2 ~ c2",
  C: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@3 a1", D: "a1@2 ~@2 a1@2 ~@2 a1 ~ a1 ~ a1@4",
  E: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 g1 a1@2 a1", F: "a1@2 ~@2 a1@2 ~@2 a1 ~@3 [c2,c3]@3 ~",
})).s("gm_electric_bass_finger").gain(0.17)

// other · synth drum · "Elec Toms"
const synth_drum = note(`<
  ~ 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
  B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@13 c4 ~ f3", B: "~@13 db4 ~ g3",
})).s("gm_synth_drum").gain(0.12)

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

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!130 ~>").gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!131 ~>").gain(0.2)

stack(
  brass_section, brass_section_soft, trumpet, trumpet_soft, brass_section_2, brass_section_soft_2, tubular_bells,
  lead_2_sawtooth, electric_guitar_muted, electric_guitar_muted_2, electric_guitar_clean, electric_guitar_clean_2,
  synth_bass_1, bass, bass_2, synth_drum, kick, snare, hihat
)

More by Phil Collins