Strudelify
KeyG majorTempo155 bpm
0:00/0:00
// I Like It — Gerry & The Pacemakers
// 155 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 25.
setcpm(155/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~@8 A B C@3 D E F ~@4 A B C@3 D E G ~@16 A B C@3 D E G ~@16 A B C@3 D E G H I J K L M
>`.pickRestart({
  A: "~@2 e4@2 g4@2 a4 ~ [g4,b4,e5]@3 ~ [a4,b4,e5]@2 g4 ~, ~@8 [a4,a#4] ~@7", B: "[e4,e5] ~@7",
  C: "~@4 [g3,c4,e4] ~ [g3,c4,e4] ~@5 [g3,c4,e4]@2 ~@2", // C
  D: "~@4 [g3,c4,e4] ~ [g3,e4]@2 ~@4 [a3,f#4]@2 ~@2, ~@6 c4 ~@5 d4 ~@3", // C D
  E: "~@4 [b3,d4,g4] ~ [b3,d4,g4]@3 ~ d4 ~ [d4,g4] ~@3, ~@6 b3 ~", F: "[d3,f#3,a3]@2 ~@2 [d3,f#3,a3]@5 ~@7",
  G: "[d3,f#3,a3] ~@7", H: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [b3,d4,f#4]@5 ~ [b3,d4,f#4] ~",
  I: "[a3,c4,e4] ~@3 [f#3,d4]@2 ~@10, ~@4 a3 ~@11", J: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [b3,d4,f#4]@2 ~@2 [e3,g3,b3]@2 ~@2",
  K: "[a3,c4,e4]@2 ~@6 [f#3,a3,d4]@3 ~@5", L: "[g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@2 [g3,a3,c4,e4] ~ [g3,c4,e4]@4 ~@2",
  M: "[g3,b3,d4] ~@7", // G
})).s("gm_piano").gain(0.4).pan(0.7)

// bass · acoustic bass
const bass = note(`<
  A@4 B C D E F G H@3 I J K B C D E L M H@3 I E N O P Q R Q R Q S T A T A B C D E F M H@3 I E U O P Q V Q W Q S T A T A
  B C D E F G H@3 I E U X Y Z AA AB AC
>`.pickRestart({
  A: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", B: "g2@5 ~ g2@2 b2@5 ~ b2@2", C: "a2@5 ~ a2@2 d2@2 ~@2 d2@2 ~@2",
  D: "g2@5 ~ g2@2 d2@5 ~ d2@2", E: "g2@7 ~ d2@3 ~ g2@3 ~", F: "e2@5 ~ e2@2 b1@3 ~ b1@3 ~", G: "e2@3 ~@13",
  H: "c2@5 ~ c2@2 g1@3 ~ g1@3 ~", I: "c2@5 ~ c2@2 d2@3 ~ d2@3 ~", J: "g2@7 ~ d2@3 ~ g2@2 ~@2", K: "d2@3 ~ d2@4 ~@8",
  L: "e2@5 ~ e2@2 b1@2 ~@2 b1@2 ~@2", M: "e2 ~@7", N: "d2 ~@7", O: "g2@3 ~ g2@3 ~ c2 ~ c2@3 ~ g2@2",
  P: "~@2 g2@2 f2@3 ~ e2@3 ~ d2@3 ~", Q: "c2@5 ~ g1@5 ~ c2@3 ~", R: "g2@5 ~ d2@5 ~ g1@3 ~", S: "g2@5 ~ d2@5 ~ g2@3 ~",
  T: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", U: "d2@3 ~@13", V: "g2@8 d2@3 ~ g1@3 ~", W: "g2@7 ~ d2@3 ~ g1@3 ~",
  X: "g2@5 ~ g2 ~ b2@5 ~ b2@2", Y: "a2 ~ d2 ~@5", Z: "g2@5 ~ g2@2 b2@3 ~ e2@3 ~", AA: "a2 ~@3 d2 ~@3",
  AB: "g2@2 ~@2 g2@2 ~@2 c2 ~ c2@5 ~", AC: "g1 ~@7",
})).s("gm_acoustic_bass").gain(0.45).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B A C D E F@2 G H I@3 J K L D E F@2 G H I@3 J K M N O P Q P R P Q S T A C D E F@2 G H I@3 J K M N O P Q P R P Q S T
  A C D E F@2 G H I@3 J K M U V U W X Y
>`.pickRestart({
  A: "[c4,e4]@3 ~ [b3,d4]@3 ~ [a3,c4]@3 ~ [g3,b3]@3 ~", // C Bm Am G
  B: "[f#3,a3] ~ [g3,b3]@3 ~ [a3,c4]@4 [a3,c4]@2 [a3,c4]@2 [a3,c4]@2", C: "[f#3,a3] ~ [g3,b3]@3 ~ [a3,c4]@9 ~",
  D: "[g3,b3,d4]@4 [g3,b3,d4] ~ [g3,b3,d4] ~ [b3,d4,f#4]@4 [b3,d4,f#4] ~ [b3,d4,f#4] ~", // G Bm
  E: "[a3,c4,e4]@4 [a3,c4,e4] ~ [a3,c4,e4] ~ [f#3,a3,d4]@2 ~@2 [f#3,a3,d4]@2 ~@2", // Am D
  F: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]@4 [g3,b3,d4] ~ [g3,b3,d4] ~", // G
  G: "[g3,b3,e4]@3 ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4]!5 ~ [g3,b3,e4] ~", H: "[g3,b3,e4] ~@7",
  I: "[g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4]@4 [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  J: "[g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,d4,f#4]@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // C D
  K: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]!5 ~ [g3,b3,d4] ~", L: "[f#3,a3,d4] ~ [f#3,a3,d4]@2 ~@4",
  M: "[f#3,a3,d4] ~@7", N: "[g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~@2 [g3,b3,d4]@2",
  O: "~@2 [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]!6", // G
  P: "[g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~", // C
  Q: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~ [g3,c4,e4]@3 ~ [g3,b3,d4]@3 ~ [g3,b3,d4] ~", // G C G
  R: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~ [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~ [g3,b3,d4] ~", // G
  S: "[a3,c4,e4]@3 ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4]@4 [a3,c4,e4] ~ [a3,c4,e4] ~", // Am
  T: "[f#3,a3,d4]@3 ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4]@4 [f#3,a3,d4] ~ [f#3,a3,d4] ~", // D
  U: "[g3,b3,d4]@4 [g3,b3,d4] ~ [g3,b3,d4] ~ [b3,d4,f#4]!5 ~ [b3,d4,f#4] ~", V: "[a3,c4,e4] ~ [f#3,a3,d4] ~@5",
  W: "[a3,c4,e4] ~@3 [f#3,a3,d4] ~@3", X: "[g3,b3,d4] ~@3 [g3,b3,d4]@2 ~@2 [g3,c4,e4] ~ [g3,c4,e4]@3 ~@3",
  Y: "[g3,b3,d4]@3 ~@13", // G
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B A C A D A@2 E@2 A@4 E F A D A@2 E@2 A@4 E@2 A C A@6 G@2 C@2 A D A@2 E@2 A@4 E@2 A C A@6 G@2 C@2 A D A@2 E@2 A@4
  E@3 F E A E@2
>`.pickRestart({
  A: "x!2", B: "x ~@3 x ~@2 x", C: "x!4", D: "x ~ x!2", E: "x", F: "x!2 ~@2", G: "x ~@2 x ~@2 x ~",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@11 B ~@13 A ~@9 A ~@13 A ~@9 A ~@13 B ~@4>".pickRestart({
  A: "~@12 x!4", B: "~ x ~@2",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@25 A ~@9 A ~@13 A ~@9 A ~@18>".pickRestart({
  A: "~@4 x!8 ~@4",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct(`<
  A@3 ~ B A@3 C D A@4 C E A@4 C D A@4 C D A ~ B A@5 B A@2 ~ B A@3 C D A@4 C D A ~ B A@5 B A@2 ~ B A@3 C D A@4 C D C E C
  F G D
>`.pickRestart({
  A: "x!8", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", C: "x!4 ~@4", D: "x", E: "x!2 ~@2", F: "x!2", G: "x!6 ~@2",
})).gain(0.3)

stack(piano, bass, electric_guitar_clean, kick, snare, low_tom, mid_tom, ride)

More by Gerry & The Pacemakers