Strudelify

All I've Got to Do

The Beatles

KeyE majorTempo100 bpm
0:00/0:00
// All I've Got to Do — The Beatles
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 2.
setcpm(100/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 · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  ~@8 A@2 B C D E F C G F@2 A@2 B C G H@2 F@2 H C H C I E F C G F@2 A@2 B C G H@2 F@2 H C H C H J C F@2 J C F ~
>`.pickRestart({
  A: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!3", // F#m
  B: "[a3,c4,e4,a4]@2 [a3,c4,e4,a4] [a3,c4,e4,a4]@2 [a3,c4,e4,a4]!3", // Am
  C: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!3", D: "[e3,g#3,b3,e4,f#4] ~@7",
  E: "~@2 [c#3,g#3,c#4,e4,f4]@2 [c#3,g#3,c#4,e4]!4", // C# C#m
  F: "[c#3,g#3,c#4,e4]@2 [c#3,g#3,c#4,e4] [c#3,g#3,c#4,e4]@2 [c#3,g#3,c#4,e4]!3", // C#m
  G: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2 [e3,g#3,b3,d#4,e4]", // E Emaj7
  H: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]!3", I: "[e3,g#3,b3,e4] ~@7",
  J: "[e3,g#3,b3,e4,f#4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!3", // E
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.7)

// chords · electric guitar jazz · "Guitar 2"
const electric_guitar_jazz = note("<A@2 B@2 C D B@2 ~@8 E ~@19 E ~@21 E ~@2>".pickRestart({
  A: "[~ [d4,f4]@11 ~@4, c3@3 ~, ~ [e3,g#3]@23 ~@8]/2", // Dm E
  B: "~@2 [c#3,g#3,c#4,e4] ~@2 [c#3,g#3,c#4,e4] ~ [c#3,g#3,c#4,e4]", // C#m
  C: "~@2 [e3,g#3,b3,e4] ~@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]", // E
  D: "~@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~@2 [e3,g#3,b3,e4]", E: "~@4 [e3,g#3,b3,e4] ~@3",
})).s("gm_electric_guitar_jazz").gain(0.36).pan(0.7)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B@2 C@2 D E F G H I J B@2 C@2 D K L M N I O P@2 Q R S T U V W X@2 Y@2 Z E F G H I O AA@2 AB@2 AC T U V AD AA I AE
  X@2 Y@2 ~
>`.pickRestart({
  A: "~@7 b1", B: "[c#2,g#2]@3 [c#2,g#2] ~@2 b1@2", C: "[e2,b2]@3 [e2,b2] ~@3 b1", D: "[c#2,g#2]@3 [c#2,g#2] ~@3 b1",
  E: "[c#2,g#2]@3 [c#2,g#2] ~@4", F: "f#2!2 c#2!2", G: "f#2@2 c#2 f#2", H: "a1@2 a1 c2", I: "e2@3 b1@3 b1@2",
  J: "e2@2 ~@5 b1", K: "[c#2,g#2]@3 [c#2,g#2] ~@2 e2 c#2", L: "f#2@3 c#2 c#2@3 f#2", M: "f#2@3 c#2!3 f#2 c#2",
  N: "a1@3 c2@3 e2 c2", O: "e2@6 e2 b1", P: "a1@2 c#2 e2", Q: "c#2@4 g#1@3 g#1", R: "c#2@3 g#1 g#1@2 c#2 g#1",
  S: "a1@3 a1 a1@2 c#2@2", T: "e2@3 c#2@3 e2@2", U: "a1@3 c#2@3 e2 c#2", V: "e2@3 b1 b1@2 b1 d#2", W: "e2 ~@6 b1",
  X: "[c#2,g#2]@3 [c#2,g#2]@3 ~ b1", Y: "[e2,b2]@3 [e2,b2]@5", Z: "[c#2,g#2]@3 [c#2,g#2]@5", AA: "a1@3 c#2@3 e2@2",
  AB: "c#2@3 g#2 ~ g#2 c#2@2", AC: "a1@3 c#2 ~ c#2 e2@2", AD: "e2@3 b1@3 e2@2", AE: "e2 ~@6 e2",
})).s("gm_fretless_bass").gain(0.45).pan(0.3)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@12 [~@3 x ~@4] ~@19 [x ~@2 x ~@4] ~@22 [~@3 x ~@4] ~@5>").gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@6 B@4 C A@6 B@13 ~ A@6 B@16 C A@4 ~>".pickRestart({
  A: "~@3 x ~@4", B: "x!8", C: "x",
})).gain(0.45)

stack(electric_guitar_clean, electric_guitar_jazz, bass, kick, snare, hihat, open_hat)

More by The Beatles