Strudelify

You Can't Do That

The Beatles

KeyG majorTempo140 bpm
0:00/0:00
// You Can't Do That — The Beatles
// 140 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "Org Lead" named as an organ, played on drawbar organ (its french horn patch is not one)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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.

// other · drawbar organ · "Org Lead"
const drawbar_organ = note(`<
  ~@3 A B C D E F@2 G H I@2 J K L@2 M N O@2 P Q I@2 J R@3 S@4 T U V W V N X@2 P Q I@2 Y@2 Z AA Z AA Z AA Z AB Z AB ~ R@3
  S@4 T U V W V N X@2 P Q I@2 J ~@6
>`.pickRestart({
  A: "~@5 g4 g4@2", B: "b4@2 b4!2 c5!2 c5@2", C: "d5 f5@2 b4@3 ~ g4", D: "b4@2 b4@2 c5!4", E: "d5 g5@2 f5 ~ d5!3",
  F: "[d5 c5@2 c5@2 a#4 g4@4 ~ c5 d5 f5@2 c5]/2", G: "~ [c5,d5] b4@10 ~@4", H: "~@5 d5!3",
  I: "[f5!3 f5@3 ~ f5@4 d5 d5@2 d5@2]/2", J: "c5 a#4 ~ g4@9 ~@4", K: "~@5 g4!3",
  L: "[b4!4 c5@2 c5 d5@2 d5 f5 b4@3 g4!2]/2", M: "b4!4 c5!4", N: "d5!2 g5 f5 ~ d5!3",
  O: "[d5 c5@2 c5@2 ~@3 [e5,g5] [e5,g5]@2 c5 d5 f5@2 c5, ~@5 a#4@5 ~ [e5,g5]@3 ~@2]/2", // Em
  P: "~ [c5,d5] ~@2 [d5,f5]@2 [d5,f5]@2 [d5,f5]@2 [d5,f5]@2 [d5,f5]@2 [d5,f5]@2, ~ b4@5 ~@2", // Csus2 Dm
  Q: "[d5,f5] d5 e5 d5@2 d5!3, ~ f5@2 f5@3 ~@2", R: "[~@2 g4!2 b4 d5@2 [d#5,f#5]@8 [e5,g5]@3 ~@5 b4]/3",
  S: "[c5!4 b4 b4@2 g4@3 ~ g4 b4 d5@2 [d#5,f#5]@8 [e5,g5]@3 ~@5 d#5]/4", T: "e5!3 e5@4 e5",
  U: "[f#5,a5]!3 [f#5,a5]@2 [e5,g5] [d5,f#5]@2", V: "b4@2 b4!2 c5!4", W: "d5!2 f5 b4@3 ~ g4",
  X: "[d5 c5@2 c5@2 a#4 ~@2 [e5,g5] [e5,g5]@2 c5 d5 f5@2 c5, ~@6 g4@4 ~ [e5,g5]@3 ~@2]/2", // Em
  Y: "[c5 a#4 ~ g4@9 ~@2 g5@8 ~@10]/2", Z: "~@7 [d5,f5]", AA: "[d5,f5] [e5,f5]@2 [d5,f5]@3 ~@2",
  AB: "[d5,g5] [e5,g5]@2 [d5,g5]@3 ~@2", // G5 Em G5
})).s("gm_drawbar_organ").gain(0.7)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B C B C B C D E F B G H B I F C F C D E F J G H B K L M N O L P Q R B S@2 C T E B U G H V W X Y Z@2 AA AB Z AC AD
  AA Z AE L AF N AG L AH Q R B AI@2 C T E B U G H AJ@7
