Strudelify

It's All I Can Do

The Cars

KeyG majorTempo120 bpm
0:00/0:00
// It's All I Can Do — The Cars
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · electric guitar muted · "Rhythm Guitar"
const electric_guitar_muted = note(`<
  A B A C A B A C A B A C A B A C A B A C A B A C D E D E D E D E F G H I H J H I H J H I H J H I H K L M L M L M L N O
  P Q P Q R Q S Q A B A C A B A C A B A C A B A C D E D E D E D E D E D E D E D E T
>`.pickRestart({
  A: "[f2,c3]!2 ~@6", B: "[d#2,a#2]!2 ~@2 [e2,c3]!2 ~@2", C: "[d#2,a#2]!2 ~@2 [c2,g2]!2 ~@2", D: "[a#2,f3]!3 [f2,c3]!5",
  E: "[f2,c3]!3 [c2,g2]!5", F: "[c2,g2]!8", G: "[c2,g2]!4 [f2,c3]!2 ~@2", H: "~@4 [d#2,a#2]!2 ~@2",
  I: "[e2,c3]!2 ~@2 [f2,c3]!2 ~@2", J: "[c2,g2]!2 ~@2 [f2,c3]!2 ~@2", K: "[c2,g2]!2 ~@2 [a#2,f3]!3 [f2,c3]",
  L: "[f2,c3]!7 [c2,g2]", M: "[c2,g2]!4 [a#2,f3]!3 [f2,c3]",
  N: "[c2,g2]@2 [c2,g2]@2 [c2,g2]@2 [c2,g2]@2 [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~", // C5
  O: "[c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~", // C5
  P: "[a#2,f3]@2 [a#2,f3]@2 [a#2,f3]@2 [a#2,f3] ~ [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2", Q: "[f2,c3]!4 [c2,g2]!4",
  R: "[a#2,f3]@2 [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2", // A#5 F5
  S: "[a#2,f3]@2 [a#2,f3]@2 [a#2,f3] ~ [a#2,f3] ~ [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2", T: "[f2,c3] ~@15",
})).s("gm_electric_guitar_muted").gain(0.26).pan(0.4)

// chords · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note(`<
  ~@16 A B A C A B A C D E D E D E D F@2 ~@8 G H I H J H I H K@7 L@3 M N O P Q R S@2 ~@8 A B A C A B A C D E D E D E D E
  T@2 D E U@2 D E V
