Strudelify
Eight Days A Week cover art

1965 · Beatles For Sale

Eight Days A Week

The Beatles

KeyD majorTempo152 bpm
0:00/0:00
// Eight Days A Week — The Beatles
// 152 bpm, 4/4, key D major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(152/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@4 B C D B@2 C D B E F E G@8 B@2 C D B E F E H@8 I@8 J@5 K@2 L M@8 I@8 J@5 K@2 L N@8 O@5 ~
>`.pickRestart({
  A: "d2!2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2", B: "d2 b1 a1 f#1", C: "e1 g#1 b1 g#1", D: "g1 b1 d2 b1",
  E: "b1@6 b1@4 ~ b1 b1@2 ~ b1", F: "g1@6 g1@4 ~ g1 g1@2 ~ g1",
  G: "[e2@4 e2 ~@3 e2@3 e2 e2@3 ~ d2@4 b1@4 a1@4 f#1@4 e1@4 g#1@4 b1@4 g#1@4 g1@4 b1@4 d2@4 b1@4 d2@4 b1@4 a1@4 f#1@4 d2@4 b1@4 a1@4 f#1@4 e1@4 g#1@4 b1@4 g#1@4 g1@4 b1@4 d2@4 b1@4, ~@15 e2@113]/8",
  H: "[~@4 e2 ~@3 e2@3 e2 e2@3 ~ d2@4 b1@4 a1@4 f#1@4 e1@4 g#1@4 b1@4 g#1@4 g1@4 b1@4 d2@4 b1@4 d2@4 b1@4 a1@4 f#1@4 a1@6 a1@2 a1@8 a1@6 a1@2 a1@4 a1@4 b1@4 b1 ~@3 b1@4 b1@4, ~@15 e2@113]/8",
  I: "[~@4 b1 ~@3 b1@4 ~@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 g1@4 g1@4 g1@4 g1@4 a1@4 a1@4 a1@4 a1@4 d2@4 ~@4 a1@4 f#1@4 e1@4 g#1@4 ~@4 g#1@4 g1@4 ~@4 d2@4 b1@4, ~@3 b1@18 b1@5 b1@3 b1@2 ~]/8",
  J: "[d2 ~ a1 f#1 d2 ~ a1 f#1 e1 g#1 ~ g#1 g1 ~ d2 ~ d2 ~ a1 f#1, ~ b1@4 b1@5 b1@3 b1@2 b1@2 b1@3]/5",
  K: "[~@6 b1@5 b1 b1@3 ~ g1@6 g1@4 ~ g1 g1@2 ~ g1, ~@15 b1@17]/2", L: "~@6 b1@5 b1 b1@3 b1",
  M: "[~@4 e2 ~@3 e2@3 e2 e2@3 ~ d2@4 ~@4 a1@4 f#1@4 e1@4 g#1@4 ~@4 g#1@4 g1@4 ~@4 d2@4 ~@4 d2@4 ~@4 a1@4 f#1@4 a1@6 a1@2 a1@8 a1@6 a1@2 a1@4 a1@4 ~@4 b1 ~@3 b1@4 b1@4, ~@15 e2@113, ~@5 b1@5 b1@3 b1@2 b1@2 b1@11 ~@4]/8",
  N: "[~@4 e2 ~@3 e2@3 e2 e2@3 ~ d2@4 ~@4 a1@4 f#1@4 e1@4 g#1@4 ~@4 g#1@4 g1@4 ~@4 d2@4 ~@4 d2@4 ~@4 a1@4 f#1@4 g1@4 ~@4 d2@4 ~@4 d2@4 ~@4 a1@4 f#1@4 g1@4 ~@4 d2@4 b1@4, ~@15 e2@113, ~@5 b1@5 b1@3 b1@2 b1@2 b1@4 b1@2 b1@2 b1@4 b1@2 ~]/8",
  O: "[d2@4 ~@4 a1@4 f#1@4 d1!2 ~ d1!3 ~ d1!3 ~ d1!3 ~ d1 d2!2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2 d2!2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2 d2@16, ~ b1@19]/5",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  A B C A D E F D@2 E G H I J K L H M G H D E F D@2 E G H K J K L H M G H N@2 O@2 P Q R@3 S T@3 S U@3 V@2 W@2 X Y@6 Q@2
  R@3 S T@3 S U@3 V@2 W@2 X Z@4 AA@6 ~
>`.pickRestart({
  A: "[d3,a3,e4]@3 [d3,a3,e4] [d3,a3,e4]@2 [d3,a3,e4]@2", // Dsus2
  B: "[b2,e3,g#3,b3,e4]@3 [e3,g#3,b3] [b2,e3,g#3,b3,e4]@2 [b2,e3,g#3,b3,e4]@2", // E
  C: "[d3,g3,e4]@3 [d3,g3,e4] [d3,g3,e4]@2 [d3,g3,e4]@2", D: "[d3,f#3,a3]@4 ~@2 [d3,f#3,a3]@3 ~ [d3,f#3,a3]@3 ~@3",
  E: "[e3,g3,b3]@4 ~@2 [g3,b3,e4]@3 ~ [e3,g3,b3]@3 ~@3", F: "[d3,g3,b3]@4 ~@2 [g3,b3,d4]@3 ~ [d3,g3,b3]@3 ~@3",
  G: "[d3,g3,b3]@3 [g3,b3,d4]@2 [d3,g3,b3]@2 ~", H: "[d3,f#3,a3]@3 [d3,f#3,a3]@2 [d3,f#3,a3]@2 ~",
  I: "[f#3,b3,d4]@6 b3@2 b3@3 [b3,d4] [f#3,b3,d4]@4, ~@3 [f#3,d4]@2 ~@3", // Bm D
  J: "[g3,d4]@6 [b3,d4]@4 ~ [b3,d4] [g3,b3,d4]@4", // G5 Bm G
  K: "[f#3,b3,d4]@6 b3@2 b3 ~@2 [b3,d4] [f#3,b3,d4]@4, ~@3 [f#3,d4]@2 ~@3", L: "[e3,g3]@3 [g3,b3,e4]@2 [e3,g3,b3]@2 ~",
  M: "[e3,g3,b3]@3 [g3,b3,e4]@2 [e3,g3,b3]@2 ~", N: "[a3,c#4,e4]@3 [c#4,e4]@2 [a3,c#4,e4]@2 ~",
  O: "[[f#3,b3,d4]@14 [f#3,b3,d4] ~]/2", P: "[e3,g3,b3]@3 [g3,b3]@2 [g3,b3]@3, ~@5 e3@2 ~",
  Q: "e3@3 [g3,b3]@2 [g3,b3]@3, ~@5 e3@2 ~", // G
  R: "[d4@6 [b3,d4]@4 d4@4 ~@2 [a3,c#4,e4]@6 [c#4,e4]@4 [a3,c#4,e4]@4 ~@2 [d3,f#3,a3]@4 ~@2 [d3,f#3,a3]@3 ~ [d3,f#3,a3]@3 ~@3, ~@5 [g3,b3]@19]/3", // Bm A C#m A D G
  S: "e3@2 ~ [g3,b3,e4]@2 [g3,b3]@3, ~@10 e3@3 ~@3", // Em G
  T: "[d3@4 ~@2 [g3,b3,d4]@4 d3@3 ~@3 [d3,f#3,a3]@4 ~@2 [d3,f#3,a3]@3 ~ [d3,f#3,a3]@3 ~@3 [d3,f#3,a3]@4 ~@2 [d3,f#3,a3]@3 ~ [d3,f#3,a3]@3 ~@3, ~@5 [g3,b3]@19]/3", // G D G
  U: "[d3@6 [g3,b3,d4]@4 d3@4 ~@2 [d3,f#3,a3]@6 [d3,f#3,a3]@4 [d3,f#3,a3]@4 ~@2 [f#3,d4]@6 b3@2 b3 ~@2 [b3,d4] [f#3,b3,d4]@4, ~@5 g3@19, ~@5 b3@11 ~@3 [f#3,d4]@2 ~@3]/3", // G D Bm D
  V: "[d4@6 [b3,d4]@5 [b3,d4] [b3,d4]@4 [f#3,d4]@6 b3@2 b3 ~@2 [b3,d4] [f#3,b3,d4]@4, ~@3 g3@5, ~@11 [f#3,d4]@2 ~@3]/2", // Bm D Bm D
  W: "[e3@3 [g3,b3,e4]@2 e3@2 ~ [d3,f#3,a3]@3 [d3,f#3,a3]@2 [d3,f#3,a3]@2 ~, ~@5 [g3,b3]@11]/2", // Em D G
  X: "e3@3 [g3,b3,e4]@2 [g3,b3]@3, ~@5 e3@2 ~", // Em G
  Y: "[d3@3 [g3,b3,d4]@2 d3@2 ~ [d3,f#3,a3]@3 [d3,f#3,a3]@2 [d3,f#3,a3]@2 ~ [a3,c#4,e4]@3 [c#4,e4]@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4]@3 [c#4,e4]@2 [a3,c#4,e4]@2 ~ [f#3,d4]@14 [f#3,d4] ~, ~@5 g3@43, ~@5 b3@27 ~@14 b3@2]/6", // G D A C#m A C#m A D
  Z: "[d3@3 [g3,b3,d4]@2 d3@2 ~ [d3,f#3,a3]@3 [d3,f#3,a3]@2 [d3,f#3,a3]@2 ~, ~@5 [g3,b3]@11]/2", // G D G
  AA: "[d3@3 [g3,b3,d4]@2 d3@2 ~ [d3,f#3,a3]@3 [d3,f#3,a3]@2 [d3,f#3,a3]@2 ~ [d3,a3,e4]@3 [d3,a3,e4] [d3,a3,e4]@2 [d3,a3,e4]@2 [b2,e3,g#3,e4]@3 [e3,g#3,b3] [b2,e3,g#3,b3,e4]@2 [b2,e3,g#3,e4]@2 [d3,e4]@3 [d3,g3,e4] [d3,g3,e4]@2 [d3,e4]@2 [d3,a3,e4]@3 ~@5, ~@5 g3@27 ~@6 g3@5 ~@5, ~@5 b3@19 ~@6 b3@13 ~@5]/6", // G D Dsus2 E Dsus2 Em7 Dsus2
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0.7)

// chords · electric guitar jazz · "SOLO"
const electric_guitar_jazz = note(`<
  A B C A D E F D@2 E F D G H I J K L M K D E F D@2 E F D G H I J K L M K N@2 O@2 P Q L N D E F D@2 E F D G H I J K L M
  K N@2 O@2 P Q L N D E F D@2 E F D G H I J K L M K M K M K A R@3 ~
>`.pickRestart({
  A: "[d4,f#4,a4]@3 [d4,f#4,a4] [d4,f#4,a4]@2 [d4,f#4,a4]@2", // D
  B: "[e4,g#4,b4]@3 [e4,g#4,b4] [g#4,b4]@2 [e4,g#4,b4]@2, ~@8 e4 ~@7", // E G#m E
  C: "[g4,b4,d5]@3 [g4,b4,d5] [g4,b4,d5]@2 [g4,b4,d5]@2", D: "~@4 [a3,d4] ~@5 [a3,d4] ~@3 [a3,d4] ~",
  E: "~@4 [g3,b3] ~@5 [g3,b3] ~@3 [g3,b3] ~", F: "~@4 [b3,d4] ~@5 [b3,d4] ~@3 [b3,d4] ~", G: "[b3,d4]@3 [b3,d4]@3 ~@2",
  H: "[g3,b3]@3 [g3,b3]@3 ~@2", I: "[f#3,b3]@3 [f#3,b3]@3 ~@2", J: "[e3,g3]@3 [e3,g3]@3 ~@2",
  K: "~@2 [a3,d4]@2 ~ [a3,d4] ~ [a3,d4]", L: "~@2 [g3,b3]@2 ~ [g3,b3] ~ [g3,b3]",
  M: "~@2 [b3,d4]@2 ~ [b3,d4] ~ [b3,d4]", N: "~@2 [a3,c#4]@2 ~ [a3,c#4] ~ [a3,c#4]", O: "[[b3,d4]@14 [b3,d4] ~]/2",
  P: "[g3,b3]@4 [g3,b3]@3 [g3,b3]", Q: "[g3,b3,e4]!2",
  R: "[[e4,g#4,b4]@3 [e4,g#4,b4] [g#4,b4]@2 [g#4,b4]@2 [g4,b4,d5]@3 [g4,b4,d5] [g4,b4,d5]@2 [g4,b4,d5]@2 [d4,f#4,a4]@3 ~@5, ~@8 e4 ~@3 e4@26 ~@10]/3", // E G#m G D
})).s("gm_electric_guitar_jazz").gain(0.24).pan(0.3)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A@3 B ~@8 C ~ C ~@13 C ~ C ~@21 C ~ C ~@21 C ~ C ~@9 A@3 D ~>".pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", B: "x!2 ~ x!3 ~ x ~@3 x ~@3 x", C: "~@3 x", D: "~@15 x",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<A@3 B ~@8 C ~ C ~@13 C ~ C ~@21 C ~ C ~@21 C ~ C ~@9 A@3 D ~>".pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", B: "x!2 ~ x!3 ~ x ~ x ~@3 x ~@2", C: "~@3 x", D: "~@7 x",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@12 A ~ A ~@4 A ~@8 A ~ A ~@4 A ~@7 B ~@8 A ~ A ~@4 A ~@7 B ~@8 A ~ A ~@4 A ~ A ~ A ~@5
>`.pickRestart({
  A: "~@3 x", B: "~@3 x ~@2 x ~",
})).gain(0.58)

// drums · high tom
const high_tom = s("ht").struct("<~@3 [~@3 x] ~@87 [~@13 x ~@2] ~>").gain(0.58)

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

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

stack(
  bass, acoustic_guitar_steel, electric_guitar_jazz, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash,
  ride
)

More by The Beatles