Strudelify
Let It Be cover art

Let It Be

Let It Be

The Beatles

KeyC majorTempo70 bpm
0:00/0:00
// Let It Be — The Beatles
// 70 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "Guitar Distort" named as a guitar, played on distortion guitar (its lead 2 sawtooth patch is not one)
// note: duplicate parts dropped: ch 7 "Guitar Electric" electric guitar muted (copy of ch 4 "Guitar Distort" distortion guitar)
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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 · piano
const piano = note(`<
  A B C D C E C F C E C F G H I J C E C F C E C F G H I K L M N O P Q R S C E C F C E C F G H I J C E C F C E C F G H I
  K L M N O P T ~
>`.pickRestart({
  A: "[c4,e4,g4,c5]!2 [b3,d4,b4]!2", B: "[c4,e4,a4]@2 [c4,e4] g4 [c4,f4] e4 [d4,f4,a4]@2, ~ a4!2 ~",
  C: "[c4,e4,g4]!2 [b3,d4,g4]!2", D: "[f4,a4]@2 [e4,g4] [d4,f4] [c4,e4,g4]@3 ~", E: "[e4,a4,c5]!2 [d4,f4,a4]!2",
  F: "[d4,f4,a4]@2 [c4,g4] [c4,f4] [c4,e4,g4]@2 [c4,e4,g4]@2", G: "[e4,a4,c5] [a4,c5,e5] [g4,b4,d5]!2",
  H: "[c4,f4,a4]!2 [c4,e4,g4]!2", I: "[g4,c5,e5] [g4,c5,f5] [g4,b4,e5]!2",
  J: "[f4,a4,d5]@2 [c4,g4] [c4,f4] [c4,e4]@2 [g3,c4,e4]@2", K: "[f4,a4,d5]@2 [c4,g4] [c4,f4] [c4,e4]@2 [g4,b4] [d4,g4]",
  L: "[e4,a4,c5]!2 [g4,b4,d5]!2", M: "[d4,f4,a4]!2 [e4,g4,c5]!2", N: "[e4,g4,c5]!2 [d4,g4,b4]!2",
  O: "[d4,f4,a4]@2 [c4,g4] [c4,f4] [c4,e4]@2 ~@2", // Dm C5 F5 C
  P: "[a4,c5,a5]@2 [g4,b4,g5] [f4,a4,f5] [e4,g4,e5]@2 [d4,f4,d5] [c4,f4,c5]", // Am G F Em Dm F5
  Q: "[d4,g4,b4,d5] [f4,a4,c5,f5] [e4,g4,c5,e5]@2", // G F C
  R: "[c5,f5,a5,c6]@2 [c5,e5,g5,c6] [d5,f5,a5,d6] [e5,g5,c6,e6]@2 [d5,e5,g5,d6] [c5,e5,g5,c6]", // F C Dm C Em7 C
  S: "[b4,d5,g5,b5]@2 [c5,f5,a5,c6]@2 [c5,e5,g5,c6] e5 d5 a4, ~@12 d#5 ~ c5 ~", // G F C
  T: "[b3,d4,g4,b4] [a3,c4,f4,a4] [g3,c4,e4,g4]@2", // G F C
})).s("gm_piano").gain(0.71).pan(0.4)

// bass · piano · "Piano Bass"
const bass = note("<A B C D A E F G A E F H I J K L A E F G A E F H I J K M N O P Q ~@35>".pickRestart({
  A: "c3 c2 c3 c2 g3 g2 g3 g2", B: "a3 a2 a3 a2 f3 f2 f3 f2", C: "g3 g2 g3 g2 g3 g2 g3 g2", D: "f3 f2 g2@2 c3 c2 c3 c2",
  E: "a3 a2 a3 g3 f3 f2 f2@2", F: "c3 c2 c3 c2 g2@2 g2@2", G: "f3@2 e3 d3 c3 c2 c3 c2", H: "f3@2 e3 d3 c3!3 b2",
  I: "a2!4 g2!4", J: "f2!4 c3!4", K: "c3!4 g2!4", L: "f2 f3 e3 d3 c3!4", M: "f2 f3 e3 d3 c3@2 b2@2", N: "a2!2 g2!2",
  O: "f2!2 c3!2", P: "c3!2 g2!2", Q: "f2 f3 e3 ~@5",
})).s("gm_piano").gain(0.71).pan(0.3)

