Strudelify

Coming Up

McCartney

KeyE majorTempo136 bpm
0:00/0:00
// Coming Up — McCartney
// 136 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 7 "OVERDRIVE" overdriven guitar (copy of ch 1 "CLEAN GTR" electric guitar clean)
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H ~@4 E F G H A B C D
  E F G H A B C D E F G H E F G H E F G H E F G H A B C D E F G H A B C D E F G H A B C D ~@4
>`.pickRestart({
  A: "~@2 [e4,g#4,c#5] [g#4,c#5] ~ [g#4,c#5]!3 [d4,f#4,b4]@2 [e4,g#4] ~ [d4,f#4,b4]@2 e4 ~, ~@5 e4@3 ~@8", // C#m C#5 Bm E Bm
  B: "~@2 [g#4,c#5] [e4,g#4,c#5] [g#4,c#5] [e4,g#4,c#5] [g#4,c#5] [e4,g#4,c#5] [f#4,b4]@2 [e4,g#4,c#5] ~ [f#4,b4] ~@3", // C#5 C#m C#5 C#m C#5 C#m B5 C#m …
  C: "~@2 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [g#4,c#5] [e4,g#4,c#5] [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 g#4 ~", // C#m C#5 C#m Bm C#m Bm
  D: "~@2 [g#4,c#5] [e4,g#4,c#5] ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4] ~ b4 ~", // C#5 C#m C#5 Bm C#m Bm
  E: "~@2 [e4,g#4,c#5]!2 c#5 [e4,g#4,c#5]!3 ~ b4 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [e4,g#4,c#5] ~, ~@4 [f#4,b4] ~@3", // C#m Bm C#m B5
  F: "~@2 [e4,g#4,c#5]!2 c#5 [e4,g#4,c#5] [g#4,c#5] [e4,g#4,c#5] [d4,f#4,b4]@2 [g#4,c#5] c#5 [d4,f#4,b4] ~@3", // C#m C#5 C#m Bm C#5 Bm
  G: "~@2 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [e4,g#4,c#5] ~", // C#m C#5 Bm C#m Bm C#m
  H: "~@2 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5]!3 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 ~@2", // C#m Bm C#m Bm
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A B C D ~ E F ~ A B C D ~ E F ~ A B C D ~ E F ~ A B C D ~ E F ~ A B C D ~ E F ~ A B C D ~ E F ~@6 E F ~ A B C D ~ E
  F ~ A B C D ~ E F ~@2 E F ~@2 E F ~@2 E F ~ A B C D ~ E F ~ A B C D ~ E F ~ A B C D ~@4
>`.pickRestart({
  A: "~@3 e4 ~@6 c#5 ~@3 [g#4,c#5] ~", B: "~@8 d4@2 ~ c#5 d4 ~@3", C: "~@14 [e4,c#5] ~", D: "~@7 e4 ~@8",
  E: "b4 ~@9 e4 ~@5", F: "~@7 e4 ~@7 c#5",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.6)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B A C A D A D A B A C A D A E F G H I F G J K A D A D A B A C A D A E F G H I F G J K A D A D L M N O P Q@2 R A B
  A C A D A E F G H I F G J K ~@4 A D A D A B A C A D A E F G H I F G J K F G H I F G J K S T U ~
>`.pickRestart({
  A: "e1@3 ~@3 e1@2 e1@3 ~@5", B: "e1@2 ~@4 e1@2 g#1@3 ~ b1@4", C: "e1@2 ~@4 e1 ~ g#1@3 ~ b1@4",
  D: "e1@2 ~@4 e1 ~ g#1@2 ~@2 b1@4", E: "e1@2 ~@2 [e2,e3]@11 ~", F: "a1@2 a2 a1 b1@2 b2 b1",
  G: "c#2@4 c#3@2 c#2@2 d2@4 d3@2 d2 d#2", H: "e2@3 ~ e2@2 e1@2 f#1@4 f#2@2 f#1@2", I: "g1 g2 g1 g#1 g#2@2 g#1 g#2",
  J: "e2@2 e2 e1 f#1@2 f#2 f#1", K: "g1@2 g2@2 g1@2 g#1@2 g#2@7 ~", L: "a1@2 a1 ~@3 g1@2 a1@2 a1@4 ~@2",
  M: "a1 ~ a1@2 ~@2 g1@2 a1@6 g1@2", N: "a1@2 a1@2 ~@2 g1@2 a1@3 ~ a1@2 g1@2",
  O: "a1@2 ~ a1 b1@2 c2@2 c#2@2 e2@2 g2@3 ~", P: "e1@4 ~@2 e1@2 e1@3 ~@3 e1@2",
  Q: "[e1@3 ~@3 e1@2 g#1@2 ~@2 f#1@2 e1@4 ~@4 e1@2 e1@3 ~@3 e1 ~]/2", R: "e1 g1@2 g#1@2 a1 c2 c#2", S: "a1 b1",
  T: "c#2 d2", U: "e1",
})).s("gm_fretless_bass").gain(0.44)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A B@7 C ~@15 D E@3 F ~@15 D E@3 F G@4 H@2 I J ~@15 D K ~@2 L M@3 F ~@24 N@2 O ~
>`.pickRestart({
  A: "~@12 [d#3,e3,f3,f#3] [g3,a3,b3,c4] [d4,e4,f4,g4] [a4,b4,c5,d5,e5]", // Cmaj7 Em7 Am
  B: "[[b5,e6]@49 ~@15 e4@2 ~@6 b5@39 b4, a#5 ~@29 e6@25 ~, [a5,c#6] ~@59 e5@12 ~@40]/7", // E5 A
  C: "[b5,d6] ~ [a5,c#6] ~ g5 g#5 d5 [e5,g#5,b5] b4 [e5,g#5,b5] b4 d5 e4@4, e5@7 ~@9, ~@4 b5@3 ~@9", // Bm A E
  D: "~@14 [g4,a4] [b4,c5,d5,e5]", E: "[[f5,a5,a#5] ~@46 [b4,d5], [b5,e6]@23 ~]/3",
  F: "[e5,b5,d6] [b4,d5] [e5,a5,c#6] [a5,c#6] g5 g#5 [b4,d5] e5 ~ e5 e4 b4 d5@2 e5 ~, ~@3 [e5,b5]@3 ~@10", // E7 Bm A Bm E5
  G: "[g4,a4,c#5,e5]/4", H: "[[b5,e6]@7 ~, a#5 ~@31]/2", I: "~@15 b4",
  J: "[e5,b5,d6] ~ [a5,c#6] ~@2 g#5 d5 e5 b4 e5 b4 d5 e5@2 g5 ~, ~ e5 [e5,g5,b5] ~@5", K: "f5 ~@15",
  L: "~@14 [g3,a3] [b3,c4,d4]", M: "[[e4,f4,g4,a4,b4,c5,d5,a5] ~@46 [b4,d5], [b5,e6]@47 ~, a#5 ~@23]/3",
  N: "[c#6@16 a5@13 [f3,g3,a3] [b3,c4,d4,e4] [f4,g4,a4,b4], e6@29 ~@3]/2", O: "[c5,d5,e5,f5] [g#5,e6]@15, ~ g5 ~@14",
})).s("gm_rock_organ").gain(0.33).pan(0.6)

