Strudelify

I Don't Care Anymore

Phil Collins

KeyE minorTempo130 bpm
0:00/0:00
// I Don't Care Anymore — Collins Phil
// 130 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 166 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@4 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 G@4 E@2 F@2 G@4 H@2 I@2 J@2 K@2 E@2 F@2 G@4 E@2 F@2 G@4 L@2 M@2 J@2 K@2 J@2 N O P
  Q R S T U T U T U V@2 W X Y Z V@4 AA AB Y Z V AC ~@8 E@2 F@2 G@4 E@2 F@2 G@4 AD@2 AE@2 AD@2 AE@2 AD@2 AF@2 AG@2 AH@8
  AI@2 AJ@2 AK@2 AI@4 AJ@2 AK@2 AI@2 AH@6 AL@2 ~@2
>`.pickRestart({
  A: "[~ [e4,a4,d5]@5 [e4,a4,c#5]@10]/2", B: "[~ [d4,g4,c5]@5 [d4,g4,b4]@10]/2",
  C: "[g4 [d4,b4]@2 g4 [d4,b4]@2 g4 [e4,b4]@2 g4 [e4,b4]@2 g4@2 [e4,b4]@2]/2", // G E5
  D: "[g4 [e4,b4]@2 g4 [e4,b4]@2 g4 [e4,b4]@2 g4 [e4,b4]@2 g4!2 b4 d5]/2", E: "[[e4,a4,d5]@3 [e4,a4,c#5]@5]/2",
  F: "[[d4,g4,b4]@3 [d4,e4,g4]@5]/2", G: "[e4,g4,b4]/4", H: "[[f#4,b4]@11 ~@5]/2", I: "[[b3,g4]@14 [g4,b4] ~]/2",
  J: "[[f#4,b4]@2 ~ [f#4,a4]@3 [f#4,a4]@4 f#4@3 f#4@3]/2", K: "[~ [g3,e4]@5 ~ [g4,b4]]/2",
  L: "[[f#4,b4]@4 [f#4,b4]@7 ~@5]/2", M: "[[b3,g4]@2 ~@3 [b3,g4] [b3,g4]@6 ~@2 [g4,b4] ~]/2", N: "c5 a4, e4",
  O: "~ [e4,c5]@3", P: "b4 g4 g4@2", Q: "~ [g4,b4] ~ [d4,g4]", R: "[e4,g4] ~@2 [g3,b3]", S: "~ [g3,e4] ~ [a3,f#4]",
  T: "[b3,g4] ~@2 [g3,b3]", U: "~ [g3,e4] ~ [a3,g4]", V: "~ [d4,b4] [b3,g4] [d4,b4]", W: "~ [c#4,a4]@2 [c#4,a4]",
  X: "~ [c#4,a4]@3", Y: "c4@3 c4@5", Z: "c4 a3", AA: "~ c#4@2 c#4@5", AB: "~ c#4@3", AC: "~ [b3,d4]@3 d4@2 b3@2",
  AD: "[d4,f#4,a4]/2", AE: "[e4,g4,b4]/2", AF: "[e4,a4,c5]/2", AG: "[g4,b4,d5]/2", AH: "[[e4,g4,b4]@7 [d4,f#4,a4]]/2",
  AI: "[d4,g4,b4]/2", AJ: "[c#4,e4,a4]/2", AK: "[f4,a4,c5]/2", AL: "[[e4,g4,b4]@7 ~]/2",
})).s("gm_lead_2_sawtooth").gain(0.35)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@4 A@2 B@2 A@2 B@2 C D@3 E@2 C F@5 E@2 C F@5 G@2 H@2 G@2 H@2 E@2 C F@5 I@2 C F@5 G@2 H@2 G@2 H@2 G@2 J@2 K@2 L@8 M@2
  N@2 O@2 M@4 N@2 O@2 M@2 L@8 E@2 C F@5 I@2 C F@5 G@2 H@2 G@2 H@2 G@2 J@2 K@2 L@8 M@2 N@2 O@2 M@4 N@2 O@2 M@2 L@6 P@2
  ~@2
>`.pickRestart({
  A: "[e3@3 c#4@5, a3]/2", B: "[c4@3 b3@5, g3]/2", C: "[g3,b3,d4]", D: "[[g3,b3]@2 g3@2 ~ [b3,d4], e3@5 ~, ~@2 g3]/3",
  E: "a3/2", F: "[[d3,b3] ~@2 g3@2, e3, ~ b3@3 ~]/5", G: "[d3,f#3,a3]/2", H: "[e3,g3,b3]/2", I: "[d4@3 c#4@5, a3]/2",
  J: "[e3,a3,c4]/2", K: "[g3,b3,d4]/2", L: "[[e3,g3,b3]@7 [d3,f#3,a3]]/2", M: "[d3,g3,b3]/2", N: "[c#3,e3,a3]/2",
  O: "[f3,a3,c4]/2", P: "[[e3,g3,b3]@7 ~]/2",
})).s("gm_synth_strings_2").gain(0.45)