// bass · electric bass finger · "Piano Bass"
const bass_2 = note("<~@31 A B C D E F G H I F G H J K L M N F G H I F G H J K L M O P Q R S B T ~>".pickRestart({
  A: "~@8 c3@2 c3!4 c3@2", B: "f3@2 e3 d3 c3@2 a#2 a2", C: "g2 g1 f2 f1 [c2,c3]@2 c2@2", D: "f3 c4", E: "g3 f3 c4@2",
  F: "c3 c2 c3 c2 g3 g2 g3 g2", G: "a3 a2 a3 g3 f3 f2 f2@2", H: "c3 c2 c3 c2 g2@2 g2@2", I: "f3@2 e3 d3 c3 c2 c3 c2",
  J: "f3@2 e3 d3 c3!3 b2", K: "a2!4 g2!4", L: "f2!4 c3!4", M: "c3!4 g2!4", N: "f2 f3 e3 d3 c3!4",
  O: "f2 f3 e3 d3 c3@2 b2@2", P: "a2!2 g2!2", Q: "f2!2 c3!2", R: "c3!2 g2!2", S: "f2@2 f3@2 e3@2 d3@2 c3@2 c3!4 c3@2",
  T: "g2@2 f2 g2 c2@4",
})).s("gm_electric_bass_finger").gain(0.71).pan(0.3)

// chords · distortion guitar · "Guitar Distort"
const distortion_guitar = note("<~@35 A B C D E F G H I@2 ~@22>".pickRestart({
  A: "~@5 e5 [d5,d#5] [a4,c5]", B: "g4@4 g4 c5 d5@2", C: "e5@2 ~ d5 a4 c5 [f4,a4,c5]@2",
  D: "[c5,e5]@4 ~@2 e5!2 [g4,b4]@4 [g4,b4]@4, ~ [c5,f5] ~@2", E: "d5@2 c5@2 c5@8 ~@3 [e4,g4]",
  F: "[e4,g4]@4 ~@2 c5 g4 [b3,d4]@4 c5 d5@3, ~ [c4,a4] ~ g4", G: "d5 e5@3 e5@2 d5!2 [f4,a4]@4 [c4,f4]@4, ~@8 d5 ~@7",
  H: "g5@2 [c5,f5]@2 b5 d5 [g4,b4]!2", I: "[[f4,a4,d5]@2 [e4,g4,b4] [d4,a4,c5] [c4,c5,e5]@6 ~@6]/2",
})).s("gm_distortion_guitar").gain(0.8).pan(0.1)

// chords · church organ · "Organ"
const church_organ = note("<~@32 A B C D E F E G E F E G H I J K ~@3 L E F E G M I N O M P Q R A S ~>".pickRestart({
  A: "[a4,c5,a5]@2 [g4,b4,g5] [f4,a4,f5] [e4,g4,e5]@2 [d4,f4,d5] [c4,f4,c5]", // Am G F Em Dm F5
  B: "[d4,g4,b4,d5] [f4,a4,c5,f5] [e4,g4,c5,e5]@2", // G F C
  C: "[c5,f5,a5,c6]@2 [c5,e5,g5,c6] [d5,f5,a5,d6] [e5,g5,c6,e6]@2 [d5,e5,g5,d6] [c5,e5,g5,c6]", // F C Dm C Em7 C
  D: "[b4,d5,b5] [c5,f5,a5] [c5,e5,g5] ~", E: "[c4,e4,g4] [b3,d4,g4]", F: "[e4,a4,c5] [d4,f4,a4]",
  G: "[d4,f4,a4]@2 [c4,g4] [c4,f4] [c4,e4,g4]@4", H: "[e4,a4,c5] [e4,g4,b4]", I: "[c4,f4,a4] [c4,e4,g4]",
  J: "[g4,c5,e5] [g4,b4,e5]", K: "[f4,a4,d5]@2 [c4,g4] [c4,f4] [g3,c4,e4]@4", L: "~@15 g4", M: "[e4,a4,c5] [g4,b4,d5]",
  N: "[g4,c5,e5] [g4,c5,f5] [g4,b4,e5]!2", O: "[f4,a4,d5]@2 [c4,g4] [c4,f4] [c4,e4]@2 [g4,b4] [d4,g4]",
  P: "[d4,f4,a4] [e4,g4,c5]", Q: "[e4,g4,c5] [d4,g4,b4]", R: "[d4,f4,a4]@2 [c4,g4] [c4,f4] [c4,e4]@2 ~@2",
  S: "[b3,d4,g4,b4] [a3,c4,f4,a4] [g3,c4,e4,g4]@2", // G F C
})).s("gm_church_organ").gain(0.66).pan(1)

