Strudelify

Here Comes the Sun The Inner Light (transition)

The Beatles

KeyA majorTempo130 bpm
0:00/0:00
// Here Comes the Sun   The Inner Light (transition) — The Beatles
// 130 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 49, 3/8 at bar 50, 5/8 at bar 51, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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 · acoustic guitar nylon · "Nylon Gtr"
const acoustic_guitar_nylon = note(`<
  A@3 B C@4 D@2 E@2 F@3 G@3 H I@4 J@2 K@2 L@3 M N G@3 H I@4 J@2 K@2 L@3 M O@2 P@5 Q@3 R S T U@2 V@4 W X@3 Y@8 Z@7 AA@4
  AB@6 AC@5
>`.pickRestart({
  A: "[~@2 [a4,c#5] a4 [a4,b4] ~ a3 a3@2 ~ c#5 ~ a3!2 [b2,e3] [d3,f#3] ~@4 [d3,f#3] [f#3,a3] [d3,f#3] [a3,d4,f#4], ~@2 [a3,e4]@4 ~@3 a3@3 ~ [e4,a4]@2 [a3,d4,f#4]@2 a4@2 b4@2 [d4,a4]@2 ~, ~@5 [a4,c#5]@2 [e4,a4]@3 ~ b4@2 ~@3 [d3,f#3]@2 [d3,f#3]@2 ~@4]/3", // A Asus2 E5 D F#m D A5 D …
  B: "[d4,g#4] [d4,f#4] [d4,g#4] ~@2 [d4,g#4,b4]@3, [e3,b3]!2 [e3,b3]@2, ~@3 [d4,a4]@2 ~@3", // Ddim D Ddim G#dim E5 D5
  C: "[e4@2 [a4,c#5] a4 b4 c#5@2 ~ [a3,e4] ~ c#5 ~ a3 ~ [b2,e3] [d3,f#3] ~@4 [d3,f#3]!3 [e3,b3,d4,g#4]@9, a3@8 ~ e4@4 ~@2 [d4,f#4]@6 ~@11, ~@7 a4@3 ~ b4@2 ~@3 f#3@4 ~ [a3,d4,a4]@2 ~@9, ~@9 a3@3 ~ [a3,e4,a4]@2 a3@2 c#5@2 b4@2 ~@11, ~@8 d3!2 ~@6]/4", // A A5 E5 D E7 D D5 A5
  D: "[e4@2 c#5 b4@2 [a4,c#5]@2 ~@5 b4 ~ e4 [d4,f#4], a3@8 ~ a3@5 ~@2, ~@2 e4@6 ~ e4@2 a4@2 [a4,c#5]@3, ~@2 a4@2 ~@3 a4@3 c#5@2 ~@4]/2", // A D A
  E: "[[a3,d4,f#4]@2 c#5 ~@3 [e3,a3,d4] ~ b2 [b2,f#3,a3,d#4,a4] [b2,f#3,a3,d#4,a4]@2 [b2,f#3,a3,d#4,a4]@2 [b2,f#3,a3,d#4,a4]@2, [d3,f#3]@2 [d3,f#3,a3,d4,f#4] ~@5, ~@2 [a3,d4,f#4]@2 ~@3 [f#3,a3,d#4,a4]@2 ~@7, ~@3 b4@2 c#5@2 ~@9]/2", // D Dsus2 B7 D D#dim
  F: "[~ c#5@2 b4@2 ~@18 e4, ~@5 a4@3 f#4@2 b4@2 a4@2 d4@2 b4@2 a4@2 a4@2 f#4@2, ~@7 e4@2 a4@2 e4@2 b4@2 a4@2 e4@2 b4@2 g#4@2 ~]/3",
  G: "[~@4 b4 ~@5 c#5 ~@2 [e4,a4]@2 [a3,d4,f#4]@2 a4!2 b4@2 ~@2 f#4, [e3,a3]@8 ~@9 [d3,f#3,a3,d4]@2 [d3,f#3,a3]@3 [d3,f#3,a3]@2, e4@7 [e4,a4]@6 ~@6 f#4@4 ~, a4@3 a4@4 ~@4 b4@4 ~@6 a4@3, ~@2 c#5@2 ~ c#5@3 ~@16]/3", // A5 D A5 D A5
  H: "g#4 f#4 [e3,b3,d4,g#4] [e3,b3,d4,a4]@2 g#4@2 g#4, [e3,b3,d4]@2 ~@3 [e3,b3,d4,b4]@3", // E7 Esus4 E7
  I: "[[a4,c#5]@2 c#5!2 b4 ~@5 c#5 [a4,b4]@2 a4@2 [d3,f#3,a3] ~@2 c#5 ~ [f#3,a3] [f#3,a3,a4] [d3,f#3,a3,a4] [b3,d4,g#4]@2 [b3,d4,g#4]!3 [b3,d4,g#4,b4]!4, [a3,e4]@6 ~ a4@4 ~@5 [d3,f#3,a3]@4 ~@3 e3@9, ~@2 a4@4 ~ e4@7 ~ [d4,f#4]@4 f#4@4 ~@9, ~@5 c#5@3 ~@11 b4@2 ~@11]/4", // A Asus2 D F#m D G#dim A5 D
  J: "[e4@2 [a4,c#5] [a4,b4]@2 [a4,c#5]@2 ~@6 c#5@2 ~, a3@8 ~ a3@6 ~, ~@2 e4@4 ~ e4@7 ~@2, ~@7 a4@4 a4@4 ~, ~@10 c#5@2 b4@3 ~]/2", // A Asus2 A
  K: "[~@3 b4@2 c#5@2 [f#3,a3,d#4] [f#3,a3,d#4] [f#3,a3,d#4,a4] [b2,f#3,a3,d#4]@2 [b2,f#3,a3,d#4]@2 ~ f#4, d3@6 ~ a4@2 ~ a4@4 [b2,f#3,a3,d#4,a4]@2]/2", // D#dim B7
  L: "[~ c#5@2 b4@2 ~@18 e4, [a3,e4]@6 ~ e4@2 a4@2 e4@2 b4@2 a4@2 e4@2 b4@2 g#4@2 ~, ~@5 a4@3 f#4@2 b4@2 a4@2 d4@2 b4@2 a4@2 a4@2 f#4@2]/3", // A5
  M: "a3@2 a4!2 b4 ~@2 [d4,f#4], ~ [a3,e4,c#5] a3@2, ~@4 [e4,a4]@3 ~, ~@5 c#5@3", // D A A5
  N: "~ f#4 [d4,g#4] [d4,a4]@2 g#4@2 g#4, [e3,b3,d4,g#4]@2 [e3,b3]@3 [e3,b3,d4,b4]@3", // Ddim D5 E7 E5 E7
  O: "[[e3,b3,d4,g#4]@4 ~@2 b3 ~@2 g4 ~@2 d4 ~@2 d4, ~@4 e3@3 ~ e4@2 ~ b3@2 ~ a3@2, ~@5 g#3@2 c4@3 g3@3 f#3@3]/2", // E7
  P: "[~ f#3 ~@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [a4,c#5]@2 [e3,b3,d4,g#4,b4]@2 [e3,b3,d4,g#4,b4]@2 ~@2 b3 ~@2 g4 ~@2 d4 ~@2 d4 ~ f#3 a3@8 [e3,b3,d4,g#4,b4]@2 [e3,b3,d4,g#4,b4]@2, d3@2 a3@8 ~@4 e3@3 ~ e4@2 ~ b3@2 ~ a3@2 ~@14, ~@15 g#3@2 c4@3 g3@3 f#3@3 d3@2 ~@12]/5", // A E7
  Q: "[~@2 b3 ~@2 g4 ~@2 d4 ~@2 d4 ~ f#3 a3@8 [e3,b3,d4,g#4,b4]@2, e3@3 ~ e4@2 ~ b3@2 ~ a3@2 ~@12, ~ g#3@2 c4@3 g3@3 f#3@3 d3@2 ~@10]/3", // E7
  R: "[e3,b3,d4,g#4,b4]@2 ~@2 b3 ~@2 g4, ~@2 e3@3 ~ e4@2, ~@3 g#3@2 c4@3", // E7
  S: "~@2 d4 ~@2 d4 ~ f#3, g3@3 f#3@3 d3@2, ~ b3@2 ~ a3@2 ~@2", T: "a3",
  U: "[[e3,b3,d4,g#4,b4]@2 [e3,b3,d4,g#4,b4]@2 ~@2 b3 ~@2 g4 ~@2 d4 ~@2 d4, ~@4 e3@3 ~ e4@2 ~ b3@2 ~ a3@2, ~@5 g#3@2 c4@3 g3@3 f#3@3]/2", // E7
  V: "[~ f#3 a3@8 [e3,b3,d4,g#4,b4]@2 [e3,b3,d4,g#4,b4]@2 ~@2 b3 ~@2 g4 ~@2 d4 ~@2 d4 ~ f#3 [e4,a4,c#5]@2 [e4,a4,c#5]@2, d3@2 ~@12 e3@3 ~ e4@2 ~ b3@2 ~ a3@2 ~@2 a3@4, ~@15 g#3@2 c4@3 g3@3 f#3@3 d3@2 ~@4]/4", // E7 A
  W: "[a4,b4] [a4,c#5] ~ [b3,d4,g#4]@2 [b3,d4,g#4] [e3,b3,d4,g#4]@2, e4@2 ~ e3@3 ~@2", // Asus2 A G#dim E7
  X: "[g#4 f#4 g#4 a4@6 g#4 a4 b4@6 a4 b4 [e3,b3,d4,g#4,d5]@2 [e3,b3,d4,g#4,d5]!3, [b3,d4] ~@11]/3", // E7 Bm
  Y: "[[e3,b3,d4,g#4,d5]@2 g#4 f#4 ~@4 b4 ~@5 c#5 ~@2 [e4,a4]@2 [a3,d4,f#4]@2 a4!2 b4@2 ~@2 f#4 g#4 f#4 [e3,b3,d4,g#4] [e3,b3,d4,a4]@2 g#4@2 g#4 [a4,c#5]@2 c#5!2 b4 ~@5 c#5 [a4,b4]@2 a4@2 [d3,f#3,a3] ~@2 c#5 ~ [f#3,a3] [f#3,a3,a4] [d3,f#3,a3,a4] [b3,d4,g#4]@2 [b3,d4,g#4]!3, ~@2 [e3,b3,d4,d5]@2 [e3,a3]@8 ~@9 [d3,f#3,a3,d4]@2 [d3,f#3,a3]@3 [d3,f#3,a3]@2 [e3,b3,d4]@2 ~@3 [e3,b3,d4,b4]@3 [a3,e4]@6 ~@10 [d3,f#3,a3]@4 ~@3 e3@5, ~@4 e4@7 [e4,a4]@6 ~@6 f#4@4 ~@16 e4@7 ~ [d4,f#4]@4 ~@9, ~@4 a4@3 a4@4 ~@4 b4@3 ~@7 a4@3 ~@10 a4@4 ~ a4@4 ~@8 f#4@4 ~@5, ~@6 c#5@2 ~ c#5@3 ~@29 c#5@3 ~@11 b4@2 ~@7]/8", // E7 A5 D E7 Esus4 A Asus2 D …
  Z: "[[b3,d4,g#4,b4]!4 e4@2 [a4,c#5] [a4,b4]@2 [a4,c#5]@2 ~@6 c#5@2 ~@4 b4@2 c#5@2 [f#3,a3,d#4]!2 [f#3,a3,d#4,a4] [b2,f#3,a3,d#4]@2 [b2,f#3,a3,d#4]@2 ~ f#4 ~ c#5@2 b4@2 ~@14 b4, ~@4 a3@8 ~ a3@6 ~ d3@6 ~@8 [b2,f#3,a3,d#4,a4]@2 ~@20, ~@6 e4@4 ~ e4@7 ~@18 [a3,e4]@6 ~ e4@2 ~@2 e4@2 ~ d4@2 ~ e4@2 ~, ~@11 a4@4 a4@4 ~@8 a4@2 ~ a4@4 ~@7 a4@3 f#4@2 b4@2 ~ b4@2 ~ b4@2 ~@2, ~@14 c#5@2 b4@3 ~@26 a4@2 ~ a4@2 ~ a4@2 ~ a4@2]/7", // G#dim A Asus2 A D#dim B7 A5
  AA: "[~@3 e4 [e4,a4,c#5]@2 c#5 b4@2 c#5@2 ~@4 b4 b4 ~ a3 [e3,a3] ~@2 [f#4,c#5] [f#4,b4]@2 [f#4,c#5] [e3,a3,d4,f#4,c#5] [f#3,a3,d#4] [b2,f#3,a3,d#4] [b2,f#3,a3,d#4,a4] [b2,f#3,a3,d#4,a4]@2, a4@2 f#4@2 a3@8 ~ a3@5 ~@2 [d3,f#3,a3]@6 ~@6, ~ g#4@2 ~@3 e4@6 ~@2 c#5@3 c#5@3 ~@7 a4@2 ~@3, ~@6 a4@5 a4@4 ~@3 e4@2 ~@2 d4@4 ~@6]/4", // A A5 F#5 B5 F#5 Dmaj7 D#dim B7 …
  AB: "[[b2,f#3,a3,d#4,a4]@2 [b2,f#3,a3,d#4,a4] ~@2 c#5@2 b4@2 ~@18 e4 [e4,a4]@2 a4!2 [a4,b4] ~@14 b4, ~@9 a4@3 f#4@2 b4@2 a4@2 d4@2 b4@2 a4@2 a4@2 f#4@2 a3@8 ~@6 d4@2 ~ e4@2 ~, ~@11 e4@2 a4@2 e4@2 b4@2 a4@2 e4@2 b4@2 g#4@2 ~@3 e4@5 e4@2 a4@2 e4@2 b4@2 ~ b4@2 ~@2, ~@30 c#5@2 ~ [a4,c#5]@3 f#4@2 b4@2 a4@2 ~ a4@2 ~ a4@2]/6", // B7 A5 Asus2 A
  AC: "[~@3 e4 ~@10 f#3 [e3,a3,e4,a4,c#5]@25, a4@2 f#4@2 c4@3 g3@3 f#3@3 d3@2 ~@25, ~ g#4@2 ~@2 e4@2 ~ b3@2 ~ a3@2 ~@27, ~@6 g4@2 ~ d4@2 ~ d4@2 ~@26]/5", // A
})).s("gm_acoustic_guitar_nylon").gain(0.49).pan(0.3)

