Strudelify

Little Child

The Beatles

KeyE majorTempo150 bpm
0:00/0:00
// Little Child — The Beatles
// 150 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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@3 D E F G H I J@2 D E F G K L@2 M N@2 O P Q@2 D E F G K R@2 S T S U V W X Y Z AA AB AC M N@2 O P Q@2 D E F G K
  AD K AE K AE K AE AF ~
>`.pickRestart({
  A: "~@10 [a5,b5] [e5,f5,g5] [b4,c5,d5] [f4,g4,a4] [c4,d4,e4] [g3,a3,b3]", // Asus2 Em Bm F C G
  B: "[b4,d5,f#5]@2 ~ e2@2 [e2,b4,d5,f#5]@3, e2@3 ~@5, f3 ~@3 [b4,d5,f#5]@6 ~@6", // Bm
  C: "[[b4,d5,f#5]@2 ~@2 [b4,d5,f#5] e2@3 ~@3 e2@2 e2@3 ~@3 e2@2 [e2,b4,d5,e5]@3, e2@3 e2@2 ~@3 e2@3 ~@5 e2@3 ~@5, ~@2 [b4,d5,f#5]@2 ~ [b4,d5,e5]@5 [b4,d5,e5]@3 [b4,d5,f#5]@5 [b4,d5,e5]@3 ~@3]/3", // Bm E7 Bm E7 Bm E7
  D: "~@2 [b4,d5,e5] [e2,b4,d5,e5] ~@2 [a4,c#5,e5] [a2,a4,c#5,e5], e2@3 ~ a2@3 ~", // E7 A
  E: "~@4 [g#4,b4,d5] [e2,g#4,b4,e5]@3, e2@3 e2@2 ~@3, ~ [g#4,b4,e5] ~@2", // G#dim E
  F: "~@3 b2@2 [b2,a4,b4,d#5]@3, b2@3 ~@5, ~@2 [a4,b4,d#5]@3 ~@3", // B7
  G: "~@3 a2@2 a3 a2@2, a2@3 ~@5, ~@2 [e4,a4,c#5]@3 [e4,a4,c#5]@3", // A
  H: "~@3 f#2@2 [f#2,e4,a#4,c#5]@3, f#2@3 ~@5, ~@2 [e4,a#4,c#5]@3 ~@3", // F#7 A#dim
  I: "b2!4 [b2,d5] b2!2 [e3,g#4,b4,d5], ~@2 b4@2 ~ e5@2 ~", // Bm E7
  J: "[~@3 e2@2 e2@3 ~@3 e2@2 [e2,b4,d5,e5]@3, e2@3 ~@5 e2@3 ~@5, ~@2 [b4,d5,e5]@3 [b4,d5,f#5]@5 [b4,d5,e5]@3 ~@3]/2", // E7 Bm E7
  K: "~@2 [e4,a#4,c#5] [f#2,e4,a#4,c#5] ~@2 [f#4,a4,b4] [b2,f#4,a4,b4], f#2@3 ~ b2@3 ~", // A#dim F#7 B7
  L: "[~@4 [e4,g#4,b4] [e4,g#4,b4]@2 ~@5 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4], e2@3 e2@2 e2@3 e2@3 e2@2 e2@3, ~@2 [e4,g#4,b4]@2 ~@3 [e4,g#4,b4]@3 [e4,g#4,b4]@2 ~@4]/2", // E
  M: "~@3 b2 d4 e4 d4 b3, b2@3 ~ b2@4, ~ [f#4,a4,b4] ~@2", // B7
  N: "[~@3 e2@2 [e4,g#4,b4]@2 ~@5 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4], e2@3 ~@2 e2@3 e2@3 e2@2 e2@3, ~@2 [e4,g#4,b4]@3 ~@2 [e4,g#4,b4]@3 [e4,g#4,b4]@2 ~@4]/2", // E
  O: "[e4,a#4,c#5]@2 [e4,a#4,c#5] [f#2,e4,a#4,c#5]@2 [e4,a#4,c#5]@2 [e4,a#4,c#5], f#2@3 ~@2 f#2@3", // A#dim F#7 A#dim
  P: "~@3 b2@2 [f#4,a4,b4]@2 [f#4,a4,b4], b2@3 ~@2 b2@3, ~@2 [f#4,a4,b4]@3 ~@3", // B7
  Q: "[[b4,d5,e5]@2 ~ e2@2 e2@3 ~@3 e2@2 [e2,b4,d5,e5]@3, e2@3 ~@5 e2@3 ~@5, ~@2 [b4,d5,e5]@3 [b4,d5,e5]@5 [b4,d5,e5]@3 ~@3]/2", // E7
  R: "[[e4,g#4,b4]@2 ~@2 [e4,g#4,b4] [e4,g#4,b4]@2 ~@4 e2@2 [e2,g#4,b4,d5]@3, e2@3 e2@2 e2@3 e2@3 ~@5, ~@2 [e4,g#4,b4]@2 ~@3 [e4,g#4,b4]@3 [g#4,b4,d5]@3 ~@3]/2", // E E7 E G#dim
  S: "[e2,g#4,b4,d5]@3 [e2,g#4,b4,d5]@2 [e2,g#4,b4,d5]@3", // E7
  T: "~@3 e2@2 [e2,g#4,b4,d5]@3, e2@3 ~@5, ~@2 [g#4,b4,d5]@3 ~@3", // E7 G#dim
  U: "[e4,a4,c#5]@2 ~ a2@2 [a2,e4,a4,c#5]@3, a2@3 ~@5, ~@2 [e4,a4,c#5]@3 ~@3", // A
  V: "[a2,e4,a4,c#5]@3 [a2,e4,a4,c#5]@2 [a2,e4,a4,c#5]@3", // A
  W: "[d4,g#4,b4]@2 ~ e2@2 [e2,d4,g#4,b4]@3, e2@3 ~@5, ~@2 [d4,g#4,b4]@3 ~@3", // G#dim E7 G#dim
  X: "[e2,d4,g#4,b4]@3 [e2,d4,g#4,b4]@2 [e2,d4,g#4,b4]@3", // E7
  Y: "~@3 b2@2 [b2,f#4,a4,b4]@3, b2@3 ~@5, ~@2 [f#4,a4,b4]@3 ~@3", // B7
  Z: "~@3 a2@2 [a2,c#4,e4,a4]@3, a2@3 ~@5, ~@2 [c#4,e4,a4]@3 ~@3", // A
  AA: "[e4,f#4,a#4]!2 ~ f#2@2 [e4,f#4,a#4] [e4,f#4,a#4]@2, f#2@3 ~@2 f#2@3, ~@2 [e4,f#4,a#4]@3 ~@3", // F#7
  AB: "~@4 d5 e5@2 [e4,g#4,b4], b2@3 b2@2 b2@3, ~ [f#4,a4,b4] ~@2", // E B7
  AC: "~@4 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4], e2@3 e2@2 e2@3, ~ [e4,g#4,b4] ~@2", // E
  AD: "~@3 e2 [c#3,f4,g#4,b4]@4, e2@3 ~@5, ~ [e4,g#4,b4] ~@2", // C#7 E
  AE: "~@2 [e4,g#4,b4] [e2,e4,g#4,b4] c#3@3 c#3, e2@3 ~ [f4,g#4,b4]@4", // E Fdim
  AF: "~@2 [e4,a#4,c#5] [f#2,e4,a#4,c#5] b2@3 ~, f#2@3 ~@5", // A#dim F#7
})).s("gm_piano").gain(0.51)

// chords · harmonica
const harmonica = note(`<
  A B C@2 D E F A G H I J E@2 F A G H K L A ~ M N ~@2 O P Q A G H R S T U@2 V W@2 X Y Z@2 AA AB ~@2 M N ~@2 O P Q A G H
  R AC AD AE AF AG AF AG AF L