// other · muted trumpet · "MT TRUMPET"
const muted_trumpet = note(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@8 B C D E ~@3 A ~@3 A ~@8 B C D E ~@11 A ~@3 A ~@12 B C D E ~@3 A ~@3 F ~@20
>`.pickRestart({
  A: "~@2 e4!6 f#4 ~ e4 ~ d4@3 ~", B: "~@2 e4 ~ e4 ~@2 e4 f#4 ~ e4 ~ d4@2 e4 ~", C: "~@2 e4 ~ e4!4 f#4 ~ e4 ~ d4@3 ~",
  D: "~@2 e4 ~ e4 ~ e4!2 f#4 ~ e4 ~ d4@2 e4 ~", E: "~@2 e4 ~ e4 ~@3 f#4 ~ e4 ~ d4@3 ~", F: "~@2 e4!6 f#4 ~ [d4,e4] ~@5",
})).s("gm_muted_trumpet").gain(0.44)

// other · muted trumpet · "MT TRUMPET" · soft notes
const muted_trumpet_soft = note("<~@25 A B A C ~@16 A B A C ~@28 A B A C ~@28>".pickRestart({
  A: "~@3 e4 ~ e4 ~@10", B: "~@3 e4 ~@12", C: "~@3 e4 ~ e4@2 e4 ~@8",
})).s("gm_muted_trumpet").gain(0.27)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~ A B C D E F E ~ A B C D E F E ~@9 E F E ~ A B C D E F E ~@9 E F E ~@9 A B C D E F E ~@13 E F E ~ A B C D E F E ~@21
>`.pickRestart({
  A: "~@4 [b4,e5]@3 ~@5 [b4,e5]@2 ~@2", B: "~@8 [b4,e5]@3 ~ [a4,d5]@3 ~", C: "~@2 e5 ~@3 [b4,e5] ~, ~@4 b4 ~@11",
  D: "~@8 [b4,e5]@2 ~@2 [a4,d5]@3 ~", E: "~@4 [b4,e5]@2 ~@6 [b4,e5]@3 ~", F: "~@4 [b4,e5] ~ [a4,d5] ~",
})).s("gm_epiano1").gain(0.27)