// bass · acoustic bass · "Acc Bass"
const bass = note(`<
  ~@13 A@2 B C D E F G H E I J K L M A@2 N O B C D E F G H E I J K L M A@2 N P@2 Q R S@2 T U@2 V W X Y Z@2 Q R S@2 AA
  AB@3 AC AD AE AF AG AH AI AJ AG AK AL AM AN AO@2 AP AQ AR AS AN AO@2 AT@3 AU ~@4
>`.pickRestart({
  A: "[d2@3 c#2@3 b1@3 a1@3 e1 g#1 b1 e1]/2", B: "a1@3 a2!2 a2@2 a2", C: "a2@2 a2!2 ~ a2 a2@2", D: "d2@2 d2!2 ~ d2!2 ~",
  E: "e2@2 e2!2 ~ e2 f#2 g#2", F: "a2@2 a2!2 ~ a2 ~ a2", G: "a2@2 a2!2 ~ f#2 e2 c#2", H: "d2@2 d2!2 ~ c#2 d2@2",
  I: "a2@2 a2!2 ~ a2 ~ e2", J: "a2@3 a2!2 f#2 e2 c#2", K: "d2@3 d2 ~ d2@3", L: "b1@2 b1!4 c#2 d#2",
  M: "a1!3 b1 c#2 e2 f#2 a2", N: "a2@2 a2!3 a2@2 d2", O: "e2@2 e2@2 e2 e2@3", P: "[e2@2 e2@2 ~@3 c3@3 g2@3 f#2@3]/2",
  Q: "d2 a2!3", R: "a2@2 e2@2 e2@2 e2 g#2", S: "[b2 c3@3 g2@3 f#2@3 d2@2 a2@2 a2@2]/2", T: "a2!2 e2!2",
  U: "[e2 g#2 b2 c3@3 g2@3 f#2@3 d2@2 a2@2]/2", V: "a2!3 e2", W: "e2@2 e2 g#2 b2 c3@3", X: "g2@3 f#2@3 d2@2", Y: "a2!4",
  Z: "[e2@2 e2@2 e2 g#2 b2 c3@3 g2@3 f#2@3]/2", AA: "a2 a2@2 e2!5", AB: "e2!8", AC: "e2!3 ~ a1@3 a2",
  AD: "a2 a2@2 a2 a2@2 a2!2", AE: "~ a2 a2@2 d2@2 d2!2", AF: "~ d2!2 ~ e2@2 e2!2", AG: "~ e2 f#2 g#2 a2@2 a2!2",
  AH: "~ a2 ~ a2 a2@2 a2!2", AI: "~ f#2 e2 c#2 d2@2 d2!2", AJ: "~ c#2 d2@2 e2@2 e2!2", AK: "~ a2 ~ e2 a2@3 a2",
  AL: "a2 f#2 e2 c#2 d2@3 d2", AM: "~ d2@3 b1@2 b1!2", AN: "b1!2 c#2 d#2 a1!3 b1",
  AO: "[c#2 e2 f#2 a2 d2@3 c#2@3 b1@3 a1@3]/2", AP: "e1 g#1 b1 e1 a2@2 a2@2", AQ: "a2 a2@3 a2@2 a2@2",
  AR: "~ a2!2 c#2 d2@2 d2@2", AS: "~ e2 d2 b1@2 b1!3",
  AT: "[e1 g#1 b1 e1 a2@2 a2 f#2@2 e2 c#2@2 d2@3 c#2@3 b1@3 a1@3]/3", AU: "e1 g#1 b1 e1 c2 ~@3",
})).s("gm_acoustic_bass").gain(0.4)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@3 A B@4 ~@17 C D E F@2 ~@2 G@3 H I@4 ~ J K L E F@2 ~@8 M N@2 O P Q R S T@2 U V@6 W@2 X@2 Y@5 Z@5 AA AB@2 AC@4 AD@3
  AE@5
