Strudelify

Bip Bop

McCartney

KeyE minorTempo172 bpm
0:00/0:00
// Bip Bop — McCartney
// 172 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 11 "MUTED GTR" electric guitar muted (copy of ch 1 "MUTED GTR" electric guitar muted, 0.5 beats late); ch 4 "MELODY" muted trumpet (copy of ch 8 "MT TRUMPET" muted trumpet, 0.583 beats early); ch 5 "NYLON GTR" acoustic guitar nylon (copy of ch 9 "NYLON GTR" acoustic guitar nylon, 0.5 beats early)
// note: Full arrangement: all 177 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(172/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@8 A@2 B C D@4 E@2 F G H D@2 I J K B L M N D O@4 H P@2 Q R S T D@4 U V F W P@2 H X J Y R E Z AA P O H O D O D@2 A@3 C
  P D H D AB E AC W D@3 AD J AE S AF M AG D@7 O A@2 Q C P D@3 AB@2 F W D@2 H AH K J R AI AJ AK D H D@2 P D@3 A@3 C P H O
  D E@2 F W D P H AD K J Q E Z AK D@8 A@3 C D P D P V@2 F W H@3 AL@4
>`.pickRestart({
  A: "a2@3 ~@5 a2@3 ~@5", B: "a2@3 ~@5 a2@4 ~@4", C: "a2@3 ~ g2@3 ~ f#2@3 ~ f2@3 ~", D: "e2@3 ~@5 e2@3 ~@5",
  E: "b1 ~ b1 ~", F: "a1@4 ~@4 a1@3 ~@5", G: "a1@3 ~ g2@4 f#2@4 f2@3 ~", H: "e2@3 ~@5 e2@4 ~@4",
  I: "e2@3 ~ e2@4 f2@4 f#2@3 ~", J: "g2@3 ~@5 g2@3 ~@5", K: "g2@3 ~@5 g2@4 ~@4", L: "b1@5 ~@3 b1@4 ~@4", M: "c2 ~ c2 ~",
  N: "d2@5 ~@3 d2@4 ~@4", O: "e2 ~ e2 ~", P: "e2@4 ~@4 e2@3 ~@5", Q: "a2@4 ~@4 a2@3 ~@5", R: "a2 ~ a2 ~",
  S: "a2@3 ~@5 a2@5 ~@3", T: "a2@4 g2@3 ~ f#2@4 f2@3 ~", U: "b1@3 ~@5 b1@3 ~@5", V: "b1@3 ~@5 b1@4 ~@4",
  W: "a1@3 ~ g2@3 ~ f#2@3 ~ f2@3 ~", X: "e2@2 ~@2 e2@3 ~ f2@3 ~ f#2@3 ~", Y: "g2@4 ~@4 g2@3 ~@5",
  Z: "c2@4 ~@4 c2@3 ~@5", AA: "d2@3 ~@5 d2@4 ~@4", AB: "b1@4 ~@4 b1@3 ~@5", AC: "a1 ~ a1 ~",
  AD: "e2@3 ~ e2@3 ~ f2@3 ~ f#2@3 ~", AE: "g2 ~ g2 ~", AF: "b1@5 ~@3 b1@6 ~@2", AG: "d2@4 ~@4 d2@5 ~@3",
  AH: "e2@3 ~ e2@4 f2@4 f#2@4", AI: "b1@4 ~@4 b1@5 ~@3", AJ: "c2@5 ~@3 c2@4 ~@4", AK: "d2 ~ d2 ~",
  AL: "[e2@4 g2@2 g#2 ~ e2@56]/4",
})).s("gm_acoustic_bass").gain(0.38)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C B D E D F G H I J K L M N O P Q@2 R S T U V@2 W X Y Z AA S AB AC AB S T AD AE AF AG@2 AH AI AJ AK O@2 AL AM AN
  AO N AP AQ@2 AR X AS AT AB S AU AV AB@2 AW AX AY AZ Q@2 BA AI AU BB BC@2 BD@2 BE BF N BG BH@2 W BI Y BJ AB S BK BL AU
  BM AJ AI AY@2 BN BO AH BF AJ BP BQ@2 BR@2 BS BT BU BV BW@2 W BI Y BJ T AO AB BX AB BX AB AJ AY BY AY BZ CA BX AU CB
  CC@2 CD@2 CE CF AU AP CG@2 AR X AS CH AB CI AB CJ AW CK AB CL CM CN CO AM CP CL AB CQ O CR CS@2 CT AB AW CU@4
>`.pickRestart({
  A: "e2 ~@3 [e3,b3] ~@3 e2 ~@3 [e3,g#3,b3] ~@3", B: "e2 ~@3 [e3,b3] ~@3 e2 ~@2 e3 [g#3,b3,c#4]@3 e3",
  C: "e2 ~@3 [e3,b3] ~@3 e2 ~@3 [e3,b3] ~@3", D: "e2 ~@3 [e3,g#3,b3,c#4] ~@3 e2 ~@3 [e3,g#3,b3,c#4] ~@3",
  E: "e2 ~@3 [e3,g#3,b3,c#4] ~@3 e2 ~@2 e3 [b3,c#4]@3 e3", // C#m7 Bsus2
  F: "e2 ~@3 [e3,g#3,b3,c#4] ~@3 e2 ~@3 [g#3,b3,c#4]@3 e3, ~@11 e3@2 ~@3", // C#m7 C#7
  G: "a2 ~@3 [e3,a3,b3] ~@3 a2 ~@3 [e3,a3,b3,c#4] ~@3", H: "a2 ~@3 [e3,a3,b3,c#4] ~@3 a2 ~@2 e3 [a3,b3,c#4]@3 e3",
  I: "a2 ~@3 [e3,a3,b3,c#4] ~@3 a2 ~@3 [e3,a3,b3,c#4] ~@3", J: "a2 ~@3 g3@3 ~ f#3@3 ~ f3@3 ~",
  K: "e3@3 ~ [g#3,b3,c#4] ~@7 [e3,g#3,b3,c#4] ~@3", L: "~@4 [e3,g#3,b3,c#4] ~@6 e3 [g#3,b3,c#4]@2 ~ e3",
  M: "~@4 [e3,g#3,b3] ~@7 [e3,b3,c#4] ~@3", N: "~@4 [e3,g#3,b3] ~@7 [e3,g#3,b3,c#4] ~@3",
  O: "~@4 [f#3,a3,b3] ~@7 [f#3,a3,b3] ~@3", P: "~@4 [a3,b3]@7 f#3 [f#3,b3]@3 ~, ~ f#3 ~@2",
  Q: "[~@4 [e3,a3,b3] ~@7 [e3,b3]@7 ~ g3@4 f#3@4 f3@4]/2", R: "e3@3 ~ [e3,b3] ~@7 [e3,b3] ~@3",
  S: "~@4 [e3,b3] ~@6 e3 [g#3,b3,c#4]@2 ~ e3", T: "~@4 [e3,b3] ~@7 [e3,g#3,b3,c#4] ~@3", U: "~@4 e3@3 ~ f3@4 f#3@3 ~",
  V: "[g3@3 ~ [g3,b3,d4] ~@7 [b3,d4]@6 ~@2 [g3,b3,d4] ~@6 g3 [g3,b3,d4]@3 ~, ~@3 g3 ~@4]/2", // G Bm G
  W: "~@4 [a3,c#4,e4] ~@7 [a3,c#4,e4]@4", X: "~@4 [b3,d#4,f#4] ~@7 [b3,d#4,f#4]@4",
  Y: "~@4 [c4,e4,g4] ~@7 [c4,e4,g4]@4", Z: "~@4 [d4,f#4,a4]@2 ~@6 [d4,f#4,a4]@3 ~",
  AA: "~@4 [e3,b3] ~@7 [e3,b3,c#4] ~@3", AB: "~@4 [e3,b3] ~@7 [e3,b3] ~@3",
  AC: "~@4 [e3,b3] ~@6 e3 [g#3,b3,c#4] ~@2 e3", AD: "~@4 [e3,b3,c#4] ~@6 e3 [g#3,b3,c#4]@2 ~ e3",
  AE: "~@4 [e3,a3,b3] ~@7 [e3,a3,b3,c#4] ~@3", AF: "~@4 [e3,a3,b3,c#4] ~@6 e3 [a3,c#4]@3 e3",
  AG: "[~@4 [e3,a3,b3]@15 ~ g3@4 f#3@3 ~ f3@4]/2", AH: "e3@2 ~@2 [e3,b3] ~@7 [e3,g#3,c#4] ~@3",
  AI: "~@4 [e3,g#3,b3] ~@6 e3 [g#3,c#4]@3 e3", AJ: "~@4 [e3,g#3,b3] ~@7 [e3,g#3,b3] ~@3",
  AK: "~@4 [e3,g#3,b3] ~@6 e3 [g#3,b3,c#4]@3 e3", AL: "~@4 [e3,a3,b3]@7 ~ [e3,a3,b3] ~@3",
  AM: "~@4 g3@3 ~ f#3@4 f3@3 ~", AN: "e3@3 ~ [g#3,b3] ~@7 [e3,g#3,c#4] ~@3", AO: "~@4 [e3,b3] ~@6 e3 [g#3,c#4]@3 e3",
  AP: "~@4 e3@3 ~ f3@3 ~ f#3@3 ~", AQ: "[g3@3 ~ [g3,b3,d4] ~@7 [g3,b3,d4]@7 ~ [g3,b3,d4] ~@6 g3 [b3,d4]@3 g3]/2",
  AR: "~@4 [a3,c#4,e4] ~@7 [a3,c#4,e4]@3 ~", AS: "~@4 [c4,e4,g4] ~@7 [c4,e4,g4]@3 ~",
  AT: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4]@2", AU: "~@4 [e3,b3] ~@7 [e3,g#3,b3] ~@3",
  AV: "~@4 [e3,g#3,c#4] ~@7 [g#3,c#4]@2 ~ e3", AW: "~@4 [e3,g#3,b3] ~@7 [e3,b3] ~@3",
  AX: "~@4 [e3,g#3,b3] ~@6 e3 [g#3,c#4]@2 ~ e3", AY: "~@4 [e3,a3,b3] ~@7 [e3,a3,b3] ~@3",
  AZ: "~@4 [e3,a3,b3] ~@7 [a3,c#4]@3 e3", BA: "e3@3 ~ [e3,b3] ~@6 e3 [g#3,b3,c#4] ~@2 e3",
  BB: "~@4 [e3,g#3,b3,c#4] ~@7 [e3,g#3,c#4] ~@3", // C#m7 C#m
  BC: "[~@4 [f#3,a3,b3] ~@7 [f#3,a3,b3]@7 ~ [f#3,a3,b3] ~@7 [f#3,a3,b3] ~@3]/2", // B7
  BD: "[~@4 [e3,a3,b3] ~@7 [e3,a3,b3,c#4]@6 ~@2 g3@3 ~ f#3@3 ~ f3@3 ~]/2", // Esus4 A
  BE: "e3@3 ~ [e3,g#3,b3] ~@7 [e3,g#3,c#4] ~@3", BF: "~@4 [e3,g#3,b3,c#4] ~@6 e3 [g#3,c#4]@3 e3",
  BG: "[g#3,b3,c#4]@4 e3@4 f3@3 ~ f#3@3 ~, e3 ~@15", // C#7
  BH: "[g3@2 ~@2 [g3,b3,d4] ~@7 [b3,d4]@7 g3 [b3,d4]@3 g3 ~@4 [b3,d4]@3 g3, ~@12 g3@4 ~@4 g3 ~@6 g3@2 ~@3]/2", // G Bm
  BI: "~@4 [b3,d#4,f#4] ~@7 [b3,d#4,f#4]@3 ~", BJ: "~@4 [d4,f#4,a4] ~@7 [d4,f#4,a4]@3 ~",
  BK: "~@4 [e3,g#3,c#4] ~@7 [e3,g#3,c#4] ~@3", BL: "~@4 [e3,g#3,c#4] ~@6 e3 [g#3,c#4]@2 ~ e3",
  BM: "~@4 [e3,g#3,b3] ~@7 [g#3,c#4]@2 ~ e3", BN: "~@4 [b3,c#4]@6 ~ e3 [a3,b3,c#4]@2 ~ e3, ~ [e3,a3] ~@2",
  BO: "~@4 g3@4 f#3@4 f3@3 ~", BP: "~@4 [e3,g#3,c#4] ~@7 [e3,g#3,b3] ~@3",
  BQ: "[~@4 [f#3,a3,b3] ~@7 [f#3,a3,b3]@6 ~@2 [f#3,a3,b3] ~@6 f#3 [f#3,a3,b3]@4]/2", // B7
  BR: "[~@4 [e3,a3,b3] ~@7 [e3,a3,b3,c#4]@6 ~@2 g3@4 f#3@3 ~ f3@4]/2", BS: "e3@3 ~ [e3,g#3,b3] ~@6 e3 [b3,c#4]@2 ~ e3",
  BT: "~@4 [e3,g#3,b3] ~@7 [e3,g#3,b3]@2 ~@2", BU: "~@4 [e3,g#3,b3,c#4] ~@6 e3 [g#3,b3,c#4]@3 e3",
  BV: "~@4 e3@3 ~ f3@2 ~@2 f#3@3 ~",
  BW: "[g3@2 ~@2 [b3,d4]@6 ~@2 [g3,b3,d4]@6 ~ g3 [g3,b3,d4]@2 ~ g3 ~@3 g3 [b3,d4]@2 ~@2, ~ g3 ~@6]/2", // Bm G Bm
  BX: "~@4 [e3,b3] ~@6 e3 [g#3,c#4]@2 ~ e3", BY: "~@4 [e3,a3,c#4] ~@6 e3 [a3,c#4]@2 ~ e3", BZ: "~@4 g3@3 ~ f#3@4 f3@4",
  CA: "e3@3 ~ [e3,b3] ~@7 [e3,g#3,b3,c#4] ~@3", CB: "~@4 [e3,g#3,b3] ~@7 [e3,g#3,c#4]@2 ~@2",
  CC: "[~@4 [f#3,a3,b3] ~@7 [f#3,a3,b3]@6 ~@2 [f#3,a3,b3] ~@6 f#3 [f#3,a3,b3]@3 ~]/2", // B7
  CD: "[~@4 [e3,a3,b3] ~@7 [a3,b3,c#4]@6 ~@2 g3@4 f#3@3 ~ f3@4, ~@3 e3 ~@4]/2", // Esus4 A
  CE: "e3@3 ~ [e3,b3] ~@7 [e3,g#3,c#4] ~@3", CF: "~@4 [e3,b3] ~@6 e3 [g#3,c#4]@2 ~@2",
  CG: "[g3@2 ~@2 [g3,b3,d4] ~@7 [g3,b3,d4]@7 ~ [b3,d4]@7 g3 [b3,d4]@3 g3, ~@20 g3@4 ~@4 g3 ~@3]/2", // G Bm
  CH: "~@4 [d4,f#4,a4] ~@7 [d4,f#4,a4]@4", CI: "~@4 [e3,b3] ~@7 [g#3,c#4]@2 ~ e3", CJ: "~@4 [e3,b3] ~@6 e3 b3@2 ~ e3",
  CK: "~@4 [e3,b3] ~@7 [b3,c#4]@2 ~ e3", CL: "~@4 [e3,b3] ~@6 e3 [b3,c#4]@2 ~ e3", CM: "~@4 [e3,a3,b3] ~@7 [a3,b3] ~@3",
  CN: "~@4 [e3,a3,b3] ~@7 [a3,c#4]@2 ~ e3", CO: "~@4 [e3,a3,b3,c#4] ~@7 [e3,a3,b3,c#4] ~@3",
  CP: "e3 ~@3 [e3,b3] ~@7 [e3,b3] ~@3", CQ: "~@4 e3 ~@7 [e3,b3,c#4] ~@3", CR: "~@4 [f#3,a3,b3]@6 ~@2 [f#3,a3,b3] ~@3",
  CS: "[~@4 [e3,a3,b3] ~@7 [e3,a3,b3]@6 ~@2 g3@4 f#3@3 ~ f3@3 ~]/2", CT: "e3 ~@3 [e3,b3,c#4] ~@7 [e3,b3] ~@3",
  CU: "[~ [e4,g#4]@7, ~@7 [g#3,b3]@57]/4", // E G#m
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@23 A B@4 C D ~@23 A B@4 C D ~@23 A B@4 C D ~@23 A B@4 C D ~@23 A B@4 C D ~@27
>`.pickRestart({
  A: "~ e3 [f3,c4] [f#3,c#4]", // F5 F#5
  B: "[b3@11 ~ [b3,d4]@15 ~ [g3,b3,d4]@7 ~ [g3,b3,d4]@3 ~ [a3,c#4,e4]@11 ~ [a3,c#4,e4]@3 ~ [b3,d#4,f#4]@3 ~@5]/4", // Bm G A B
  C: "[c4,e4,g4]", D: "~@4 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~@5",
})).s("gm_overdriven_guitar").gain(0.27).pan(0.2)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@23 A B@2 ~@27 A B@2 ~@27 A B@2 ~@27 A B@2 ~@27 A B@2 ~@31>".pickRestart({
  A: "~ b3 ~@2", B: "[g3@27 ~@5, d4@11 ~@21]/2",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.2)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@23 A B@2 C D E F ~@23 A B@2 C D E F ~@23 A B@2 C D E F G H I H J K J H L M L N O H P Q R S T N U V P W X@2 Y D Z F
  AA H J V J V J V L AB L N U V P AC S@2 T N U H P A B@2 C D E F AA H P AD AE H P AF L AG L N AH H P AI S@2 T N U H AJ
  ~@4
>`.pickRestart({
  A: "~@4 e2@4 f2@3 ~ f#2@4", B: "[[g2,d3]@31 ~]/2", C: "[a2,e3]", D: "[b2,f#3]@15 ~", E: "[c3,g3]", F: "[d3,a3]@3 ~",
  G: "~@4 e2 ~@7 c#3@2 ~ b2", H: "e2@2 ~@2 b2 ~@6 g2 g#2@2 ~ b2", I: "e2@3 ~ b2 ~@7 c#3 ~@2 b2",
  J: "e2@3 ~ b2 ~@7 c#3@2 ~ b2", K: "e2@3 ~ b2 ~@7 g#2@2 ~ b2, ~@11 g2@2 ~@3", L: "a2@3 ~ g3 ~@7 g3 ~@3",
  M: "~@4 g3 ~@6 c3 c#3@3 e3", N: "~@4 g3@3 ~ f#3@3 ~ f3@3 ~", O: "e3@3 ~ b2@2 ~@6 c#3@2 ~ b2",
  P: "e2@3 ~ b2 ~@7 b2 ~@3", Q: "~@4 c#3@3 b2 e2@2 ~ g2 g#2@2 ~ b2", R: "b2@2 ~@2 a3 ~@7 a3 ~@3",
  S: "~@4 a3 ~@7 a3 ~@3", T: "~@4 g3 ~@7 g3 ~@3", U: "e3@3 ~ b2 ~@7 c#3@2 ~ b2", V: "e2@3 ~ b2 ~@6 g2 g#2@2 ~ b2",
  W: "~@4 e2@3 ~ f2@3 ~ f#2@3 ~", X: "[g2,d3]/2", Y: "[a2,e3]@15 ~", Z: "[c3,g3]@15 ~", AA: "~@4 b2 ~@7 c#3@2 ~ b2",
  AB: "~@4 g3 ~@6 c3 c#3@2 ~ e3", AC: "~@4 c#3@2 ~ b2 e2 ~@2 g2 g#2@2 ~ b2", AD: "~@4 b2 ~@7 c#3@3 b2",
  AE: "e2@2 ~@2 b2 ~@7 c#3@3 b2", AF: "~@4 c#3@2 ~ b2 e2@2 ~ g2 g#2@2 ~ b2", AG: "~@4 g3 ~@5 c3 ~ c#3@3 e3",
  AH: "e3@3 ~ b2 ~@7 c#3 ~@2 b2", AI: "~@4 b2 ~@6 g2 g#2@2 ~ b2", AJ: "e2@2 ~@2 b2 ~@7 b2 ~@3",
})).s("gm_distortion_guitar").gain(0.27).pan(0.3)

// other · muted trumpet · "MT TRUMPET"
const muted_trumpet = note(`<
  ~@30 A B C D E B F G H I J K L B F M N O P D Q R F S ~@6 T R U G E B U D H I V D T B F G W X Y@2 Q B F G ~@6 E Z AA D
  Q B F G H AB J AC AD B F D N AE AF D E B AG D ~@6 E B C AC E AH F G H AI J D Q B C D N X P D Q B F D ~@6 T Z F D AJ AH
  C D H AB AK AL AM AN AO AC AP AQ AR@2 AJ Z F D ~@3
>`.pickRestart({
  A: "~@2 f#4@4 ~@4 e4@3 ~@3", B: "~@2 f#4@2 ~ g4@2 ~@2 e4@4 ~@3", C: "~@2 f#4@2 ~@2 e4@2 ~@2 g4@3 f#4@2 ~",
  D: "~ e4@6 ~@9", E: "~@2 f#4@5 ~@3 e4@4 ~@2", F: "~@2 f#4@2 ~@2 e4@2 ~@2 g4@2 ~ f#4@2 ~", G: "~ e4@7 ~@8",
  H: "~@2 c#4@2 ~@2 e4@2 ~@2 f#4@3 ~ e4@2", I: "~@2 g4@4 ~@3 e4@5 ~@2", J: "~@2 c#4@2 ~@2 e4@2 ~ g4@5 f#4@2",
  K: "e4@7 ~@9", L: "~@2 f#4@4 ~@4 e4@5 ~", M: "~ e4@9 ~@6", N: "~ f#4 ~ f#4 ~ f#4 ~ e4", O: "~@2 f#4@5 ~@2 f#4@5 ~@2",
  P: "~@2 c#4@3 ~ e4@2 ~ g4@5 f#4@2", Q: "~@2 f#4@5 ~@3 e4@3 ~@3", R: "~@2 f#4@2 ~ g4@3 ~ e4@4 ~@3", S: "~ e4@8 ~@7",
  T: "~@2 f#4@5 ~@3 e4@5 ~", U: "~@2 f#4@3 ~ e4@2 ~@2 g4@3 f#4@2 ~", V: "~@2 c#4@2 ~@2 e4@3 g4@5 f#4@2",
  W: "~@2 f#4@2 ~@2 f#4@2 ~@2 f#4@3 ~ e4@2", X: "~@2 f#4@5 ~@2 f#4@3 ~@2 b3@2",
  Y: "[~@2 c#4@3 ~ e4@2 ~@2 g4@2 f#4@2 e4@9 ~@9]/2", Z: "~@2 f#4@2 ~ g4@2 ~@2 e4@3 ~@4",
  AA: "~@2 f#4@3 ~ e4@2 ~@2 g4@2 ~ f#4@2 ~", AB: "~@2 g4@5 ~@2 e4@4 ~@3", AC: "~ e4@5 ~@10", AD: "~@2 f#4@7 ~ e4@3 ~@3",
  AE: "~@2 f#4@6 ~ f#4@5 ~@2", AF: "~@2 c#4@3 ~ e4 ~@2 g4@5 f#4@2", AG: "~@2 f#4@2 ~@2 e4@2 ~@2 g4@3 f#4@3",
  AH: "~@2 f#4@2 ~ g4@3 ~ e4@3 ~@4", AI: "~@2 g4@5 ~@2 e4@5 ~@2", AJ: "~ f#4@2 ~@2 e4@2 ~",
  AK: "~@2 c#4@2 ~@2 e4@2 ~@2 g4@3 ~ f#4@2", AL: "~ g4@4 ~@11", AM: "~@2 f#4@2 ~@2 g4@2 ~@2 e4@3 ~@3",
  AN: "~@2 f#4 ~@2 g4@2 ~@3 g4@3 ~@3", AO: "~@2 g4@2 ~@2 f#4@2 ~@2 g4@2 ~ f#4@2 ~",
  AP: "~@2 f#4@3 ~ f#4@2 ~@2 f#4@2 ~@2 e4@2", AQ: "~@2 f#4@6 ~ f#4@3 ~@4",
  AR: "[~@2 f#4@3 ~ g4@2 ~ g4@4 e4 e4@6 ~@12]/2",
})).s("gm_muted_trumpet").gain(0.27).pan(0.4)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@41 A ~@7 A ~@21 B ~@24 C ~@4 A ~@7 A ~@8 D E ~@19 A ~@3 F ~@4 D G ~@11 H ~@7 H ~@7
>`.pickRestart({
  A: "~@3 g3 ~ f#3 ~ f3", B: "~@6 g3@3 ~ f#3@2 ~@2 f3@2", C: "~@2 b4 ~@7 b4 ~ a4@2 ~@2", D: "~@2 e5@3 ~ c5@7 ~ e4@2",
  E: "~@2 f#4@3 ~ a4@4 d5@3 ~@3", F: "~@4 e5 ~ e6 e5 e6 e5 e6 e5 ~ e6 e5 ~", G: "~@2 f#4@3 ~ a4@3 ~ d5@3 ~@3",
  H: "~@6 g3@2 ~@2 f#3@3 ~ f3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.27).pan(0.6)

// other · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note("<~@94 [~@10 g#4@3 ~@3] [~@9 g#4@4 ~@3] [~@6 g#4 ~@9] [g#4 ~@3] ~@79>")
  .s("gm_acoustic_guitar_nylon").gain(0.16).pan(0.6)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@29 A ~@23 B ~@17 B ~@7 C ~@9 B ~@7 D ~@7 B ~@7 B ~@5 B ~@19 E ~@29 E ~@3 F ~@3
>`.pickRestart({
  A: "~@9 x ~ x!2 ~@3", B: "~@3 x", C: "~ x ~ x!2 ~@11", D: "~@11 x!2 ~@3", E: "~ x ~@2", F: "~@7 x ~@8",
})).gain(0.49)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 A ~@23 B ~@17 C ~@7 D ~@17 E ~@7 F ~@7 F ~@5 C ~@19 G ~@29 H ~@7>".pickRestart({
// … 25 more lines

More by McCartney