// other · lead 1 square
const lead_1_square = note(`<
  ~@15 A B@2 C D E ~@2 F G H@2 I J K E L M N O L P Q R S T U C V E ~@2 W X U Y I J K E L M N O L P Q R Z AA AB AC AD AE
  AF E AG J AG E AG J ~ AH AI AJ AK AL AM AN ~ AH AI AJ AK AL AM AN AO ~@7 S T U C V E ~@2 W X U Y I J K E L M N O L P Q
  R Z AA AB AC AD AE AF E AG J AG E AG J ~ AH AI AJ AK AL AM AN ~ AH AI AJ AK AL AM AN AO ~@10
>`.pickRestart({
  A: "~@5 g5 b5 d6", B: "[e6@2 e6!5 e6@2 e6@2 e6@3 ~@2]/2", C: "e6@2 d6 b5 d6@2 d6 b5", D: "e6!4 ~ b5 b5@2",
  E: "b5@2 e5 d5 e5@2 ~@2", F: "~@6 b5 d6", G: "e6@2 e6!6", H: "[e6 e6@2 e6@3 e6 e6@2 d6@2 b5 d6 b5 d6 b5]/2",
  I: "d6!2 b5 e6@2 e5 b5@2", J: "b5@2 e5 d5 e5 g5 e5@2", K: "~@5 e5 b5@2", L: "~@5 a5 b5 a5", M: "a5 g5 ~@6",
  N: "~@3 d6@2 d6@3", O: "b5 e5 ~@2", P: "b5@2 a5 a5@3 a5@2", Q: "~@5 e6@2 b5", R: "e5 ~@3", S: "~@5 a5 b5 d6",
  T: "e6!8", U: "e6 e6@2 e6@3 e6!2", V: "e6!4 g5 b5 b5@2", W: "~@5 b5!2 d6", X: "e6@2 e6!3 ~ e6!2",
  Y: "e6 d6@2 b5 d6 b5 d6 b5", Z: "~@5 b5!2 a5", AA: "b5@2 a5!2 a5@2 ~@2", AB: "~@2 g6@2 f#6 e6!2 d6",
  AC: "e6@2 ~@3 d6@2 c6", AD: "e6@4 ~ e6 e6@2", AE: "e6 d6!2 b5 d6 b5 d6@2", AF: "e6@4 ~ b5 b5@2", AG: "~@5 a5 a5@2",
  AH: "~@3 g5 g5@2 g5@2", AI: "b5 d6!2 b5", AJ: "a5 g5 e5 g5@3 a5@2", AK: "~@5 e5 g5 a5", AL: "b5 a5 g5 a5@3 g5@2",
  AM: "~ a5 g5 e5", AN: "d5 b5!3", AO: "~@3 g5 b5@2 a5 g5",
})).s("gm_lead_1_square").gain(0.36)