>`.pickRestart({
  A: "~@4 a4 g#4@2 g#4", B: "[~@2 c#5 a4 b4 c#5@2 a4@3 c#5 b4@2 a4@2 f#4@2 c#5@2 b4@2 a4@2 g#4@9]/4", C: "[d5,f#5]",
  D: "[b4,d#5]", E: "e5", F: "[f#4@3 e4@3 d4@3 e4@3 e3@2 e3@2]/2",
  G: "[~@2 c#5 a4 b4 c#5@2 a4@3 c#5 b4@2 a4@2 f#4@2 a4@2 b4@2 a4@2 f#4]/3", H: "g#4 f#4 g#4 a4@2 b4@3",
  I: "[a4@2 c#5 a4 b4 c#5@2 a4@3 c#5 b4@2 a4@2 f#4@2 c#5@2 b4@2 a4@2 g#4@5 ~@4]/4",
  J: "~@2 [c#5,e5,a5,c#6] [c#5,e5,a5] [c#5,e5,a5,b5] c#6@2 f#5, ~@5 [c#5,e5,a5]@3", K: "[d5,f#5,a5]",
  L: "a5@3 g#5@3 f#5@2, [b4,d#5]", M: "e3 g#3 b3 c4 e4 g4 g3 b3", N: "[d4 f#3 a3 d4 d3 f#3 [a3,a4]@8 ~@2]/2",
  O: "~@2 e4 g#4 b4 c5 e5 g5", P: "g4 b4 d5 f#4 a4 d5 d4 f#4", Q: "[a3,a4]", R: "~@4 e3 g#3 b3 c4",
  S: "e4 g4 g3 b3 d4 f#3 a3 d4", T: "[d3 f#3 a3@8 ~@4 e5 g#5]/2", U: "b5 c6 e6 g6 g5 b5 d6 f#5",
  V: "[a5 d6 d5 f#5 [a4,a5]@8 [e5,g#5]@5 [e5,f#5] [e5,g#5] [e5,a5]@6 [e5,g#5] [e5,a5] [e5,b5]@6 [e5,a5] [e5,b5] [e5,d6]@7 ~@2 c#6@4]/6", // A E Esus2 E A5 E A5 E5 …
  W: "[b5 c#6@2 e6 e6@5 f#6@2 c#6@5]/2", X: "[b5 a5@2 g#5@2 f#5 g#5 a5@2 b5@2 b5 c#6@4]/2",
  Y: "[b5 c#6@2 e6@6 f#6@2 c#6@4 b5@2 a5@2 g#5@2 f#5 g#5 a5@2 b5@2 a5@9 ~@2 [c#5,e5,a5,c#6] [c#5,e5,a5]]/5", // A
  Z: "[[c#5,e5,a5,b5] c#6@2 ~ [d5,a5]@8 a5@3 g#5@3 f#5@2 e5@8 f#5@3 e5@3 d5@3 e5@3, ~ [c#5,e5,a5]@3 ~@8 [b4,d#5]@8 ~@20, ~@3 f#5@9 ~@28]/5", // A D5 A B
  AA: "b4 e5 c#6@2", AB: "[b5 c#6@2 e6@6 f#6@2 c#6@5]/2",
  AC: "[a5 c#6@2 a5@4 g#5@3 f#5@2 e5@8 a5@3 g#5@3 f#5@3 e5@3]/4", AD: "[b4@2 e5@2 a5@8 a5@3 g#5@3 f#5@3 e5@3]/3",
  AE: "[b4 e5 a4@18]/5",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.6)

// chords · piano · "Piano 1"
const piano = note(`<
  ~@8 A@2 B C D E@2 F G H I F G H J@3 B C D E@2 K L F G H I F G H J@3 B C D E@2 K M@2 N@2 O@3 P@3 Q R K M@2 N@2 S@6 T@8
  U@7 V@7 W@3 X@2 ~@3
