Strudelify
With a Little Help From My Friends cover art

Sgt. Pepper's Lonely Hearts Club Band

With a Little Help From My Friends

The Beatles

KeyE majorTempo115 bpm
0:00/0:00
// With a Little Help From My Friends — The Beatles
// 115 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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 · electric bass finger · "Bass guitar"
const bass = note(`<
  ~@2 A B C D A B C D E F E F E F ~@2 A B C D A B C D E F E F E F G H I J G H I J A B C D A B C D E F E F E F G H I J G
  H I J K L M N O F P Q R S T@2
>`.pickRestart({
  A: "e3 b2", B: "c#3@12 f#2@11 ~", C: "f#2 b2", D: "e2@5 f#3@3 e3 c#3@2 b2", E: "d2 ~@2 d2@2 ~ c#2@2 ~ c#2@2 ~",
  F: "b1 ~@2 b1@2 e2@3 b1 e2@2 b1", G: "c#2@5 c#3@3 b2 g#2@3", H: "f#2@5 e2@3 d#2 c#2@3",
  I: "e2@2 ~ e2@2 ~ d2@2 ~ d2@2 ~", J: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~", K: "d2@2 ~ d2@2 ~ c#2@2 ~ c#2 ~@2",
  L: "b1 ~@2 b1 ~ e2@3 b1 e2@2 b1", M: "d2@2 ~ d2@2 ~ c#2@2 ~ c#2@2 ~", N: "b1@2 ~ b1 ~ e2@3 b1 e2@2 b1",
  O: "d2@2 ~ d2@2 ~ c#2 ~@2 c#2 ~@2", P: "d2", Q: "a1@11 ~", R: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~",
  S: "b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~", T: "[e1@17 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.8).pan(0.6)

// chords · piano
const piano = note(`<
  ~@2 A B C D@2 E F G H I H I H I J@2 A B C D@2 E F G H I H I H I K L M N K L M N A B C D@2 E F G H I H I H I K L M N K
  L M N O P Q P R S T U V W X@2
>`.pickRestart({
  A: "[e3,g#3,b3] ~@2 [e2,e3,g#3,b3] ~ e2 [d#3,f#3,b3] ~@2 [b1,d#3,f#3,b3] ~ b1, e2 ~@2 b1 ~@2", // E B
  B: "[f#3,a3,c#4] ~@2 [f#2,f#3,a3] ~ f#2 [f#2,f#3,a3] ~ f#2 [f#3,a3,c#4]@2 f#2, f#2@2 ~ c#4@2 ~ c#4@2 ~ f#2 ~@2", // F#m
  C: "[f#2,f#3,a3] ~@2 [f#2,f#3,a3,c#4] ~ f#2 [b1,b3]@2 ~ [b1,d#3,f#3,b3] ~ b1, c#4@2 ~@4 [d#3,f#3] ~@5", // F#m B D#m
  D: "[[e2,b3]@2 ~ [e3,g#3,b3]@2 e2 [e3,g#3,b3]@2 ~ [e3,g#3,b3]@2 ~ [e3,g#3,b3]@2 ~ [e3,g#3,b3]@2 e2 [b1,d#3,f#3,b3]@2 ~ [d#3,f#3,b3]@2 b1, [e3,g#3] ~@2 e2 ~@2 e2 ~ e2@2 ~ e2@3 ~ e2 ~@5 b1 ~@2]/2", // E5 E B E
  E: "[f#2,f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@2 f#2 [f#3,a3,c#4]@2 f#2 [f#3,a3,c#4]@2 f#2, ~@3 f#2 ~@2 f#2 ~@2 f#2 ~@2", // F#m
  F: "[f#2,f#3,a3,c#4]@2 ~ [f#2,f#3,a3,c#4] ~ f#2 [d#3,f#3,b3]@2 ~ [d#3,f#3,b3]@2 b1, ~@6 b1 ~@2 b1 ~@2", // F#m B
  G: "[e2,e3,g#3,b3]@2 ~ [e3,g#3,b3]@2 e2 [e3,g#3,b3]@2 ~ [e3,g#3,b3] ~ e2, ~@3 e2 ~@2 e2 ~ e2@2 ~@2", // E
  H: "[d3,f#3,a3]@3 ~@3 [d3,f#3,a3]@3 ~@3 [c#3,e3,a3]@4 ~@2 [c#3,e3,a3]@3 ~@3", // D A
  I: "[e3,g#3,b3]@4 ~@2 [e3,g#3,b3]@2 ~@2 [g#3,b3]@6 e3@2 [g#3,b3]@4 e3 ~, ~@10 e3@3 ~@11", // E G#m
  J: "[[f#3,b3]@13 ~@11, d#3@7 ~@5]/2", K: "[c#3,e3,g#3]@4 ~ [c#3,e3,g#3]@3 c#2 [c#3,e3,g#3]@2 c#2, c#2 ~",
  L: "[f#3,a#3,c#4]@2 ~ [f#3,a#3,c#4]@2 ~ [f#3,a#3,c#4]@2 f#2 [f#3,a#3,c#4]@2 f#2, f#2 ~", // F#
  M: "[e3,g#3,b3]@2 ~ [e3,g#3,b3]@2 e2 [f#3,a3] ~ d3 [d3,f#3,a3]@2 d2, e2@4 ~@2 d2@3 ~@3, ~@3 d3 ~@2", // E F#m D
  N: "[a2,c#3,e3]@2 ~ [a2,c#3,e3] ~ [a2,c#3,e3]@3 a1 [a2,c#3,e3]@2 a1, a1 ~, a#1 ~@11", // A
  O: "[f#3,a3] ~@2 [d3,f#3,a3] ~@2 [b2,c#3,e3] ~@2 [c#3,e3,a3] ~@2, d3 ~@2 a3 ~@2", // F#m D C#m7 A
  P: "[e3,g#3,b3]@2 ~ [e3,g#3,b3] ~ [g#3,b3]@3 e3 [g#3,b3]@2 e3, ~@5 e3@2 ~@5", // E G#m
  Q: "[d3,f#3,a3] ~@2 [d3,f#3,a3] ~@2 [c#3,e3,a3] ~@2 [e3,a3]@2 ~, ~@9 c#3 ~@2", // D A A5
  R: "[d3,f#3,a3] ~@2 [d3,f#3,a3] ~@2 [c#3,e3,a3]@2 ~ [c#3,e3,a3] ~@2", // D A
  S: "[g#3,b3]@2 ~ [e3,g#3,b3] ~ [g#3,b3]@3 e3 [g#3,b3]@2 e3, e3 ~@4 e3 ~@6", T: "[d3,f#3,a3]@5 ~",
  U: "[a2,c#3,e3]@5 ~", V: "[c3,e3,g3]@2 ~ [c3,e3,g3]@2 ~ [c3,g3]@2 ~ [c3,e3,g3] ~@2, ~@6 e3 ~@5",
  W: "[c#3,e3,a3]@2 ~ [c#3,e3,a3]@2 ~ [c#3,e3,a3]@2 ~ [c#3,e3] ~@2, ~@9 a3@2 ~", X: "[[e3,g#3,b3]@3 ~]/2",
})).s("gm_piano").gain(0.45).pan(0.4)

// other · electric guitar clean · "Guitar"
const electric_guitar_clean = note("<A B C D E F G D H I ~@9 J@3 ~ K L@2 ~@15 M@3 ~ N@3 ~@26>".pickRestart({
  A: "e4@3 ~@2 e4 d#4@3 ~@2 d#4", B: "c#4@3 ~@2 c#4 b3@3 ~@3", C: "e3@5 ~ b2@6", D: "c#3 f#2", E: "f#2 b2",
  F: "e2@4 ~ f#3@2 ~ e3 c#3@2 b2", G: "e2@6 b2@5 ~", H: "f#2@6 c#3@2 b2 g#2@2 f#2", I: "e2@5 e3@2 ~ e2 g#2@2 b2",
  J: "[~@16 a4@2 g#4@2 ~@2 g#4@4 ~@2 f#4 ~ f#4@3 ~ f#4@4 ~@2 e4@2 f#4@2 ~@2 g#4@8 ~@18]/3",
  K: "~@16 a4@2 ~ g#4@3 g#4@2", L: "[~@4 f#4 ~ f#4 ~ f#4 ~ f#4@5 ~@3 e4@2 ~@2 g#4@8 ~@18]/2",
  M: "[~@8 a4 g#4 ~ g#4@2 ~ f#4!3 f#4@3 ~ e4 f#4 g#4@4 ~@9]/3",
  N: "[~@8 a4 g#4 ~ g#4@2 ~ f#4!2 ~ f#4 f#4@2 ~ e4 ~ g#4@4 ~@9]/3",
})).s("gm_electric_guitar_clean").gain(0.59).pan(0.7)

// other · electric guitar clean · "Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  [~ g#5 f#5 g#5 f#5 g#5 ~ f#5 e5 f#5 e5 f#5]
  [~ e5 d#5 e5 d#5 e5 ~ d#5 c#5 d#5 c#5 b4]
  ~@72
>`).s("gm_electric_guitar_clean").gain(0.29).pan(0.7)

// chords · overdriven guitar · "Guitar 2"
const overdriven_guitar = note("<~@15 A B@2 ~@56>".pickRestart({
  A: "~@2 [g#4,b4] [f#4,a4]@2 ~ e4@2 ~ [d#4,f#4]@2 [c#4,e4], ~@6 g#4 ~@5", B: "[b3@13 ~@11, f#4@11 ~@13]/2",
})).s("gm_overdriven_guitar").gain(0.72).pan(0.3)

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

// drums · snare
const snare = s("sd").struct("<~@6 [~ x ~ x]!10 x ~ [~ x ~ x]!54 ~@2>").gain(0.62)

// drums · low tom
const low_tom = s("lt").struct("<~@17 [~@2 x ~@6 x ~ x] ~@56>").gain(0.62)

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

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

// drums · open hat
const open_hat = s("oh").struct("<~@16 x ~@55 x ~>").gain(0.62)

// drums · high tom
const high_tom = s("ht").struct("<~@16 [~@5 x ~@6] ~@57>").gain(0.62)

// drums · crash
const crash = s("cr").struct("<~@72 x ~>").gain(0.62)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@10 A@6 B ~@9 A@6 ~@6 C D ~@8 A@6 ~@6 C D A@10 ~@2>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x ~@2 x ~@2 x ~ x!2 ~ x",
})).gain(3.15)

stack(
  bass, piano, electric_guitar_clean, electric_guitar_clean_2, overdriven_guitar, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash, cabasa
)

More by The Beatles