>`.pickRestart({
  A: "~@7 f#1", B: "g1!4", C: "g1@4 g1@4 g1@2 b1 c2 d2@2 g1@2", D: "c2!4", E: "c2@4 c2@4 c2@2 c2 c#2 d2@2 g1@2",
  F: "g1@2 g1@2 g1@2 g1 f#1", G: "d2!4 ~@4", H: "c2@3 a#1 c2 a#1 g1 a#1", I: "g1 d2!7", J: "g1@2 g1@2 g1@2 b1 c2",
  K: "g1@2 g1@2 g1@2 g1 a1", L: "b1!4", M: "e2@2 e2@2 b1!2 g1!2", N: "a1!2 b1!2", O: "g1@2 g1@2 g1 b1 d2 a1",
  P: "e2@2 e2@2 b1!2 g1 b1", Q: "a1@3 a1@2 a1!3", R: "b1@2 b1 d2@2 d2!3", S: "g1@2 g1@2 g1@2 b1 d2",
  T: "c2@2 c2@2 c2@2 c2 a#1", U: "g1@2 g1@2 g1!2 b1 c2", V: "g1@2 g1@2 g1@2 g1 d2", W: "d2!8", X: "g1 g1@2 g1!5",
  Y: "g1@2 g1!3 b1 d2 b1", Z: "g1@2 g1 b1 d2!2 b1 d2", AA: "c2@2 c2 e2 g2!2 e2 g2", AB: "c2@2 c2 e2 g2 d2 a1 g1",
  AC: "g1@2 g1 b1 d2!2 b1 c2", AD: "d2@2 d2 f#2 a2!2 f#2 d2", AE: "g1@2 g1 b1 d2 g1 b1 ~", AF: "e2@2 e2 b1!3 g1!2",
  AG: "g1@2 g1@2 b1 d2 g1 a1", AH: "e2@2 e2 b1!3 g1 b1", AI: "g1@2 g1@2 g1@2 d2 g1",
  AJ: "[g1@24 f1@6 f#1@6 ~ g1@74 ~]/7",
})).s("gm_fretless_bass").gain(0.49)

// chords · acoustic guitar nylon · "Gtr 1"
const acoustic_guitar_nylon = note(`<
  A@8 B@2 C@2 D E@3 F@4 B@2 C@2 D G@3 H@2 I@2 J@2 K L M@4 N O P@2 D Q R S T@4 U@8 H@2 I@2 J@2 K V M@4 N O P@2 D Q W@7
>`.pickRestart({
  A: "[a#3@2 ~@2 a#3 ~@6 g3 a#3 ~@7 a#3 ~@7 a#3 ~@7 a#3 ~ g3 ~@5 a3 ~@7 a#3 ~@7 a#3 b3@3, g3@3 g3@3 g3@3 g3@2 ~ g3@3 g3@4 g3@3 g3@3 g3@2 g3@4 g3@4 g3@3 ~ g3@2 g3@2 g3@6 g3@2 g3@3 g3@3 g3@2 g3@5, ~@2 b3@2 ~ b3@2 b3@3 b3@2 ~ b3@5 b3@2 ~ b3@2 b3@3 b3@2 ~ b3@5 b3@2 ~ b3@3 b3@2 b3@2 ~ b3@5 b3@2 ~ b3@2 b3@3 b3@2 ~@4]/8",
  B: "[~@4 d#4 ~@4 c4 [c4,e4] e4 d#4 d#4@3, c4@3 c4@3 c4@3 ~@2 c4@5, ~@2 e4@2 ~ e4@2 e4@3 ~@6]/2", // C
  C: "[~@4 a#3 ~@6 g3 f3 g3 f3@2, ~ g3@2 g3@3 g3@3 g3@2 ~@5, ~@2 b3@2 ~ b3@2 b3@3 b3@6]/2", D: "[d3,a3]!4 ~@3 [d3,a3]",
  E: "[[c3,g3]@4 ~ g3@2 ~@5 a#3 ~@4 d3!2 ~ f3!2 f#3!2, ~@7 g3@4 g3@3 g3@3 ~@2 d3@5, ~@10 b3@2 ~ b3@2 b3@5 ~@4]/3", // C5
  F: "[~@4 a#3 ~ g3 ~@5 a3 ~@7 a#3 ~@7 a#3 b3@3, g3@3 g3@3 ~ g3@2 g3@2 g3@6 g3@2 g3@3 g3@3 g3@2 g3@5, ~@2 b3@2 ~ b3@3 b3@2 b3@2 ~ b3@5 b3@2 ~ b3@2 b3@3 b3@2 ~@4]/4",
  G: "[[c3,g3]@4 ~ g3@2 ~@5 a#3 ~ g3 g3@2 ~@3 a#3 ~ g3@2, ~@7 g3@4 g3@3 ~@3 g3@2 g3@3 ~@2, ~@10 b3@2 ~ b3@2 b3@3 b3@2 ~ b3@3]/3", // C5
  H: "[~@2 f#3@2 ~ f#3@2 g3@2 ~@4 g3@3, ~@9 g3@4 ~@3, ~@5 b3@3]/2",
  I: "[e3 ~@2 e3 ~ a3@2 b3@3 ~@2 g3@2 g3@2, ~ e3@2 ~ f#3@3 ~@9, ~@2 g3@3 ~@11]/2",
  J: "[~@2 f#3@2 ~ f#3@2 g3@4 g3 ~ g3 g3@2]/2", K: "a3!3 a3@2 a3!3", L: "b3!3 g3 ~@4",
  M: "[~@4 a#3 ~ g3 g3@2 ~@3 a#3 ~@7 a#3 ~ g3 g3@2 ~@3 a#3 b3 a#3 b3, g3@3 g3@3 ~@3 g3@2 g3@4 g3@4 g3@3 ~@3 g3@2 g3@5, ~@2 b3@2 ~ b3@5 b3@2 ~ b3@5 b3@2 ~ b3@5 b3@2 ~@4]/4",
  N: "~ g3, ~ g3@3 ~@4, ~ a#3@3", O: "[a#3,d4] [c4,e4] [c4,e4]@2 [a#3,d4]@2 ~@2",
  P: "[~@4 a#3 ~@5 a#3 ~@2 a#3 ~ g3, ~ g3@2 g3@3 g3@3 g3@3 g3@3 ~, ~@2 b3@2 ~ b3@2 b3@3 ~ b3@2 ~ b3@2]/2",
  Q: "[c3,g3]@4 ~ g3 ~ g3", R: "~@4 a#3 ~ g3!2, g3@3 g3@3 ~@2, ~@2 b3@2 ~ b3@3",
  S: "~@2 d3 ~ f3!2 f#3!2, g3 ~, ~@3 d3@5",
  T: "[~@4 a#3 ~ g3 g3@2 ~@3 a#3 ~ g3 ~@5 a#3 ~ g3 g3@2 ~@3 a#3 ~ g3!2, g3@3 g3@3 ~@3 g3@2 g3@3 ~ g3@4 g3@3 ~@3 g3@2 g3@3 ~@2, ~@2 b3@2 ~ b3@5 b3@2 ~ b3@3 ~@2 b3@2 ~ b3@5 b3@2 ~ b3@3]/4",
  U: "[~@3 g3 ~ a#3 ~ g3@2 ~@2 g3 ~@3 g3@2 ~@3 a#3 ~ g3@3 ~@3 a#3 ~ g3 ~ b3 [d3,a3]!6 a3 a3 [c3,g3]!5 g3 g3@2 ~@3 a#3 ~@5 b3@2 ~ g3 ~ g3, g3@3 ~ g3@2 ~@3 g3@2 ~ g3@3 ~@2 g3@2 g3@3 ~@3 g3@2 g3@3 ~ g3@2 ~@6 d3@2 ~@5 c3@2 ~@2 b3@2 ~ b3@2 b3@3 ~@6, ~@2 a#3@3 ~@5 a#3@3 a#3@3 ~@2 b3@2 ~ b3@5 b3@2 ~ b3@3 ~@17 g3@2 g3@3 g3@3 g3@3 ~@4]/8", // D5 C5
  V: "b3!3 d4@3 ~@2",
  W: "[~@8 a#3@2 ~@12 g3@2 f3@6 f#3@7 g3@75, ~ g3@2 g3@3 g3@3 g3@2 ~@45, ~@2 b3@2 ~ b3@2 b3@3 b3@2 ~@44]/7",
})).s("gm_acoustic_guitar_nylon").gain(0.49).pan(0)

// chords · electric guitar muted · "Gtr 2"
const electric_guitar_muted = note(`<
  ~ A B@2 C D E F G H I@2 J K L M C D N F G H I@2 J K O@2 P Q R@4 S T E D@2 U V W X@2 Y@2 Z@2 ~@12 P Q R@4 AA AB E D@2 U
  V W X@2 Y@2 AC@7