>`.pickRestart({
  A: "[f2,c3]!2 ~@5 [e2,b2]", B: "[d#2,a#2]!2 ~@2 [e2,c3]@4", C: "[d#2,a#2]!2 ~@2 [c2,g2]@4",
  D: "[f3,a#3]!2 ~ [f3,a3]@5", E: "~ [f3,a#3] ~ [g3,c4]@5", F: "[~ [f3,a#3] ~ [g3,c4]@13]/2", G: "~@4 [f2,c3]!2 ~@2",
  H: "~@3 [e2,b2] [d#2,a#2]!2 ~@2", I: "[e2,c3]@4 [f2,c3]!2 ~@2", J: "[c2,g2]@4 [f2,c3]!2 ~@2",
  K: "[[c2,g2]@4 [f3,a#3]!2 ~ [f3,a3]@5 ~ [f3,a#3] ~ [g3,c4]@5 [f3,a#3]!2 ~ [f3,a3]@5 ~ [f3,a#3] ~ [g3,c4]@5 [f3,a#3]!2 ~ [f3,a3]@5 ~ [f3,a#3] ~ [g3,c4]@5 [f3,a#3]!2 ~ [f3,a3]]/7", // C5 A#5 F A#5 C5 A#5 F A#5 …
  L: "[~@10 [f3,a#3]@2 ~@2 [g3,c4]@26 c4@2 d4 e4 g4@2 a#4@2]/3", M: "a#4 a4 f4 c4@5",
  N: "a3 a#3 c4@2 f4 g4 a4@2 e5@6 d5@2", O: "d5@2 e5@2 g5@2 f5@4 c5@2 c5 a#4 a4@2", P: "c5 a4 d5 c5 c5@4",
  Q: "[f4,a#4]@4 [f4,a4]@4 d4 c4 a3@2 c4@2 a3@2", R: "a3@2 f3 g3 a3@2 f3@2 e3@2 g3@2 e3@2 d3@2",
  S: "[c4@2 d4@2 c4@4 f4@2 g4@2 f4@2 a4@4 a4@2 a4 g4 f4@2 e4@2 b4 c5@5]/2",
  T: "[[f3,a#3]!2 ~@4 d5 c5@2 [f3,a#3,c5] a5 [g3,c4]@5, ~@3 [f3,a3]@5 ~@3 g5@4 ~]/2", // A#5 Fsus4 C5 F
  U: "[[f3,a#3]!2 ~@4 d5 ~@2 [f3,a#3] a5 [g3,c4]@5, ~@3 [f3,a3]@5 ~@8, ~@7 c5@3 ~ g5@4 ~]/2", V: "[f3,a3] ~@7",
})).s("gm_overdriven_guitar").gain(0.26).pan(0.6)

// other · epiano1 · "E-Piano"
const epiano1 = 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 ~@9 C@2 D@14 E ~@17 A B A B A B A B A B A B A B A B ~@17
>`.pickRestart({
  A: "~@2 c4 g4@2 f4 c4 a3", B: "~ [a#3,d#4] ~ [c4,e4]", C: "[~@6 c4 g4@2 f4 c4 a3 ~@2 [a#3,d#4]@2]/2",
  D: "[~@2 [c4,e4]@2 ~@2 c4 g4@2 f4 c4 a3 ~@2 [a#3,d#4]@2]/2", E: "~ [c4,e4] ~@2",
})).s("gm_epiano1").gain(0.26).pan(0.7)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B A C A B A C A B A C A B A C A B A C A B A C D E D E D E D E F G H I H J H I H J H I H J H I H K L M L M L M L F@2
  N O N O N O N O A B A C A B A C A B A C A B A C D E D E D E D E D E D E D E D E P
>`.pickRestart({
  A: "f2!2 ~ f2 ~@4", B: "d#2!2 ~@2 e2!2 ~@2", C: "d#2!2 ~@2 c2!2 ~@2", D: "a#1!3 f2!5", E: "f2!3 c2!5", F: "c2!8",
  G: "c2!4 f2!2 ~ f2", H: "~@4 d#2!2 ~@2", I: "e2!2 ~@2 f2!2 ~ f2", J: "c2!2 ~@2 f2!2 ~ f2", K: "c2!2 ~@2 a#1!3 f2",
  L: "f2!7 c2", M: "c2!4 a#1!3 f2", N: "a#1!4 f2!4", O: "f2!4 c2!4", P: "f2 ~@7",
})).s("gm_electric_bass_finger").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  [x!2 ~ x!3 ~ x]!49
  [x!2 ~@2 x!2 ~ x]
  [x!2 ~ x!3 ~ x]!32
  [x!2 ~ x ~@4]
  [x!2 ~ x!3 ~ x]!16
  ~
>`).gain(0.26)

// drums · snare
const snare = s("sd").struct(`<
  [~ x ~ x]!23
  [~@2 x ~@3 x!2]
  [~ x ~ x]!25
  [~@4 x!3 ~@5 x ~@3]
  [~ x ~ x]!32
  [~@2 x ~@3 x!2]
  [~ x ~ x]!16
  ~
>`).gain(0.26)

// drums · low tom
const low_tom = s("lt").struct("<~@23 [~@10 x!2 ~@4] ~@58 [~@10 x!2 ~@4] ~@17>").gain(0.26)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x!8]!99 ~>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@23 [~@3 x!2 ~@3] ~@58 [~ x] ~@17>").gain(0.26)

stack(electric_guitar_muted, overdriven_guitar, epiano1, bass, kick, snare, low_tom, pedal_hat, high_tom)

More by The Cars