Strudelify
Here Comes the Sun cover art

1969 · Abbey Road

Here Comes the Sun

The Beatles

KeyA majorTempo129 bpm
0:00/0:00
// Here Comes the Sun — The Beatles
// 129 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 102 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): Clean gt.
setcpm(129/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"
const bass = note(`<
  ~@13 A@2 B C D E F G H E I J K L M A@2 N O P Q R S T U V W X Y Z AA AB A@2 AC AD@2 AE AF AG@3 AH@2 AI AJ AK AL AM@2 AE
  AF AN@3 AO AP@2 AQ AR AS AT AU AV AW AX AY AZ BA BB@2 BC@2 BD BE BF BG@2 BH@2 BI@3 BJ@2 ~@4
>`.pickRestart({
  A: "[d2@3 c#2@3 b1@3 a1@3 e2 a1 b1 e2]/2", B: "a2@2 a2!3 a2@2 ~", C: "a2@3 ~ a2@2 a2@3 ~ a2@2 a2 ~ f#2@2",
  D: "d2@2 d2@3 ~ d2@2 ~@2 d2@3 ~ d2 ~", E: "e2@2 e2@3 ~ e2@3 ~ e2@2 f#2@2 g#2@2", F: "a2@2 a2!2 ~ a2 ~@2",
  G: "a2@2 a2@3 ~ a2@4 a2@2 f#2@2 e2@2", H: "d2@3 ~ d2@2 d2@3 ~ d2@2 d2@2 d#2@2", I: "a2@3 ~ a2@2 a2@2 ~@2 a2@3 ~ e2@2",
  J: "a2@2 a2@3 ~ a2@3 ~ a2@2 a2 ~ e2@2", K: "d2@3 ~ d2@2 d2@3 ~ d2@2 d2 ~ d2@2", L: "b1!3 b1@2 b1!2 d#2",
  M: "e2 a1!5 c#2 e2", N: "a2@2 a2@2 a2@2 a2@4 a2@3 ~ d2@2", O: "e2!8", P: "a2@2 ~ a2!2 a2@2 ~",
  Q: "a2@4 ~@2 a2@2 a2@2 a2@2 ~@2 a2 ~", R: "d2@4 ~@2 d2@2 ~@2 d2@3 ~ d2 ~", S: "e2@2 e2@3 ~ e2@3 ~ f#2@2 g#2@2 e2@2",
  T: "a2@4 ~@2 a2@2 ~@2 a2@2 ~@2 a2 ~", U: "a2@2 ~ a2 ~ a2 ~ d2", V: "d2@3 ~@3 d2@3 ~ d2@2 d2@2 d#2@2",
  W: "e2@4 ~@2 e2@3 ~ f#2@2 g#2@2 e2@2", X: "a2@4 ~@2 a2@3 ~ a2@3 ~ e2@2", Y: "a2@4 ~@2 a2@2 ~@2 a2@2 f#2 ~ e2@2",
  Z: "d2@4 ~@2 d2@3 ~ d2@2 d2 ~ c#2@2", AA: "b1@2 ~ b1@2 b1!2 d#2", AB: "a2!4 d2 e2 f#2 a2",
  AC: "a2@4 a2@2 a2@3 ~ a2@2 a2@2 d2@2", AD: "[e2 ~ e2@4 ~ c3@3 g2@3 f#2@3]/2", AE: "d2 f#2 a2@2 a2 a2@2 a2",
  AF: "~@2 a1@2 e2@2 ~@2 e2@5 ~ g#2@2",
  AG: "[b2@2 c3@6 g2@6 f#2@6 d2@2 f#2@2 a2@4 a2@2 a2@4 a2@3 ~ a1@2 e2@2 ~@2 e2@4]/3",
  AH: "[~ g#2 b2 c3@3 g2@3 f#2@3 d2 f#2 a2@2]/2", AI: "a2@2 a2@4 a2@3 ~ a1@2 e2@2 ~@2", AJ: "e2@5 ~ g#2@2 b2@2 c3@6",
  AK: "g2@3 f#2@3 d2 f#2", AL: "a2@4 a2@2 a2@4 a2@3 ~ a1@2", AM: "[e2@2 ~@2 e2@5 ~ g#2@2 b2@2 c3@6 g2@6 f#2@6]/2",
  AN: "[b2@2 c3@6 g2@6 f#2@6 d2@2 f#2@2 a2@4 a2@2 a2@4 a2@3 ~ a1@2 e2 ~ e2 ~ e2 ~ e2@2]/3",
  AO: "e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~", AP: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  AQ: "e2 ~ e2 ~ e2 ~ e2 ~ a2@4 ~@2 a2@2", AR: "a2!2 ~ a2 a2@2 ~ a2", AS: "a2!4 d2@2 ~ d2",
  AT: "d2@2 d2@2 ~@2 d2@2 e2@3 ~@3 e2@2", AU: "e2@2 f#2@2 g#2@2 e2@2 a2@3 ~@3 a2@2",
  AV: "a2@2 a2@2 ~@2 a2@2 a2@3 ~@3 a2@2", AW: "a2!2 f#2 e2 d2@2 ~ d2", AX: "d2!2 ~ d2 e2@2 ~ e2",
  AY: "e2 f#2 g#2 e2 a2@2 ~ a2", AZ: "a2@2 a2@3 ~@3 a2@4 ~@2 a2@2", BA: "a2@2 a2@2 f#2 ~ e2@2 d2@4 ~@2 d2@2",
  BB: "[d2@2 d2@2 d2 ~ c#2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 d#2@2 a2@2 a2@3 ~ a2@2]/2",
  BC: "[a2!2 c#2 e2 d2@3 c#2@3 b1@3 a1@3]/2", BD: "e2@2 a1@2 b1@2 e2@2 a2@2 a2@3 ~ a2@2",
  BE: "~@2 a2@3 ~ e2@2 a2@2 a2@3 ~ a2@2", BF: "~@2 a2@2 a2 ~ e2@2 d2@2 d2@2 ~@2 d2@2",
  BG: "[~@2 d2@2 d2 ~ d2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 d#2@2 a2@2 a2@2 a2@2 a2@2]/2",
  BH: "[d2 e2 f#2 a2 d2@3 c#2@3 b1@3 a1@3]/2",
  BI: "[e2@2 a1@2 b1@2 e2@2 a1@3 ~ a2@2 f#2@4 e2@4 a1@2 d2@6 c#2@6 b1@6 a1@6]/3",
  BJ: "[e2@2 a1@2 b1@2 e2@2 c2@13 ~@11]/2",
})).s("gm_fretless_bass").gain(0.64)

// chords · acoustic guitar steel · "12 str."
const acoustic_guitar_steel = note(`<
  A@8 B@4 C D@2 E@6 F@6 G@3 H I E@6 F@6 G@3 H J@4 K@6 L@2 M@5 N@6 O@8 P@7 Q@7 R@3 S@5 ~
>`.pickRestart({
  A: "[~@4 a4@2 ~@2 b4@2 a4@4 ~ e4 ~@4 c#5@2 a4@4 ~@4 a4@2 a4@4 ~@10 f#4@2 ~@2 f#4@2 ~@8 b3@4 c#5@4 ~@4 b4@2 ~@10 c#5@2 a4@4 e4@2 e4@2 ~@6 [a4,c#5]@2 a4@4 a3@2 ~@3 b3@17, ~@4 c#5@4 ~@2 c#5@10 ~@2 b4@16 b4@15 ~ a4@14 a4@6 a4@4 a4@4 a4@4 b4@11 ~@5 b4@8 [e4,g#4,b4]@18, ~@3 e4@4 ~ a3@8 d3@6 d3@2 [e4,g#4]@2 [e4,g#4]@2 e4@4 e4@3 e4@3 e4@2 e4@5 ~@3 a3@5 ~@11, ~@6 a4@4 ~@4 a4@4 a4@4 ~@4 a4@4 ~@2 f#3@17 ~@9 b4@7 ~@3 c#5@4 ~@2 c#5@10 ~@6 a4@4 a4@6 ~@6 a4@5 ~@17, ~@16 e4@11 ~ e4@5 ~@3 a4@6 a4@5 ~ b3@12 ~@4 a3@13 ~@15 a3@4 d3@12 [d3,a3]@4 ~@16]/8", // A E D5
  B: "[c#5@2 c#5 [a4,b4]@2 a4@2 ~@2 c#5 a4!2 [a4,b4] a4@3 f#4@2 [f#4,c#5] ~@7 f#3@2 ~ d#4 [f#3,b3,d#4]@2, e4@14 e4@19 ~@5 [f#4,b4]@5 f#4@5 ~@8 [f#3,b3]@4 ~@4, a4@3 ~@2 c#5@4 ~ c#5@2 ~ c#5@5 ~@3 c#5@3 ~@8, ~@14 a4@6 ~@12 d4@8 d4@6 a4@17 ~, ~@46 d#4@11 ~@7]/4", // Asus2 F#5 B B5
  C: "~@4 c#5@2 ~@4 e4@4 ~ f#4, a2@15 ~, e4 a3, ~@2 a4@3 a4@3, ~@3 b4@4 e4",
  D: "[~@2 a4@2 ~@14 a4 ~@5 a4@2 g#4@2 f#4@2 e4@2, f#4@6 e4@6 d4@7 ~ a4@4 d4@7 ~, ~@2 b4@3 b4@3 b4@3 b4@5, ~@8 a4@6 a4@4 e4@7 ~@7]/2",
  E: "[~@2 c#5!2 b4 ~ e4!2 ~ a4 c#5 ~@2 e4 ~@9 f#4 ~ f#4 [e4,g#4] a4@2 ~ e4 ~@4 a4 b4 ~@4 a4 c#5 ~@4 a4, a3@28 a3@16 [a3,d4]@5 ~@9 a4@4 ~@2 e4@14 e4@14 e4@4, e4@12 ~@4 e4@10 ~@2 e4@5 ~@5 b4@20 b4@6 c#5@4 c#5@5 ~ c#5@10 ~@2 b4@10, ~@2 a4@2 a4@3 a4@2 ~ a4@3 a4@2 a4@3 a4@3 a4@2 ~ [e4,g#4]@2 ~ e4@3 ~ [d4,a4]@2 a4@2 ~ a4@3 a4@2 ~ a4@3 a4@2 ~, ~@10 c#5@10 ~@2 b4@10 d4@12 ~@4 b3@15 ~ a3@16 a3@16]/6", // E D5 E D5
  F: "[a4@2 ~@5 f#4 g#4 f#4 g#4 ~@5 [e4,c#5]@2 c#5 ~ b4 ~@6 a4 b4 ~ [a3,e4]@2 a4@2 c#5 b4@2 a4 [a3,d4,a4] [d#4,a4]@2 a4!2 a4@2 ~@2 a4, d4@12 d4@5 ~@5 a4@4 a4@4 a4@8 a4@8 a4@8 ~@2 a4@8 ~@4 a4@6 ~@12 b4@10, ~@4 a4@6 a4@5 ~ e4@8 e4@4 e4@4 a3@16 a3@12 ~@4 [a3,d4]@12 ~@2 b3@13 ~ b3@4, ~@6 b4@20 b4@7 ~@3 e4@10 e4@14 ~@24 d#4@12, ~@21 c#5@5 c#5@2 ~ c#5@5 ~@3 c#5@2 ~@6 a4@2 ~]/6", // C#m A5 D5 D#dim D5
  G: "[a4@2 c#5 ~@4 e4 ~@11 b4 a4 g#4 ~ e4, e4@14 ~@2 f#4@6 e4@6 d4@6 e4@7 ~@3 f#4@4, ~@2 a4@3 a4@3 ~ a4@3 a4@3 a4@3 a4@2 d4@3 ~, ~@3 b4@6 ~ b4@3 b4@3 b4@3 ~ b4@4]/3",
  H: "~@3 a4 b4 ~@2 f#4, e4@15 ~, a3@3 a3, ~@2 a4@4 ~@2 a4@7 ~, ~@4 c#5@4 ~@2 c#5@5 ~",
  I: "~ f#4 g#4 ~@2 b4@3, [b3,e4,g#4] [b3,e4]@3, ~@3 a4@5", // E E5
  J: "[e3@4 e3 g#3 b3 ~@5 d4 ~ a3 ~@2 f#3 [e3,a3]@8 [e3,e4,g#4,b4]@2 e3@2 e3 g#3, [b3,e4,g#4]@10 ~@4 c4@7 ~ b3@15 ~@15 b3@11 ~, ~@8 e4@2 g3@3 f#3@4 ~@15, ~@18 g4@7 ~@5 d4@7 ~@19 [e4,g#4,b4]@7 ~, ~@8 d3 ~@7]/4", // A5 E
  K: "[b3 ~@5 d4 ~ a3 ~@2 f#3 [e3,a3]@8 [e3,e4,g#4,b4]@2 e3@2 e3 g#3 b3 ~@5 d4 ~ a3 ~@2 f#3 [e3,a3]@7 [e4,b4]@2 [e4,f#4,b4], ~@2 c4@7 ~ b3@15 ~@15 b3@11 ~@3 c4@7 ~ b3@15 ~@19, ~@4 e4@4 g3@6 f#3@8 ~@36 g4@7 ~@7 d3@4 ~@14 [e3,b3,g#4]@6, ~@6 g4@7 ~@5 d4@7 ~@19 [e4,g#4,b4]@7 ~@5 e4@4 ~@10 d4@7 ~@19, ~@10 d3@2 ~@18 g3@3 f#3@4 ~@11]/6", // A5 E A5 E5 Esus2 E
  L: "[e3@2 e3 g#3 b3 ~@5 d4 ~ a3 ~@2 f#3, [b3,e4,g#4,b4]@7 ~@3 c4@7 ~ b3@14, ~@6 e4@2 g3@3 f#3@4 ~, ~@14 g4@7 ~@5 d4@6, ~@7 d3]/2", // E
  M: "[[e3,a3]@7 [e4,b4]@2 [e4,f#4,b4] e3@2 e3 g#3 b3 ~@5 d4 ~ a3 ~@2 f#3 [e3,a3]@7 [e4,b4]@2 [e4,f#4,b4] e3@2 e3 g#3, ~@14 [e3,b3,g#4]@6 [b3,e4,g#4,b4]@7 ~@3 c4@7 ~ b3@15 ~@19 [b3,e4,g#4,b4]@7 ~, ~@16 e4@2 g3@3 f#3@4 ~@8 [e3,b3,g#4]@3 ~@4, ~@34 g4@7 ~@5 d4@7 ~@27, ~@12 d3 ~@7]/5", // A5 E5 Esus2 A5 E5 Esus2 E
  N: "[b3 ~@5 d4 ~ a3 ~@2 f#3 [e3,a3]@8 [e4,g#4,b4]@5 [f#4,b4] [g#4,b4] [a4,b4]@6 [g#4,b4] [a4,b4] b4@6 b4!2 [a4,d5]@5, ~@2 c4@7 ~ b3@15 ~@57 a4@4 ~@10, ~@2 e4@2 g3@3 f#3@4 ~@37, ~@6 g4@7 ~@5 d4@7 ~@25 e4@20 e4@26, ~@5 d3 ~@18]/6", // A5 E B5 G#m Asus2 G#m Asus2 D5
  O: "[[e3,b3,e4,g#4,b4]@2 [e3,b3,e4,g#4,b4]@2 ~@2 c#5!2 b4 ~ e4!2 ~ a4 c#5 ~@2 e4 ~@9 f#4 ~ f#4 [e4,g#4] a4@2 ~ e4 ~@4 a4 b4 ~@4 a4 c#5 ~@4 a4 a4@2 ~@5 f#4 g#4 f#4 g#4 a4, ~@8 a3@28 a3@16 [a3,d4]@5 ~@9 a4@4 ~@2 e4@14 e4@14 e4@5 ~@15 e4@8, ~@8 e4@12 ~@4 e4@10 ~@2 e4@5 ~@5 b4@20 b4@6 c#5@4 c#5@5 ~ c#5@10 ~@2 b4@10 ~@6 b4@18, ~@12 a4@4 a4@6 a4@4 ~@2 a4@6 a4@4 a4@6 a4@6 a4@4 ~@2 [e4,g#4]@4 ~@2 e4@6 ~@2 [d4,a4]@4 a4@4 ~@2 a4@6 a4@4 ~@2 a4@6 a4@4 ~@6 a4@6 a4@5 ~@9, ~@18 c#5@10 ~@2 b4@10 d4@12 ~@4 b3@15 ~ a3@16 a3@16 d4@12 d4@5 ~@7]/8", // E D5 E D5
  P: "[~@4 [e4,c#5]@2 c#5 ~ b4 ~@6 a4 b4 ~ [a3,e4]@2 a4@2 c#5 b4@2 a4 [a3,d4,a4] [d#4,a4]@2 a4!2 a4@2 ~@2 a4 a4@2 c#5 ~@4 e4 ~@11 b4, e4@4 e4@4 a3@16 a3@12 ~@4 [a3,d4]@12 ~@2 b3@13 ~ b3@5 ~@21 e4@7 ~@5 e4@6, ~@2 b4@7 ~@3 e4@10 e4@14 ~@24 d#4@13 ~@5 b4@12 ~@2 b4@6 b4@6 b4@6 ~@2, ~@2 a4@4 a4@8 a4@8 a4@8 ~@2 a4@8 ~@4 a4@6 ~@12 b4@11 ~@3 a4@6 a4@6 ~@2 a4@6 a4@6 a4@6 a4@4, ~@18 c#5@10 c#5@4 ~@2 c#5@10 ~@6 c#5@4 ~@12 a4@4 ~@2 e4@14 ~@2 f#4@7 ~@5 d4@7 ~@5]/7", // C#m A5 D5 D#dim D5
  Q: "[a4 g#4 ~ e4 c#5@2 c#5 ~ b4 ~@6 a4 b4 ~ [a3,e4]@2 a4@2 c#5 b4@2 a4 [a3,d4,a4] [d#4,a4]@2 a4!2 a4@2 ~@2 a4 a4@2 c#5 ~@4 e4 ~@11 b4, b4@8 e4 ~@3 e4@10 e4@14 ~@24 d#4@13 ~@5 b4@12 ~@2 b4@6 b4@6 b4@6 ~@2, d4@6 ~@2 a3@16 a3@12 ~@4 [a3,d4]@12 ~@2 b3@13 ~ b3@5 ~@21 e4@7 ~@5 e4@6, ~@4 f#4@4 a4@6 a4@8 a4@8 ~@2 a4@8 ~@4 a4@6 ~@12 b4@11 ~@3 a4@6 a4@6 ~@2 a4@6 a4@6 a4@6 a4@4, ~@18 c#5@10 c#5@4 ~@2 c#5@10 ~@6 c#5@4 ~@12 a4@4 ~@2 e4@14 ~@2 f#4@7 ~@5 d4@7 ~@5]/7", // A5 D5 D#dim D5
  R: "[a4 g#4 ~ e4 c#5@2 c#5 ~ b4 ~@2 e4 ~@11 b4, b4@8 e4 ~@3 e4@10 ~@2 f#4@7 ~@5 d4@7 ~@5, d4@6 ~@2 a3@17 ~@5 e4@7 ~@5 e4@6, ~@4 f#4@4 a4@6 a4@9 ~@3 a4@6 a4@6 a4@6 a4@4, ~@9 c#5@4 ~ b4@3 b4@3 b4@3 ~]/3",
  S: "[a4 g#4 ~@14 [a4,c#5]@24, b4@9 ~@3 g4@14 d3@4 e3@48 ~@2, d4@6 e4@4 e4@4 d4@4 d4@6 d4@9 ~@47, ~@4 f#4@4 c4@6 g3@7 ~ a3@9 [a3,e4]@48 ~, ~@4 b3 f#3@2 f#3 ~@12]/5", // A A5
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.3)

// chords · string ensemble 1 · "Slowstri"
const string_ensemble_1 = note(`<
  ~@7 A@5 B C D E F@2 G H I J K@5 B C D H L M N@2 O H I J P@5 B C D H Q@2 R@2 S@3 T@3 U V W X@2 R@2 Y@4 Z@2 AA@4 AB@4
  AC@7 AD@7 AE@3 AF@2 ~@4
>`.pickRestart({
  A: "[~@15 [a2,e4]@32 ~ d3@16 d#3@16, ~@47 f#4@32 ~]/5", B: "[e3,e4]", C: "[f#3,d4]@5 ~ [e3,c#4]@5 ~ [d3,b3]@4",
  D: "~@2 [e3,c#4]@5 ~ [e3,a3]@2 ~@2 [e2,g#3]@2 ~@2", E: "[a2,c#4]", F: "[[e3,e4]@15 ~ f#4@16, ~@15 d3@16 ~]/2",
  G: "[b3,g#4]@3 [a3,f#4] ~ [g#3,e4]@3", H: "[e3,c#4]", I: "[a3,e4]", J: "[d3,f#4]",
  K: "[[g#3,e4]@2 [a3,f#4]@2 [b3,g#4]@2 [c#4,a4]@3 ~ [b3,g#4]@5 [a2,e4]@32 ~ d3@16 d#3@16, ~@47 f#4@32 ~]/5", // C#m D E F#m E A5
  L: "[e3,g#3]", M: "c#4@15 ~, e3 ~@15", N: "[[a3,e4]@15 ~ f#4@16, ~@15 d3@16 ~]/2", O: "e4@3 b3, g#3",
  P: "[[g#3,e4]@15 [a2,e4]@32 ~ d3@16 d#3@16, ~@47 f#4@32 ~]/5", // C#m A5
  Q: "[[e3,b3] ~ [e3,b3] ~@4 [c3,e4]@3 [g2,b3]@3 [f#2,a3]@3]/2", // E5 C G F#m
  R: "[[d2,f#3]@2 [f#2,a3]@2 [a2,e4]@15 ~ b3@2 ~@2 [e2,b3]@2 ~@6, ~@20 e2 ~@11]/2", // D F#m A5 E5
  S: "[~@2 [c3,e4]@6 [g2,b3]@6 [f#2,a3]@6 [d2,f#3]@2 [f#2,a3]@2 [a2,e4]@15 ~ b3@2 ~@2 [e2,b3]@2 ~@2, ~@40 e2 ~@7]/3", // C G F#m D F#m A5 E5
  T: "[~@6 [c3,e4]@6 [g2,b3]@6 [f#2,a3]@6 [d2,f#3]@2 [f#2,a3]@2 [a2,e4]@15 ~ b3@2 ~@2, ~@44 e2 ~@3]/3", // C G F#m D F#m A5
  U: "[e2,b3] ~@4 [c3,e4]@3", V: "[g2,b3]@3 [f#2,a3]@3 [d2,f#3] [f#2,a3]", W: "[a2,e4]@15 ~",
  X: "[b3 ~ [e2,b3] ~@4 [c3,e4]@3 [g2,b3]@3 [f#2,a3]@3, e2 ~@31]/2", // E5 C G F#m
  Y: "[~@2 [c3,e4]@6 [g2,b3]@6 [f#2,a3]@6 [d2,f#3]@2 [f#2,a3]@2 [a2,e4]@15 ~ e3@2 ~@2 e3@2 ~@2 e3@2 f#3 ~ g#3@2 ~@2 e3@2 ~@2 e3@2 ~@2, ~@40 g#3@10 ~ e3@2 ~ a3@10]/4", // C G F#m D F#m A5
  Z: "[e3@2 g#3@2 [e3,a3]@2 ~@2 e3@2 ~@2 e3@2 ~@2 e3@2 ~@2 b3@2 ~ e3@2 ~@3 e3@2 ~@2, ~@3 b3@6 a3 ~ d4@5, ~@19 e3@2 ~@11]/2", // A5
  AA: "[e3@2 ~@2 e3@2 ~@2 [e3,c#4]@16 [a3,e4]@15 ~ f#4@16 [b3,g#4]@6 [a3,f#4]@2, ~@39 d3@16 ~@9]/4", // C#m A5 E D
  AB: "[~ [g#3,e4]@3 [e3,c#4]@8 [a3,e4]@8 [d3,f#4]@8 [g#3,e4] [a3,f#4] [b3,g#4] [c#4,a4]]/4", // C#m A5 D C#m D E F#m
  AC: "[~@2 [b3,g#4]@5 e4@16 ~ e4@15 ~ d3@16 d#3@16 [e3,e4]@16 [f#3,d4]@5 ~ [e3,c#4]@5 ~ [d3,b3]@5 ~ [e3,c#4]@5 ~, ~@7 a3@32 f#4@32 ~@41]/7", // E D C#m G C#m
  AD: "[[e3,a3]@2 ~@2 [e2,g#3]@2 ~ e4@16 ~ e4@15 ~ d3@16 d#3@16 [e3,e4]@16 [f#3,d4]@5 ~ [e3,c#4]@5 ~ [d3,b3]@5 ~ [e3,c#4]@5 ~, ~@7 a2@32 f#4@32 ~@41]/7", // A5 E D C#m G C#m
  AE: "[[e3,a3]@2 ~@2 [e2,g#3]@2 ~@2 [e3,e4]@16 [f#3,d4]@5 ~ [e3,c#4]@5 ~ [d3,b3]@5 ~ [e3,c#4]@5 ~]/3", // A5 E D C#m G C#m
  AF: "[[e3,a3]@2 ~@2 [e2,g#3]@2 ~ [c3,a3]@23 ~@2]/2", // A5 E F
})).s("gm_string_ensemble_1").gain(0.36).pan(0.7)

// chords · electric guitar clean · "Clean gt"
const electric_guitar_clean = note("<~@96 A@2 ~@4>".pickRestart({
  A: "[~@2 a3@3 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@15 A B@3 A B@3 A B@3 C ~@2 B D A B@3 A B@3 A B@3 C ~@2 E F ~ G H D I J K L M N ~ O ~@2 G P ~ Q R Q R Q S T@3 R T@3 R
  T@4 P ~ I U T@3 P ~ Q P ~ I ~@5
>`.pickRestart({
  A: "x ~@4 x ~ x", B: "x ~@2 x ~ x ~ x", C: "x ~@2 x ~ x ~@2", D: "x", E: "x ~@2 x!3 ~ x", F: "x!2 ~@2",
  G: "~@2 x ~@3 x!2", H: "~ x ~@4 x!2", I: "~ x", J: "x!2 ~ x ~@4", K: "x!3 ~@5", L: "~@3 x", M: "~@2 x!2 ~ x ~@2",
  N: "~@2 x!3 ~@3", O: "x ~@3 x!2 ~ x", P: "~ x ~@6", Q: "~@4 x ~@2 x", R: "~ x ~ x!2 ~@3", S: "~ x ~@2 x ~@3",
  T: "~ x ~ x!2 ~@2 x", U: "x!2 ~@2 x ~@2 x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A B C@13 A B C D C@13 A B C E F G H I C J K B L M A C N F G H I C@2 O C P C@13 Q F R C@4 Q F R Q F S ~@5
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~ x ~@2 x ~@3", C: "~ x ~ x", D: "~@4 x ~@3 x!4 ~@4", E: "x ~ x ~@4 x",
  F: "~@2 x ~@2 x ~@2", G: "x!2", H: "x ~@3 x!4 ~@2 x ~@5", I: "~ x ~@2 x ~@2 x", J: "~@4 x ~@3 x!4 ~@2 x ~",
  K: "~@3 x ~@2 x ~", L: "x ~@7 x ~@3 x!4", M: "~ x!5 ~@2", N: "x!4 ~@2 x ~@7 x ~", O: "x!4 ~@8 x ~@3", P: "~@3 x",
  Q: "~@2 x ~ x ~@2 x", R: "x ~@2 x", S: "x",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@58 A B C D E F G H I J K@3 L ~@30>".pickRestart({
  A: "~@6 x!2", B: "~ x!2 ~ x!2 ~ x", C: "x!2 ~ x", D: "~ x!2 ~@5", E: "x!2 ~ x!2 ~ x!2", F: "~ x ~@2 x ~@3",
  G: "x ~@2 x!2 ~@3", H: "~@2 x!2 ~ x!2 ~", I: "x!2 ~ x ~@2 x ~", J: "~@2 x ~@2 x!2 ~", K: "~@5 x!2 ~", L: "x!2 ~@6",
})).gain(0.42)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@14 A ~@14 A ~ B ~@14 A ~@4 C ~@2 D ~@3 E ~@2 F ~@2 G E ~@2 H ~ I ~@15 J ~@6 J ~@2 K ~@5
>`.pickRestart({
  A: "~@5 x!3", B: "~@12 x!4", C: "~ x", D: "~@3 x", E: "x", F: "~@4 x!2 ~@2 x ~ x ~ x ~@3", G: "~@8 x ~@3 x!4",
  H: "~@4 x!4 ~@8", I: "x!7 ~@9", J: "~ x!2 ~ x ~ x ~@9", K: "~ x!3 ~@4",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B C D B@13 C D E D B@13 C D ~ B F G H I E J K L M B D ~ B F G H I B N B N B@15 O B@6 O B@2 P ~@5
>`.pickRestart({
  A: "~@7 x", B: "x!8", C: "x!5 ~@3", D: "~ x!7", E: "x!4 ~@4", F: "x!2 ~ x!5", G: "x!2 ~@6", H: "~@2 x!6",
  I: "x!4 ~ x!3", J: "~@4 x!4", K: "x!6 ~ x", L: "x!6 ~@2", M: "~@6 x!2", N: "~@5 x!3", O: "x ~@4 x!3", P: "x",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct(`<
  ~@15 A ~@14 A ~ A ~@14 A B ~ C ~ D E ~ F G ~ H ~ A I ~ C ~ D E ~ E ~ E ~@15 E ~@6 E ~@2 E ~@5
>`.pickRestart({
  A: "x", B: "x ~ x ~@4 x", C: "~ x ~@2", D: "~ x ~@6", E: "~ x", F: "~@3 x ~@4", G: "~@3 x", H: "~@5 x ~@2",
  I: "~@7 x",
})).gain(0.48)

stack(bass, acoustic_guitar_steel, string_ensemble_1, electric_guitar_clean, kick, snare, clap, low_tom, hihat, crash)

More by The Beatles