Strudelify
When I'm 64 cover art

Songs from Sgt Pepper's Lonely Hearts Club Band

When I'm 64

The Beatles

KeyC majorTempo134 bpm
0:00/0:00
// When I'm 64 — The Beatles
// 134 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 92 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(134/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 · fretless bass · "Fretless E. Bass"
const bass = note(`<
  A@2 B C A@5 D@3 E F A@3 G H I J K L@2 M L@3 N O L@2 P Q R S T U V A@3 D@3 E F A@3 G H I J K L@2 M L@3 N O L@2 P Q R S
  T U V A@3 D@3 E W A@3 G H I J C A@2 B C
>`.pickRestart({
  A: "c2@5 ~@7 g1@5 ~@7", B: "f1@5 ~@7 g1@5 ~@7", C: "c2@5 ~ g1@5 ~ c2@5 ~@7", D: "g1@5 ~@7 d2@5 ~@7",
  E: "g1@5 ~ a1@5 ~ a#1@5 ~ b1@5 ~", F: "c2@5 ~@19", G: "f1@5 ~@7 c2@5 ~@7", H: "f1@5 ~@7 f1@5 ~@7",
  I: "g1@5 ~@7 a1@5 ~@7", J: "d2@5 ~@7 g1@5 ~@7", K: "~@6 c2@5 ~ g1@5 ~ c2@5 ~", L: "a1@5 ~ a1@5 ~ a1@5 ~ a1@5 ~",
  M: "g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~", N: "e2@11 ~", O: "e2@4 e2@2 e2@4 e2@2 e2@5 ~ e2@5 ~",
  P: "d2@5 ~ d2@5 ~ d2@5 ~ d2@5 ~", Q: "d2@5 ~ d2@5 ~ d2@5 ~ e2@5 ~", R: "f2@5 ~ f2@5 ~ f2@5 ~ f2@5 ~",
  S: "g2@5 ~ g2@5 ~ g2@5 ~ g2@5 ~", T: "c2@5 ~ c2@5 ~ c2@5 ~ c2@5 ~", U: "g1@5 ~@7 g1@5 ~ g1@5 ~",
  V: "~@6 g1@4 b1@2 d2@4 f2@7 ~", W: "c2@5 ~@13 g1@5 ~",
})).s("gm_fretless_bass").gain(0.54)

// other · clarinet · "Clarinet 1 (Lead)"
const clarinet = note(`<
  A B C@2 D@2 E@3 F G@2 ~@2 H@2 I J K L M N O P Q R H@2 S@2 T U V W@2 I X ~@2 E@3 F G@2 ~ Y H@2 I J K L M N O P Q R H@2
  S@2 T U V W@2 I X ~@2 Z AA AB@2 AC AD AE AF Z AA AG J AH AI AJ AK A B C@2
>`.pickRestart({
  A: "e3@2 d#3 e3@2 g3@4 e3@3", B: "g3@2 a3 g3@2 c4@3 b3 c4@2 d4", C: "[e4@2 d4 c4@2 b3 c4@2 d4@3 c4@10 ~@3]/2",
  D: "g3/2", E: "e4/3", F: "d4@3 g4@2 a4 b4@2 a4 g4@3", G: "d4/2", H: "e4/2", I: "g4", J: "f4", K: "a4!2 g#4!2",
  L: "g4!2 a4!2", M: "a4!2 g4!2", N: "g4!2 ~@2", O: "e5 d5", P: "c5@2 b4 a4", Q: "g4 d4", R: "e4@3 ~", S: "b3 c4 b3 c4",
  T: "a5 g5", U: "e5", V: "d5", W: "a4", X: "~@2 e4 f4@2 g4 f4@2 e4 d4@2 c4", Y: "c5@4 g4@2 a4@2 e4@2 g4@11 ~@3",
  Z: "g3@2 f#3 g3@2 c4@4 b3@3", AA: "c4@2 d4 c4@2 e4@7", AB: "[e4@2 g4@4 e4@3 e4@2 f4@13]/2",
  AC: "g4@2 a4 a#4@2 b4 g4@2 a4 a#4@2 b4", AD: "g4@2 f#4@3 f4 f4@3 ~@3", AE: "g4 a4 a#4 b4", AF: "g4@2 f#4 f4@2 e4@7",
  AG: "~@2 g4 f#4@2 f#4 f4@3 e4@3", AH: "a4@5 g#4@7", AI: "g4@5 a4@7", AJ: "f#4 f4", AK: "e4",
})).s("gm_clarinet").gain(0.34).pan(0.3)

