Strudelify
Lovely Rita cover art

Sgt. Pepper's Lonely Hearts Club Band

Lovely Rita

The Beatles

KeyE majorTempo96 bpm
0:00/0:00
// Lovely Rita — The Beatles
// 96 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "Clarinet" named as a reed, played on clarinet (its flute patch is not one)
// note: Full arrangement: all 51 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · "Bass guitar"
const bass = note(`<
  ~@4 A B C A D E F G H I J H I J K L M F N@3 O D E F G H I J H I J K D E F A B C A@2 B C A P Q R
>`.pickRestart({
  A: "b2 d#3 b2 f#3 b2 d#3 b2 f#3", B: "a2 c#3 a2 e3 a2 c#3 a2 e3", C: "e2 g#2 e2 b2 e2 g#2 e2 b2",
  D: "e2@3 ~ e2@3 ~ d2 d2@2 ~ a1@4", E: "e2@2 e2 ~ e2 ~ e2 ~ b1 ~ b1 ~ b1 ~ b1@2",
  F: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", G: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ f#2 ~ b2 ~ b1 ~",
  H: "e2 ~ e2 ~ e2 ~ e2 ~ a1 ~ a1 ~ a1 ~ a1 ~", I: "d2 ~ d2 ~ d2 ~ d2 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  J: "e2 ~ e2 ~ e2 ~ e2 ~ b1 ~ b1 ~ b1 ~ b1 ~", K: "e2 ~ e2 ~ c#2 ~ c#2 ~ a1 ~ a1 ~ b1 ~ b1 ~",
  L: "e2 ~ e2 ~ e2 ~ e2 ~ d2 d2@2 ~ a1 ~ a1@2", M: "e2 ~ e2 ~ e2 ~ e2 ~ b1 ~ b1 ~ b1 ~ b1@2",
  N: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", O: "b1@7 ~", P: "a2!8", Q: "a2!6 e3 d3", R: "d3 ~",
})).s("gm_fretless_bass").gain(0.56)

// chords · piano
const piano = note("<~@8 A B C D E F G H I G J K L M N O P@2 A B C D E F G H I G J A B C ~@8 Q R S>".pickRestart({
  A: "[e4,g#4,b4]@2 e3@2 [e4,g#4,b4]@2 e3@2 [d3,d4,f#4,a4] [d4,f#4,a4]@2 ~ [a3,e4]@2 a#2 ~, e3 ~@8 d3 ~@2 [a2,c#4] ~@3", // E D A5 A
  B: "[e4,g#4,b4]@2 e3@2 [e4,g#4,b4]@2 e3@2 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4] ~ [b3,d#4,f#4] c3, e3 ~@7 b2 ~ b2@4 ~@2", // E B
  C: "[c#4,e4,g#4] c#3 [c#4,e4,g#4] c#3 [f#3,a#3,c#4] f#2 [f#3,a#3,c#4] f#2, c#3 ~@7 f#2 ~@7", // C#m F#
  D: "[b3,d#4,f#4]@2 b2@2 [b3,d#4,f#4]@2 b2@2 [b3,d#4,f#4]@2 b2 [b3,e4,g#4]@2 b2 [b3,d#4,f#4] ~, b2 ~@15", // B E B
  E: "[e4,g#4,b4] e3 [e4,g#4,b4] e3 [a3,c#4,e4] a2 [a3,c#4,e4] a2, e3 ~@7 a2 ~@7", // E A
  F: "[d4,f#4,a4] d3 [d4,f#4,a4] d3 [g3,b3,d4] g2 [g3,b3,d4] g2, ~@8 g2 ~@7", // D G
  G: "[e4,g#4,b4] e3 [e4,g#4,b4] e3 [b3,d#4,f#4] b2 [b3,d#4,f#4] b2, e3 ~@7 b2 ~@7", // E B
  H: "[e4,g#4,b4] e3 [e4,g#4,b4] e3 [a3,c#4,e4] a2 [a3,c#4,e4] a2, e3 ~@15", // E A
  I: "[d3,d4,f#4,a4] d3 [d4,f#4,a4] d3 [g2,g3,b3,d4] g2 [g3,b3,d4] g2", // D G
  J: "[e4,g#4,b4] ~ [a3,c#4,e4] ~ [f#3,a#3,c#4] ~ [b3,d#4,f#4] ~", // E A F# B
  K: "[e3,e4,g#4,b4]@2 e3@2 [e4,g#4,b4]@2 e3@2 [d4,f#4,a4] [d4,f#4,a4]@3 [a3,c#4,e4]@2 a2@2, ~@8 d3@2 ~@2 a2 ~@3", // E D A
  L: "[e3,e4,g#4,b4]@2 e3@2 [e4,g#4,b4]@2 e3@2 [b2,b3,d#4,f#4]@2 b2@2 [b3,d#4,f#4]@2 [b3,d#4] c3, ~@8 e4 ~@5 f#4@2", // E B
  M: "[c#3,c#4,e4,g#4]@2 c#3@2 [c#4,e4,g#4]@2 c#3 ~ [f#3,a#3,c#4]@2 f#2@2 [f#3,a#3,c#4]@2 f#2@2, ~@8 [f#2,g#2] ~@7", // C#m F# F#sus2
  N: "[b3,d#4,f#4] b2 [b3,d#4,f#4] b2 [a3,c#4,e4] b2 [b3,d#4,f#4] b2, b2 ~@15", // B A B
  O: "[b3,d#4,f#4]@2 b2@2 [b3,d#4,f#4]@2 b2@2 [b3,d#4,f#4]@2 b2@2 [b3,d#4,f#4]@2 b2 ~", // B
  P: "[[a3,c#4,e4]@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 a2 [c#4,e4] ~ [b2,b3,d#4,f#4]@16 ~@2, a2@10 ~ a3@2 ~@19]/2", // A C#m B
  Q: "[a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~ [a3,e4,g4] ~", // A7
  R: "[b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,a4] ~ [c4,e4,b4] ~ [c4,e4,c5] ~", // Em C Am Cmaj7 C
  S: "~@4 [g#5,a5] [b4,c#5,d#5,e5,f#5] [e4,f#4,g#4,a4] [b3,c#4,d#4] [a2,a3,c#4,e4] ~@7, [c4,e4,c5]@3 ~@5", // Amaj7 B F#m7 B A C
})).s("gm_piano").gain(0.4).pan(0.4)

