Strudelify
Good Morning Good Morning cover art

Sgt. Pepper's Lonely Hearts Club Band

Good Morning Good Morning

The Beatles

KeyA majorTempo125 bpm
0:00/0:00
// Good Morning Good Morning — The Beatles
// 125 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Syn Clavi" named as a piano, played on clavinet (its electric guitar clean patch is not one)
// note: Full arrangement: all 53 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · fretless bass · "Bass guitar"
const bass = note(`<
  A B C D E@2 F G H I J K L@2 M N O P Q R S T U V@2 W X Y Z AA AB AC AD@2 AE AC AF E@2 F G H I J K L@2 M AG M AG M ~
>`.pickRestart({
  A: "a2@2 ~@4 a2!2 d3@2 ~@4 d3!2", B: "a2 ~ a2!2 d3 ~ d3!2 a2 ~ a2!2 d3 ~ d3!2",
  C: "a2 ~ a2!2 d3 ~ d3!2 a2 ~ a2!2 d3@2 d3!2", D: "a2 ~@7", E: "[a2 ~ a2@3 ~ a2@3 ~ a2 ~ g2@9 ~ g2@3 ~ g2 ~ g2@3 ~]/2",
  F: "a2@3 ~@5 a2 ~ a2@3 ~ a2@2", G: "~@2 a2 ~ g2@9 ~ g2@2", H: "~@2 g2 ~ g2@2 ~@2 a2@3 ~ a2@3 ~",
  I: "a2@3 ~ a2@2 ~@2 d2@3 ~ d2@2 ~@2", J: "d2@3 ~ d2@3 ~ d2@2 d#2 ~ e2@3 ~", K: "e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~ a2@3 ~",
  L: "[a2 ~ a2@3 ~ a2 ~ g2@10 ~@2 a2@3 ~ a2@3 ~ a2 d3@2 ~]/2", M: "d3 ~ d3 ~ a2@2 ~@10",
  N: "~@4 a2 ~ a2@3 ~ a2@3 ~ a2 ~", O: "g2@9 ~ g2@3 ~ g2 ~", P: "g2@3 ~ a2@3 ~@5 a2 ~ a2@2", Q: "~@2 a2@3 ~ a2 ~ g2@8",
  R: "~@2 g2@3 ~ g2 ~ g2@2 ~@2 a2@3 ~", S: "a2@3 ~ a2@3 ~ a2@2 ~@2 d2@3 ~", T: "d2@2 ~@2 d2@3 ~ d2@3 ~ d2@2 d#2 ~",
  U: "e2@3 ~ e2@2 ~@2 e2 ~ e2@2 ~@2 e2 ~", V: "[a2@3 ~ a2 ~ a2@3 ~ a2 ~ g2@10 ~@2 a2@3 ~ a2@3 ~]/2",
  W: "a2 d3@2 ~ d3 ~ d3 ~ a2@2 ~@6", X: "~@8 a2 ~ a2@3 ~ a2@2", Y: "~@2 a2 ~ g2@5 ~ g2 ~ g2@4",
  Z: "~@2 g2 ~ g2@4 a2@3 ~@5", AA: "a2 ~ a2@3 ~ a2 ~ a2@3 ~ g2@4", AB: "~@2 g2 ~ g2@5 ~ g2 ~ g2@3 ~",
  AC: "a2@3 ~ a2@2 ~ a2 g2@3 ~ g2@2 ~ g2", AD: "a2@3 ~ a2@2 ~ a2 g2@3 ~ g2 ~@2 g2",
  AE: "a2@3 ~ a2 ~@2 a2 g2@3 ~ g2@2 ~ g2", AF: "a2@4 ~@4 e2 ~ f2 ~ f#2 ~ g2 ~", AG: "~@4 a2@3 ~ a2@3 ~ a2 d3@2 ~",
})).s("gm_fretless_bass").gain(0.8)

