Strudelify
Magneto and Titanium Man cover art

Venus And Mars

Magneto and Titanium Man

McCartney

KeyD majorTempo127 bpm
0:00/0:00
// Magneto and Titanium Man — McCartney
// 127 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GTHARMONIC.
setcpm(127/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, A@4 for four bars: edit a riff to change every repeat.

// bass · clavinet
const bass = note(`<
  ~@16 A B ~@10 A B ~@10 A B ~@15 C D E D E F G F H I@2 ~@8 A B ~@15 C D E D E ~@4 J@2 ~
>`.pickRestart({
  A: "[g1,g2]@5 ~ [f#1,f#2]@5 ~ [f1,f2]@4 ~@2 [f#1,f#2]@4 ~@2", // G F# F F#
  B: "[g1,g2]@5 ~ [f#1,f#2]@5 ~ [f1,f2]@4 ~@2 [f1,f2]@4 ~@2", // G F# F
  C: "~@4 [a1,a2]@3 ~ [a1,a2]@3 ~ [a1,a2]@3 ~ [a1,a2]@3 ~ [a1,a2]@3 ~", D: "[d1,d2]@3 [f#1,f#2]", E: "[g1,g2]",
  F: "d2@11 ~ c2@11 ~", G: "g1@6 a1@5 ~ b1@6 c2@4 ~@2", H: "g1@2 ~ a1@2 ~ b1@2 ~ c2@2 ~", I: "[d2@23 ~]/2",
  J: "[d1,d2]/2", // D
})).s("gm_clavinet").gain(0.33).pan(0.4)

// bass · fretless bass · "FRETLESS"
const bass_2 = note(`<
  ~@4 A B A C A D E A F D G@2 H I J K J L G A@2 D M@2 N O P Q A R S Q T@2 U M N V A B W X Y@2 Z@2 AA AB AC AD AE AF Y AG
  AH AI AH AI AJ AK AJ AK AL@2 AM AN U Q A D U AO N AP AQ AR W AS AT AA AU@2 AA AV AW AS AT@3 AG AX AY AX AZ AJ BA AJ BA
  AL@2 ~
>`.pickRestart({
  A: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 a1@2 b1@2", B: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@5 ~",
  C: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@3 ~ b1@2", D: "d2@4 ~@2 d2@4 ~@2 d2@4 ~@2 a1 ~ d2 ~ a1@2",
  E: "g1@4 ~@2 g1@3 ~@3 g1@3 ~@3 g1@4 b1 ~", F: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 ~@2 b1@2",
  G: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 b1@4 d2 ~", H: "g1@5 ~ f#1@6 f1@5 ~ f#1@5 ~", I: "g1@5 ~ f#1@6 f1@4 ~@2 f1@5 ~",
  J: "d2@5 ~ a1@3 ~ b1@2 d2@5 ~ a1@3 ~ b1@2", K: "d2@5 ~ a1@3 ~ b1@2 d2@3 ~ d2@2 ~@2 a1@2 ~@2",
  L: "d2@5 ~ a1@4 b1@2 d2@4 ~@2 a1 ~ d2@2 a1@2", M: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@4 d2 ~",
  N: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@3 ~ f1 ~ f#1@3 ~ f#1 ~", O: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@3 ~ f1 ~ f1@4 ~@2",
  P: "d2@10 ~@2 d2@5 ~ d2@2 a1@2 b1 ~", Q: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@3 ~ b1 ~",
  R: "d2@5 ~ d2@5 ~ d2@4 ~@2 d2@4 a1 ~", S: "g1@4 ~@2 g1@3 ~@3 g1@3 ~ b1@2 d2@3 ~ b1@2",
  T: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 ~@2 d2 ~", U: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@2 b1 ~ d2 ~",
  V: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@3 ~ f1 ~ f1@3 ~ f1 ~", W: "a1@4 ~@2 a1@4 ~@2 a1@3 ~@3 a1@2 c#2 ~ e2 ~",
  X: "a1@4 ~@2 a1@4 ~@2 a1@4 ~@2 a1@3 ~ g#1 ~", Y: "g1@3 ~ g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1 ~",
  Z: "a1@2 ~@2 a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~", AA: "g1@4 ~@2 b1@5 ~ d2@4 ~@2 f#2@4 ~@2",
  AB: "g2@4 ~@2 g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2@2", AC: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~",
  AD: "a1@4 a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@2 ~@2 a1 ~", AE: "g1@3 ~ g1 ~ b1@4 ~@2 d2@3 ~ d2 ~ f#2@4 ~@2",
  AF: "g2@4 ~@2 f#2@5 ~ d2@2 ~@2 d2 ~ d2@2 ~@2 d2 ~", AG: "g1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", AH: "d2@3 f#2", AI: "g2@7 ~",
  AJ: "d2@4 ~@2 d2@5 ~ c2@5 ~ c2@4 ~@2", AK: "g1@3 ~ g1 ~ a1@5 ~ b1@6 c2@5 ~", AL: "d2/2",
  AM: "d2@5 ~ d2@5 ~ d2@5 ~ d2@2 a1 ~@3", AN: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 a1@3 ~ d2 ~",
  AO: "g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 g1@3 ~ g1 ~", AP: "g1@3 ~ g1 ~ f#1@3 ~ f#1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~",
  AQ: "d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@2 a1 ~ b1 ~", AR: "d2@5 ~ f#1@4 ~@2 g1@4 ~@2 g#1@4 ~@2",
  AS: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~", AT: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~", AU: "a1@4 ~@2 c#2@3 ~@3 e2@4 ~@2 c#2@3 ~ e2 ~",
  AV: "b2@4 ~@2 f#2@4 ~@2 d2@5 ~ b1@3 ~@3", AW: "a1@4 ~@2 a1@4 ~@2 a1@5 ~ a1 ~ c#2 ~ e2 ~", AX: "d2@18 f#1@5 ~",
  AY: "g1@7 ~", AZ: "g1@19 ~@5", BA: "g1@5 ~ a1@5 ~ b1@5 ~ c2@5 ~",
})).s("gm_fretless_bass").gain(0.38)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A@3 B C@6 D E@3 F G H I E@4 J E@3 K L M N E@4 J E@3 O G P Q E@2 R@2 J@2 R@2 J@2 R@2 J@3 S T U T V W D W D X@2 E@2 D
  E@3 K Y M Q E@2 R@2 J Z R@2 J AA R@2 AB J@2 AC T U T V W D W D X@2 ~
>`.pickRestart({
  A: "[d1,d2]@3 ~ [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~", // D
  B: "[d1,d2]@4 [f#3,a3]@2 [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [f#3,a3,d4] ~ [d1,d2]@4 [a3,d4] ~, ~@4 d4 ~@17 f#3@2", // D F#m D D5
  C: "~@4 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~", // D
  D: "~@4 [g3,b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~", // G
  E: "~@4 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~", // D
  F: "~@4 [g3,b3,d4] ~@5 [g3,e4]@2 ~@4 [g3,b3,d4,e4]@2 ~@4 [g3,b3,d4] ~, ~@4 e4@2 ~@4 [b3,d4] ~@11 e4@2", // G C Em7 G Bm
  G: "~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,d4] ~, ~@4 d4 ~@5 d4 ~@5 d4 ~@5 f#4@2", // Gmaj7 G
  H: "[b3,d4,g4]@5 ~ [a3,d4,f#4]@6 [g#3,d4,f4]@5 ~ [a3,d4,f#4]@4 ~@2", // G D Ddim D
  I: "[b3,d4,g4]@4 ~@2 [a3,d4,f#4]@5 ~ [g#3,d4,f4]@4 ~@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4]@2", // G D Ddim
  J: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~", // Gmaj7
  K: "~@4 [g3,b3] ~@5 [g3,e4]@2 ~@4 [g3,b3,e4]@2 ~@4 [g3,b3] ~, ~@4 e4@2 ~@4 b3 ~@11 e4@2", // G C Em G
  L: "~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [b3,d4,f#4]@2 ~@4 [b3,d4,a4] ~, ~@4 d4 ~@5 d4 ~@5 a4 ~@5 f#4@2", // Gmaj7 Bm Bm7
  M: "[b3,d4,g4]@5 ~ [a3,d4,f#4]@6 [g#3,d4,f4]@4 f4 ~ [a3,d4,f#4]@4 f#4 ~", // G D Ddim D
  N: "[b3,d4,g4]@4 g4@2 [a3,d4,f#4]@5 ~ [g#3,d4,f4]@4 f4@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4] ~", // G D Ddim
  O: "~@4 [b3,d4,g4] ~@5 [e4,g4]@2 ~@4 [b3,e4,g4]@2 ~@4 [b3,d4,g4] ~, ~@4 e4@2 ~@4 [b3,d4] ~@5 d4 ~@5 e4@2", // G Em G Bm
  P: "[b3,d4,g4]@5 ~ [a3,d4,f#4]@6 [g#3,d4,f4]@4 f4 ~ [a3,d4]@4 f#4 ~, ~@6 f#4 ~", // G D Ddim D5
  Q: "[b3,d4,g4]@4 g4@2 [a3,d4,f#4]@5 ~ [g#3,d4]@4 f4@2 [g#3,d4,f4]@3 ~ [g#3,d4,f4]@2, ~@4 f4 ~@3", // G D G#dim Ddim
  R: "~@4 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@5 [a3,c#4,e4] ~", // A
  S: "~@2 [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [d4,e4,g4] ~ [b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~, ~@12 b3 ~@11", // Em7
  T: "[a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4", // D
  U: "[b4,d5,f#5,b5]@3 ~@3 [g4,b4,d5,f#5]@3 ~@3 [g4,b4,d5,f#5]@3 ~@3 [b4,d5,f#5,b5]@2 ~@4", // Bm Gmaj7 Bm
  V: "[b4,d5,f#5,b5] ~ [b4,d5,f#5,b5] ~ [b4,d5,f#5,b5] ~ [b4,d5,f#5,b5] ~", // Bm
  W: "~@4 [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@5 [g3,c4,e4] ~@5 [g3,c4,e4] ~", X: "[[a3,d4,f#4]@23 ~]/2",
  Y: "~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3,f#4]@2 ~@4 [g3,b3] ~, ~@11 f#4", // Gmaj7 G
  Z: "~@4 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~@5 [g3,b3,d4,f#4] ~ f#3@4 [g3,b3,d4,f#4] ~", // Gmaj7
  AA: "~@4 [g3,b3,f#4] ~@5 [g3,b3,f#4] ~@5 [g3,b3,f#4] ~@5 [g3,b3,d4,f#4] ~, ~@2 d4 ~@2 d4 ~@2 d4 ~@3", // Gmaj7
  AB: "~@4 [g3,b3,f#4] ~@5 [b3,d4,f#4]@2 ~@4 [b3,d4,f#4]@2 ~@4 [g3,b3,f#4] ~, ~@4 d4@2 ~@4 g3 ~@5 g3 ~@5 d4@2", // Gmaj7 Bm Gmaj7
  AC: "~@4 [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@2 ~@2", // Em7
})).s("gm_epiano1").gain(0.33).pan(0.6)

// chords · flute
const flute = note(`<
  ~@9 A B@2 ~@4 C D@2 ~ E F ~@5 G C D@2 ~@2 A H@2 ~@3 I J K@2 ~@19 L@2 M@4 ~@7 G J N@2 ~@19 L@2 M@4 ~
>`.pickRestart({
  A: "~@11 d4", B: "[e4@3 ~ e4@2 e4@4 d4 ~ e4@4 d4@2 b3@3 ~ f#4@8 ~@18]/2",
  C: "[d4,b4]@6 [d4,a4]@6 [d4,g#4]@4 [d4,g#4]@2 [d4,a4]@3 ~ [d4,a4]@2", // G D5 Ddim D5
  D: "[[d4,b4]@4 [d4,b4]@2 [d4,a4]@4 [d4,g#4]@5 ~ [d4,g#4]@2 [b3,f4]@4 [d4,g#4]@6 [d4,a4]@10 ~@10]/2", // G D5 Ddim Bdim Ddim D5
  E: "~@11 [d4,f#4,a4]", F: "[d4,f#4,a4]@4 [d4,f#4,a4]@2 [d4,f#4,a4]@4 [e4,g4,b4]@8 [d4,f#4,a4]@3 ~@3",
  G: "[d4,f#4,b4]@6 [d4,f#4,b4]@4 [d4,f#4,b4]@7 ~@7", H: "[e4@2 e4 e4@2 d4 e4@2 d4 b3@2 f#4@4 ~@9]/2",
  I: "[d4,f#4,b4]@6 [d4,f#4,b4]@4 [d4,f#4,b4]@9 ~@5", J: "[d4,b4]@6 [d4,a4]@5 ~ [d4,g#4]@4 [d4,g#4]@2 [d4,a4]@5 ~",
  K: "[[d4,b4]@6 [d4,a4]@6 [d4,g#4]@4 [d4,g#4]@2 [b3,f4]@4 [d4,g#4]@6 [d4,a4]@13 ~@7]/2", // G D5 Ddim Bdim Ddim D5
  L: "[[d4,a4]@6 [d4,a4]@6 [c4,g4]@6 [c4,g4]@4 [b3,g4]@7 ~@19]/2", // D5 C5 Em
  M: "[[d4,a4]@6 [d4,a4]@6 [c4,g4]@4 [c4,g4]@2 [c4,g4]@4 [b3,g4]@9 ~@5 f#4@4 e4@2 d4@4 [d4,a4]@50]/4", // D5 C5 Em D5
  N: "[[d4,b4]@3 [d4,a4]@3 [d4,g#4]@2 [d4,g#4] [b3,f4]@2 [d4,g#4]@3 [d4,a4]@8 ~@2]/2", // G D5 Ddim Bdim Ddim D5
})).s("gm_flute").gain(0.25).pan(0.4)

// bass · fretless bass · "FRETLESS"
const bass_3 = note(`<
  ~@4 A B A C A D E A F D G@2 H I J K J L G A@2 D M@2 N O P C A Q R C S@2 T M N U A B V W X@2 Y@2 Z AA Y AB AC AD X AE
  AF AG AF AG AH AI AH AI AJ@2 AK AL T C A D T AM N AN AO AP V AQ AR Z AS@2 Z AT AU AQ AR@3 AE AV AW AV AX AH AY AH AY
  AJ@2 ~
>`.pickRestart({
  A: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 a2@2 b2@2", B: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@5 ~",
  C: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@3 ~ b2 ~", D: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@2 d3 ~ a2@2",
  E: "g2@4 ~@2 g2@3 ~@3 g2@3 ~@3 g2@4 b2 ~", F: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 ~@2 b2 ~",
  G: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 b2@4 d3 ~", H: "g2@5 ~ f#2@6 f2@5 ~ f#2@5 ~", I: "g2@5 ~ f#2@6 f2@4 ~@2 f2@5 ~",
  J: "d3@5 ~ a2@3 ~ b2@2 d3@5 ~ a2@3 ~ b2@2", K: "d3@5 ~ a2@3 ~ b2@2 d3@3 ~ d3@2 ~@2 a2@2 ~@2",
  L: "d3@5 ~ a2@4 b2@2 d3@4 ~@2 a2 ~ d3@2 a2@2", M: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@4 d3 ~",
  N: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@3 ~ f2 ~ f#2@3 ~ f#2 ~", O: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@3 ~ f2 ~ f2@4 ~@2",
  P: "d3@10 ~@2 d3@5 ~ d3@2 a2@2 b2 ~", Q: "d3@5 ~ d3@5 ~ d3@4 ~@2 d3@4 a2 ~",
  R: "g2@4 ~@2 g2@3 ~@3 g2@3 ~ b2@2 d3@3 ~ b2@2", S: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 d3@2 ~@2 d3 ~",
  T: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@2 b2 ~ d3 ~", U: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@3 ~ f2 ~ f2@3 ~ f2 ~",
  V: "a2@4 ~@2 a2@4 ~@2 a2@3 ~@3 a2@2 c#3 ~ e3 ~", W: "a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2@3 ~ g#2 ~",
  X: "g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2 ~ g2@3 ~ g2 ~", Y: "a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~",
  Z: "g2@4 ~@2 b2@5 ~ d3@4 ~@2 f#3@4 ~@2", AA: "g3@4 ~@2 g3@3 ~ g3 ~ g3@2 ~@2 g3 ~ g3@3 ~ g3@2",
  AB: "a2@4 a2 ~ a2@3 ~ a2 ~ a2@3 ~ a2 ~ a2@2 ~@2 a2 ~", AC: "g2@3 ~ g2 ~ b2@4 ~@2 d3@3 ~ d3 ~ f#3@4 ~@2",
  AD: "g3@4 ~@2 f#3@5 ~ d3@2 ~@2 d3 ~ d3@2 ~@2 d3 ~", AE: "g2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", AF: "d3@3 f#3", AG: "g3@7 ~",
  AH: "d3@4 ~@2 d3@5 ~ c3@5 ~ c3@4 ~@2", AI: "g2@3 ~ g2 ~ a2@5 ~ b2@6 c3@5 ~", AJ: "d3/2",
  AK: "d3@5 ~ d3@5 ~ d3@5 ~ d3@2 a2 ~@3", AL: "d3@5 ~ d3@4 ~@2 d3@4 ~@2 a2@3 ~ d3 ~",
  AM: "g2@4 ~@2 g2@4 ~@2 g2@4 ~@2 g2@3 ~ g2 ~", AN: "g2@3 ~ g2 ~ f#2@3 ~ f#2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~",
  AO: "d3@5 ~ d3@4 ~@2 d3@5 ~ d3 ~ a2 ~ b2 ~", AP: "d3@5 ~ f#2@4 ~@2 g2@4 ~@2 g#2@4 ~@2",
  AQ: "a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~", AR: "g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~", AS: "a2@4 ~@2 c#3@3 ~@3 e3@4 ~@2 c#3@3 ~ e3 ~",
  AT: "b3@4 ~@2 f#3@4 ~@2 d3@5 ~ b2@3 ~@3", AU: "a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2 ~ c#3 ~ e3 ~", AV: "d3@18 f#2@5 ~",
  AW: "g2@7 ~", AX: "g2@19 ~@5", AY: "g2@5 ~ a2@5 ~ b2@5 ~ c3@5 ~",
})).s("gm_fretless_bass").gain(0.33).pan(0.8)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@5 A@4 ~@4 B ~@4 C@2 ~@10 D@2 ~@10 E F G@2 H@2 G I H@2 G@2 H@3 J K L@2 M N O P@2 Q@2 ~@12 G@2 H@2 G@2 H@2 G@2 H@3 J K
  L@2 M N O P@2 R@2 ~
>`.pickRestart({
  A: "[~@18 [f#4,b4] ~@3 [f#4,a4]@19 ~ [d4,g4]@2 ~@2 [d4,f#4]@18 ~@2 [b3,f4,g#4]@4 [c4,f#4,a4]@23 ~@3]/4", // B5 F#m G5 D Fdim F#dim
  B: "~@10 [c4,d4,f#4,a4]@13 ~", C: "[~@18 f4@2 ~@2 d4@15 ~@11]/2", D: "[~@16 a3 ~ b3@3 ~ c4@17 ~@9]/2",
  E: "~@16 g#4@2 a4@2 ~@2 c5 ~", F: "f4@2 f#4@2 d4@17 ~@3", G: "~@6 c4 c#4@3 e4 ~@7 c#4@4 e4 ~, ~@18 c4 ~@5",
  H: "~@6 b3@3 ~ d4 ~@7 a#3 b3@3 d4 ~, ~@6 a#3 ~@17", I: "~@3 c#4@2 e4 ~@6, ~@6 c4 ~@17",
  J: "~@5 [b3,e4,g4]@2 ~ [b3,e4,g4]@2 ~@2 [b3,e4,g4]@3 ~ [b3,e4,g4]@2 ~@2 [b3,e4,g4]@2 ~@2", // Em
  K: "[a3,d4,f#4]@21 ~ [c#3,g#3]@2", L: "[[d3,a3]@19 ~@3 f4@2 ~ f#4@18 ~@3 [c#3,g#3]@2, ~@22 [a3,d4]@21 ~@5]/2",
  M: "[d3,a3]@7 ~", N: "[a3,d4,f#4]@12 [g3,c4,e4]@11 ~", O: "[g3,b3,d4]@6 [b3,d4,g4]@5 ~",
  P: "[[a3,d4,f#4]@5 ~ [a3,d4,f#4]@6 [g3,c4,e4]@9 ~ [g3,b3,d4]@25 ~]/2", Q: "[~ f#4@44 ~@3, [a3,d4]@15 ~]/2",
  R: "[[a3,d4,f#4]@47 ~]/2", // D
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.7)

// other · guitar harmonics · "GTHARMONIC" · D5
const guitar_harmonics = note("<~@63 [~@22 g3 ~] ~ [~@22 g3 ~] [[a3,d4] ~@23] ~@38>")
  .s("gm_guitar_harmonics").gain(0.33).pan(0.4)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@63 A@4 ~ B@2 C D E@3 ~@3 F ~@26>".pickRestart({
  A: "[~@6 d4@2 b3@2 g3 ~ d4@2 ~@4 d4@2 b3@6 ~@22]/2", B: "[~@7 c4@5 ~@3 g4]/2",
  C: "~@2 f4 d4@2 ~ g4@2 ~@2 g4@5 ~ a4@2 c5@2 f4@2 a4@2", D: "~ f4@2 ~ d4@2 f4@6 d4@5 ~ [d4,f4]@2 ~@4, g4 ~@11",
  E: "[~@4 a4@7 ~ a4@8 ~ [a4,c5]@7 ~@2 g4@4 f4@2 d4@3 ~ c5@26 ~@6]/3", F: "~@6 f4@2 d4 ~@3 d4@8 ~@4",
})).s("gm_overdriven_guitar").gain(0.38)

