Strudelify

My Love

McCartney

KeyF majorTempo62 bpm
0:00/0:00
// My Love — McCartney
// 62 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 4) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 62 bars on a 48-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): JAZZ GTR.
setcpm(62/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 · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@2 A@2 B@2 A C D E F@2 G A@2 H I J K D E F@2 G L M N O P Q R@2 S@2 T U V W X E Y Z G A@2 H I J K D E F@2 G L M N ~ AA
  AB AC@2
>`.pickRestart({
  A: "[a3,bb3,d4] f3 [a3,bb3,d4] f3 [a3,bb3,d4] f3 [a3,bb3,d4] f3", // Bbmaj7
  B: "[[a3,c4,e4]@2 g3@2 [a3,c4,e4]@2 g3@2 [a3,c4,e4]@2 g3@2 a3 ab3 g3 ~ [a3,c4,e4]@2 gb3@2 [a3,c4,e4]@2 gb3@2 [bb3,d4]@2 g3@2 [a3,c4,d4]@2 gb3@2, ~@36 [c4,e4]@7 ~@2 gb3@6 ~@45]/2", // Am Bb D7 C
  C: "[g3,a3,c4]@6 e3@6 [a3,c4]@6 e3@5 ~ [a3,bb3,d4]@6 f3@6 [bb3,d4]@6 f3@6, ~@12 g3@10 ~@14 a3@11 ~", // Am7 Am Bbmaj7 Bb
  D: "~@2 a3@2 [b3,d4,f4]@2 a3@2 [b3,d4,f4]@2 a3@2 [b3,d4,f4]@2 a3 ~, [b3,d4,f4]@5 ~@19", E: "[g3,a3,c4]@7 ~, f4",
  F: "[[f3,bb3,c4]@33 ~@3 c5@11 ~ [c4,f4]@45 ~@3, ~@33 f4@9 ~@5 [bb3,d4]@43 ~@6, ~@17 bb4@4 ~@27]/2", // Fsus4 F5 Bb
  G: "[g3,a3,c4]@32 ~@4 [a3,c4]@11 ~, f4@3 ~", H: "[a3,c4,e4] g3 [a3,c4,e4] g3 [a3,c4,e4] g3 [a3,c4,e4] g3",
  I: "[a3,c4,e4] gb3 [a3,c4,e4] gb3 [bb3,d4] g3 [a3,c4,d4] gb3", // Am Bb D7
  J: "[f3,a3,bb3,d4]@11 ~ [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@2 ~@7 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@3 [a3,bb3,d4,f4]@2 ~", // Bbmaj7
  K: "[a3,c4]@6 e3@6 [a3,c4]@6 e3@5 ~ [a3,bb3,d4]@6 f3@6 [bb3,d4]@6 f3@6, ~@12 g3@10 ~@14 a3@11 ~", // Am Bbmaj7 Bb
  L: "[f3,bb3,d4]@23 ~@14 g3@11, ~ [e3,bb3], ~@4 c4@3 ~", M: "[f3,a3]@19 ~@5 [f3,db4]@18 ~@6, c4 a3",
  N: "[f3,d4] [e3,g3,bb3], bb3@18 ~@6 c4@17 ~@7", O: "[f3,a3]@19 ~@5 a3@8 ~@4 a3@12, c4@4 [f3,db4]@3 ~",
  P: "[f3,d4]@2 ~ e3, bb3@3 ~ [g3,bb3]@4, ~@4 c4@3 ~", Q: "[f3,a3]@18 ~@6 [f3,db4]@19 ~@5, c4 a3",
  R: "[[bb3,d4]@18 ~@6 [bb3,d4]@12 a3@9 ~@3 [f3,a3]@24 bb3@6 a3@6 g3@6 f3@5 ~, f3@24 e3@25 ~@47, ~@36 c4@35 ~ a3 ~@23]/2", // Bb F
  S: "[[a3,bb3,d4]@42 ~@6 [a3,bb3,d4]@43 ~@5, f3@12 ~@2 f3@15 ~@3]/2", // Bbmaj7
  T: "[e3,g3,a3,c4]@31 ~@5 [e3,g3]@12, ~@36 [a3,c4]@7 ~@5", U: "[gb3,c4,d4]@33 ~@3 [gb3,a3,c4,d4]@8 ~@4",
  V: "[f3,a3,bb3,d4]@24 ~@6 [d3,f3,g3,bb3]@5 ~ d3 ~@2 [d3,f3,g3,bb3] ~@2 [d3,f3,bb3]@5 ~, ~@14 g3 ~", // Bbmaj7 Gm7 Bb
  W: "[e3,g3,a3,c4]@12 ~@3 [e3,g3,a3,c4] ~@2 [e3,g3,c4]@6 [f3,d4]@2 ~@4 [f3,a3,bb3,d4]@5 ~ [a3,bb3,d4]@6 ~@3 a3 ~@2, ~@18 a3@3 ~@3 [a3,bb3] ~@11 f3@5 ~ f3@5 ~", // Am7 C Dm Bbmaj7
  X: "[a3,b3,d4,f4]@8 ~ [a4,b4,d5,f5]@14 ~", Y: "[f3,bb3,c4]@17 ~ c5@6, ~@34 f4@9 ~@5, ~@35 bb4@8 ~@5",
  Z: "[bb3,c4,d4,f4]@15 ~", // Bb
  AA: "[f3,g3,a3,c4]@10 ~@2 [f3,c4]@11 ~ [a3,db4,f4]@11 ~ [a3,db4,f4]@12, ~@12 g3@35 ~, ~@12 a3@7 ~@29", // F F5 Aaug
  AB: "[bb3,d4,g4]@10 ~@2 [bb3,d4,g4]@8 ~@4 [e4,a4]@23 ~, ~@24 [bb3,d4]@19 ~@5", AC: "[g3,a3,c4,f4]/2",
})).s("gm_epiano1").gain(0.33)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@2 A B C D E F G H I J@2 K L M N O P Q R S@2 T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM K L M N O P Q R S@2
  T U AN@2 ~ AO AP AQ AR
>`.pickRestart({
  A: "bb1@44 ~ f1@3", B: "bb1@3 bb2", C: "a2@21 e2@3 a2@17 ~@4 a2@3", D: "d2@12 c2@11 bb1@12 ~ a1@12",
  E: "g1@18 ~@4 g1 ~ g1@24", F: "a1@24 bb1@13 ~@5 bb1@2 ~ bb1@3",
  G: "b1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@5 ~@2 b1@2 b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@3",
  H: "f1@12 ~@6 f1@20 ~@4 f1@2 ~ f1@3", I: "g1@6 g2@7 f2 d2 c2",
  J: "[bb1@12 bb2@13 ~@5 bb2@11 c2@6 f1@17 ~@5 f1@2 ~ f1@14 ~@4 f1@3 g1@3]/2", K: "bb1@13 ~ bb2@2", L: "bb1@6 ~ bb1",
  M: "a1@17 ~@4 a1@3 a1@2 ~@4 a1@15 c2@2 ~", N: "d2 c2 bb1 a1",
  O: "g1@11 ~ g1@5 ~ g1 ~@2 g1@3 g1@2 ~ g1@3 g1@2 ~ g1@3 g1@4 ~@2 g1@3 ab1@2 ~",
  P: "a1@6 a1@4 ~@2 a1@5 ~ a1@2 ~ a1@3 bb1@6 bb1@4 ~@2 bb1@4 ~@2 bb1@5 ~",
  Q: "b1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@2 ~ b1@2 b1@2 ~@2 b1@2 b1@3 ~ b1@3 b1@2 ~ b1@6",
  R: "f1@16 ~ f1@30 ~",
  S: "[g1@12 c2@3 d2@3 g2@18 f2 ~@5 d2 ~@4 bb1@10 ~@3 bb1@10 ~@2 bb1 ~@5 bb1@9 ~@2 bb1@3 c2@3 ~]/2",
  T: "f1@12 f2@5 ~ f2 ~@2 f2@3 f2@11 ~ g2@6 a2@6", U: "g2@12 f2@12 e2@12 c2@2 ~@4 e2@3 ~@3",
  V: "f2@6 c2@2 ~ c2@3 a1@2 ~ a1@3 g1@3 a1@3",
  W: "bb1@6 bb1 ~@2 bb1@2 ~ bb1@3 ~@3 bb1@5 ~ c2@6 ~@3 c2@2 ~ c2@3 ~@3 c2@6",
  X: "f1@5 ~ f1@5 ~ g1@6 ab1@6 a1@4 ~@2 a1@4 ~@2 g1@6 a1@3 f1@2 ~",
  Y: "g1@5 ~ g2@2 ~ g2@2 ~ f2@3 ~@3 f2@3 g2@2 ~ e2@12 c2@6 e2@6", Z: "f2@2 c2@2 a1@2 g1 a1",
  AA: "bb1@15 ~@3 bb1@6 c2@19 ~@5", AB: "f1@12 ~ f1 g1 a1",
  AC: "bb1@10 ~@2 bb1@8 ~ bb1@3 bb1@8 ~ bb1@3 bb1@3 f1@3 g1@3 a1@3",
  AD: "bb1@4 ~@2 bb1@4 ~@2 bb1@5 ~ bb1@6 bb1@5 ~ bb1@2 ~ bb1@3 bb1@2 ~ bb1@9",
  AE: "a1@4 ~@2 a1@4 ~@2 g1@6 a1@2 ~ a1@2 ~ g1@5 ~ a1@3 g1@3 a1@3 ~@3 a1@3 c2@3",
  AF: "d2@2 ~@4 d2@3 gb2@3 c2@4 ~@2 c2@3 d2@3 b1@4 ~@2 b1@6 a1@4 ~@2 a1@6",
  AG: "g1@4 ~@2 g1@4 ~@2 a1@6 g1@4 ~@2 g1@3 ~@3 g1@2 ~ g1@2 ~ g1@3 g1@2 ~ g1@6",
  AH: "a1@4 ~@2 a1@4 ~@2 a1@4 ~@2 a1@2 ~ a1@2 ~ bb1@6 bb1@5 ~ bb1@2 ~ bb1@2 ~ bb1@6",
  AI: "b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@3 b1@2 ~ b1@3 b1@2 ~ b1@3 b1@3 b1@3",
  AJ: "f1@14 ~@4 f1@16 ~@2 f1@4 ~@2 f1@3 gb1@3", AK: "g1@6 g2@7 f2 d2 a1",
  AL: "bb1@8 ~@4 bb1@9 f1@3 bb1@3 ~@3 bb1@12 d2@3 c2@3", AM: "f1@9 ~@2 f1 f1@3 f1@3 g1@3 a1@3",
  AN: "[f2@12 c2@4 ~@2 c2@6 a1@4 ~@2 a1@6 g1@6 a1@5 bb1@6 ~ bb1 ~@2 bb1@2 ~ bb1@3 ~@3 bb1@5 ~ c2@24]/2",
  AO: "f1@11 ~ f1@12 a1@10 ~@2 a1@3 ~@3 a1@6", AP: "bb1@13 ~@4 bb1@6 ~ c2@8 ~@4 c2@12", AQ: "f1@43 ~@2 f1!2 ~",
  AR: "f1@47 ~",
})).s("gm_fretless_bass").gain(0.38)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@4 A ~ B ~@2 C D ~@4 E ~@4 C D ~ F ~@21 E ~@4 C D ~ F ~@8>".pickRestart({
  A: "~@12 [a3,c4] e4 ~@11 e4@2 [a3,c4] e4 ~@19, ~@8 [a3,c4] ~@7", B: "~@12 [bb3,d4] f4 ~@10 [bb3,d4,g4] ~@23",
  C: "~@19 f4@24 ~@5, ~@18 [a3,c4]@25 ~@5", D: "~@9 [bb3,d4] g4 ~@37", E: "~@12 [e3,a3,c4] ~@11 [a3,c4,e4] ~@23",
  F: "~@12 [f3,c4]@11 ~", // F5
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.4)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@5 A B C D ~@2 E F ~@2 G@2 H I J K ~ L@2 ~@8 M N@2 O P Q R S ~@5 G@2 H I J K ~ L@2 ~@5 T@3
>`.pickRestart({
  A: "~@5 gb4@4 d4@3", B: "~@3 bb3", C: "a3@23 ~@25", D: "~@7 d3, ~@24 d3@13 ~@11, ~@27 f3@7 ~@2 f3@12, ~@30 a3@17 ~",
  E: "~@18 bb2@3 c3@3 d3@6 f3@2 g3@3 ~ g3@3 f3@3 d3@3 c3@3, ~@35 f3@2 ~@11", F: "f2@25 ~@23",
  G: "[~@33 a3 ~@2 a3@24 ~@18 e4@3 ~@3 e4@12, ~@30 [c4,e4]@31 ~@20 c4@15]/2", H: "~@4 f3@2 d3 f3", I: "e3 ~@2",
  J: "~@6 d4 ~ d4@4 ~ f4 ~ b3, ~@4 a4@7 ~ a4@4, ~@15 f4@6 a3@10 ~@11 d4@6", K: "~ f3@35 ~@12, c4@35 ~@13",
  L: "[~@9 d4@12 c4@9 ~@5 a3 c4@3 a3 g3 f3 g3@2 ~ g3@3, ~@69 ab3@2 ~@25]/2", M: "~@2 bb4@3 g4@2 f4@9",
  N: "[~@12 bb4@3 g4@3 f4@3 c4@9 f4@3 ~@3 g4@3 f4@3 ~@30 e4@3 a4@3 c5@3 ~@3 a4@2 c5@2 a4@2 e4@4 ~@2, ~@21 c4@17 ~@10]/2",
  O: "e4@30 ~@9 g4@2 ~ g4@2 ~ g4@2 ~", P: "g4@6 bb3@2 ~ bb3@2 ~@3 bb3@2 ~@2 bb3@16 ~@4 g4@3 ~ a4@2 ~ a4@2 ~",
  Q: "a4@5 ~ c4@2 ~ c4@5 ~ c4 ~@5 c4@3 d4@2 f4@3 g4@2 ~@5 d4@3 f4@3 a4@3 c5@3, ~@42 g4 ~@5",
  R: "d5@2 e5 f5@4 ~@2 f5@2 ~ d5@2 ~ c5@2 ~ d5@2 ~ c5 ~@2 ab4@2 ~@2 f4 ~ g4@3 f4@2 ~ g4@2 ~@2 g4@2 ~@3 f4 g4 ~, ~@27 g4@2 ~@19",
  S: "[c4,f4]@47 ~", T: "[~@47 [c4,a4]@97, ~@47 [c5,a5]@84 ~@13]/3",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.6)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@5 A ~@3 B ~ C ~@3 D@2 ~@2 E F ~@2 G ~@8 H I@2 ~ J K L ~@6 D@2 ~@2 E F ~@2 G ~@8
>`.pickRestart({
  A: "~@7 gb4@5 ~@4", B: "~@6 f4@9 ~, ~@17 [a3,c4]@28 ~@3", C: "~@38 f3@3 ~@7", D: "[~@39 a3@3 g3@3 gb3@28 ~@23]/2",
  E: "~@33 a3 ~@14", F: "~@12 f3@29 ~@7", G: "f3@23 ~@8 g3@2 f3@2 ~@13", H: "~ c4", I: "[~@31 f4@2 ~@3 a3@23 ~@37]/2",
  J: "~@15 bb3@2 ~@31", K: "~@9 f4 ~@6", L: "~@3 eb5@2 ~@43",
})).s("gm_electric_guitar_jazz").gain(0.27)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A@2 B@2 C D E F@4 ~@4 G D E F@4 ~@3 H I J K L@6 M@2 F@4 ~@4 G D E N@8 O@2 P@2
>`.pickRestart({
  A: "f4/2", B: "[e4@36 ~@3 d4@7 e4@2]/2", C: "f4@29 bb3@6 d4@6 f4@7", D: "e4 a4", E: "d5",
  F: "[c5@86 ~@9 bb3@48 a3@46 ~@3]/4", G: "~@29 bb3@6 d4@6 f4@7", H: "~@3 a3", I: "g3", J: "a3", K: "f3 bb3",
  L: "[a3@25 ~@47 a4@22 ~@2 f4@3 g4@3 f4@2 g4@4 bb4@29 ~ g4@6 [c4,e4]@43 ~@4 [c4,e4,gb4]@48 [bb3,d4,f4]@49, ~@3 a3@13 ~@8, ~@16 d4@32 a4@33 ~@15]/6", // C Gbm7b5 Bb
  M: "[[c4,e4,g4]@24 [d4,f4]@20 ~@4 [a3,d4,f4]@47 ~, ~@24 a4@71 ~]/2", // C Dm
  N: "[c5@86 ~@9 bb3@48 a3@46 ~@2 d4@24 e4@24 f4@13 g4@11 a4@24 f4@24 bb4@60 ~@13]/8",
  O: "[~@24 [a4,a5]@5 [g4,g5]@7 [f4,f5]@5 [e4,e5]@6 ~ d5@24 [e4,e5]@24, ~@47 d4@24 ~@25]/2", P: "[f4,f5]/2",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~@2 A@5 B@6 ~@4 C@7 D@8 E F@6 G@5 ~@3 C@7 H@4 I@2 J@2>".pickRestart({
  A: "[~@47 a4@48 ~@49 e4@24 bb3@12 ~@12 [f3,bb3]@47 e4, a3@139 ~@4 a3@25 d4@72, [d4,f4]@95 g4@49 ~@96, ~@95 e4@45 ~@4 gb3@48 ~@48, ~@96 c4@73 ~@11 a3@58 ~@2]/5", // Bb5 Dm
  B: "[c4@24 bb3@23 ~ b3@47 ~@19 g3@17 ~@3 g3@9 ~@24 d4@72 ~ [g3,a3]@47 ~, g3@48 a3@80 ~@3 a3@12 bb3@92 ~@53, a3@5 ~ f4@66, ~@24 d4@72 c4@143 c4@48 ~]/6", // Gsus2
  C: "[bb3@47 ~ c4@23 ~@91 g3@18 a3@11 ~@24 d4@72 ~ [g3,a3]@47 bb3, ~@47 e4@24 bb3@23 ~ b3@49 c4@143 c4@48 ~, ~@24 g3@24 a3@33 ~@15 bb3@46 ~@26, ~@48 a3@20 ~@3 d4@72 ~@193, ~@3 f4@11]/7", // Gsus2
  D: "[d4@24 a3@12 g3@11 ~@24 db4@24 [bb3,d4]@24 e4@24 g4@13 ~@12 db4@23 [bb3,d4]@25 [c4,e4]@11 ~ d4@11 c4@24 db4@24 d4@36 ~@12 a3@25 ~@12 [f3,f4]@12, ~@24 c4@48 ~@47 c4@49 ~@156 c4@36 ~@24, ~@47 a3@49 ~@47 a3@49 ~@35 bb3@12 a3@48 bb3@48 ~@49, ~@156 f4@61 ~@167]/8", // Bb C F
  E: "[f4,f5]", // F
  F: "[[d4,d5]@2 ~ e5@2 [d4,d5]@3 [e4,e5]@4 [f4,f5]@29 ~ d4@5 ~ e5@24 [c4,c5]@23 ~ a3@36 [d4,d5]@8 ~ b4 c6 ~ [d5,d6]@36 [f5,f6]@11 ~ e5@12 [c5,c6]@12 [a4,a5]@11 ~ g5@6 [f4,f5]@4 ~@2 [a5,a6]@45 ~@3, ~@2 e4@4 ~@35 d5@6 e4@25 ~@23 a4@38 ~@7 b5@2 [c5,db6]@2 ~@83 g4@6 ~@6 g6@2 ~@47, ~@143 db5@2 ~@46 e6@12 ~@35 f6@2 ~@48]/6", // D E F C D F C A …
  G: "[a3@18 g3@18 a3@11 ~@24 d4@72 ~ [g3,a3]@47 ~@49, f4@193 ~@47, c4@143 c4@48 ~@49, ~@12 bb3@23 ~@25]/5", // Gsus2
  H: "[d4@24 a3@12 g3@11 ~@24 db4@24 [bb3,d4]@24 ~ [g3,c4,e4]@60 ~@12, ~ c4@2 ~@5, ~@47 a3@49 ~@96]/4", // Bb C
  I: "[c4 db4 g4 [e4,a4], f3@3 ~, [a3,f4]@48 d4@47 ~, ~@48 bb3@43 ~@5]/2", J: "[[g3,a3,c4,f4]@43 ~@5]/2",
})).s("gm_string_ensemble_1").gain(0.33)

// chords · flute
const flute = note("<~@24 A B ~@2 C D ~@24 A B ~@2 E@4>".pickRestart({
  A: "~@2 [d4,g4] [f4,d5] [e4,a4,c5]@2 [d4,g4,bb4]@2, ~ bb4 ~@2", // G5 Dm Am Gm
  B: "[c4,f4]@11 ~ [a3,d4,f4]@6 [c4,e4,g4]@5 ~ [f4,a4]@24, a4@6 ~@17 db4@24 ~", // F5 Dm C F
  C: "~@2 g4 [f4,bb4,d5] [e4,a4,c5]@2 [d4,g4,bb4]@2, ~@11 d4@7 ~@30, ~@11 bb4@4 ~@33", // Bb Am Gm
  D: "[c4,a4]@2 [a3,d4,f4] [c4,e4,g4] [db4,f4,a4]@4, f4@7 ~@41", E: "[c4@24 a4@23 g4@25 a4@119 ~]/4",
})).s("gm_flute").gain(0.33)

// other · alto sax
const alto_sax = note("<A@5 ~@12 B C@2 ~@7 D E ~@18 B C@2 ~@8 F G H@2>".pickRestart({
  A: "[~ a4@8 ~]/5", B: "~@6 d4 f4", C: "[g4@6 e4@18 f4@23 a4@23 ~@26, ~@47 g4@2 ~@47]/2", D: "~ f3 a3 c4 db4@4",
  E: "d4@35 c4@13", F: "~@24 f3@11 a3@13", G: "g3 a3", H: "c4/2",
})).s("gm_alto_sax").gain(0.33).pan(0.1)

// other · french horn · "FR.HORN"
const french_horn = note("<A@5 ~@2 B@2 ~@9 B@2 ~@7 C D E F G ~@2 H I J K@2 ~@9 B@2 ~@8 L M N@2>".pickRestart({
  A: "[~ a4@8 ~]/5", B: "[~@18 a3@6 bb3@6 d4@5 f4@6 ~ a4@53 ~]/2", C: "~@3 a4", D: "g4", E: "f4@36 g4@5 ~ a4@2 g4@4",
  F: "f4@6 e4@6 d4@6 c4@5 ~, g3@47 ~", G: "[f3,c4] ~", H: "~@12 a3@10 ab3 g3", I: "gb3@37 ~@11", J: "[bb3,d4]@47 ~",
  K: "[[c4,e4]@23 ~ f4@23 ~ a4@47 ~, ~ d4@3]/2", L: "~@4 a4 g4 f4 e4", M: "d4 bb3 e4 c4", N: "[f4@95 ~]/2",
})).s("gm_french_horn").gain(0.33)

// other · muted trumpet · "MT TRUMPET"
const muted_trumpet = note("<~@10 A ~@10 B ~@18 B ~@10 B ~@10>".pickRestart({
  A: "c5", B: "c5 f5",
})).s("gm_muted_trumpet").gain(0.38)

// chords · trombone
const trombone = note(`<
  ~@7 A@2 B@2 ~@5 C ~ D@2 B@2 ~@5 E@2 F G ~@3 H@2 ~@2 I B@2 ~@5 C ~ D@2 B@2 ~@4 J@2 K L M@2
