Strudelify
Let Me Roll It cover art

Band On The Run

Let Me Roll It

McCartney

KeyE majorTempo87 bpm
0:00/0:00
// Let Me Roll It — McCartney
// 87 bpm, 6/8, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 141 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(87/3)

// 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, A@4 for four bars: edit a riff to change every repeat.

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  A B@2 C D E D E D E D E D ~@15 A B@2 C D E D E D E D E D ~@15 A B@2 C D E D E D E D E D ~@15 A B@2 C D E D E D E D E D
  ~@15 F@7 G@7 ~@15
>`.pickRestart({
  A: "[a5,c#6,e6]", B: "[[a5,f#6] [a5,e6], c#6@47 ~]/2", C: "[a5,c#6,f#6]", D: "[g#5,b5,e6]", E: "d6 c#6@2, [a5,e6]",
  F: "[~ [a5,c#6,e6]@6 [a5,f#6]@6 [a5,e6]@6 [a5,c#6,f#6]@6 [g#5,b5,e6]@6 d6@2 c#6@4 [g#5,b5,e6]@5, ~@28 c#6@47 ~@49 [a5,e6]@24 ~@20]/7", // A D A5 F#m E A5
  G: "[~@2 d6@4 c#6@8 [g#5,b5,e6]@12 d6@4 c#6@8 [g#5,b5,e6]@12 d6@4 c#6@8 [g#5,b5,e6]@13 ~@9, ~ [a5,e6]@6 ~@6 [a5,e6]@6 ~@6 [a5,e6]@6 ~@11]/7", // E A5
})).s("gm_drawbar_organ").gain(0.27).pan(0.7)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B A C D A D A D A E A F G H@2 I@2 J@2 K I L J M I L N O P Q R S T U V D W E X F G H@2 M@2 Y Z AA K Y Z AA@2 Y AB AC
  AD AE AF AG AH U W U AI D W AJ G AK@2 AA M Y Z AA@2 Y Z AA M Y L AL AM AN AO AP AQ AR AS AR V AT AU AV@2 ~@2 AW AX AY
  AZ AX BA AY BB AX AW AY BC BD BE BF BG BH BI BJ BI BK BL BM BN@2 BO BP BQ BR AX AY@2 AX@2 AY@2 AX@2 AY ~@2
>`.pickRestart({
  A: "a1@6 ~@2 c#2@2 e2 ~, ~@16 c2 ~@7", B: "f#2 ~, e2 ~@23", C: "f#2@6 ~@2 g#2@4 f#2@7 e2@2 ~@3, e2 ~@7 f#2 ~@15",
  D: "e1@13 ~@7 g#1@3 ~, ~@20 g1 ~@3", E: "e1@13 ~@7 g#1@2 ~@2, ~@20 g1 ~@3",
  F: "e1@2 ~@2 e1@2 ~@2 e1@3 ~ e1@3 ~ e1@2 ~@2 e1@2 ~@2", G: "e1 ~@11", H: "[e1 ~ f#1@42 ~@4]/2", I: "e1@7 ~",
  J: "f#1@5 ~", K: "e1@2 ~", L: "f#1@3 ~", M: "e1@3 ~", N: "f#1 g#1", O: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@5 ~@3 e2@2 ~@2",
  P: "f#2@3 ~ f#2@3 ~ f#2@2 ~@2 f#2@6 ~@6", Q: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@7 ~ e2@2 ~@2",
  R: "f#2@2 ~@2 f#2 ~@2 f#2 ~ g#2@2 ~ f#2@7 ~ f#2 ~@3", S: "e1@11 ~ g#1@7 ~ b1@3 ~",
  T: "a1@9 ~@2 c2 c#2@4 e2@4 f#2 ~@3", U: "e1@12 ~@7 g1 g#1@3 ~", V: "a1@7 ~ a1@4 c#2@6 ~@2 e2@2 ~@2, ~@12 c2 ~@11",
  W: "a1@8 ~@4 c#2@7 ~ e2@2 ~@2, ~@12 c2 ~@11", X: "a1@5 ~@2 a1@5 c#2@7 ~ e2 ~@3, ~@12 c2 ~@11", Y: "f#1@13 ~@11",
  Z: "f#1@5 ~@3", AA: "e1@13 ~@11", AB: "f#1@13 ~@3 f#1@4 g#1@3 ~", AC: "a1@5 ~@3 a1 ~@3 a1@7 d#2 e2@4",
  AD: "f#2@3 ~@5 f#2@3 ~ f#2@8 ~@4", AE: "a1@4 a1@7 ~ a1@8 e2@3 ~", AF: "f#2@3 ~ f#2@3 g2 g#2@3 f#2@8 ~ e2@2 ~@2",
  AG: "e1@11 ~ g#1@7 ~ b1@3 ~, ~@12 g1 ~@11", AH: "a1@9 ~@3 c#2@8 e2@2 ~@2", AI: "a1@8 ~@4 c#2@8 e2 ~@3",
  AJ: "e1@2 ~@2 e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2", AK: "[e1 f#1@17 ~@6]/2", AL: "a1@8 ~@8 a1@4 c#2 ~@3",
  AM: "e2 f#2@11 f#2@6 ~@2 e2@2 ~@2", AN: "a1@2 ~@2 a1@3 ~ a1@2 ~@2 a1@3 ~@5 c#2@2 ~@2, ~@20 c2 ~@3",
  AO: "f#2@2 ~@2 f#2@2 ~ f#2 g#2@3 f#2@8 ~ e2@2 ~@2", AP: "e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@7 g#1@2 ~@3",
  AQ: "a1@7 ~@5 c#2@3 ~@5 f#2@3 ~", AR: "e1@11 ~ e1@6 ~ g1 g#1@3 ~", AS: "a1@3 ~ a1@2 c#2@4 e2 ~, ~@12 c2 ~@11",
  AT: "e1@15 ~ g#1@3 ~ b1@3 ~", AU: "a1@6 ~ a1@4 ~ c#2@8 e2@3 ~",
  AV: "[e1@3 ~ e1@3 ~ e1@3 ~ e1@3 ~ e1@2 ~ e1@2 ~@2 e1@3 ~@22]/2", AW: "~ e1@4 ~", AX: "~@4 e1@13 ~@7",
  AY: "~@4 f#1@13 ~@7", AZ: "~@2 f#1@7 ~@3", BA: "~@2 e1@7 ~@3", BB: "~@4 f#1@15 ~@5", BC: "~@4 f#1@9 ~@11",
  BD: "f#1@4 a1@7 ~@4 a1@4 ~ c#2@4, ~@20 c2 ~@3", BE: "e2@3 ~ f#2@6 ~@6 f#2@5 ~@3", BF: "g#1 ~ a1@5 ~ a1 ~@3",
  BG: "e2@3 ~ f#2@7 ~@2 g#2 ~@2 f#2@7 ~", BH: "e2 ~@3 e1@10 ~@2 e1@3 ~@5", BI: "g#1@4 a1@6 ~@2 a1@3 c2 c#2@7 ~",
  BJ: "f#2@2 ~@2 e1@11 ~ e1@2 ~@5 g1", BK: "e2@2 ~@2 e1@10 ~@2 e1@3 ~@5", BL: "g#1@3 ~ a1@6 ~ a1@4 c2 c#2@8, g1 ~@23",
  BM: "e2@2 ~@2 e1@10 ~@2 e1@3 ~@4 g1",
  BN: "[g#1@3 ~ a1@6 ~@2 a1@2 ~@2 c#2@4 e2@3 f#2@2 ~@3 e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2]/2",
  BO: "e1 ~ e1 ~@9", BP: "~@4 e1 ~ f#1@3 ~ e1 ~ f#1@12", BQ: "~@10 e1 f#1", BR: "~ g#1@2 ~ e1@11 ~ e1@8, g1 ~@11",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B C D E F G H I J K L M N O@2 P@2 Q@2 R S T@2 S U T V W X Y Z AA AB AC AD AE AF AG AH AI AJ O@2 P@2 Q@2 R S T@2 S U
  T V W X Y Z AA AB AC AD AE AF AG AH AI AJ O@2 P@2 Q@2 R S T@2 S U T V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM@2
  AN AO AP AQ AN@2 AQ AR AN AS@2 AT AU AV AW AX AY AZ BA@2 BB@2 BC@2 BD@2 AM@2 AN AO AP AQ AN@2 AQ AR AN ~@2
>`.pickRestart({
  A: "[c#4,e4,a4]@12 [c#4,e4,a4]@8 [a3,c#4] ~@3, [e3,a3]@5 ~", // A A5
  B: "[a3,c#4,f#4]@11 ~ [a3,c#4,f#4]@4 [f#3,a3,c#4]@4 [c#4,f#4] ~@3, ~@16 f#4@3 ~@5", // F#m F#5
  C: "[e3,c#4,e4]@12 [e3,a3,c#4,e4,a4]@8 [e3,a3,c#4] ~@3", // C#m A
  D: "[a3,c#4]@8 c#4@4 [a3,c#4,f#4]@4 [c#3,f#3,a3,c#4,f#4]@4 [a3,c#4,f#4] ~@3, [c#3,f#3] ~", // A F#m F#5
  E: "[g#3,b3,e4]@12 [g#3,b3,e4]@7 ~ [g#3,b3,e4] ~@3, e3@5 ~", // E
  F: "[a3,d4,e4]@8 [a3,c#4,e4]@7 ~ [e3,a3,c#4,e4]@4 [e3,a3,c#4,e4] ~@3, e3 ~", // Asus4 A
  G: "[g#3,b3]@12 [g#3,b3,e4]@7 ~ [g#3,b3,e4] ~@3, [b2,e3]@11 ~", // G#m E E5
  H: "[e3,a3,d4,e4]@8 ~@4 [c#4,e4]@4 [c#4,e4]@4 [e3,a3,c#4,e4] ~@3, ~@3 [e3,a3]@2 ~", // Dsus2 C#m A A5
  I: "[g#3,b3,e4]@6 [g#3,b3,e4]@4 [b3,e4] ~, [b2,e3]@11 ~", // E E5
  J: "[d4,e4]@8 e4@4 e4@3 ~ [c#4,e4]@4 [a3,c#4,e4] ~@3, a3@11 ~ [e3,a3]@10 ~@2", // Dsus2 C#m A A5
  K: "[e3,g#3,b3,e4]@6 [e3,g#3,b3]@4 [g#3,b3,e4] ~, ~@12 e4@7 ~@5", // E
  L: "[d4,e4]@8 [a3,c#4]@3 ~ [a3,c#4,e4]@4 [a3,c#4,e4]@4 [a3,c#4,e4] ~@3, a3 ~@3", // Dsus2 A
  M: "[b2,e3,g#3] b2 [b2,e3] [e2,b2,e3] [b2,e3,g#3]!2, ~@2 e2", N: "[b2,e3,g#3] ~@11",
  O: "[[e2,b2]@2 [f#2,c#3]@10 [a3,c#4,f#4] ~@11 f#2@12 [f#3,a3,c#4,f#4]@2 ~@10, ~@11 c#3@8 ~@5]/2", // E5 F#5 F#m
  P: "~@12 [g#3,b3,e4] ~@11, [e2,b2]@2 ~", Q: "[[f#2,c#3]@12 [a3,c#4,f#4] ~@9 c#3@14 [a3,c#4,f#4]@2 ~@10]/2",
  R: "~@6 [g#3,b3,e4] ~@5, [e2,b2]@5 ~@3", S: "~@12 [g#3,b3,e4] ~@11, [e2,b2]@5 ~@3",
  T: "[f#2,c#3]@12 [a3,c#4,f#4] ~@11", U: "e2@12 [b3,e4] ~@11", V: "[f#2,c#3]@12 [b3,e4]@11 ~",
  W: "[a2,e3,c#4,e4]@6 [e3,a3,c#4,e4]@5 ~", X: "c#3@3 [c#3,f#3,a3,c#4,f#4]@2 ~, f#2@5 ~",
  Y: "[e3,a3,c#4]@6 [a3,c#4,e4,a4]@5 ~", Z: "[f#3,a3,c#4]@3 [f#3,a3,c#4,f#4]@2 ~, c#3@7 ~",
  AA: "[e3,g#3,b3,e4]@6 [e3,g#3,b3]@5 ~, b2@11 ~, ~@12 e4@7 ~@5", // E
  AB: "[e3,a3,d4,e4]@7 ~ [a3,c#4,e4]@8 [e3,a3,c#4,e4]@4 e4 ~@3", // Dsus2 A
  AC: "g#3@8 g#3@4 [e3,g#3,b3,e4]@8 e4 ~@3, [e3,b3,e4] ~", // E E5
  AD: "[d4,e4]@7 ~ [c#4,e4]@8 [a3,c#4,e4]@4 [e3,a3,c#4] ~@3, [e3,a3]@2 ~", // Dsus2 C#m A A5
  AE: "[e3,g#3,b3] [b3,e4], b2@11 ~, ~@3 [e3,g#3]@2 ~", AF: "[a3,d4,e4]@7 ~ [a3,c#4,e4]@8 [a3,c#4,e4]@4 ~@4, e3@5 ~",
  AG: "[e3,g#3,b3] [e3,b3,e4], ~@3 g#3@2 ~", AH: "[e3,a3,d4,e4]@8 [a3,c#4,e4]@8 [e3,a3,c#4,e4]@4 e3 ~@3",
  AI: "e3 ~ e2@2 b2@2 [b2,e3,g#3]@2 [b2,e3,g#3]@2 [b2,e3,g#3]@2, b2 ~ e2, ~@20 b3 ~@3", AJ: "[b2,e3,g#3] ~@23",
  AK: "~@4 [e2,b2]@2 [f#2,c#3]@10 [a3,c#4,f#4] ~@7", AL: "~@2 f#2@6 [f#3,a3,c#4,f#4] ~@3, ~ c#3@8 ~@3",
  AM: "~@16 [g#3,b3,e4] ~@7, ~ [e2,b2]@4 ~", AN: "~@4 [f#2,c#3]@12 [a3,c#4,f#4] ~@7", AO: "~ c#3@7 [a3,c#4,f#4] ~@3",
  AP: "~@8 [g#3,b3,e4] ~@3, ~@4 [e2,b2]@15 ~@5", AQ: "~@16 [g#3,b3,e4] ~@7, ~@4 [e2,b2]@15 ~@5",
  AR: "~@4 e2@12 [b3,e4] ~@7", AS: "[~@4 [f#2,c#3]@12 [b3,e4]@11 ~ [a2,e3,c#4,e4]@12 [e3,a3,c#4,e4]@8]/2",
  AT: "~ c#3@3 [c#3,f#3,a3,c#4,f#4]@2, ~ f#2@5", AU: "~ [e3,a3,c#4]@3 [a3,c#4,e4,a4]@2",
  AV: "~ [f#3,a3,c#4]@3 [f#3,a3,c#4,f#4]@2, ~ c#3@5", AW: "~ [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@2, ~ b2@5",
  AX: "~@4 [e3,a3,d4,e4]@7 ~ [a3,c#4,e4]@8 [e3,a3,c#4,e4]@4", // Dsus2 A
  AY: "e4 ~@3 g#3@8 g#3@4 [e3,g#3,b3,e4]@8, ~ [e3,b3,e4]@3 ~@2", // E E5
  AZ: "e4 ~@3 [d4,e4]@7 ~ [c#4,e4]@8 [a3,c#4,e4]@4, ~ [e3,a3]@4 ~", // Dsus2 C#m A A5
  BA: "[[e3,a3,c#4] ~@3 [e3,g#3,b3]@12 [b3,e4]@12 [a3,d4,e4]@7 ~ [a3,c#4,e4]@8 [a3,c#4,e4]@4, ~@2 b2@11 ~@11, ~@4 [e3,g#3]@2 ~ e3@5]/2", // A E E5 Asus4 A E
  BB: "[~ [e3,g#3,b3]@3 [e3,b3,e4]@3 [e3,a3,d4,e4]@2 [a3,c#4,e4]@2 [e3,a3,c#4,e4], ~@2 g#3 ~@3]/2", // E E5 Dsus2 A
  BC: "[e3 ~@3 e3@2 ~@2 e2@4 b2@4 [b2,e3,g#3]@4 [b2,e3,g#3]@4 [b2,e3,g#3]@4 [b2,e3,g#3] ~@19, ~@2 b2@4 ~@4 e2@5 ~@9, ~@24 b3 ~@23]/2", // E
  BD: "[~@4 [e2,b2]@2 [f#2,c#3]@4 [e2,b2]@2 c#3@3 ~@2 f#4@23 ~@4 [a3,c#4,f#4]@4, ~@3 f#2@2 ~@7, ~@2 c#4@3 ~]/2", // E5 F#5 E5 F#m
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.1)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  A B C D E F ~@3 G H I J ~@4 K L M ~@2 L ~@2 N ~ O P Q R S T U V W X A Y Z AA ~@4 K L M ~@2 L ~@2 N ~ O P Q R S T U V W
  X A Y Z AA ~@4 K L M ~@2 L ~@2 N ~ O P Q R S T U V W X A Y Z AA ~@4 AB AC AD ~@2 AC ~@2 AE ~ AF@2 AG AH AI ~ AJ AK AL
  AM AN AO AP AQ ~ AR@3 AB AC AD ~@2 AC ~@2 AE ~@3
>`.pickRestart({
  A: "a2@19 ~@5", B: "[f#2,c#3]@7 ~, f#3@2 ~", C: "a2@7 ~, a3 ~", D: "~@2 a3 [c#3,f#3] ~@2", E: "b2@5 ~", F: "a2 ~",
  G: "~@2 c#4!2 ~@2, e3@11 ~@13", H: "b2 ~", I: "e3@11 ~@13", J: "~ e3 e2 ~@3", K: "e3@6 e3 ~@5", L: "f#3@7 ~@5",
  M: "~@6 f#3 ~@5, f#2@5 ~@3", N: "b2@12 g#3 ~@11", O: "~@12 g#3@11 ~", P: "a3@3 [a2,a4]@2 ~", Q: "[f#3,a3] ~",
  R: "~@6 e3@5 ~, a2@5 ~", S: "f#2@5 ~", T: "~@10 e4 ~", U: "~ e3 ~, a2@5 ~", V: "~@6 b2@5 ~", W: "~@16 e3@4 e4 ~@3",
  X: "~@10 e3 ~", Y: "[b2,e4]@3 b2@2 ~", Z: "~@8 e3@8 ~@4 a3 ~@3, a2@17 ~@7", AA: "e2 ~ e2@2 ~@2, ~@2 e3 ~@3",
  AB: "~@2 e3@6 e3 ~@3", AC: "~@2 f#3@7 ~@3", AD: "~@8 f#3 ~@3, ~@4 f#2@15 ~@5", AE: "~@4 b2@12 g#3 ~@7",
  AF: "[~@16 g#3@11 ~ a3@12 [a2,a4]@8]/2", AG: "~ [f#3,a3]@3 ~@2", AH: "~@2 e3, ~ a2@5", AI: "~ f#2@5",
  AJ: "e4 ~@5 e3@4 ~@2, ~ a2@5", AK: "~@2 b2", AL: "~@5 e3", AM: "e4 ~@23", AN: "e3@2 ~@2 a2@19 ~",
  AO: "~ [b2,e4]@3 b2@2", AP: "~@3 e3@2 ~, ~@4 a2@17 ~@3", AQ: "a3 ~@3 e2@4 ~@4 e2@8 ~@4, ~@3 e3 ~@2",
  AR: "[~@4 [f#3,a3]@6 [a3,c#4] ~@7, ~@15 c#3@34 ~@23, ~@20 f#3@5 ~@11]/3", // F#m A
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.1)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@13 A ~ B ~ C ~ A ~ D ~ E ~ A ~ D ~@13 A ~ B ~ C ~ A ~ D ~ E ~ A ~ D ~@13 A ~ F ~ C ~ A ~ G ~ H ~ A ~ G ~@13 A ~ I J
  K J L J M J K N L J M J ~@12 L J I J K J L J O J K J L J ~@2
>`.pickRestart({
  A: "~@4 f#4 g4 f#4 e4 [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4 [g3,b3]@2 ~@2, ~@4 c#4@3 ~@17", // F#5 E5 A G
  B: "~@4 f#4 g4 ~ [b3,f#4] ~ c#4@3 [b3,e4]@4 ~ c#4@3 [g3,b3]@2 ~@2, ~@4 c#4@3 ~ f#4@3 ~@5 a3@4 ~@4", // B5 E5 G
  C: "~@4 f#4 g4 f#4 e4 [c#4,f#4]@3 ~ e4@4 [a3,c#4]@3 ~ [g3,b3]@3 ~, ~@4 c#4@3 ~@5 b3@3 ~@9", // F#5 A G
  D: "~@4 f#4 g4 [e4,f#4] ~ [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4 [g3,b3]@2 ~@2, ~@4 c#4@3 ~@17", // Esus2 F#5 E5 A G
  E: "~@5 g4 f#4 e4 [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4 g3@2 ~@2, ~@2 [c#4,f#4] ~@9", // F#5 E5 A F#5
  F: "~@4 f#4 g4 f#4 b3 [c#4,f#4]@3 ~ [b3,e4]@4 [a3,c#4]@4 [g3,b3]@2 ~@2, ~@4 c#4@3 ~@17", // F#5 E5 A G
  G: "~@4 f#4 g4 [b3,e4,f#4] ~ [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4 [g3,b3]@2 ~@2, ~@4 c#4@3 ~@17", // Bsus4 F#5 E5 A G
  H: "~@5 g4 f#4 e4 [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4 [g3,b3]@2 ~@2, ~@2 [c#4,f#4] ~@9", // F#5 E5 A G F#5
  I: "~@8 f#4 g4 f#4 b3 [c#4,f#4]@3 ~ [b3,e4]@4 [a3,c#4]@4, ~@8 c#4@3 ~@13", J: "[g3,b3] ~@11",
  K: "~@8 f#4 g4 f#4 e4 [c#4,f#4]@3 ~ e4@4 [a3,c#4]@3 ~, ~@8 c#4@3 ~@5 b3@3 ~@5", // F#5 A
  L: "~@8 f#4 g4 f#4 e4 [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4, ~@8 c#4@3 ~@13", // F#5 E5 A
  M: "~@8 f#4 g4 [e4,f#4] ~ [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4, ~@8 c#4@3 ~@13", N: "g3 ~@11",
  O: "~@8 f#4 g4 [b3,e4,f#4] ~ [c#4,f#4]@4 [b3,e4]@4 [a3,c#4]@4, ~@8 c#4@3 ~@13", // Bsus4 F#5 E5 A
})).s("gm_overdriven_guitar").gain(0.49).pan(0.6)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~@13 A ~ B ~ A ~ A ~ C ~ D ~ A ~ C ~@13 A ~ B ~ A ~ A ~ C ~ D ~ A ~ C ~@13 A ~ B ~ A ~ A ~@3 A ~ A ~@15 A ~ E ~ F ~ F
  ~ G ~ F H F ~ G ~@13 F ~ E ~ F ~ F ~@3 F ~ F ~@3
>`.pickRestart({
  A: "~@7 b3 ~@16", B: "~@7 e4 ~@16", C: "~@6 b3 ~@17", D: "~@7 b3 ~@12 b3@2 ~@2", E: "~@11 e4 ~@12", F: "~@11 b3 ~@12",
  G: "~@10 b3 ~@13", H: "b3 ~@11",
})).s("gm_overdriven_guitar").gain(0.27).pan(0.6)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@12 A ~@27 B ~@27 B ~@27 B ~@27 C ~@16>".pickRestart({
  A: "~ x ~@4", B: "~ x!2 ~@3", C: "~@2 x!2 ~@2",
})).gain(0.22)

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

// drums · open hat
const open_hat = s("oh").struct("<~@24 A ~@27 A ~@55 B C ~@26 B C ~@3>".pickRestart({
  A: "~@6 x ~@4 x", B: "~@2 x", C: "~ x ~@10",
})).gain(0.49)

// drums · crash
const crash = s("cr").struct("<~@14 A ~@27 A ~@13 B ~@3 B ~@3 B ~@5 A ~@17 B ~ B ~@7 C ~@27 D ~@14>".pickRestart({
  A: "x!2 ~@10", B: "x", C: "~@2 x!2 ~@8", D: "~@2 x!2 ~ x!2 ~@5",
})).gain(0.49)

stack(
  drawbar_organ, bass, electric_guitar_clean, electric_guitar_clean_2, overdriven_guitar, overdriven_guitar_soft, kick,
  snare, snare_soft, hihat, open_hat, crash
)

More by McCartney