// other · trumpet
const trumpet = note(`<
  ~@4 A B ~@2 C ~@3 A B ~@2 C D E F G D E F H ~@3 I ~@3 A B ~@2 C D E F G D E F H ~@3 J K L M N@5 ~@3 A B ~@2 C D E F G
  D E F H ~@7 O ~@3 A B ~@2 C D E F G D E F H D E F G D E F H P@2 Q ~
>`.pickRestart({
  A: "~@2 [e4,e5]!6 [f#4,f#5] ~ [e4,e5] ~ d5@2 [b3,c4] [e3,f3,g3,a3], ~@12 d4 ~@3", B: "[a2,b2,c3,d3] g2 ~@14",
  C: "~@2 [e4,e5]!6 [f#4,f#5] ~ [e4,e5] ~ [d4,d5] ~@3", D: "c#4 d4", E: "e4 f#4", F: "g#4 a4", G: "b4", H: "b4@15 ~",
  I: "~@2 [e4,e5]!3 e4!2 [e4,e5] [f#4,f#5] ~ [e4,e5] ~ [d4,d5]@3 ~, ~@5 e5@2 ~@9", // E F# E D
  J: "~@2 [e4,e5]!6 [f#4,f#5] ~ [e4,e5] ~ [d4,d5]@3 ~", K: "~@2 c5 c#5 g5 f#5 e5 d5 c#5 c5 b4 a#4 a4 ~ g4@2",
  L: "~@2 c5 c#5 g5 f#5 e5 d5 e5@6 ~@2", M: "~ c5 c#5 a5 g5 f#5 e5 d5 c#5 c5 b4 a#4 a4 ~ g4@2",
  N: "[~@2 c5 c#5 g5 f#5 e5 d5 e5@33 ~@3 f#5 ~ e5@33 ~]/5",
  O: "~@2 [e4,e5]!2 e5 e5@2 [e4,e5] [f#4,f#5] ~ [e4,e5] ~ [d4,d5]@3 ~, ~@5 e4 ~@10", // E F# E D
  P: "[a5@2 g5 f#5 e5@6 d5 c#5 a4@2 f#4@2]/2", Q: "g#4",
})).s("gm_trumpet").gain(0.44).pan(0.6)