>`.pickRestart({
  A: "[~@12 a3@11 bb3@24 ~@37 a3@9 g3@3, ~@47 b3@49]/2", B: "[f3@17 a2@18 ~ a3@9 g3@3 f3@18 ~ g2@29, c4]/2",
  C: "d2@3 ~", D: "[~@12 a3@11 bb3@24 b3@37 a3@9 g3@3]/2", E: "[~@12 a2@6 c3@6 f3@48 e3@19 ~@5]/2",
  F: "~@9 f2@3 a2@5 c3@6 ~ db3@24", G: "d3@23 ~@25", H: "[~@24 a3@20 ~ g3@2 gb3@25 ~@24, ~@22 ab3 ~@25]/2",
  I: "~@12 a3@3 g3", J: "[d4@7 ~]/2", K: "f2@23 a2@24 ~", L: "bb2@12 c3@11 ~", M: "c3/2",
})).s("gm_trombone").gain(0.44).pan(0.7)

// other · vibraphone
const vibraphone = note(`<
  ~@55
  [~@25 db5 a4 db5 ~@2 db5 a4 ~ db5 a4 ~ db5 a4 db5 a4 db5 a4 ~ db5 a4 db5 a4 db5]
  [a4 d5 ~@46]
  ~@5
>`).s("gm_vibraphone").gain(0.22).pan(0.8)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@2 B C D E F G H I J A@2 B C D E F G H I J K@3 L K M N O P Q ~@5 R S T U A@2 B C D E F G H I J K@2 V ~@5
>`.pickRestart({
  A: "~ x ~@2", B: "x ~ x ~ x!3 ~", C: "x!3 ~ x!3 ~", D: "x!2 ~ x", E: "~ x!3", F: "x!3 ~ x ~@3", G: "~ x!2 ~ x ~ x!2",
  H: "~ x!2 ~ x!4", I: "~@5 x ~@6 x ~@5 x ~@5 x ~@11 x ~@5 x ~@5", J: "~ x!7", K: "x!4", L: "x ~@3 x ~@3 x ~ x!3 ~ x ~",
// … 51 more lines

More by McCartney