Strudelify
Don't Let Me Down cover art

Let It Be... Naked

Don't Let Me Down

The Beatles

KeyA majorTempo70 bpm
0:00/0:00
// Don't Let Me Down — The Beatles
// 70 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "GUITAR" named as a guitar, played on electric guitar clean (its shakuhachi patch is not one)
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// bass · electric bass finger · "BASS"
const bass = note(`<
  A@2 B C A@2 D C A E B F G H C A I A J D F A E B F G H C K@2 L M K@2 L N A@2 D F A@2 D C J@2 D F O P A C Q J@2 B F A J
  B A O H C K@2 L M K@2 L N R
>`.pickRestart({
  A: "c2@13 ~ c2 ~", B: "g#2@13 ~ g#2 ~", C: "c2@13 ~ c2@2", D: "g#2@13 ~ g#2@2", E: "c2@14 g1 ~", F: "c2@5 g2 c3 g2",
  G: "f2@5 ~ f2@2 g#2@8", H: "d2@8 c#2@5 ~ c#2@2", I: "c2@5 ~ c2@2 f2@8", J: "c2", K: "c2@5 ~ c2 ~ c2@5 ~ c2 ~",
  L: "d2@3 d2 c#2@3 c#2", M: "c2@5 ~ c2@2 c2@6 c2@2", N: "c2@5 ~ c2 ~ c2@5 ~ c2@2", O: "f2@8 g#2@5 ~ g#2@2",
  P: "d2@5 ~ d2@2 c#2@5 ~ c#2@2", Q: "c2 f2", R: "c2@5 ~@11",
})).s("gm_electric_bass_finger").gain(0.47)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean = note(`<
  A@2 B C D@2 B E F@2 B G H I C@2 J D@2 K E D@2 L C M N G O@2 P E F@2 Q G O@2 B G D@2 B C D@2 K G R S C G T A@2 B G F@2
  B E U V C O@2 W E A@2 X E Y
>`.pickRestart({
  A: "[~@6 [c4,d4,g4] ~ [c4,d4,g4]@5 ~ [c4,e4,g4] ~ [c4,e4,g4]@5 ~ [c4,d4,g4] ~@7 [c4,d4,g4] ~, c3, ~ g3@6 g3, ~@12 [c4,d4,g4]@3 ~]/2", // Csus2 C Csus2
  B: "c4@6 a#3@9 ~, [g#2,g#3,d#4]@15 ~", C: "e4@6 d4@9 ~, [c3,c4,g4]@15 ~",
  D: "[g3 ~@13 g3@7 ~ g3@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2, c3@31 ~, ~@6 [c4,d4,g4]@17 ~@3 g3@5 ~]/2", // Csus2
  E: "d4@5 ~ e4@9 ~, [c3,c4,g4]", // C5
  F: "[~@6 [c4,d4,g4] ~ d4@5 ~ e4@8 ~@4 d4@2 c4@2 g3@2, c3, ~@8 g4@23 ~, ~@8 c4@14 g3@7 ~@3]/2", // Csus2
  G: "[e4,g4,c5]@6 [d4,g4,c5]@9 ~, c3", H: "[a#3,c4,f4]@6 f3 ~@3 [g#3,c4,d#4]@3 ~ [g#3,c4,d#4] ~, f3@5 ~@11",
  I: "~@2 [a3,d4,f#4]@3 ~ [a3,d4,f#4] ~ [c4,d#4,f4,g#4]@5 ~ [c4,d#4,f4,g#4] ~", J: "[b3,d4,e4,g4] [c4,e4,g4,a4]",
  K: "a#3@5 ~ c4@9 ~, [g#2,g#3,d#4]", L: "[c4,d#4,g#4]@6 [a#3,d#4,g#4]@9 ~, g#2",
  M: "[c4,f4,a#4]@8 [g#3,c4,d#4]@6 g#2 ~, ~@8 g#2@5 ~@3", N: "[a3,d4,f#4]@6 d3 ~ [c4,d#4,f4,g#4]@8, d3@5 ~@11",
  O: "[~@14 g3@7 ~@7 d4@2 c4@2, c3, ~@3 g3 d4@7 e4@2 g3@3, ~ g4@3, ~@2 c4@5 ~]/2",
  P: "[c4,d4,f#4,a4]@6 d3 ~ [c4,d#4,f4,g#4]@8, d3@5 ~@11", Q: "[c4,d4,f#4,a4]@8 [c4,d#4,f4,g#4]@6 c#3 ~, ~@8 c#3@5 ~@3",
  R: "[a#3,c4,f4]@8 [g#3,c4,d#4]@6 g#2 ~, ~@8 g#2@5 ~@3", // A#sus2 G#
  S: "[a3,d4,f#4]@6 d3 ~ [c4,d#4,f4,g#4]@6 c#3 ~, d3@5 ~@3 c#3@5 ~@3", // D Fm7
  T: "[b3,d4,e4,g4]@8 [c4,e4,g4,a4]@6 f3 ~, ~@8 f3@5 ~@3", U: "[c4,f4,a#4]@6 f3 ~ [g#3,c4,d#4]@8, f3@5 ~@11",
  V: "[a3,d4,f#4]@6 d3 ~ [c4,d#4,f4,g#4]@5 ~ [c4,d#4,f4,g#4] ~, d3@5 ~@11", // D Fm7
  W: "[c4,d4,f#4,a4]@6 d3 ~ [c4,d#4,f4,g#4]@6 c#3 ~, d3@5 ~@3 c#3@5 ~@3", X: "[c4,d4,f#4,a4] [c4,d#4,f4,g#4]",
  Y: "[g3,c4,e4]@5 ~@11, [c2,c3]@7 ~", // C
})).s("gm_electric_guitar_clean").gain(0.44)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean_2 = note(`<
  A@2 B C D@2 E F G@2 H F I J F C K L@2 M N A@2 H O P J F Q@2 R S T@2 U V W@2 H O A@2 E N A@2 X Y Z AA O Y AB AC@2 E F
  AC@2 X N AD AE C AF@2 AG AH AF@2 AI AJ ~
>`.pickRestart({
  A: "[~@14 g3 c4, c3@9 ~ c3@7 ~ c3@7 ~ c3@4 ~@2, ~@2 g3@9 ~ g3@7 ~ g3@7 ~@5, ~@4 c4@9 ~ d4@7 ~@11, ~@3 g4@8 g4@4 ~]/2",
  B: "a#3 ~@5 d#4@2, g#2, ~@2 d#4@7 ~ d#3@6, ~ g#3@3, ~@3 a#3@3 ~@2",
  C: "~@6 c4 ~, c3@7 ~, e4@4 c4@7 ~@5, ~ g3@3 ~ g3@2 ~, ~@6 e4@9 ~",
  D: "[~@20 d4@2 e4@4 d4@2 g3@2 d4 ~, ~@2 c3@11 ~ c3@18, ~@4 g3@13 ~ g3@9 ~@5, ~@3 d4@6 ~@7]/2",
  E: "~@3 a#3 c4 a#3 g#3 d#3, ~ g#2@7, ~@3 d#3@10 ~@3, ~@4 g#3@7 ~@5",
  F: "~@6 d4@3 ~ e4@5 ~, c3@15 ~, e4@4 c4@11 ~, ~@2 g3@13 ~",
  G: "[c3 ~@4 g3 ~@8 c3@2, e4@6 d4@7 ~ e4@8 d4@9 ~, ~@2 g3@6 ~@10 g3@4 ~@4 g3@5 ~, ~@4 c3@6 ~@2 c3@7 ~ c3@6 ~@6]/2",
  H: "~@6 g#3 ~, g#2@7 ~, c4@4 g#3@7 ~@5, ~ d#3@3 ~ d#3@2 ~, ~@6 c4@9 ~",
  I: "~@6 a#4@2 ~@6 g#3 ~, f3 [g#2,a#3], a#4 f4 ~@2, ~ c4@3 ~ d#3@3", // G#sus2
  J: "~@6 d4 ~@7 f4@2, [d3,e4] c#3, ~ a3@3 f4@2 c#4@2, ~@5 g#3@3", // Dsus2
  K: "~@6 c4 ~@7 a4@2, [c3,e4] f3, ~@2 a4 f4, ~@5 c4@3", // C
  L: "[~@15 d4, ~@2 c3@7 ~ c3@7 ~ c3@7 ~ c3@4 ~@2, ~@4 g3@7 ~ g3@7 ~ g3@7 ~ g3@4, ~@3 e4@4 d4@4 e4@4 ~]/2",
  M: "~@4 g#3@2 a#3@9 ~, g#2@15 ~, a#3 ~@3, ~@2 d#3@7 ~@7", N: "~@4 c4@2 d4@9 ~, c3@15 ~, d4 ~@3, ~@2 g3@7 ~@7",
  O: "d4 ~@5 g4@2, c3, ~@2 g4@7 ~ g3@6, ~ c4@3, ~@3 d4@3 ~@2", P: "~@6 f4 ~@7 g#3 ~, [f3,a#4] [g#2,a#3], ~@5 d#3@3",
  Q: "[~@6 d4@12 e4@13 ~, ~ c3@15, ~ g3@7]/2", R: "~ d3 f#4 ~@2 c#3 f4 ~", S: "e4@4 ~@2 [c4,e4]@9 ~, ~@4 g3@11 ~",
  T: "[~@30 e4 ~, ~ c3@15]/2", U: "f#4@5 ~ f#4 ~ f4@5 ~ f4 ~", V: "~@6 e4@4 g4@2 e4@3 ~, c3@15 ~, ~@2 g3@13 ~",
  W: "[c3 ~@12 c3 ~ d4, d4@3 e4@4 d4@4 e4@4 ~, ~@2 g3@9 ~ g3@7 ~ g3@7 ~ g3@4, ~@4 c3@5 ~ c3@7 ~ c3@7 ~@7]/2",
  X: "~@6 a#3@3 ~ c4@5 ~, g#2@15 ~, c4@4 g#3@11 ~, ~@2 d#3@13 ~",
  Y: "~@3 d4 e4 d4 c4 g3, ~ c3@7, ~@3 g3@10 ~@3, ~@4 c4@7 ~@5",
  Z: "~@3 a#4 ~@3 c4, f3 g#2, a#4@2 f4@2 ~ d#3@3, ~ c4@3 c4@2 g#3@2",
  AA: "~@6 f#4@2 ~@6 c#4 ~, d3 [c#3,f4], f#4 d4 ~@2, ~ a3@3 ~@4", // C#
  AB: "~@3 e4 ~@3 a4, c3@4 ~ c4@3, e4 c4 a4 f4, ~ g3@3 f3@4",
  AC: "[~@2 c4 d4 ~ d4 ~ g3 ~@6 d4 c4, ~@2 c3@12 ~@2 c3@13 ~@3, ~@3 g3@9 c4@6 g3@6 ~@2 g3@5 ~, ~@4 g4@7 e4@3 ~@2, ~@20 c4@9 ~@3]/2",
  AD: "~@6 f4 ~@7 c4@2, [f3,a#4] g#2, ~@2 c4 g#3, ~@5 d#3@3", // A#5
  AE: "~@3 f#4 ~@3 f4, d3 c#3, f#4 d4 f4 c#4, ~ a3@3 ~ g#3@3",
  AF: "[~@14 g4 ~, ~ c3@14 ~, ~@3 g3@27 ~@2, ~@7 e4@7 ~@2, ~@13 c4@2 ~]/2", AG: "~@4 [c4,f#4] ~@5 g#3@4 f4@2",
  AH: "~@3 e4@4 ~, c3@15 ~, ~@2 g3@13 ~, ~@2 c4@5 ~", AI: "~ d3 f#4 ~@2 g#3@2 f4",
  AJ: "~@6 e4 ~, ~@2 c3@13 ~, ~@4 g3@11 ~, ~@3 c4@4 ~",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · electric guitar clean · "GUITAR" · soft notes
const electric_guitar_clean_3 = note(`<
  ~@16 A ~@8 B ~@4 C D E@2 F G ~@13 H ~@3 I ~@3 I ~@3 B ~@2 J@2 K ~ J@2 L ~@2
>`.pickRestart({
  A: "~@2 g3@5 ~@9", B: "~@2 c4@5 ~@9", C: "~@2 c4 ~@3 c4 ~", D: "~@2 c3@13 ~, g4@3 ~@5, c4 ~@3",
  E: "[~@4 c4@21 ~ c4@6, ~@4 e4@25 ~@3]/2", F: "c4@5 ~ c4 ~ c4@5 ~ c4 ~", G: "~@4 c4@11 ~", H: "~@10 g#3@5 ~",
  I: "~@8 c4 ~@7", J: "[~@4 c4@21 ~@7]/2", K: "~@12 c4@3 ~", L: "~@4 c4@2 ~@6 c4@3 ~",
})).s("gm_electric_guitar_clean").gain(0.16)

// bass · fretless bass · "LET IT DOWN"
const bass_2 = note(`<
  ~@3 A B C D E F C ~ G H I C ~ A J ~ K L M N O P Q R S T@2 U V W@3 X ~ Y ~ A Z ~@2 A AA AB AC AD AE AF AG ~ AH AI AJ AK
  AL AM AN AO AP AQ AR AS AT@2 AU AV AW AX AY AZ BA
>`.pickRestart({
  A: "~@8 c3!2 ~ c3 ~ a#2 g2 ~", B: "c2@3 d#2", C: "c2@7 ~", D: "d#2@11 ~ d#2@3 ~", E: "c2@4 ~@4 c3!2 ~ c3 ~ a#2 g2 ~",
  F: "c2@11 ~ d#2@4", G: "~@8 c3!2 ~ c3 ~ a#2 g2@2", H: "a#2@6 ~@2 g#2@7 ~", I: "d2 c#2, ~@4 g2@3 ~", J: "c2@7 ~@9",
  K: "~@8 d#3 c3 ~ a#2@2 c3 a#2 ~", L: "c2@3 ~@5 g2 a#2 ~ c3 ~ a#2 g2 ~", M: "c2@4 ~@6 [c3,d#3] ~ d#3 ~ c3 ~",
  N: "a#2 c3 ~ c3 ~@12", O: "~@4 c3 a#2 ~ g2 ~ a#2 g2 ~ d#2 ~ g2 ~", P: "c2@4 ~@4 a#2!2 ~ c3 ~ a#2 g2 ~",
  Q: "a#2@13 ~@3", R: "d#3@3 ~ c3@2 a#2@8 ~@2", S: "~@6 g1 ~", T: "[c2@4 ~@8 d#3 c3 ~ c3@2 a#2@2 ~@7 d#3@2 ~ f3 ~@2]/2",
  U: "f3 d#3 ~ c3 ~ a#2 ~ c3@2 a#2@4 g2 a#2@2", V: "g2@7 ~@9",
  W: "[~@12 d#3 c3 ~ a#2@2 c3@4 ~@7 f3 d#3 ~ c3@2 d#3@3 c3@3 ~ a#2@4 ~@2 d#2@2]/3", X: "c2@5 ~@11, d2 ~@15",
  Y: "~@3 g1 c2@3 ~", Z: "c2 ~@3", AA: "c2@4 ~@6 d#3 c3 d#3@2 c3 ~", AB: "a#2 c3 ~@6", AC: "~@8 a#2 g2@4 ~@3",
  AD: "~@8 c3 a#2 ~ g2@2 a#2 g2 ~", AE: "c3@6 ~@4 d#3 c3 d#3 ~ c3 ~", AF: "a#2 c3@2 ~@7 f3@3 d#3 c3 ~",
  AG: "d#3 c3@4 ~@3 a#2 c3 ~@6", AH: "~@4 f3 d#3 ~ c3 d#3 c3 ~ a#2@2 c3 a#2@2", AI: "c3 d#3 ~@14",
  AJ: "~@6 g1@2 c2@5 ~@3", AK: "~@8 a#2 c3 ~ d#3 ~ c3 ~ a#2", AL: "c3@3 d#3 ~ c3 ~ a#2@2 c3 a#2 ~ g2 a#2 g2 ~",
  AM: "c2@3 ~@11 g1@2", AN: "c2@2 ~@2 d#2@2 ~@2 g2 ~ a#2@2 c3@3 ~",
  AO: "~@2 d#3 c3 a#2 c3 ~ a#2 g2 a#2 ~ g2 d#2 ~ d#2 ~", AP: "c2@3 ~ c3 a#2 ~ c3 a#2 g2 ~ a#2@2 ~@3",
  AQ: "~@4 d#3@7 ~ f3 d#3 c3 d#3", AR: "~ c3@5 ~@2 a#2 c3 ~@6", AS: "~@4 f3 d#3 c3 d#3@2 c3 a#2 ~ c3 ~ a#2 ~",
  AT: "[c3@4 ~@8 d#3 c3 ~ a#2@2 c3@3 ~@6 f3 d#3 ~ f3 ~ d#3]/2", AU: "f3 d#3 ~ c3 d#3 c3@3 ~@4 c3 a#2 ~ g2",
  AV: "a#2 g2@3 ~@6 c3 a#2 g2 d#2@2 ~", AW: "c2@3 ~@9 c3 a#2 c3 d#3", AX: "~ c3@4 ~@5 c3 a#2 c3 a#2 ~ g2",
  AY: "a#2 ~ c3 a#2 ~ g2@6 ~ d#2@3 ~", AZ: "c2@5 ~@11", BA: "c2@9 ~@7",
})).s("gm_fretless_bass").gain(0.36)

// other · brass section · "HARRISON"
const brass_section = note("<~@32 A B C D ~@28 E F B G A H I J ~>".pickRestart({
  A: "~@10 c5 a#4 c5 ~ c5 a#4", B: "c5 ~ c5 a#4 c5 ~ c5 a#4 c5@2 c5 a#4 c5 ~ c5 a#4",
  C: "c5@2 c5 a#4 c5 ~ c5 a#4 c5 ~ c5 a#4 c5 ~ c5 a#4", D: "c5@7 ~", E: "~@10 c5 a#4 c5@2 c5 a#4",
  F: "c5 ~ c5 a#4 c5@2 c5 a#4 c5@2 c5 a#4 c5@2 c5 a#4", G: "c5@3 ~",
  H: "c5 ~ c5 a#4 c5@2 c5 a#4 c5 ~ c5 a#4 c5@2 c5 a#4", I: "c5 ~ c5 a#4 c5 ~ c5 a#4 c5 ~ c5 a#4 c5 ~ c5 a#4",
  J: "c5@15 ~",
})).s("gm_brass_section").gain(0.46)

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

// drums · rim
const rim = s("rim").struct("<A@3 ~ A@10 ~ A ~ A@10 ~@9 A@14 ~ A ~ A@10 ~@10>".pickRestart({
  A: "~ x ~ x",
})).gain(0.6)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@27 [~ x!2 ~ x!2 ~@2] ~@7 [~ x!2 ~ x!2 ~@2] ~@27 [~ x!2 ~ x!2 ~@2] ~@9>")
  .gain(0.33)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!72 ~>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@5 x!2 ~] ~@67 [~@5 x!2 ~] ~>").gain(0.47)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A@3 ~ A ~ B ~ C A C D A@2 ~ A ~ A ~ A D B D A@2 B A ~ A@4 E A@2 ~ A@2 C D A@2 C ~ A@2 C D A D ~ A ~ A@4 B D A ~ C D ~
  A@5 C A ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@5 x ~ x", C: "~@3 x ~ x ~ x", D: "~@7 x", E: "~ x ~ x ~@3 x",
})).gain(0.33)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A B A ~@6 A ~ C ~ A ~@2 B ~@3 B ~@6 D ~@10 A ~@6 A ~ C ~@4 B ~@2 A ~@8 E ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~@2 x!2 ~@4", D: "~@5 x ~@2", E: "~ x ~@6",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@3 [~ x!2 ~@5] ~@67 [~ x!2 ~@5] ~>").gain(0.47)

// drums · crash
const crash = s("cr").struct("<A ~@2 B A ~@10 A ~ A ~@10 A ~@7 A ~@14 A ~ A ~@10 A ~@6 B A>".pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.47)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@3 A ~@10 A ~ A ~@10 A ~ A ~ A ~ A ~ A ~@14 A ~ A ~@10 A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@4 x!2 ~@2",
})).gain(0.47)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!4]!72 x>").gain(2.71)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<[~ x ~ x ~ x ~ x]!72 ~>").gain(1.69)

stack(
  bass, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, bass_2, brass_section, kick, rim,
  snare, snare_soft, clap, low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, tambourine, cabasa,
// … 2 more lines

More by The Beatles