// other · trombone
const trombone = note(`<
  ~@4 A ~@3 B ~@8 C D E F C D E F ~@3 G ~@8 C D E F C D E F ~@3 G H I J K@5 ~@8 C D E F C D E F ~@7 G ~@8 C D E F C D E
  F C D E F C D E F L@2 M ~
>`.pickRestart({
  A: "~@2 e4!6 f#4 ~ e4 ~ d4@2 [a3,b3,c4] [f3,g3]", B: "~@2 e4 ~ e4 ~ e4!2 f#4 ~ e4 ~ d4@2 ~@2", C: "c#4 d4",
  D: "e4 f#4", E: "g#4 a4", F: "b4@3 e5@5", G: "~@2 e3 ~ e3 ~ e3!2 f#3 ~ e3 ~ d3@3 ~",
  H: "~@2 c5 c#5 g5 ~@2 d5 c#5 ~ b4 a#4 a4 ~ g4@2", I: "~@2 c5 c#5 ~@4 e5@6 ~@2",
  J: "~@5 f#5 ~ d5 c#5 ~ b4 a#4 a4 ~ g4@2", K: "[~@2 c5 c#5 g5 ~@3 e5@33 ~@3 f#5 ~ e5@32 ~@2]/5",
  L: "[a4@2 g4 f#4 e4@6 d4 c#4 a3@2 f#3@2]/2", M: "e3",
})).s("gm_trombone").gain(0.49).pan(0.4)

// other · trombone · soft notes
const trombone_soft = note("<~@4 A B ~@2 C ~@19 D ~@19 D E F G H ~@27 D ~@28>".pickRestart({
  A: "~@15 [d3,e3]", B: "c3 ~@15", C: "~@3 e4 ~ e4 ~@10", D: "~@3 e3 ~ e3 ~@10", E: "~@5 f#5 e5 ~@2 c5 ~@6",
  F: "~@4 g5 f#5 e5 d5 ~@8", G: "~ c5 c#5 a5 g5 ~ e5 ~@2 c5 ~@6", H: "~@5 f#5 e5 d5 ~@8",
})).s("gm_trombone").gain(0.33).pan(0.4)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~@17 A B C D A B C D ~@12 A B C D A B C D ~@4 E F G H@5 ~@8 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D I@2 J
  ~
>`.pickRestart({
  A: "c#4 d4", B: "e4 f#4", C: "g#4 a4", D: "b4@3 e5@5", E: "~@2 c5 c#5 g5 f#5 e5 d5 c#5 c5 b4 a#4 a4 ~ g4@2",
  F: "~@2 c5 c#5 g5 f#5 e5 d5 e5@7 ~", G: "~ c5 c#5 a5 g5 f#5 e5 d5 c#5 c5 b4 a#4 a4 ~ g4@2",
  H: "[~@2 c5 c#5 g5 f#5 e5 d5 e5@33 ~@3 f#5 ~ e5@31 ~@3]/5",
  I: "[[a4,a5]@2 [g4,g5] [f#4,f#5] [e4,e5]@6 [d4,d5] [c#4,c#5] [a3,a4]@2 [f#3,f#4]@2]/2", J: "[e3,g#4]",
})).s("gm_brass_section").gain(0.49)

// other · alto sax
const alto_sax = note(`<
  ~@4 A ~@3 B ~@3 A ~@3 C D E F G D E F H I J K L ~@3 A ~@3 M D E F G D E F H I J K L N O P Q@5 ~@3 R ~@3 S D E F G D E
  F H ~@4 T J K L ~@3 A ~@3 M D E F G D E F H D E F G D E F H U@2 V ~