// chords · clavinet · "Syn Clavi"
const clavinet = note(`<
  ~@4 A B C D E F G H I J K L M N O P Q R S T U V W X@2 Y@2 Z AA AB AC AD AE A B C D E F G H I J K AF K AF K ~
>`.pickRestart({
  A: "[a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2 [g3,b3,d4]@3 ~", // A G
  B: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~", C: "[a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2",
  D: "[a3,c#4,e4]@2 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@2", // A G
  E: "[g3,b3,d4] ~ [g3,b3,d4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // G A
  F: "[a3,c#4,e4]@2 ~@2 [a3,e4] ~@3 [d3,f#3,a3]@2 ~@2 [d3,f#3,a3]@2 ~@2, ~@2 c#4 ~@5", // A A5 D
  G: "[d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [e3,g#3,b3] ~", // D E
  H: "[e3,g#3,b3] ~ [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~ [a3,c#4,e4] ~", // E E7 A
  I: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~", // A G
  J: "[g3,b3,d4]@2 ~@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2 [d4,f#4,a4]@3 ~", K: "[d4,f#4,a4] ~ [a3,c#4,e4] ~@5",
  L: "~@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2", // A
  M: "[g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@2", // G
  N: "[g3,b3,d4]@2 ~@2 [a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@2 ~@2", // G A
  O: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~@2", // A G
  P: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [a3,c#4,e4] ~", // G A
  Q: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,e4] ~@3 [d3,f#3,a3]@2 ~@2, ~@4 c#4 ~@3", // A A5 D
  R: "[d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~", // D
  S: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~", // E E7
  T: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [g3,b3,d4]@3 ~", // A G
  U: "[g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2", // G A
  V: "[d4,f#4,a4]@3 ~ [d4,f#4,a4]@2 ~@2 [a3,c#4,e4]@2 ~@6", W: "~@4 [a3,c#4,e4]!2 ~ [a3,c#4,e4]",
  X: "[[a3,c#4,e4] a3 [g3,b3,d4]@2 ~ [g3,b3,d4] [g3,b3,d4]@3 [g3,b3,d4]!2 ~ [a3,c#4,e4] ~@3]/2", // A G A
  Y: "[[a3,c#4,e4]!2 ~ [a3,c#4,e4]!2 a3 [g3,b3,d4]@3 [g3,b3,d4] [b3,d4]@3 [g3,b3,d4] [g3,b3] ~, ~@5 g3 ~ d4]/2", // A G Bm G
  Z: "c#4@2 [a3,c#4] a3 [g3,b3,d4]@2 g3!2, e4@3 ~@5, a3 ~@5 [b3,d4]@2", // A G Bm
  AA: "[a3,e4] ~ [a3,c#4,e4] a3 [g3,b3,d4] ~ [g3,b3,d4] g3, c#4 ~@3", // A5 A G
  AB: "[a3,c#4,e4,f#4] ~ a3 [a3,b3] [g3,b3,d4] ~ g3!2, ~ [c#4,e4] ~ [b3,d4]", // F#m7 Asus2 G C#m Bm
  AC: "[a3,c#4,e4] ~ [a3,c#4,e4] a3 [g3,b3,d4] ~ g3!2, ~@3 [b3,d4]", // A G Bm
  AD: "[a3,c#4,e4] ~ [a3,c#4,e4] a3 [g3,b3,d4] ~ [g3,b3,d4] [g3,d4]", AE: "[a3,c#4,e4]@3 ~",
  AF: "~@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2 [d4,f#4,a4]@3 ~", // A D
})).s("gm_clavinet").gain(0.55).pan(0.4)

// chords · alto sax · "Brass"
const alto_sax = note(`<
  A B@2 C D E F@3 G@3 H@2 I J K L M@2 N O@2 D P Q@2 ~@5 R@3 S T U V W@3 X@3 Y@2 Z AA Z AA Z ~
>`.pickRestart({
  A: "~@7 [a3,a4]", B: "[f#3,f#4] [e3,e4] ~ [a3,a4] [f#3,f#4] [e3,e4] ~ [a3,a4]",
  C: "[f#3,f#4] [d3,d4] ~ [e3,e4]@3 ~@2", D: "a3 ~ a3@2 g3@2 b3@4 e3@2 g3@4", E: "a3 e3@2 g3@2 a3 f#3@2",
  F: "[e3@4 ~@4 a3 ~ a3@2 g3@2 b3@4 e3@2 g3@4 a3@2 e3@4 g3@4 a3@2 f#3@4 e3@4 ~@4]/3",
  G: "[~@8 a3 ~ a3 ~ f#3 ~ b3@4 f#3 ~ a3@4 f#3@2 c#4@4 b3@5 ~ d4@4 c#4@4 a3 ~ a3@2]/3",
  H: "[g3 b3@2 e3 g3@2 a3 ~@2 a4 f#4 e4 ~ a4 f#4 e4, ~@14 e3@7 ~@11]/2", I: "~@2 a4@2 f#4@2 d4@3 ~ e4@3 ~@3",
  J: "~@4 a3 ~ a3@2 g3@2 b3@4 e3@2", K: "g3@2 a3 e3@2 g3@2 a3", L: "f#3@4 e3@4 ~@4 a3 ~ a3@2",
  M: "[g3 b3@2 e3 g3@2 a3 e3@2 g3@2 a3 f#3@2 e3@2]/2", N: "~@12 a3 ~ a3 ~",
  O: "[f#3 ~ b3@4 f#3 ~ a3@4 f#3@2 c#4@4 b3@5 ~ d4@4 c#4@4]/2", P: "a3 ~@2 a4 f#4 e4 ~ a4, ~@2 e3@7 ~@7",
  Q: "[f#4@2 e4@2 ~@2 a4@2 f#4@2 d4@3 ~ e4@10 ~@8]/2",
  R: "[~ c#4 ~ c#4!2 ~ c#4 d4@4 c#4 b3 a3@2 ~ a3 c#4 ~ c#4!3 ~ d4@4 c#4 b3 ~ a3 ~ a3 c#4 ~ c#4!3 ~ d4@4 ~ b3 a3 ~ c#4, ~@15 c#4@2 ~@14 c#4@2 ~@10 c#4@2 ~@3]/3",
  S: "a3 c#4 ~ c#4!3 ~ d4@4 c#4 b3 a3 ~ c#4", T: "a3 ~@7",
  U: "[a3,c#4] ~ [a3,c#4]@2 [g3,b3]@2 [b3,e4]@4 [e3,a3]@2 [g3,d4]@4", // A G E5 A5 G5
  V: "[a3,e4] [e3,c#4]@2 [g3,d4]@2 [a3,e4] [f#3,d4]@2", // A5 C#m G5 A5 D
  W: "[[e3,c#4]@4 ~@4 [a3,c#4] ~ [a3,c#4]@2 [g3,b3]@2 [b3,e4]@4 [e3,a3]@2 [g3,d4]@4 [a3,e4]@2 [e3,c#4]@4 [g3,d4]@4 [a3,e4]@2 [f#3,d4]@4 [e3,c#4]@4 ~@4]/3", // C#m A G E5 A5 G5 A5 C#m …
  X: "[~@8 [a3,f#4] ~ [a3,f#4] ~ e4@2 [b3,g4]@4 [f#3,e4] ~ [a3,f#4]@4 f#3@2 [c#4,a4]@4 [b3,g#4]@5 ~ [d4,b4]@4 [c#4,g#4]@4 [a3,a4] ~ a3@2, ~@12 f#3 ~@11 e4 ~@21 a4 ~]/3", // D Em F#7 D F#m E G C#5 …
  Y: "[g3 [b3,g4]@2 [e3,a4] [g3,f#4]@2 [a3,g4] ~@2 a4 f#4 e4 ~ a4 f#4 e4, b4 ~@13 [e3,e4]@7 ~@11]/2", Z: "~ a4@2 ~@5",
  AA: "~ a4 f#4 e4 ~ a4 f#4 e4",
})).s("gm_alto_sax").gain(0.8)

// chords · alto sax · "Brass" · soft notes
const alto_sax_soft = note("<[~@7 d5] [b4 a4 ~ d5 b4 a4 ~ d5]!2 [b4 a4 ~ a4@3 ~@2] ~@49>").s("gm_alto_sax").gain(0.48)

// chords · distortion guitar · "Guitar"
const distortion_guitar = note("<~@26 A B C D E F ~@4 G ~@16>".pickRestart({
  A: "~@2 [a5,e6]@4 g6@2 [a5,a6]!2 ~ [a5,a6]!2 ~ [a5,a6] [g5,a5,a6]", // A5 A Gsus2
  B: "~ [g5,a5,a6] [a5,a6] ~ [f#5,a5,a6]@5 ~ [f#5,a5,a6] ~ [f#5,a5,a6]@4", // Gsus2 A F#m
  C: "~@2 [g5,a5,a6] ~ [f#5,a5,a6]@3 ~ [e5,a5,a6]@5 ~@3", // Gsus2 F#m A5
  D: "[a5,a6]!2 ~ [a5,a6]!2 ~ [g5,a5,a6]!2 ~ [g5,a5,a6]!2 ~ [f#5,a5,a6]@4", // A Gsus2 F#m
  E: "~@2 [f#5,a5,a6] ~ [f#5,a6]@3 ~ [g5,a6]@3 ~ [g5,a5,a6]@3 ~, ~@4 a5@7 ~@5", F: "[e5,a6]@3 ~@13, a5 ~@15",
  G: "~@2 a5@3 e6@3 a6@8",
})).s("gm_distortion_guitar").gain(0.25).pan(0.8)

// other · clarinet
const clarinet = note("<~ A@3 ~@49>".pickRestart({
  A: "[~@2 a4@8 ~@5 a4@9]/3",
})).s("gm_clarinet").gain(0.29)

// other · trombone · "Brass"
const trombone = note(`<
  A B C D ~@4 E F G H I J K L M@2 N@2 O ~ P Q@5 R S@2 T@6 U@2 V@2 W X G H Y Z AA AB AA AB AA ~
>`.pickRestart({
  A: "c#3 ~ d3 ~ e3 ~ d3@9 ~", B: "c#3@3 ~@5 d3@2 ~@6", C: "c#3 ~ d3 ~ e3 ~ d3@10", D: "c#3 ~@7",
  E: "~@8 a2@3 ~ a2@2 ~ a2", F: "a2 ~ b2 ~ c#3 ~ a2 ~ d3@2 ~@6", G: "~@12 e2@3 ~",
  H: "e2@2 ~ e2!2 ~ f#2 ~ g#2 ~ e2 ~ a2 ~ c#3 ~", I: "d3 ~ c#3@3 ~ d3 ~ d3@4 ~@4", J: "~@4 a2@4 c#3@3 e3 d3@4",
  K: "f#3@3 ~ a2@2 ~@10, ~@3 a3@2 ~@11", L: "~@4 c#3 ~ c#3 ~ b2 ~ e3@4 a2@2",
  M: "[d3@11 ~ d3@7 ~ e3@4 ~@4 c#3 ~ c#3 ~]/2", N: "[b2@2 e3@4 a2@2 d3@11 ~ d3@7 ~ [a2,e3]@3 ~]/2",
  O: "a2@2 ~ a2!2 ~ b2 ~ c#3 ~ a2@2 d3@3 ~", P: "e2@3 ~ e2@2 ~ e2!2 ~ f#2 ~ g#2 ~ e2 ~",
  Q: "[a2 ~ c#3 ~ d3 ~ e3@3 ~ f#3 ~ d3@7 ~@5 a2@4 c#3@3 ~ d3@4 f#3@3 ~ a2@12 ~@4 c#3 ~ c#3@2 b2@2 e3@4 a2@2 d3@12, ~@31 e3@2 ~@6 a3@2 ~@39]/5",
  R: "d3@2 e3 ~", S: "[c#3@2 c#3@2 b2@2 e3@4 a2@2 d3@12 d3@7 ~]/2",
  T: "[a2@4 c#3@3 ~ d3@4 f#3@3 ~ a2@4 c#3@3 ~ d3@4 f#3@3 ~ a2@4 c#3@3 ~ d3@4 f#3@3 ~ a2@4 c#3@3 ~ d3@4 f#3@3 ~ a2@4 c#3@3 ~ d3@4 f#3@3 ~ [a2,c#3]@3 ~@13, ~@7 e3@2 ~@6 a3@2 ~@6 e3@2 ~@6 a3@2 ~@6 e3@2 ~@6 a3@2 ~@6 e3@2 ~@6 a3@2 ~@6 e3@2 ~@6 a3@2 ~@15]/6", // A
  U: "[c#3 ~ c#3 ~ b2 ~ e3@4 a2@2 d3@11 ~ d3@7 ~]/2", V: "[e3@4 ~@4 c#3 ~ c#3 ~ b2@2 e3@4 a2@2 d3@11 ~]/2",
  W: "d3@7 ~ [a2,e3]@3 ~ a2@2 ~ a2", X: "a2 ~ b2 ~ c#3 ~ a2@2 d3@3 ~@5", Y: "d3 ~ e3@3 ~ f#3 ~ d3@7 ~",
  Z: "~@4 a2@4 c#3@3 ~ d3@4, ~@11 e3@2 ~@3", AA: "f#3@3 ~ a2@12, ~@3 a3@2 ~@11",
  AB: "~@8 c#3@3 ~ d3@4, ~@4 a3@6 ~ e3@2 ~@3",
})).s("gm_trombone").gain(0.45).pan(0.2)

// other · baritone sax · "SAX"
const baritone_sax = note("<[e4 ~ f#4 ~ g4 ~ f#4@9 ~] [e4@3 ~@5 f#4@2 ~@6] [e4 ~ f#4 ~ g4 ~ f#4@10] [e4 ~@7] ~@49>")
  .s("gm_baritone_sax").gain(0.8).pan(0.8)

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

// drums · snare
const snare = s("sd").struct("<A@3 B C@4 D E C@4 F G C@3 H I C@4 D J C@4 K@5 L C@4 D E C@4 F M F M N ~>".pickRestart({
  A: "x", B: "x ~ x!13 ~", C: "x!4", D: "x ~@3 x ~@3 x ~ x!6", E: "x!6 ~@2 x ~@3 x ~@3", F: "x ~@3 x ~ x!10",
  G: "x!3 ~ x ~@3 x ~@3 x ~@3", H: "x ~@3 x ~@3 x ~@3 x ~ x!2", I: "x!10 ~@2 x ~@3", J: "x!9 ~@3 x ~@3", K: "~ x ~ x",
  L: "~@2 x!13 ~", M: "x!5 ~@3 x ~@3 x ~@3", N: "x!2 ~@2",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@31 [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x]!5 ~@17>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@36 x ~@16>").gain(0.64)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  [~ x ~ x ~ x ~ x]
  [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~]
  [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x!2]
  ~@50
>`).gain(0.8)

stack(
  bass, clavinet, alto_sax, alto_sax_soft, distortion_guitar, clarinet, trombone, baritone_sax, kick, snare, hihat,
  open_hat, crash, tambourine
)

More by The Beatles