>`.pickRestart({
  A: "~@7 [f#2,c#3,e3,a#3,e4,f#4]", // F#7
  B: "[[g2,d3,f3,b3,f4,g4]@2 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~ [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4]@3]/2", // G7
  C: "[g2,d3,f3,b3,f4,g4]@2 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~@2", // G7
  D: "~@2 [g2,d3,f3,b3,f4,g4] ~@3 [g2,d3,f3,b3,f4,g4] ~", E: "~@2 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~@2",
  F: "[g2,d3,f3,b3,f4,g4]!8", G: "[c3,e3,a#3,c4]!3 ~@3 [c3,e3,a#3,c4] ~", H: "~ [c3,e3,a#3,c4]@3",
  I: "[~@2 [g2,d3,f3,b3,f4,g4] ~ [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~@2]/2", // G7
  J: "[d3,f#3,c4,d4]!4 ~@3 [d3,f#3,c4,d4]", K: "[c3,e3,a#3,c4]@3 [c3,e3,a#3,c4] [c3,e3,a#3,c4]@2 [c3,e3,a#3,c4]@2",
  L: "~@2 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~ [g2,d3,f3,b3,f4,g4]", M: "[d3,f#3,c4,d4]!8",
  N: "~@2 [g2,d3,f3,b3,f4,g4] ~@3 [g2,d3,f3,b3,f4,g4]@2", // G7
  O: "[~@2 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~ [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4] ~ [g2,d3,f3,b3,f4,g4]!2 ~ [g2,d3,f3,b3,f4,g4]]/2", // G7
  P: "[b2,d#3,a3,b3,f#4]@2 [b2,d#3,a3,b3,f#4]@2 [b2,d#3,a3,b3,f#4]@2 [b2,d#3,a3,b3,f#4]!2", // B7
  Q: "[e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@3", // Em
  R: "[[a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 [b2,f#3,b3,d4,f#4] [b2,f#3,b3,d4,f#4]@2 [g2,d3,g3,b3,f4,g4]@3 [g2,d3,g3,b3,f4,g4] ~@2 [g2,d3,g3,b3,f4,g4] ~ [b2,d#3,a3,b3,f#4]@3 [b2,d#3,a3,b3,f#4]@3 [b2,d#3,a3,b3,f#4]@2 [e2,b2,e3,g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@3]/4", // Am Bm G7 B7 Em
  S: "[a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4] [a2,e3,a3,c4,e4]@4 [a2,e3,a3,c4,e4]", // Am
  T: "[b2,f#3,b3,d4,f#4]@2 [b2,f#3,b3,d4,f#4] [d3,a3,c4,f#4]@3 [d3,a3,c4,f#4]@2", // Bm D7
  U: "~ [g2,d3,f3,b3,f4,g4]@2 [g2,d3,f3,b3,f4,g4]", V: "[c3,e3,a#3,c4,e4]",
  W: "~ [c3,e3,a#3,c4,e4]@2 [c3,e3,a#3,c4,e4]", // C7
  X: "[~@2 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~ [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4] ~@2 [g2,d3,f3,b3,f4,g4] ~@2]/2", // G7
  Y: "[[d3,f#3,c4,d4]!4 ~@3 [c3,e3,a#3,c4]@4 [c3,e3,a#3,c4] [c3,e3,a#3,c4]@2 [c3,e3,a#3,c4] ~]/2", // D7 C7
  Z: "[~@2 [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4]!2 [g2,d3,f3,b3,f4,g4]@3 [g2,d3,f3,b3,f4,g4]!6]/2", // G7
  AA: "[a2,e3,a3,c4,e4]!3 [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]!3", // Am
  AB: "[b2,f#3,b3,d4,f#4]!3 [d3,a3,c4,f#4]@3 [d3,a3,c4,f#4]@2", AC: "[[g2,d3,g3,b3,d4,g4]@111 ~]/7",
})).s("gm_electric_guitar_muted").gain(0.44).pan(0.9)

// chords · electric guitar muted · "Gtr 3 Lead"
const electric_guitar_muted_2 = note("<~@48 A B C D@2 E F G H@2 I J@2 ~@24>".pickRestart({
  A: "[g3,b3] ~ [g3,b3]!2 [g3,c4] ~ [g3,c4] ~", B: "[c#4,d4,f4] [d4,f4]@2 [c4,f4] ~ g2!3",
  C: "[g3,b3] ~ [g3,b3]!2 [g3,c4]!3 [g3,a#3]", // G C5 Gm
  D: "[[c#4,d4,f4]@2 f4@2 g4@2 g4@4 f4 d4 e4@2 f4@4 e4@2 [a#3,d4]@2 ~@2 [g3,c4]@2 [f3,a#3]@2 ~@2 [c4,e4]@2, ~ d4@4 ~@11, ~@6 f#4 ~@25]/2", // C# A# C5 A#5 C
  E: "[c#4,f4]@4 [c#4,f4]@4 [c3,e3] ~ [d4,f4,b4]!6", F: "[d4,f4,b4]@2 ~@2 [d4,f4,b4]!4 [d4,f4,b4]@2 ~@2 [d4,f4,b4]!4",
  G: "[d4,f4,b4]@2 ~@2 [d4,f4,b4]!4 [d4,f4,b4]@2 [d4,f4,b4]@2 [d4,f4,b4]@2 [d4,f4,b4]@2", // Bdim
  H: "[[d4,b4]@2 [c4,a4]@2 c4 d4 c4 ~@3 [c4,d4]@2 ~@2 d4@6 [c4,d4]@2 [c4,d4]@2 [a#3,d4]@2 [g3,c4]@2 d4@2 c4@2, f4@4 ~@3 a#3@3 ~@4 c4 ~@13 a#3@4, ~@2 g4 ~@5]/2", // G F Csus2 A# C5
  I: "~@6 c4 ~@5 c4 ~ g4@2, d4@3 d4@3 d4@2, ~@2 g4@3 g4@2 ~",
  J: "[[c4,e4] [a#3,d4] g3@3 ~@2 b2@5 ~@4, ~@2 b3@5 ~@9, ~@5 g3@3 ~@8]/2", // C A#
})).s("gm_electric_guitar_muted").gain(0.72).pan(1)

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

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

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

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

stack(
  drawbar_organ, bass, acoustic_guitar_nylon, electric_guitar_muted, electric_guitar_muted_2, kick, snare, open_hat,
  crash
)

More by The Beatles