>`.pickRestart({
  A: "~@2 e4!6 f#4 ~ e4 ~ d4 ~ [b3,c4] [f3,g3,a3]", B: "~@2 e4!6 f#4 ~ e4 ~ d4 ~@3",
  C: "~@2 e4 ~ e4 ~@2 e4 f#4 ~ e4 ~ d4@3 ~", D: "c#3 d3", E: "e3 f#3", F: "g#3 a3", G: "b3@3 e4@5", H: "b3@6 e4@9 ~",
  I: "~@2 e4!6 f#4 ~ e4 ~ d4@2 e4 ~", J: "~@2 e4 ~ e4!2 ~ e4 f#4 ~ e4 ~ d4@3 ~",
  K: "~@2 e4 ~ e4!4 f#4 ~ e4 ~ d4@2 e4 ~", L: "~@2 e4 ~ e4!4 f#4 ~ e4 ~ d4@2 ~@2", M: "~@2 e4!6 f#4 ~ e4 ~ d4@3 ~",
  N: "~@2 c4 c#4 ~ f#4 e4 d4 c#4 c4 b3 a#3 a3 ~ g3@2, ~@2 g4 ~@5", O: "~@2 c4 c#4 g4 f#4 e4 d4 e4@7 ~",
  P: "~ c4 c#4 a4 g4 f#4 e4 d4 c#4 c4 b3 a#3 a3 ~ g3@2", Q: "[~@2 c4 c#4 g4 ~ e4 d4 e4@32 ~@4 f#4 ~ e4@31 ~@3]/5",
  R: "~@2 e4!3 e4@2 e4 f#4 ~ e4 ~ d4 ~ [b3,c4] [f3,g3,a3]", S: "~@2 e4 ~@13", T: "~@2 e4@2 e4!4 f#4 ~ e4 ~ d4@2 e4 ~",
  U: "[a4@2 g4 f#4 e4@6 d4 c#4 a3@2 f#3@2]/2", V: "[e3,g#3]",
})).s("gm_alto_sax").gain(0.38).pan(0.4)

// other · alto sax · soft notes
const alto_sax_soft = note("<~@5 A ~@7 A ~@2 B ~@9 C@3 ~@4 A ~@12 C@3 ~@3 D ~@8 A ~@16 C@3 ~@4 A ~@23>".pickRestart({
  A: "[b2,c3,d3,e3] a2 ~@14", B: "~@3 e4 ~ e4!2 ~@9", C: "~@3 e4 ~@12", D: "~@5 f#4 ~@10",
})).s("gm_alto_sax").gain(0.22).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~ A@2 B@2 C@2 D@4 B@2 C@2 E@3 ~@7 A@2 B@2 C@2 D@4 B@2 ~@8 C@2 E@3 ~@3 C@2 D@4 B@2 C@2 E@3 ~@7 C@2 F@8 D@4 B@2 ~@20
>`.pickRestart({
  A: "[~@5 [e4,g#4,c#5] [g#4,c#5] ~ [g#4,c#5]!3 [d4,f#4,b4]@2 g#4 ~ [d4,f#4,b4]@2 ~@4 [g#4,c#5]!2 g#4 [e4,g#4,c#5] g#4 [e4,g#4] [f#4,b4]@2 [g#4,c#5] ~ [f#4,b4], ~@8 e4@3 ~@21]/2", // C#m C#5 Bm C#5 C#m E B5 C#5 …
  B: "[~@5 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [g#4,c#5] [e4,g#4] [d4,f#4,b4]@2 g#4 ~ [d4,f#4,b4]@2 g#4 ~@3 [g#4,c#5] [e4,g#4,c#5] ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]]/2", // C#m C#5 E Bm C#5 C#m C#5 Bm …
  C: "[~@5 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [e4,g#4] [e4,g#4,c#5] [f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [e4,g#4,c#5] ~@3 [e4,g#4,c#5] [e4,g#4] ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [g#4,c#5] ~ [d4,f#4,b4]]/2", // C#m E C#m B5 C#m Bm C#m E …
  D: "[~@5 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [g#4,c#5] ~@3 [e4,g#4,c#5] [g#4,c#5] ~ [e4,g#4,c#5] [e4,g#4] [e4,g#4,c#5] [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 ~@4 [e4,g#4,c#5] [g#4,c#5] ~ [g#4,c#5]!3 [d4,f#4,b4]@2 g#4 ~ [d4,f#4,b4]@2 ~@4 [g#4,c#5]!2 g#4 [e4,g#4,c#5] g#4 [e4,g#4] [f#4,b4]@2 [g#4,c#5] ~ [f#4,b4], ~@40 e4@3 ~@21]/4", // C#m C#5 Bm C#m Bm C#5 C#m C#5 …
  E: "[~@5 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [g#4,c#5] ~@3 [e4,g#4,c#5] [g#4,c#5] ~ [e4,g#4,c#5] [e4,g#4] [e4,g#4,c#5] [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 ~@15]/3", // C#m C#5 Bm C#m Bm C#5 C#m C#5 …
  F: "[~@5 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [g#4,c#5] ~@3 [e4,g#4,c#5] [g#4,c#5] ~ [e4,g#4,c#5] [e4,g#4] [e4,g#4,c#5] [d4,f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 ~@4 [e4,g#4,c#5]!2 ~ [e4,g#4,c#5] [e4,g#4] [e4,g#4,c#5] [f#4,b4]@2 [e4,g#4,c#5] ~ [d4,f#4,b4]@2 [e4,g#4,c#5] ~@3 [e4,g#4,c#5] [e4,g#4] ~ [e4,g#4,c#5] [g#4,c#5]!2 [d4,f#4,b4]@2 [g#4,c#5] ~ [d4,f#4,b4]]/4", // C#m C#5 Bm C#m Bm C#5 C#m C#5 …
})).s("gm_overdriven_guitar").gain(0.05).pan(0.8)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~ A B C D E F G H A B C D E F G H ~@8 A B C D E F G H A B C D ~@8 E F G H ~@4 E F G H A B C D E F G H ~@8 E F G H E F
  G H E F G H A B C D ~@20