// bass · electric bass pick
const bass = note(`<
  ~@4 A B A B A B A B A B A B C@4 D@2 E@2 C@4 D@2 E@2 F@2 E@2 F@2 E@2 C@4 D@2 E@2 C@4 D@2 E@2 F@2 E@2 F@2 E@2 F@2 G@2
  H@2 I@8 J K L M N O P@2 J K L M N O Q@2 R@8 C@4 D@2 E@2 C@4 D@2 E@2 F@2 E@2 F@2 E@2 F@2 G@2 H@2 I@8 J K L M N O P@2 J
  K L M N O Q@2 R@6 S@2 ~@2
>`.pickRestart({
  A: "g2@5 ~ g2@5 ~ g2@3 ~", B: "g2@2 g3@2 g2@2 g3@3 ~ g2@2 g3@2 g2@2",
  C: "[e2@2 e3@5 ~ e2@5 ~ e2@4 e3@3 ~ e2@5 ~ e2@3 ~]/2",
  D: "[e2@2 e3@5 ~ e2@5 ~ e2@4 e3@2 e2@3 ~ e2@2 e3@2 e2@2 e3@2]/2",
  E: "[e2@2 e3@3 ~ e2@7 ~ e2@4 e3@2 e2@2 e3@2 e2@2 e3@2 e2@2 e3@2]/2",
  F: "[d2@2 d3@5 ~ d2@5 ~ d2@4 d3@2 d2@3 ~ d2@3 ~ d3@3 ~]/2",
  G: "[a2@2 a3@5 ~ a2@5 ~ a2@4 a3@2 a2@3 ~ a2@3 ~ a2@3 ~]/2",
  H: "[g2@2 g3@5 ~ g2@5 ~ g2@4 g3@2 g2@3 ~ g2@3 ~ g2@3 ~]/2",
  I: "[e2@2 e3@5 ~ e2@5 ~ e2@4 e3@2 e2@3 ~ e2@3 ~ d2@3 ~]/2", J: "g2@7 ~ g3@7 ~", K: "g2@7 ~ g2@7 ~",
  L: "a2@7 ~ a2@5 ~ a1@2", M: "a1@7 ~ c#2@3 ~ e2@3 ~", N: "f2@2 f3@9 ~ c3@3 ~", O: "f2@7 ~ f2@7 ~",
  P: "[g2@2 g3@5 ~ g3@5 ~ g2@9 ~ d3@3 ~ g2@3 ~]/2", Q: "[g2@2 g3@5 ~ g3@5 ~ g2@9 ~ g3@3 ~ g2@3 ~]/2",
  R: "[e2@5 ~ e2@3 ~ e2@8 e2@3 ~ e2@5 ~ d2@3 ~]/2", S: "[e2@5 ~ e2@3 ~ e2@8 ~@14]/2",
})).s("gm_electric_bass_pick").gain(0.45)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@56 A@2 B@2 A@2 B@2 A@2 C@2 D@2 E@6 F@2 ~@16 E@8 ~@16 A@2 B@2 G@2 B@2 A@2 C@2 D@2 E@6 F@2 ~@16 E@6 H@2 ~@2
>`.pickRestart({
  A: "[[d3,f#3,a3]@31 ~]/2", B: "[[e3,g3,b3]@31 ~]/2", C: "[[e3,a3,c4]@31 ~]/2", D: "[[g3,b3,d4]@31 ~]/2",
  E: "[[e3,g3,b3]@23 ~@3 [d3,f#3,a3]@2 ~@2 [d3,f#3,a3]@2]/2", F: "[[e3,g3,b3]@27 ~@5]/2",
  G: "[[d3,f#3,a3]@23 ~@3 [d3,f#3,a3]@2 ~@2 [d3,f#3,a3]@2]/2", H: "[[e3,g3,b3]@23 ~@9]/2",
})).s("gm_distortion_guitar").gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  A ~ B C ~@34 D E ~@37 F ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~ F D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D
  E D E D E D E D E D E D E D E ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~ F D E D E D E D E D ~
>`.pickRestart({
  A: "x ~@4 x ~@2", B: "~ x ~@2 x ~@3", C: "~@2 x ~@2 x!2 ~", D: "x ~ x ~@2 x ~@2", E: "~ x!3", F: "~@5 x!3",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B C D A B C B A B C B A B C D A B C B A B C B A B C B A B C B A B C B A B A B A B C B A B C B A B C B A B C B A B C
  B A B A B C B A B C B A B C B A B C E C F C F C F C F C F C F C F 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
  A B A B A B A B A B A B A B A B A B A B A B C F C F C F C F C F C F C F C F A B A B A B A B A ~
>`.pickRestart({
  A: "x ~@2 x ~@3 x", B: "~@2 x ~ x ~@2 x!2 ~ x ~ x ~ x ~", C: "~@7 x", D: "~@2 x ~ x ~@2 x!2 ~@3 x ~ x ~",
  E: "~@2 x ~ x ~@2 x!2 ~ x ~@5", F: "~ x!5 ~@2",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B C D A B C B A B C B A B C D A B C B A B C B A B C B A B C B A B C B A B A B A B C B A B C B A B C B A B C B A B C
  B A B A B C B A B C B A B C B A B C B C B C B C B C B C B C B C B C 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 C B C B C B C B C B C B C B C B A B A B A B A B E ~
>`.pickRestart({
  A: "x!4 ~ x ~ x", B: "~ x!2 ~@5", C: "x!2 ~@2 x ~ x!2", D: "~ x!2 ~@2 x ~@2", E: "x ~ x!2 ~ x ~ x",
})).gain(0.36)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@95 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 x",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct(`<
  A ~ B C A ~ B ~ A ~ B ~ A ~ B C A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B
  ~ A ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ A ~ A ~ A ~ A ~ D ~
>`.pickRestart({
  A: "x!2 ~ x ~ x ~@2", B: "~ x ~ x!2 ~@3", C: "~@5 x ~@2", D: "x ~@2 x ~ x ~@2",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@78 [~@4 x!3 ~]!16 ~@46 [~@4 x!3 ~]!16 ~@10>").gain(0.28)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@78 [~@7 x]!16 ~@46 [~@7 x]!16 ~@10>").gain(0.16)

// drums · crash
const crash = s("cr").struct(`<
  ~@78 A ~@3 A ~@3 A ~@3 A ~@3 A B C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C
  D A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ C D C D C D C D E ~
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x ~ x ~@4", D: "~ x ~@2 x ~ x ~", E: "~@3 x ~@4",
})).gain(0.36)

stack(
  lead_2_sawtooth, synth_strings_2, lead_1_square, bass, distortion_guitar, snare, low_tom, mid_tom, open_hat, high_tom,
  tambourine, tambourine_soft, crash
)

More by Phil Collins