Strudelify

Only a Northern Song

The Beatles

KeyA majorTempo100 bpm
0:00/0:00
// Only a Northern Song — The Beatles
// 100 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 13, 4/4 at bar 13, 2/4 at bar 22, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · trumpet
const trumpet = note(`<
  ~@9 A ~ B C D ~@3 E F G H I J ~@5 K@3 L M N O@2 P Q R S@3 ~@4 T ~ U V W ~@2 A ~ B X W ~@5 Y Z AA AB@2 AC AD AE AF AG@2
  AH ~ AI AJ ~@2 AK AL AM AN ~@2 AO AP ~
>`.pickRestart({
  A: "~@6 e5@5 ~@5", B: "~@2 e5@5 ~@3 c#6 b5 a5@3 ~", C: "a5!16", D: "a5 ~@7", E: "~@4 e5@3 ~",
  F: "g4@2 a4@2 e5@3 ~ g4@2 a4@2 e5@2 g4 a4", G: "f#5 g5 ~ f#5 g5 f#5 ~ g5 a5!8", H: "a5!8 ~@2 e5@5 ~",
  I: "~@2 c#6 b5 a5@3 ~ a5!8", J: "a4@3 ~ g4@3 ~ a4@3 ~@5", K: "[~@12 f#5@10 ~@2 a5@17 ~@3 a5!4]/3",
  L: "a5!4 a5@2 ~@8 g4@2", M: "~@2 a4@2 d5@2 e5@5 ~@5", N: "g#4@2 a4@4 d5@2 e5@3 ~ g4@2 a4@2",
  O: "[d5 e5@2 ~ g4@2 a4@2 d5 e5@2 ~ a5@13 ~@3 a5!4]/2", P: "~@2 g#5!2 ~@6 g#5!2 ~@2 g#5!2", Q: "g#5!2 ~@6 a4@3 ~@5",
  R: "~ a4@3", S: "[~@8 a4@2 d5@4 e5@5 ~@5 b5@10 ~@2 e5@3 ~ a5@3 ~@5]/3", T: "f#5@10 ~@2 a5@3 ~", U: "e5@5 ~ g5@8 g5!2",
  V: "g5@2 a5!2 ~@6 g4@3 ~ a4@2", W: "a4@3 ~@13", X: "a5!8 a4@3 ~ g4@3 ~", Y: "~@2 f#5@5 ~", Z: "a5",
  AA: "~@4 a5!8 a5@2 ~@2", AB: "[~@6 g4@3 ~ a4@2 d5@2 e5@5 ~@5 g#4@2 a4@4 d5@2]/2",
  AC: "e5@3 ~ g4@2 a4@2 d5 e5@2 ~ g4@2 a4@2", AD: "d5 e5@2 ~ a5@12", AE: "~@4 a5!4 ~@2 g#5!2 ~@4",
  AF: "~@2 g#5!2 ~@2 g#5!4 ~@6", AG: "[a4@3 ~@9 a4@13 ~@7]/2", AH: "a4@2 d5@4 e5@5 ~@5", AI: "~@8 c#6@3 ~ c#6@3 ~",
  AJ: "~@2 b5!2 b5@2 g#5@3 ~ g#5@2 ~@4", AK: "~@7 e5", AL: "a5!7 [e5,a5] e5 [e5,a5] a5 [e5,a5] e5 a5 e5 a5",
  AM: "e5 a5 ~ e5 a5@3 ~ e5 a5 ~ a5 a5@3 ~", AN: "e5 a5 ~ a5 a5@3 ~ a5@2 a5!2 a5@2 a5!2", AO: "a4@3 ~@5",
  AP: "d5@3 ~@5",
})).s("gm_trumpet").gain(0.42)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  A B C@2 D@4 E@2 F@8 G@3 H@2 I J K L K M@3 ~@9 N@3 O P Q R@2 D@4 E@2 S@4 T U@7 ~@8 V@6 W@7 ~@2
>`.pickRestart({
  A: "~@6 f4 g4", B: "g4@3 ~ a4@3 ~ e4@6 g4 a4, [c4,g5,b5]@13 ~@3",
  C: "[~@2 [a4,d5,f#5]@2 [a4,d5,f#5]@3 ~ [a4,d5,f#5] [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5]@2 [b3,e4,g#4,b4,e5,g#5]@17 ~, [a3,d4,f#4]@6 ~@2 [a3,c#4,e4]@5 ~@19]/2", // D A E D A
  D: "[a4@4 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5] [a4,c#5,e5]@2, [c#4,e4]@61 ~@3]/4", // A C#m
  E: "[[a4,b4,d5,f#5]@3 ~ [a4,b4,d5,f#5]@2 [d4,e4,a4]@2 [d4,e4,a4]@2 [d4,e4,a4,b4,d5,e5]@2 [d4,e4,a4,b4,d5,e5]@17 ~@3, ~@3 [b4,d5,e5]@2 ~@11]/2", // Bm7 Dsus2 E7
  F: "[[d4,e4,g#4,b4,d5,e5,g#5]@22 ~@2 [d4,f#4,a4,d5,f#5,a5]@29 ~@3 a4@4 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5] [a4,c#5,e5]@2 [a4,c#5,e5] [a4,c#5,e5]@2 [a4,b4,d5,f#5]@3 ~ [a4,b4,d5,f#5]@2 [d4,e4,a4,b4,d5,e5]@2, ~@56 [c#4,e4]@61 ~@11]/8", // E7 D A Bm7 Dsus2 C#m
  G: "[[d4,e4,a4]@2 [d4,e4,a4,b4,d5,e5]@2 [d4,e4,a4,b4,d5,e5]@17 ~@3 [d4,e4,g#4,b4,d5,e5,g#5]@22 ~@2]/3", // Dsus2 E7
  H: "[[d5,f#5,a5]@13 ~@3 [d5,f#5,a5]@3 ~ [d5,f#5,a5]@2 [d5,f#5,a5]@2 [d5,f#5,a5]@2 [d5,f#5,a5]@2 [d5,f#5,a5]@3 ~, [d4,f#4,a4]@29 ~@3]/2", // D
  I: "[b4,e5,g#5]@3 ~ [b4,e5,g#5]@3 ~ [b3,d4,f#4,b4,d5,f#5]@6 ~@2, [b3,e4,g#4]@3 ~@5", // E Bm E
  J: "[b3,d4,g4,b4,d5,g5]@3 ~ [c#4,f4,g#4,b4,c#5,f5]@3 ~", // G C#7
  K: "[c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~, [a#3,c#4,f#4]@13 ~@3", // F#7 F#
  L: "[b3,d4,f#4,b4,d5,f#5]@13 ~@3", // Bm
  M: "[[a3,d4,f#4,a4,d5,f#5]@5 ~ [a3,c#4,e4,a4,c#5,e5]@5 ~ [g#3,b3,e4,g#4,b4,e5]@29 ~@7]/3", // D A E
  N: "[~@4 [b4,e5,g#5]@3 ~ [b4,e5,g#5]@3 ~ [b3,d4,f#4,b4,d5,f#5]@6 ~@2 [b3,d4,g4,b4,d5,g5]@6 ~@2 [c#4,f4,g#4,b4,c#5,f5]@6 ~@2 [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~, ~@2 [b3,e4,g#4]@3 ~@13 [a#3,c#4,f#4]@6]/3", // E Bm G C#7 F#7 E F#
  O: "[c#5,e5,f#5]@3 ~ [b3,d4,f#4,b4,d5,f#5]@12", // F#7 Bm
  P: "~@4 [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~, ~ [a#3,c#4,f#4]@3", // F#7 F#
  Q: "[c#5,e5,f#5]@3 ~ [a3,d4,f#4,a4,d5,f#5]@5 ~ [a3,c#4,e4,a4,c#5,e5]@5 ~", R: "[[g#3,b3,e4,g#4,b4,e5]@29 ~@3]/2",
  S: "[[d4,e4,g#4,b4,d5,e5,g#5]@22 ~@2 [d5,f#5,a5]@13 ~@3 [d5,f#5,a5]@3 ~ [d5,f#5,a5]@2 [d5,f#5,a5]@2 [d5,f#5,a5]@2 [d5,f#5,a5]@2 [d5,f#5,a5]@3 ~ [b4,e5,g#5]@3 ~ [b4,e5,g#5]@3 ~, ~@24 [d4,f#4,a4]@29 ~@3 [b3,e4,g#4]@6 ~@2]/4", // E7 D E D E
  T: "[b3,d4,f#4,b4,d5,f#5]@3 ~ [b3,d4,g4,b4,d5,g5]@3 ~", // Bm G
  U: "[[c#4,f4,g#4,b4,c#5,f5]@6 ~@2 [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [b3,d4,f#4,b4,d5,f#5]@13 ~@3 [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [c#5,e5,f#5]@3 ~ [a3,d4,f#4,a4,d5,f#5]@5 ~ [a3,c#4,e4,a4,c#5,e5]@5 ~ [g#3,b3,e4,g#4,b4,e5]@29 ~@15, ~@8 [a#3,c#4,f#4]@13 ~@19 [a#3,c#4,f#4]@13 ~@59]/7", // C#7 F#7 Bm F#7 D A E F#
  V: "[~@12 [b3,e4,g#4,b4,e5,g#5]@6 ~@2 [b3,d4,f#4,b4,d5,f#5]@6 ~@2 [b3,d4,g4,b4,d5,g5]@6 ~@2 [c#4,f4,g#4,b4,c#5,f5]@6 ~@2 [a#3,c#4,f#4,c#5,e5,f#5]@13 ~@3 e5!4 e5@2 ~@2 e5!12 e5@2 e5!2 e5@2 e5!2 e5@2 e5!2 e5@2 e5!2, ~@60 [b4,d5,f#5]@13 ~@3 [c#5,f#5]@13 ~@3 [a4,d5,f#5]@4]/6", // E Bm G C#7 F#7 Bm F#5 D
  W: "[e5!4 e5@2 e5@2 [g#4,b4,e5]@29 ~@3 a4@2 a4@2 b4@2 c#5@2 c#5@2 c#5@3 ~ d5@5 ~ c#5 d5 c#5@2 a4@6 ~@2 e5@29 ~@11, ~@2 [a4,c#5]@5 ~@33 e5@29 ~@3 c#5@18 ~@22, ~@20 c#5@3 ~@13 a4@13 ~@7]/7", // E A
})).s("gm_drawbar_organ").gain(0.15)

// chords · drawbar organ · "Organ" · soft notes · Bm
const drawbar_organ_soft = note(`<
  ~@85
  [~@8 b4@2 c#5@2 d5@2 c#5 d5]
  [c#5@2 a4@5 ~ [b4,d5,f#5]@2 [b4,d5,f#5]@2 [b4,d5,f#5]@2 [b4,d5,f#5]@2]
  [[b4,d5,f#5]!8]
  [[b4,d5,f#5]!4 ~@4]
>`).s("gm_drawbar_organ").gain(0.05)

// chords · piano
const piano = note("<~@30 A@8 B@3 ~@24 C@4 D@2 E@4 ~@14>".pickRestart({
  A: "[~@26 [e4,g4]@2 f4@2 [g4,b4]@2 c5@2 [b4,d5]@2 c5@2 [d5,f5]@2 g5@3 ~@5 b4@2 d5@7 ~@5 b4@2 ~@2 b4@2 ~ d5@2 ~ c#5 d5 c#5 d5 [c#5,d5] ~ c#5 ~@19 a4@4 b4@2 d5@2 b4@2 [a4,b4]@2 ~@10 d5@8, ~@6 c#5@23 c#5@5 c#5@2 ~@2 b4@13 ~@3 [g#4,e5]@10, ~@12 e5@24 e5@4 e5@33 ~@3 e5@4 e5@25 ~@23, ~@12 a4@16 a4@4 a4@14 a4@18 a4@9 ~@4 d5@2 d5@25 ~@6 b4@18]/8", // Em G Bm Dm Dmaj7 Asus2 C#m
  B: "[~@4 [a3,d4,f#4,a4,d5,f#5]@29 ~@15]/3", // D
  C: "[~@18 [e4,g4]@2 f4@2 [g4,b4]@2 c5@2 [b4,d5]@2 c5@2 [d5,f5]@2 g5@3 ~@5 b4@2 d5@7 ~@5 b4@2 ~@2 b4@2 ~ d5@2 ~, ~@2 c#5@23 c#5@5 c#5@2, ~ e5@6 e5 e5@8, ~@2 a4@8 a4@2 a4@7 a4@9 a4@4]/4", // Em G Bm Dm
  D: "[c#5 d5 c#5 d5 [c#5,d5] ~ c#5 ~@19 a4@4 b4@2, ~@2 b4@13 ~, ~ e5 e5@6, ~@5 d5@2 d5@25]/2", // Dmaj7
  E: "[d5@2 b4@2 [a4,b4]@2 ~@10 d5@10 ~@2 [a3,d4,f#4,a4,d5,f#5]@29 ~@7, ~@2 [g#4,e5]@11 ~@19, ~@3 b4@10 ~@19]/4", // Asus2 D C#m
})).s("gm_piano").gain(0.48)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@4 A@4 B@2 C D E F G@3 H I J K@2 L M N O P Q R@2 S T@2 U V W@2 X Y Z AA AB AC AD AE AF AG ~ A@4 B@2 C D E AH AI AJ AK
  AL AM@2 ~ AN AO AP@2 AQ@2 AR AS AT AU AV AW AX AY AZ BA@2 BB BC BD BC BE BF BG
>`.pickRestart({
  A: "a2@3 ~ a2@2 e2@2 g2@2 e2@2 f#2@2 e2@2", B: "b2 e2 b2 e2 g2 e2 f#2 e2", C: "b2!3 e2 g2 e2 f#2 e2",
  D: "b2 e2!2 d3@2 d3 b2!2", E: "a2!2 f#2 a2 d3!2 f#2 a2", F: "b2 a2 f#2 d3 a2!2 ~@2",
  G: "g2@2 e2@2 f#2@2 e2@2 a2@3 ~ a2@2 e2@2", H: "g2 e2 f#2 e2 b2!2 ~@2", I: "g2 e2 f#2 e2 b2 e2 b2 e2",
  J: "g2 e2 f#2 e2 b2!3 e2", K: "[g2 e2 f#2 e2 b2 e2!2 d3@2 d3 b2!2 a2!2 f#2 a2]/2", L: "d3!2 f#2 a2 b2 a2 f#2 d3",
  M: "e2!2 g#2 b2!2 f#2 b2 ~", N: "g2!3 b2 c#3!3 g#2", O: "f#2 c#3 f#2 c#3 f#2 c#3 f#2 c#3",
  P: "b2!2 d3 f#2 b2 d3 f#2 b2", Q: "f#2!7 a2", R: "[d3@2 f#2@2 a2@2 a2@4 c#3@2 b2@13 ~@7]/2", S: "~@6 a2!2",
  T: "a2@2 ~ e2 g#2@2 e2@2 f#2@2 e2@2 a2@2 a2@2", U: "a2 e2 g2 e2 f#2 e2 a2!2", V: "a2 e2 g2 e2 f#2 e2 b2!2",
  W: "b2 e2 g2 e2 f#2 e2 b2!2", X: "b2 e2!6 g#2", Y: "b2 d3@2 d3 b2!2 a2!2", Z: "f#2 a2 d3!2 b2 a2 f#2 d2",
  AA: "f#2 a2 e2!2 g#2 b2!2 f#2", AB: "b2 ~ g2!3 b2 c#3!2", AC: "c#3 g#2 f#2 c#3 f#2 c#3 f#2 c#3",
  AD: "f#2 c#3 b2!2 d3 f#2 b2 d3", AE: "f#2 b2 f#2!6", AF: "f#2 a2 d3 f#2 a2 c#3@2 a2", AG: "b2@13 ~@3",
  AH: "b2 a2 f#2 d3 e2!2 g#2 b2", AI: "b2 f#2 b2 ~ g2!3 b2", AJ: "c#3!3 g#2 f#2 c#3 f#2 c#3",
  AK: "f#2 c#3 f#2 c#3 b2!2 d3 f#2", AL: "b2 d3 f#2 b2 f#2!4", AM: "[f#2!3 a2 d3 f#2 a2 a2@2 c#3 b2@6]/2",
  AN: "~@4 a2@2 a2@2 a2@2 ~ e2 g#2@2 e2@2", AO: "f#2@2 e2@2 a2@2 a2@2 a2@2 ~ e2 g#2@2 e2@2", AP: "f#2 e2 a2!3 e2 g2 e2",
  AQ: "f#2 e2 b2!3 e2 g2 e2", AR: "f#2 e2 b2!3 e2!3", AS: "e2!3 g#2 b2 d3@2 d3", AT: "b2!2 a2!2 f#2 a2 d3!2",
  AU: "b2 a2 f#2 d2 f#2 a2 e2!2", AV: "g#2 b2!2 f#2 b2 ~ g2!2", AW: "g2 b2 c#3!3 g#2 f#2!2", AX: "f#2!6 b2 d3",
  AY: "f#2 b2 d3 f#2 b2 d3 f#2!2", AZ: "f#2!6 d3 f#2", BA: "[a2@2 c#3@4 a2@2 b2@13 ~@11]/2", BB: "~@4 a2!4",
  BC: "a2!3 ~ a2!2 f#2 e2", BD: "a2!2 ~@2 a2!4", BE: "a2!2 ~ b2 ~ b2 ~ e2", BF: "f#2 a2 ~ b2 ~ b2 ~ e2",
  BG: "f#2 a2 ~ b2 ~@4",
})).s("gm_electric_bass_pick").gain(0.48)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@3 C B@3 D B@4 E F B@2 G H I B@4 G J K L M N M O M@4 P Q M@4 R ~ S B@3 C B@3 D B T B@4 U V W X M X Y Z M@4 AA
  M@4 AB AC AD AE B@5 AF
>`.pickRestart({
  A: "~@2 x ~ x ~@2 x ~ x!2 ~@2 x ~@2", B: "~ x ~ x", C: "~@4 x ~@2 x ~@2 x ~@3 x ~", D: "~@2 x!2 ~ x!3",
  E: "~@4 x ~@7 x ~@2 x", F: "~ x ~ x ~@2 x ~", G: "~@2 x ~@3 x!2", H: "~ x!3 ~@2 x ~", I: "~@2 x ~ x!2 ~ x",
  J: "~@2 x ~@2 x ~@2", K: "~@3 x", L: "~ x!2 ~@3 x!5 ~@5", M: "x!2", N: "x ~@7 x!3 ~@5", O: "x ~ x ~@2 x ~@2",
  P: "x ~@3 x ~@2 x", Q: "~ x!2 ~@5 x ~@7", R: "x!2 ~@2 x ~@2 x", S: "x ~@4 x!2 ~@7 x ~", T: "x!2 ~ x ~@2 x ~",
  U: "~@2 x!2 ~@2 x ~", V: "~ x ~@6", W: "~@4 x ~@4 x!2 ~@3 x!2", X: "x!3 ~@5 x ~@7", Y: "x ~ x!2", Z: "~ x ~@2 x ~@3",
  AA: "x ~@5 x ~@2 x!2 ~@5", AB: "x ~@3 x!2 ~ x", AC: "x ~@2 x ~@4", AD: "~@8 x ~@4 x!2 ~", AE: "x ~@3 x!3 ~@5 x ~@3",
  AF: "~ x ~@2",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@26 B ~@16 C ~@16 D ~@24>".pickRestart({
  A: "~@4 x ~@2 x", B: "~ x ~@2", C: "~@8 x!6 ~@2", D: "~@3 x",
})).gain(0.33)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@3 [~@3 x ~@4] ~@85>").gain(0.33)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A ~@6 B ~@4 C ~@12 D ~@9 E ~@6 F ~@3 B G ~@11 H I ~@6>".pickRestart({
  A: "~@13 x ~@2", B: "~@7 x", C: "~@6 x ~ x!2 ~@6", D: "~ x ~@6", E: "~@5 x ~@10", F: "~@3 x ~@4", G: "x!2 ~@14",
  H: "~@5 x ~@2", I: "~@3 x ~@12",
})).gain(0.33)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@8 B ~@14 C ~ D ~@14 E A ~ A ~@13 F G ~ G ~@13 D H ~@8>".pickRestart({
  A: "x", B: "~ x", C: "x ~@2 x ~@2 x ~", D: "~@3 x", E: "~@2 x ~@2 x ~@2", F: "~@4 x ~@2 x", G: "~ x ~@2",
  H: "~ x ~@2 x ~@3",
})).gain(0.33)

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

stack(trumpet, drawbar_organ, drawbar_organ_soft, piano, bass, kick, snare, low_tom, pedal_hat, mid_tom, crash, ride)

More by The Beatles