// bass · electric bass finger · "Bass Guitar"
const bass_3 = note(`<
  ~@20 A B C D E F G H I J K L M N O P A B C Q A B C D E F G R ~@4 A B C D E F G H I J K L M S ~
>`.pickRestart({
  A: "c3 c2 c3 c2 g3 g2 g3 g2", B: "a3 a2 a3 g3 f3 f2 f2@2", C: "c3 c2 c3 c2 g2@2 g2@2", D: "f3@2 e3 d3 c3!3 b2",
  E: "a2!4 g2!4", F: "f2!4 c3!4", G: "c3!4 g2!4", H: "f2 f3 e3 d3 c3@2 b2@2", I: "a2!2 g2!2", J: "f2!2 c3!2",
  K: "c3!2 g2!2", L: "f2@2 f3@2 e3@2 d3@2 c3@2 c3!4 c3@2", M: "f3@2 e3 d3 c3@2 a#2 a2", N: "g2 g1 f2 f1 [c2,c3]@2 c2@2",
  O: "f3 c4", P: "g3 f3 c4@2", Q: "f3@2 e3 d3 c3 c2 c3 c2", R: "f2 f3 e3 d3 c3!4", S: "g2@2 f2 g2 c2@4",
})).s("gm_electric_bass_finger").gain(0.5).pan(0.7)

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

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@35 A ~@2 B ~ B ~@2 C ~@11 B ~@8 D E ~>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@13 x ~@2", D: "~@3 x ~@3 x", E: "~@3 x ~@4",
})).gain(0.71)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@23 B A B C B C B@2 ~@12 D ~@4 E ~@6>".pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "~@3 x", D: "~@4 x!3 ~", E: "~ x",
})).gain(0.71)

// drums · open hat
const open_hat = s("oh").struct("<~@40 x ~@26>").gain(0.71)

// drums · high tom
const high_tom = s("ht").struct("<~@35 A ~ B ~ C ~ B@2 ~@8 D ~@15>".pickRestart({
  A: "~@13 x ~@2", B: "~@3 x", C: "~@4 x!3 ~", D: "~@6 x!2",
})).gain(0.71)

// drums · crash
const crash = s("cr").struct("<~@12 A ~@11 A ~@3 A ~@2 A B C B D A@9 ~@7 A ~ A ~ A ~ A@3 ~ A B@2 C ~>".pickRestart({
  A: "x", B: "x!2", C: "x!3 ~", D: "x!4",
})).gain(0.71)

// drums · ride bell
const ride_bell = s("rd").struct("<~@12 A B@3 ~@8 A B@3 A B@2 A ~@35>".pickRestart({
  A: "~ x!3", B: "x!4",
})).gain(0.71)

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

stack(
  piano, bass, bass_2, distortion_guitar, church_organ, bass_3, kick, snare, hihat, low_tom, mid_tom, open_hat,
  high_tom, crash, ride_bell, tambourine
)

More by The Beatles