>`.pickRestart({
  A: "[g#4,b4]", B: "[a4,c#5]", C: "[~ d5 ~ d5@2 ~ d5@18 ~@8, f#5@3 ~]/2", D: "~ [g#4,b4]@2 [a4,c#5] [b4,d5] ~@3",
  E: "~ [b4,d5]@2 [a4,c#5] [b4,d5] ~@3", F: "[g#4,b4] c#5", G: "b4", H: "a4", I: "g#4", J: "b4 ~", K: "g#4 b4",
  L: "e4 ~@3", M: "b4@3 ~", N: "~ f#5 ~ f#5@2 ~ f#5@6 ~@4, d5@3 ~", O: "~ g#4@2 a4 b4@2 ~@2",
  P: "~ b4@2 a4 [b4,d5]@2 ~@2", Q: "b4 [a4,c#5]", R: "g#4@2 b4 ~", S: "~ d5@2 c#5 ~@4", T: "d5@3 c#5 [b4,d5]@2 ~@2",
  U: "[d5@6 [a4,c#5]@2 b4@4 ~@4 b4@2 ~ b4@2 ~ b4@2 ~ b4@2 ~ b4@2 ~ b4, ~@7 d5@9]/2", // A
  V: "d5@3 [f#4,a4] [b4,d5] [a4,c#5] [b4,d5] [a4,c#5]", // F#m Bm A Bm A
  W: "[[g#4,b4]@2 [f#4,a4]@2 [g#4,b4]@2 [f#4,a4]@2 [e4,g#4]@4 ~@4 e5@2 ~ e5@2 ~ e5@2 ~ e5@2 ~ e5@2 [a4,c#5]@2, ~@7 b4@8 ~]/2", // G#m F#m G#m F#m E A
  X: "[b4,d5]@3 [a4,c#5] [g#4,b4]@2 ~@2", Y: "~ b4 ~ b4@2 ~ b4@2 ~ b4@3 ~@2 f#5@2, d5@3 ~",
  Z: "[d5@2 ~@3 f#5@2 f#5@2 f#5 d5@2 ~ f#5@3]/2", AA: "f#5@3 f#5@2 f#5@6 ~@3 f#5@2", AB: "f#5@2 e5 f#5@3 ~@2",
  AC: "~@3 a4", AD: "g#4@4 b4@3 g#4", AE: "~@7 b4", AF: "~ b4 ~ b4@5 b4@6 g#4@2, g#4 ~", AG: "e4@2 ~@5 b4",
})).s("gm_harmonica").gain(0.54).pan(0.3)

// chords · accordion · "Harmonica (Double)"
const accordion = note("<~@34 A B@2 C D@2 E F G@2 H I ~@22>".pickRestart({
  A: "d5@3 c#5 [b4,d5]@2 ~@2", B: "[d5@3 [a4,c#5] b4@2 ~ [b4,d5]@9]/2",
  C: "d5@3 [f#4,a4] [b4,d5] [a4,c#5] [b4,d5] [a4,c#5]", // F#m Bm A Bm A
  D: "[[g#4,b4] [f#4,a4] [g#4,b4] [f#4,a4] [e4,g#4]@2 ~ [b4,e5]@8 [a4,c#5]]/2", E: "[b4,d5]@3 [a4,c#5] [g#4,b4]@2 ~@2",
  F: "[b4,d5]@6 ~ f#5", G: "[d5@2 ~@3 f#5@2 f#5@2 f#5 d5@2 ~ f#5@3]/2", H: "f#5@3 f#5@2 f#5@6 ~@3 f#5@2",
  I: "f#5@2 e5 f#5@3 ~@2",
})).s("gm_accordion").gain(0.44).pan(0.8)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@2 A@4 B A C D E F A@2 B A C D G H@2 C H@2 E F A@2 B A C D G H A@4 D@2 A@2 C I E F H C H@2 E F A@2 B A C D G J G J G
  J G J G ~
>`.pickRestart({
  A: "[e3,b3,d4,g#4,b4]!8", B: "[e3,b3,d4,g#4,b4]!4 [a2,e3,a3,c#4,e4,a4]!4", C: "[b2,f#3,a3,d#4,f#4,b4]!8",
  D: "[a2,e3,a3,c#4,e4,a4]!8", E: "[f#2,c#3,e3,a#3,c#4,f#4]!8", F: "[b2,f#3,a3,d#4,f#4]!8",
  G: "[f#2,c#3,e3,a#3,c#4,f#4]!4 [b2,f#3,a3,d#4,f#4]!4", H: "[e3,b3,e4,g#4,b4]!8", I: "[a2,e3,g3,c#4,e4,a4]!8",
  J: "[e2,b2,e3,g#3,b3,e4]!4 [c#3,f3,b3,c#4]!4", // E C#7
})).s("gm_overdriven_guitar").gain(0.33).pan(1)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@2 A@4 B A C D E F A@2 B A C D G A@2 F H@2 I J A@2 B A C D G A@5 D@2 A@2 C D K L A F H@2 I J A@2 B A C D G M N M N M
  N M N O