// other · clarinet · "Clarinet 2"
const clarinet_2 = note(`<
  ~ A B@2 C@2 D@3 E F@2 ~@2 G@2 H I J K L M N O P Q R@2 S@2 N T U@2 V W X ~@2 D@3 E F@2 ~@2 G@2 H I J K L M N O P Q R@2
  S@2 N T U@2 V W X ~@2 Y@4 Z@2 AA V G@2 H I V AB AC V ~ A B@2
>`.pickRestart({
  A: "e3@2 f3 e3@2 g3@3 ~ e3@3", B: "[a3@6 g3@2 f3@3 e3@10 ~@3]/2", C: "e3/2", D: "g3/3", E: "b3 ~@3", F: "b3/2",
  G: "g3/2", H: "a#3", I: "a3", J: "f4!4", K: "e4!4", L: "f#4!2 d4!2", M: "e4!2 ~@2", N: "c5 b4", O: "a4@2 g4 f4",
  P: "d4 b3", Q: "c4@3 ~", R: "c4/2", S: "g#3 a3 g#3 a3", T: "c5", U: "f4", V: "c4", W: "b3",
  X: "~@2 e3 f3@2 g3 f3@2 e3 d3@2 c3", Y: "[g3@33 ~@2 d4@13]/4", Z: "d4/2", AA: "d4", AB: "c4@5 c#4@7", AC: "c4 b3",
})).s("gm_clarinet").gain(0.34).pan(0.3)

// bass · clarinet · "Clarinet 3 (Bass)"
const bass_2 = note(`<
  A@2 B C A@2 ~@6 D ~ E@2 F G H I J K ~@4 L@2 ~@6 M N ~ O P ~@6 D ~ E@2 F G Q R S K ~@4 L@2 ~@6 M N ~ O P T@4 U@2 V W
  X@2 F G ~@4 A@2 B Y
>`.pickRestart({
  A: "c3 ~ g2 ~", B: "f2 ~ g2 ~", C: "c3@6 g2@6 c3@6 ~@4 [g2,a2] b2", D: "g3 ~@3", E: "e3/2", F: "c3", G: "f3",
  H: "c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~", I: "c4@6 c4@5 ~ c#4@6 c#4@5 ~", J: "d4@5 ~ d4@5 ~ b3@5 ~ b3@6",
  K: "c4@5 ~ c4@6 c3@2 g2@2 c3@2 e3@2 c3@2 g2@2", L: "a2/2", M: "f2", N: "g2", O: "~@2 g2!2",
  P: "~@3 g2@2 b2 d3@2 f3@4", Q: "c4@5 ~ c4@6 c4@5 ~ c4@5 ~", R: "c4@5 ~ c4@5 ~ c#4@6 c#4@5 ~",
  S: "d4@6 d4@5 ~ b3@5 ~ b3@5 ~", T: "[c3@33 ~@2 b2@13]/4", U: "g3/2", V: "g3", W: "e3@2 d#3 d3@2 c3@7", X: "c3/2",
  Y: "c3 g2 c3 ~",
})).s("gm_electric_bass_finger").gain(0.45).pan(0.1)

// other · tubular bells
const tubular_bells = note("<~@33 A B C D E@2 ~@27 A F G H E@2 ~@20>".pickRestart({
  A: "~@2 f4 g4", B: "a4 ~@3", C: "b4 ~@3", D: "c5 ~@3", E: "g4 ~@3", F: "a4 ~@2 f4", G: "~ g4 ~@2", H: "~ c5!2 ~",
})).s("gm_tubular_bells").gain(0.64).pan(1)

// chords · piano · "Piano Bright Acoustic"
const piano = note(`<
  ~@10 A@2 B ~@9 C@2 D E@3 F@2 E@2 G H I J K ~@6 A@2 B ~@9 C@2 D E@3 F@2 E@2 G H I J K ~@6 L@2 ~@13 M
>`.pickRestart({
  A: "[g4,b4,d5]!4", B: "[g4,b4,d5] ~@3", C: "[a3,c4]!4", D: "[g3,b3]!4",
  E: "a2@2 e3 a2@2 e3 a2@2 e3 a2@2 e3, [a3,c4]!4", F: "~@2 [e4,g#4] [e4,g#4]@2 [e4,g#4] [e4,g#4]@3 [e4,g#4]@3",
  G: "d3@2 a3 d3@2 a3 d3@2 a3 d3@2 a3, [d4,f4]!4", H: "d3@2 a3 d3@2 a3 d3@2 a3 [e3,e4,g4]@3, [d4,f4]!3 ~",
  I: "[f4,a4]@2 c4 [f4,a4]@2 c4 [f4,a4]@2 c4 [f4,a4]@2 c4", J: "[g4,b4]@2 d4 [g4,b4]@2 d4 [g4,b4]@2 d4 [g4,b4]@2 d4",
  K: "[c4,e4]@2 g3 [c4,e4]@2 g3 [c4,e4]@2 g3 [c4,e4]@2 g3", L: "[b4,d5,f5]!4", M: "~@3 g3@3 [g3,c4,e4]@2 ~@4",
})).s("gm_piano").gain(0.45).pan(0.9)