// other · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@63 [~@14 b3 ~ g3 ~@7] ~ [~@14 b3 ~ g3 ~@7] ~@12 [~@5 c4 ~@6] ~@26>")
  .s("gm_overdriven_guitar").gain(0.27)

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

// drums · snare
const snare = s("sd").struct("<~@4 A@53 B C@3 D A@3 E ~ F A@19 G A@4 H I C@3 J A@4 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x!5", C: "~@3 x!2 ~", D: "~@6 x ~ x!2 ~@2", E: "~ x ~@2", F: "~@10 x!2", G: "~@3 x ~@5 x ~ x",
  H: "~@6 x ~@11 x ~@3 x!2", I: "x!6", J: "~@2 x!2 ~@8",
})).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@57 B ~@3 C ~ D ~@19 E ~@9 A ~@3 C ~@3>".pickRestart({
  A: "~@9 x!3", B: "~@10 x!2", C: "~@3 x", D: "~@3 x!2 ~", E: "~@9 x ~ x",
})).gain(0.49)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 [~@9 x!3] ~@63 [x!3 ~@3] ~@29 [~@4 x!5 ~@3] ~@7>").gain(0.49)

// drums · open hat
const open_hat = s("oh").struct("<~@57 [~ x!5] ~@3 [~@7 x ~@4] ~@43>").gain(0.55)
// … 12 more lines

More by McCartney