>`.pickRestart({
  A: "e2!2 g#2!2 b2!2 g#2 b2", B: "e2!2 g#2!2 a2!4", C: "b1!2 d#2!2 f#2!2 d#2 f#2", D: "a1!2 c#2!2 e2!2 c#2 e2",
  E: "f#1!2 a#1!2 c#2!2 a#1!2", F: "b1!8", G: "f#1!2 a#1!2 b1!4", H: "e2!8", I: "f#2!8", J: "b2!5 a2 g#2 f#2",
  K: "f#1!8", L: "b1!7 e2", M: "e2!4 c#2!4", N: "f#1!4 b1!4", O: "e2!4 c#2!2 ~@2",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@2 A@33 B A C A@14 D A E D A@12>".pickRestart({
  A: "x", B: "x ~@3 x ~@2 x", C: "x ~ x!2", D: "x ~@6 x", E: "x!2",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@2 A@31 B A@3 C A D A E A@26>".pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@2 x!2 ~@3 x", C: "~@2 x!2 ~ x ~@2", D: "~@2 x!2 ~ x!2 ~", E: "~@4 x ~ x ~@5 x!3 ~",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@33 [~@8 x!5 ~@3] ~@34>").gain(0.38)

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

// drums · crash
const crash = s("cr").struct("<~@37 [~@2 x!2] x ~@29>").gain(0.38)

stack(piano, harmonica, accordion, overdriven_guitar, bass, kick, snare, low_tom, open_hat, crash)

More by The Beatles