>`.pickRestart({
  A: "[a2,c#4,e4]/2", B: "[d3,d4,f#4]", C: "[d#3,d#4,f#4]", D: "[e3,c#4,e4]",
  E: "[[f#3,a3,d4]@3 [e3,a3,c#4]@3 [d3,a3,b3]@3 [e3,a3,c#4]@3 [e2,a3,b3]@2 [e2,g#3]@2]/2", F: "[a2,e3,c#4]",
  G: "[a2,a3,c#4,e4]", H: "[d3,a3,d4,f#4]", I: "[e3,e4,g#4]@3 [e3,f#3,d4,f#4]@2 [e3,g#3,e4]@3",
  J: "[[b3,g#4] [a3,e4] [e3,b3,g#4] [e3,c#4,a4]@2 [b3,g#4]@2 ~ c#4@16, e3@2 ~@3 e3@3 ~@16, ~@7 [a3,e4]@17]/3", // E A5 E A E A5
  K: "[a2,e3,c#4,e4]", L: "[e2,g#3,b3,e4]",
  M: "[[e2,b2,b3,g#4]@2 [e2,b2,b3,g#4]@2 ~@3 [c3,e4,g4]@3 [g2,d4,g4]@3 [f#2,d4,f#4]@3]/2", // E C G5 D
  N: "[d2 f#2 [a2,e3,c#4,e4]@8 [e2,b2,b3,g#4]@2 [e2,b2,b3,g#4]@2 ~@2, [d4,f#4] ~@7]/2", // A E D
  O: "[~ [c3,e4,g4]@3 [g2,d4,g4]@3 [f#2,d4,f#4]@3 d2 f#2 [a2,e3,c#4,e4]@8 [e2,b2,b3,g#4]@2 [e2,b2,b3,g#4]@2, ~@5 [d4,f#4] ~@6]/3", // C G5 D A E D
  P: "[~@3 [c3,e4,g4]@3 [g2,d4,g4]@3 [f#2,d4,f#4]@3 d2 f#2 [a2,e3,c#4,e4]@8 [e2,b2,b3,g#4]@2, ~@6 [d4,f#4] ~@5]/3", // C G5 D A E D
  Q: "[e2,b2,b3,g#4]@2 ~@3 [c3,e4,g4]@3", R: "[g2,d4,g4]@3 [f#2,d4,f#4]@3 d2 f#2, ~@3 [d4,f#4]",
  S: "[~ [c3,e4,g4]@3 [g2,d4,g4]@3 [f#2,d4,f#4]@3 d2 f#2 [a2,e3,c#4,e4]@8 [g#3,b3,e4]@5 [f#3,b3,e4] [g#3,b3,e4] [a3,b3,e4]@6 [g#3,b3,e4] [a3,b3,e4] [b3,e4]@6 [a3,b3,e4] [b3,e4] [b3,d4,e4]@5, ~@5 [d4,f#4] ~@18]/6", // C G5 D A E Esus2 E Asus2 …
  T: "[[e2,e4]@2 [e2,e4]@2 [a2,e3,c#4]@8 [a2,a3,c#4,e4]@8 [d3,a3,d4,f#4]@8 [e3,e4,g#4]@3 [e3,f#3,d4,f#4]@2 [e3,g#3,e4]@3 [a2,e3,c#4]@8 [a2,a3,c#4,e4]@8 [d3,a3,d4,f#4]@8 [b3,g#4] [a3,e4] [e3,b3,g#4] [e3,c#4,a4], ~@30 e3 ~]/8", // E A D E D E A D …
  U: "[~ [b3,g#4]@2 ~ c#4@16 [d3,d4,f#4]@8 [d#3,d#4,f#4]@8 [e3,c#4,e4]@8 [f#3,a3,d4]@3 [e3,a3,c#4]@3 [d3,a3,b3]@3 [e3,a3,c#4]@3, ~ e3@3 ~@52, ~@3 [a3,e4]@17 ~@36]/7", // E D D#m C#m D A Bm7 A …
  V: "[[e2,a3,b3]@2 [e2,g#3]@2 [a2,e3,c#4,e4]@16 [d3,d4,f#4]@8 [d#3,d#4,f#4]@8 [e3,c#4,e4]@8 [f#3,a3,d4]@3 [e3,a3,c#4]@3 [d3,a3,b3]@3 [e3,a3,c#4]@3]/7", // Esus4 E A D D#m C#m D A …
  W: "[[e2,a3]@2 [e2,g#3]@2 [e3,c#4,e4]@8 [f#3,a3,d4]@3 [e3,a3,c#4]@3 [d3,a3,b3]@3 [e3,a3,c#4]@3, b3 ~@5]/3", // A5 E C#m D A Bm7 A
  X: "[[e2,a3] [e2,g#3] [c3,a3]@4 ~@2, b3 ~@3]/2", // A5 E F
})).s("gm_piano").gain(0.49).pan(0.8)

// other · lead 2 sawtooth · "Synth Lead"
const lead_2_sawtooth = note("<~@55 A B@2 C D E F G H@2 I J@2 ~@33>".pickRestart({
  A: "e2 g#2 b2 c3 e3 g3 g2 b2", B: "[d3 f#2 a2 d3 d2 f#2 a2@8 ~@2]/2", C: "~@2 e2 g#2 b2 c3 e3 g3",
  D: "g2 b2 d3 f#2 a2 d3 d2 f#2", E: "a2", F: "~@4 e2 g#2 b2 c3", G: "e3 g3 g2 b2 d3 f#2 a2 d3",
  H: "[d2 f#2 a2@8 ~@4 e2 g#2]/2", I: "b2 c3 e3 g3 g2 b2 d3 f#2", J: "[a2 d3 d2 f#2 a2@8 ~@4]/2",
})).s("gm_lead_2_sawtooth").gain(0.32).pan(0.8)

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

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

// 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 I B@14 O I@3 B@3 O B@2 P ~@4
>`.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.4)

// drums · low tom
const low_tom = s("lt").struct("<~@14 [~@5 x!3] ~@36 [~@3 x!2 ~ x!2] x ~@15 [~@4 x!3 ~@9] ~@32>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@29 A ~ B ~@14 A ~@4 C ~@2 D E ~ F G ~@2 H ~@2 I J ~@2 K ~ L ~@15 M ~@6 M ~@2 M ~@4
>`.pickRestart({
  A: "~@5 x!3", B: "~@12 x!3 ~", C: "~@7 x ~@2 x ~@5", D: "~@9 x!4 ~ x ~", E: "x!3 ~@5", F: "~@13 x!3", G: "x!5 ~@3",
  H: "~ x!4 ~ x ~ x ~ x ~ x ~@3", I: "~@5 x!4 ~ x ~ x ~ x ~", J: "x", K: "x!4 ~@12", L: "x!7 ~@9", M: "~ x!3 ~@4",
})).gain(0.4)

// 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@2 ~@14 E@4 ~@3 E ~@2 E ~@4
>`.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.4)

stack(
  acoustic_guitar_nylon, bass, string_ensemble_1, piano, lead_2_sawtooth, kick, snare, hihat, low_tom, mid_tom, crash
)

More by The Beatles