// chords · clarinet
const clarinet = note("<~@4 A B C D ~@32 A B C D A B C D ~@3>".pickRestart({
  A: "[b4,f#5]@3 ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~ [b4,f#5]@2 [c#5,g#5]@2", B: "[b4,f#5]@2 [a4,e5]@3 ~ [a4,e5]@6 ~@4",
  C: "[g#4,b4]@3 ~ [g#4,b4]@3 ~ [g#4,b4]@3 ~ d#5@2 e5@2, ~@12 g#4 ~ a4 ~", D: "[g#4,c#5]@2 [f#4,b4]@3 ~ [f#4,b4]@9 ~",
})).s("gm_clarinet").gain(0.3)

// chords · piano · "Elec. Piano" · G#m F# G#m E F#m A E5 G#m …
const piano_2 = note(`<
  ~@26
  [[g#5,b5] ~@2 [f#5,a#5] [g#5,b5] [e5,g#5]@3 [f#5,a5] [a5,c#6]@2 ~ e5 [b4,e5]!3]
  [[g#5,b5] ~@2 [f#5,a#5] [g#5,b5] [e5,g#5]@2 [f#5,a5]@2 [d#5,f#5] ~ [d#5,f#5] [e5,g#5] [c#5,d#5,f#5,g#5] [b4,e5] [a4,a#4,d5,d#5]]
  [[g#4,c#5]@2 ~ [g#4,c#5] [c#5,e5] [e5,g#5] ~ [d#5,f#5]@3 [c#5,f#5] ~ [f#5,a5] ~ [c#5,a5] ~]
  [[d#5,f#5]@5 [d5,f#5] [c#5,e5] ~@2 d#3 f#3 b2@2 [b3,c#4] [d#4,e4] [f#4,g#4,a4,b4,c#5], ~@7 [b4,d#5]@8 ~]
  [[d#5,e5] ~@15]
  ~@20
>`).s("gm_piano").gain(0.8)

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

// drums · snare
const snare = s("sd").struct("<~@3 A B@3 C B@17 D B@17 C B@3 C ~ E ~>".pickRestart({
  A: "~@2 x ~@4 x ~@8", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~@2 x ~@4 x ~@5 x ~@2", E: "~@10 x!3 ~@3",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@13 x!2 ~] ~@21 [~@13 x!2 ~] ~@25>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@3 B A@10 C A@6 ~ A@10 C A@13 ~>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!6 ~@2",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 [~@4 x ~@3 x!2 ~ x ~@4] ~@21 [~@4 x ~@3 x!2 ~ x ~@4] ~@25>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@7 A ~@10 B ~@6 C ~@10 B ~@13 C>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@8 x ~@17 x ~@23 x>").gain(0.56)

// drums · ride
const ride = s("rd").struct("<~@4 [x!8]!4 ~@43>").gain(0.56)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@33 [x!16]!4 ~@14>").gain(4.06)

stack(bass, piano, clarinet, piano_2, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride, cabasa)

More by The Beatles