// chords · electric guitar muted · "Gtr Muted"
const electric_guitar_muted = note("<~@76 A B ~@2 C D@2 E@2 F G H ~@4>".pickRestart({
  A: "~@16 f4@7 ~, ~@16 e4 ~@7", B: "~@3 d4@5 f4@4", C: "~ d4 ~ c3, ~ c4",
  D: "[c4@2 ~@10 c3@3 c3@3 ~@3 c3@2 d3, ~@2 c4@3 g3@3 d4@3 c4@4 c4@5 a#3@4, ~ c3!3 ~@2 c3 ~]/2",
  E: "[f3@3 d4@3 d#4@2 ~@7 f4@3 ~@2 d#3 ~@2 d3, ~@2 d#4 ~@3, ~@3 f2@2 ~@2 c3, ~@11 a3@7 ~@6]/2",
  F: "c3@3 [c3,c4]@3 e3@3 ~@2 g3, ~ c#4, ~@3 e3", G: "[f#3,f#4]@3 [f#3,f#4]@3 ~@5 b3, ~@6 d4@5 ~, ~@2 b2!2, ~@2 g4",
  H: "c4 [g3,c4,e4] [e3,g3,c4] ~", // C
})).s("gm_electric_guitar_muted").gain(0.54).pan(1)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@5 C A D E ~ F A F A G@4 ~@17 A@5 H E ~ F C F A G@4 ~@17 A@3 C A I E ~ F J K L A@3 M ~@3 N
>`.pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x!3 ~", C: "x ~@2 x ~ x!2 ~@2 x ~@2", D: "x ~@2 x ~ x!2 ~ x ~ x ~", E: "x",
  F: "~@3 x ~ x!2 ~@2 x ~ x", G: "~ x ~ x", H: "x ~@2 x ~ x!2 ~@3 x ~", I: "x ~@5 x ~@3 x ~ x ~@5 x ~@4 x",
  J: "x ~@4 x!2 ~@2 x ~ x", K: "x ~@4 x!2 ~@2 x ~@2", L: "x ~@2 x ~ x!2 ~@2 x!2 ~", M: "x ~@3 x!2 ~@4 x!2 ~@12",
  N: "~ x ~@2",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct(`<
  A@2 ~@2 A@2 ~ A ~ B ~ C ~@2 A@2 ~@2 A@2 ~@10 D E A C ~@4 A@3 ~@2 F C ~@2 A C ~ G ~@4 A@2 ~ H ~@2 I ~@2 A ~ A ~@5 A@2 ~
  C ~ C ~ C A D J C ~@3 K L@3 M
>`.pickRestart({
  A: "~@2 x", B: "~@11 x", C: "~@8 x ~@2 x", D: "~@3 x ~@4 x ~@3", E: "x ~@4 x ~@3 x ~@2", F: "~ x ~@4",
  G: "~ x ~@2 x ~", H: "~@2 x ~@2 x ~@6", I: "x", J: "~@3 x ~@4 x ~@2 x", K: "~ x!2 ~", L: "x!4", M: "~ x ~ x ~@2",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A@12 B ~ A@4 C@4 A@6 ~@2 A@4 D@2 E ~@2 A@6 B ~ A@4 C@4 A@6 ~@2 A@4 D@2 E ~@2 A@6 B ~ A@7 F G H I J
>`.pickRestart({
  A: "~ x ~ x", B: "x", C: "x ~@2 x ~ x!2 ~@2 x ~ x", D: "~@4 x!3 ~@3 x!3 ~@11", E: "~ x!3", F: "~ x!2 ~",
  G: "x ~@5 x ~@3 x!3 ~@3 x ~ x ~@3 x!2", H: "x ~@3 x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3 x!2",
  I: "x ~@5 x ~@3 x!3 ~@5 x ~@3 x!2", J: "x!3 ~",
})).gain(0.62)

stack(bass, clarinet, clarinet_2, bass_2, tubular_bells, piano, electric_guitar_muted, kick, snare, clap, hihat)

More by The Beatles