>`.pickRestart({
  A: "~@6 e4 ~@6 [e4,c#5] ~@2", B: "~ [e4,g#4,c#5] ~@4 e4 c#5 ~ c#5!2 d4@2 e4 c#5 d4", C: "~@10 c#5 ~@2 [e4,c#5] ~@2",
  D: "~ [e4,c#5] ~@8 e4 ~@5", E: "~ b4 ~@5 c#5 ~ c#5 ~@2 b4 ~@3", F: "~@3 b4 ~@2 c#5!2 ~@2 e4 ~@2 e4 c#5 ~",
  G: "~@2 b4 ~@7 e4 ~@5", H: "~ e4 c#5 ~@3 e4 ~@2 c#5 ~@6",
})).s("gm_overdriven_guitar").gain(0.02).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@7 B A@7 B A@11 B A@7 B A@11 B A@15 B A@8 C@3 D A@3 B A@7 B A@16 E F B ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x!5 ~@3", D: "x!4", E: "x ~@2 x!2 ~@2 x", F: "x!2",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@7 B A@7 C A@7 D A@3 B A@7 C A@7 D A@3 B A@5 E A@9 C A@7 D F@3 ~ A@3 B A@7 C A@7 D A@7 D G H ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!7 ~ x ~@5", C: "~ x ~@2", D: "~ x!3", E: "~@2 x ~@3 x!2", F: "~@3 x ~@12",
  G: "~@2 x ~@2 x!2 ~", H: "~@4 x!3 ~@9",
})).gain(0.55)

// drums · clap
const clap = s("cp").struct("<~@73 [x!4]!4 ~@32>").gain(0.49)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@7 B A@7 C A@7 D A@3 B A@7 C A@7 D A@3 B A@5 E A@9 C A@7 D F G F G A@3 B A@7 C A@7 D A@7 D ~@4
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~ x ~ x!2 ~@2", B: "x", C: "x ~@2 x ~@9 x ~@2", D: "x ~@2 x ~@2 x ~ x ~ x ~@5",
  E: "x ~@2 x ~@2 x ~ x ~ x ~ x ~@3", F: "x!2 ~ x!3 ~@2", G: "x!2 ~ x!4 ~",
})).gain(0.33)

// drums · low tom
// … 50 more lines

More by McCartney