Strudelify
To All The Girls I've Loved Before cover art

To All The Girls I've Loved Before

Engelbert Humperdinck

KeyF♯ majorTempo84 bpm
0:00/0:00
// To All The Girls I've Loved Before — Humperdinck Engelbert
// 84 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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 · electric guitar jazz · "BASS GTR"
const bass = note(`<
  ~ A B A C D E F G H I J K L@2 M N H@2 O P Q R S T U V W X Y Z M AA H I O@2 AB Z I AC AD@2 AE AF AG AH AI AJ AK AL AM
  AN AG AH AO AP AQ AR AS AT AU AV AH AL AW AX AY AZ BA BB BC BD BE BF BG ~
>`.pickRestart({
  A: "f#1@15 ~", B: "f#1@13 ~ f#1@2", C: "f#1@7 f#2", D: "c#2@13 ~ c#2 ~", E: "c#2@13 ~ g#1@2", F: "c#2@7 g#1",
  G: "c#2@9 ~@7", H: "f#1@4 ~@2 f#1 ~ f#1@5 ~@3", I: "f#1@4 ~@2 f#1 ~ f#1@6 ~@2", J: "g#1@4 ~@2 g#1 ~ g#1@4 ~@4",
  K: "g#1@5 ~ g#1 ~ g#1@7 ~", L: "c#2@5 ~ c#2 ~ c#2@6 ~@2", M: "f#1@5 ~ f#1 ~ f#1@2 c#2@3 ~ c#2@2", N: "f#1 ~",
  O: "g#1@5 ~ g#1 ~ g#1@6 ~@2", P: "g#1@4 ~@2 g#1 ~ g#1@6 ~@2", Q: "c#2@5 ~ c#2 ~ c#2@4 ~@2 g#1@2",
  R: "c#2@5 ~ c#2 ~ c#2@5 ~@3", S: "f#1@5 ~ f#1 ~ f#1@6 c#2@2", T: "f#1@5 ~ f#1 ~ f#1@5 ~ c#2@2",
  U: "f#1@5 ~ f#1 ~ f#1@4 ~@4", V: "f#1@5 ~ f#1 ~ f#1@6 ~@2", W: "g#1@5 ~ g#1 ~ g#1@5 ~@3",
  X: "g#1@5 ~ g#1 ~ g#1@5 ~ g#1@2", Y: "c#2@5 ~ c#2 ~ c#2@6 g#1@2", Z: "c#2@5 ~ c#2 ~ c#2@5 ~ c#2@2", AA: "f#1@3 ~@5",
  AB: "c#2@5 ~ c#2 ~ c#2@5 ~ g#1@2", AC: "d1@13 ~@3", AD: "g1@5 ~ g1 ~ g1@5 ~@3", AE: "a1@5 ~ a1 ~ a1@4 ~@2 e1@2",
  AF: "a1@5 ~ a1@2 e1@7 ~", AG: "d2@5 ~ d2 ~ d2@5 ~ a1@2", AH: "d2@5 ~ d2 ~ d2@5 ~ d2@2",
  AI: "g1@4 ~@2 g1 ~ g1@4 ~@2 d1@2", AJ: "g1 ~ g1@3 ~ g1@2 d2@7 ~", AK: "g1@4 ~@2 g1 ~ g1@5 ~ d1@2",
  AL: "g1@5 ~ g1 ~ g1@5 ~ g1@2", AM: "a1@5 ~ a1 ~ a1@5 ~ e1@2", AN: "a1@5 ~ a1@2 e1@8",
  AO: "d#2@5 ~ d#2 ~ d#2@5 ~ a#1@2", AP: "d#1@5 ~ d#1 ~ d#1@5 ~ d#1@2", AQ: "g1@5 ~@3", AR: "g1@4 ~@2 g1 ~ g1@4 ~@4",
  AS: "g1@4 ~@2 g1 ~ g1@7 ~", AT: "a1@5 ~ a1 ~ a1@6 ~@2", AU: "a1@4 ~@2 a1 ~ a1@7 ~", AV: "d2@5 ~ d2 ~ d2@4 ~@2 a1@2",
  AW: "d#1@5 d#2@2 d#1", AX: "g#1@4 ~@2 g#1 ~ g#1@4 ~@2 d#1@2", AY: "g#1@5 ~ g#1 ~ g#1@4 ~@2 g#1@2",
  AZ: "a#1@4 ~@2 a#1 ~ a#1@4 ~@2 f1@2", BA: "a#1@5 ~ a#1 ~ a#1@5 ~ a#1@2", BB: "d#2@5 ~ d#2@2 d#1@5 ~ d#1@2",
  BC: "d#2 ~ d#2@3 ~ d#2@2 d#1@5 ~ d#1@2", BD: "e1@5 ~ e1 ~ e1@5 ~ e1 ~", BE: "c#1@5 ~ c#1@2 c#2@5 ~ c#2@2",
  BF: "g#1@7 ~ g#1@3 ~ g#1@3 ~", BG: "g#1@7 ~",
})).s("gm_electric_guitar_jazz").gain(0.5)

// other · piano · "A.PIANO 1"
const piano = note(`<
  A B@2 C D E F G H ~@6 I J ~@3 K L ~@22 M ~@10 N O ~ P Q R S ~@3 T U V ~ W X Y Z AA AB@2 ~
>`.pickRestart({
  A: "~@3 [c#5,c#6] [f#5,f#6] [f5,f6] [g#5,g#6] [f#5,f#6]", // C# F# F G# F#
  B: "[[a#5,a#6]@6 [c#5,c#6] ~ [c#5,c#6]@12 ~@2 [c#5,c#6]@2 [f#5,f#6]@2 [g#5,g#6]@2 [a#5,a#6]@2 [c#6,c#7] ~]/2", // A# C# F# G# A# C#
  C: "[c#6,c#7]@6 [f#5,f#6] ~ [f#5,f#6]@7 ~", D: "~@3 [c#5,c#6] [g#5,g#6] [f#5,f#6] [b5,b6] [a#5,a#6]",
  E: "[c#6,c#7]@5 ~ [a#5,a#6]@2 [g#5,g#6]@2 [f#5,f#6]@2 [f5,f6]@2 [f#5,f#6] ~", F: "[c#6,c#7]@10 ~@2 [f#5,f#6]@3 ~",
  G: "[g#5,g#6]@11 ~ [f#5,f#6]@3 ~", H: "[f5,f6] ~", I: "~@10 [g#4,c#5,f5]@2 ~@2 [f#4,b4,d#5] ~", J: "[f#4,a#4,c#5] ~",
  K: "b5@2 a#5@2 g#5@2 f#5@2 g#5@2 f#5@2 f5@2 d#5 ~", L: "b4@3 ~", M: "[d5,b5]@4 ~@2 [c5,a5] ~ [c5,a5]@8",
  N: "~@12 d4 ~ g4 a#4, ~@13 d#4@2 ~", O: "d5 d#5 g5 ~ a#5 d6 ~ d#6@8 ~", P: "~@2 [e5,e6] [f#5,f#6]",
  Q: "[d5,d6]@13 ~@3", R: "~@4 [c6,c7] [b5,b6] [a5,a6] [g5,g6]", S: "[e5,e6] ~",
  T: "~@3 d#5@4 ~, ~@2 d#4@11 ~@3, ~@3 g4@10 ~@3, ~@4 a#4@9 ~@3", U: "~@5 a#5@2 c6, ~@14 c#6 ~", V: "d#5@5 ~@3",
  W: "d#5@3 ~ [f5,c#6] ~ [c#5,a#5]@9 ~, c6 ~@15", X: "~@3 d#5, ~@9 d#4@7, ~@5 g4@3, ~@11 a#4@5",
  Y: "~@11 d#5@5, ~ d#4, ~@9 g4@7, ~@5 a#4@3", Z: "~@5 e5@8 ~@3, ~ e4@5 ~@2, ~@3 g#4@10 ~@3, ~@4 b4@9 ~@3",
  AA: "~@3 e5@4 ~, ~@2 c#4@11 ~@3, ~@3 e4@10 ~@3, ~@2 g#4@5 ~, ~@5 c#5@9 ~@2",
  AB: "[~@8 a#5 c6@2 ~ g#5 ~ c5 ~ [g#4,c5,d#5]@9 ~@7, c4@17 ~@15, ~@2 d#4@23 ~@7, ~@6 g#4@9 ~@17, ~@11 d#5@2 ~@19]/2", // G#
})).s("gm_piano").gain(0.28).pan(0.8)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~ A B C D A E F G H I J K@3 L M N@2 O@4 P Q R@2 S@2 T U V@2 W@2 X Y@2 Z AA@2 AB@2 AC@2 AD AE AF AG AH@2 AI AJ AK AL
  AM@2 AN AO@2 AP AQ AR@2 AS AT AU@2 AV AW AX AY AZ BA BB@3
>`.pickRestart({
  A: "~ a#3 c#4 f#4 a#4 f#4 c#4 a#3, f#3 ~@3", B: "~@3 g#4 c#5 g#4 f4 c#4, g#3@3 ~@5, ~ c#4@2 ~@5, ~ f4 ~@2",
  C: "~@3 f#4 b4 f#4 d#4 b3, f#3@3 ~@5, ~@2 b3@5 ~@9, ~@2 d#4@3 ~@3", D: "~ b3 ~ f#4 b4 f#4 d4 b3, f#3 d4 ~@2",
  E: "~ a#3 c#4 f#4 a#4 f#4 c#4 a#3, f#3 ~", F: "~ b3 d#4 f#4 b4 f#4 d#4 b3, f#3 ~", G: "[g#3,c#4,f4]@9 ~@7",
  H: "f#3@2 ~@4 f#4 ~ f#4@2 c#4@2 ~@2 c#4@2, ~ a#3@6 ~, ~ c#4 a#4@2, ~@3 f#4",
  I: "f#3 ~ c#4 f#4 [f#4,a#4] c#4 [a#3,f#4] c#4, ~@2 a#3@7 ~@7", // F# D#m
  J: "~@4 b3@2 d#4@2 ~@2 b3@2 d#4@2 g#4 ~, g#3@15 ~, ~@2 g#4 ~",
  K: "[[c#4,a#4]@5 ~ [d#4,b4] ~ b3@2 d#4@2 b3@2 d#4 ~@7 d#4@2 ~@6 b4@2 ~@6 f4@2 ~@2 f4@2 g#4@2 f4@2, g#3@10 f#4@2 c#4@3 ~@5 c#4@4, ~@8 g#4@7 ~@3 b4@8 d#4@4 ~@6 g#4@4 ~@8, ~@14 f#4@3 c#5@4 ~@3]/3", // F# G#m
  L: "[a#4,c#5,f#5]@9 ~ [g#4,c#5,f5]@3 ~ [f#4,b4] ~, ~@7 d#5", M: "[f#4,a#4,c#5]@11 ~@5",
  N: "[~@2 f#4 c#5 ~@2 f#4 ~@2 c#4 f#4 ~ c#4 f#4 c#4 f#4, f#3@12 ~@4 f#3@13 ~@3, ~ c#4@3 a#4@2 ~ a#4@3 ~ a#4@4 ~, ~@5 c#4@2 ~@9]/2",
  O: "[~@6 g#4@2 ~@2 b4@2 g#4@2 ~@2 b5@2 a#5@2 g#5@2 ~@2 g#5@2 f#5@2 f5@2 ~@8 b4@3 ~@3 f#4@2 d#4@4 ~@2 f4@2 d#4@4 c#4@3 ~ c#4@2, g#3@13 ~@3 g#3@6 ~ g#3@6 ~@5 d#4@8 ~@8 c#4@4 ~@10, g#4@4 d#4@8 ~@2 d#4@9 ~ d#4@6 ~@2 b4@4 f#4@6 ~@12 g#4@8 ~@2, ~ b3@5 ~@10 b3@7 ~@9, ~@4 d#5@2 ~@5 f#5 ~@3 d#5@4 ~@2 b4@2 ~@9]/4",
  P: "~@4 c#5 ~@2 c#4, f#3@7 ~, a#4@3 ~@2 a#4@3, ~ f#4@2 c#4@3 f#4@2, ~ a#3@2 ~",
  Q: "~@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, f#3@7 ~", // F#
  R: "[[d#4,g#4,b4]@5 ~ [c#4,f#4,a#4] ~ f#4@6 ~@4 f#4@4 ~@4 c#5@2 ~@2 c#4 ~, ~@4 a#4@9 ~ a#4 ~, ~@8 c#4@5 ~ f#3@7 ~ f#3@8 ~@2, ~@16 c#4@6 ~@2 c#4@4 ~ f#4@3]/2", // G#m F#
  S: "[~@6 b3@3 ~@5 a#4 ~@13 d#4@2 g#3@2, g#4@11 ~@3 d#5@6 ~@12, g#3@8 ~@2 g#3@6 g#4@6 d#4@4 g#4@5 ~, ~@4 d#4@6 ~@2 d#4@8 g#3@9 ~@3, ~@15 b4@7 ~@2 b4@6 ~@2]/2",
  T: "~@10 d#4@2 ~@2 d#4 ~, ~@2 b3@9 ~ b3@4, ~@2 d#4@2 f#4@3 ~, ~@6 b4@9 ~",
  U: "[f4,g#4]@5 ~@7 c#4@2 g#3 ~, c#4@4 g#4@3 ~, ~@5 f4@2 ~", // Fm
  V: "[[f#3,a#3,c#4]@4 ~@3 c#4@3 ~ a#4 g#4 f#4 ~@2 [f#4,a#4]@4 ~@12, f#4@3 f#3@3 ~ c#4@3 ~@6, ~@10 c#5@4 ~ f#3@5 ~@12]/2", // F#
  W: "[~@3 a#4@2 f#4 ~@2 c#4@2 ~ c#4@2 ~ c#4 f#4, f#3@23 ~@3 f#3@6, ~@2 c#4@12 f#4@5 ~ f#4@6 ~@6, ~@4 f#4@5 ~@3 c#5@8 ~@12, ~@8 a#4@5 ~@3]/2",
  X: "~ d#4 ~ d#4 ~ d#4 g#4 d#4, g#3@7 ~, ~@2 g#4@3 ~@3, ~ b3",
  Y: "[[c#4,a#4]@6 [d#4,b4]@2 b3@4 ~@6 f#4 ~@11 b3 ~, ~@8 g#4@6 b3@7 ~ b3@7 ~@3, ~@12 d#4@4 ~@4 d#4@7 ~ d#4@4, ~@3 b4]/2", // F# G#m
  Z: "c#4 ~@5 f4 c#4, ~@2 f4@9 ~@5, ~@3 c#4@3 ~@2, ~ c#5",
  AA: "[f#4@4 c#4@2 ~@6 g#4 ~ c#4 ~ [d4,f#4]@15 ~, f#3@14 ~ d3@13 ~@4, a#4@9 ~ a#4@5 ~@17, ~@7 c#4@6 f#4@2 ~ a3@13 ~@3]/2", // D
  AB: "[~@10 g4@2 a4 b4 ~@4 g4@4 d4@2 ~@4 g4@2 b4@2, g3@22 ~@2 [g3,b4]@5 ~@3, [g4,b4]@4 ~@2 d5@5 ~@5, ~@2 d4@5 a4 b4@3 ~@5, ~@15 d4@6 ~@5 d4@5 ~]/2", // G
  AC: "[~@4 e4@4 ~@4 e4@2 ~@2 [d4,b4]@5 ~ [e4,c5] ~ [c4,e4]@3 ~ c4@2 e4 ~, a3@31 ~, ~@2 c4@6 ~@2 c4@4 ~@10 a4@7 ~]/2", // G C
  AD: "[c4,e4]@2 ~@3 e4@2 c4, g4@7 ~, ~@4 c4@9 ~@3", AE: "d4@3 ~@7 f#4@4 d4@2, [f#4,a4]@3 a4@4 ~, ~@4 d4@9 ~@3",
  AF: "~@10 a4 b4 a4@2 [g4,b4] ~, g3, [g4,b4]@9 ~ d5@6, ~@2 b3@5 ~, ~@3 d4@4 ~", // G
  AG: "d4@2 ~@4 [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~, [g4,b4]@5 ~@11, ~ g3@5 ~@2", // G
  AH: "[[g3,e4,a4,c5]@6 [d4,g4,b4] ~ [d4,g4,b4]@4 ~@2 a4 ~@11 g4@2 a4 b4 a4 g4, ~@12 g3@9 ~ g3@7 ~@3, ~@13 d4@10 ~ d4@7 ~, ~@15 b4@11 ~@2 d5@3 ~, ~@2 g5 ~]/2", // Am7 G
  AI: "~@3 e5 ~@2 e4@2, a3@13 ~@3, ~ e4@4 a4@2 ~, ~@2 a4@2 c5@3 ~",
  AJ: "[a4,c5]@2 e4@2 ~@2 e4@4 a3@2 [b3,e4]@2 c4 ~, a3@9 ~@7, ~@4 [a4,c5]@5 ~@7", // Am E5 Am
  AK: "[g3,c4,e4]@6 ~@3 d4 ~ c5@3 g3@2, ~@6 g3@7 ~@3, ~@4 c4@3 ~, ~@10 e4@5 ~", // C
  AL: "f#4@6 ~@6 d4@2 a3 ~, a3@13 ~@3, d4@5 ~ d4@4 f#4@4 ~@2, ~@4 a4@3 ~",
  AM: "[[d4,g4] g4 d#4@8 a#3 ~ d4 d#4 d4 ~ d4@2 ~ a#3@2 ~@6 a#3 d4 d#4 d4 a#3, g3@15 a#3@2 ~ d#4@8 ~@6, a#3@9 ~@3 g4@3 ~ g3@14 ~@2, ~@8 g4@5 ~ g4 ~]/2", // G5
  AN: "[g3,b3,d4,g4] ~", // G
  AO: "[~@22 a4@4 g4@3 ~ [d4,g4]@2, g3@11 ~ g3@5 ~ g3@12 ~@2, ~@2 d4@9 ~@3 d4@5 ~ d4@9 ~@3, ~@4 g4@5 ~ g4@4 ~@2 g4@6 ~@4 b4@6, ~@6 b4@9 ~@7 d5@9 ~]/2", // G5
  AP: "~@2 e4@5 ~@3 e4@2 ~@2 e4@2, a3@7 ~, ~@7 a4@9", AQ: "[d4,b4]@3 [e4,c5] [c4,a4]@4",
  AR: "[~@4 e4@9 ~ g4@5 ~ f#4@6 a3@2 [e4,a4]@2 [d4,f#4]@2, g4@7 d4@6 ~@3, ~ e4@2 c4@12 ~@17, ~@2 g3@13 ~@17]/2", // A5 D
  AS: "~@8 a4 b4@7, g3@3 ~, g4@3 d4@3 ~@2, ~ b3@2 ~", AT: "~ d#5@3, d#3@3 ~, ~ a#3@11 ~@4, ~ d#4@5 ~@2, ~@3 g4@12 ~",
  AU: "[~@12 g#4 ~@4 a#3 g#3@8 ~@4 g#4@2, g#3@13 ~@3 c4@11 g#3@3 ~@2, c5@9 ~ d#4@4 g#4@12 ~@3 d#4@2 ~, ~@5 a#3@6 ~@2 c5@18 ~, ~@6 c4@9 d#4@6 ~@5 d#4@2 c4@3 ~]/2",
  AV: "~@6 a#4@4 ~@2 a#4@2 f4 ~, a#3@13 ~@3, ~ c#4@6 ~, ~ f4@2 ~, ~@5 c#5@2 ~",
  AW: "~ d#4 [f4,c#5] [c#4,a#4]@5, c5 ~@3", AX: "~@3 c#5@11 ~@2, c#4@7 ~, ~ f4@12 ~@3, ~ g#4@6 ~",
  AY: "~@3 c#5@7 ~@6, c#4@3 ~, ~ f4@7 ~@8, ~ g#4@3 ~@4", AZ: "~@3 e5@13, e4@7 ~, ~ g#4@15, ~@2 b4@13 ~",
  BA: "~@4 c#5@11 ~, c#4@3 ~, ~ e4@11 ~@4, ~ g#4@7, ~@3 b4@13",
  BB: "[~@2 a#4 c5@2 a#4 g#4 ~ [g#3,g#4,c5]@9 ~@7, g#3@13 ~@35, ~ d#4@11 ~@2 d#4@18 ~@16, ~@2 g#4@4 ~@10 a#4 ~@31, ~@2 d#5@5 ~@17]/3", // G#
})).s("gm_epiano1").gain(0.32).pan(0.2)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@25 A B ~ C ~@11 D ~@8 E F ~ G@2 ~@11 H ~@11>".pickRestart({
  A: "~@10 [f#4,a#4] ~ [g#4,b4] [f#4,a#4] [g#4,b4] ~", B: "[f#4,a#4]@7 ~@9",
  C: "[b4,d#5]@2 [g#4,c#5]@2 [f#4,b4]@2 [d#4,g#4] ~ [d#4,f#4]@8", D: "[d2,a2]",
  E: "~@10 [g4,b4] ~ [a4,c5] [g4,b4] [a4,c5]@2", F: "[g4,b4]@3 ~@5",
  G: "[[c5,e5]@2 [b4,d5]@2 [a4,c5]@2 [g4,b4] ~ [e4,g4]@10 ~@14]/2", H: "[d#2,a#2]",
})).s("gm_overdriven_guitar").gain(0.28).pan(0.8)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@4 B@2 C@2 ~@6 D E F@2 G@3 H I@2 J@2 K@3 L@3 M@5 N@5 O@6 P@2 Q@4 R@3 S T U@3 V@3 W@2 X@4 Y@4 ~
>`.pickRestart({
  A: "[c#6@19 f#5@8 c#5 g#5 f#5 b5 a#5]/4", B: "[c#6@7 f#5]/2", C: "[g#5@11 ~@5]/2", D: "f#5@5 f5@2 d#5",
  E: "c#5@5 ~@11", F: "[c#5 d#5 f5 f#5, f#4, a#3@29 ~@3]/2", G: "[b4@7 d#5 b4@4, d#4@47 ~, g#3@31 ~ f#3@14 ~@2]/3",
  H: "[g#3,f4]@7 ~, c#5", I: "[a#4@2 f#5@8 f5@4 d#5@2 c#5@15 ~, f#4, a#3@29 ~@3, ~@16 c#4@13 ~@3]/2",
  J: "[[g#4,d#5,g#5]@3 [f#4,a#4,c#5]@13, b4@5 ~ f#5@22 ~@4]/2", K: "[~@2 [f#4,f#5], b4@23 ~, [d#4,g#4]@2 ~, ~ d#5@3]/3",
  L: "[[f4,g#4,f5]@8 ~@5 f5@2 ~ [f#4,a#4,c#5]@2 ~@6, c#5@31 ~@17, ~ [f#4,a#4] ~, ~@8 f#5@5 ~@2 d#5 ~@8, ~@18 f#3@12 ~ f#3@5 ~@12]/3", // Fm F#
  M: "[a#3@13 ~@8 f#3@9 ~@2 g#3@15 ~ g#4@16 f#4@16, [f#2,c#3]@20 a#2@9 ~@2 b2@13 ~@3 d#3@30 ~@3, ~@13 c#4@19 d#4@16 b3@32]/5", // F#5
  N: "[[g#3,f4]@16 a#3@14 ~@8 d5@10 g3@6 ~@3 a#3 ~@6 f#5@8 g5@8, c#3@28 ~@3 d4@23 b3@23 ~@3, ~@16 f#4@32 b4 ~@6 g4@24 ~, ~@31 f#3@16 ~@33, ~@4 a4@2 d5 e5 ~@2]/5", // C#
  O: "[c5@12 b4@3 ~@17 g3@13 ~@3 f#4@15 ~@7 f#5@4 e5@4 ~@7 b4@10 ~, e4@47 ~@17 g4@32, a3@30 ~@17 a3@15 ~ b3@30 ~@3, ~@8 c5@16 d5@9 g5@15, ~@78 d5@17 ~]/6",
  P: "[a4@3 ~@3 g5@10 d4@16, [c5,e5,a5]@3 b4@13, ~@3 g4@29, ~@3 d5@9 ~@4]/2", // Am
  Q: "[~@32 g4@15 ~ [f#4,a4,d5]@15 ~, c5@3 ~, [e4,a4]@30 ~@2 c4@14 ~ d4@15 ~@2, ~@5 e5@19 ~@8]/4", // D A5
  R: "[~@18 d#5@11 ~@3 [d4,b4,g5,b5]@4 ~@12, d#4@5 ~@3, ~ g4@29 g4@6 ~@12, ~ a#4@14 ~@9, ~@4 d5@12 a#5@15 ~@17]/3", // G
  S: "[g3,b3,g4]", T: "[g3,b3], d3@7 ~", U: "[~@2 g3, e4, a3@2 ~, e3@5 ~@3, ~@4 c4@43 ~]/3",
  V: "[[a3,f#4]@16 b3@15 ~@5 a#3@9 ~@3, d4@31 ~ [d#4,a#4,d#5]@15 ~, f#3 ~@15 g4@31 ~]/3", // D D#5
  W: "[d#5 f5 g5 g#5, g#4@31 ~, c4@29 ~@3]/2",
  X: "[a#5@8 c#5@8 c6@4 c#6@2 ~@3 f4@9 ~@6 c#5@7 ~@2 g#4@4 ~@3 [a#4,d#5]@6 ~@2, a#4@39 ~@9 c#5@7 ~@9, c#4@36 ~@3 [f4,g#4]@7 ~@2 f4@5 ~@2 g4@6 ~@3, ~@22 a#5@41 ~]/4", // D#5 Fm
  Y: "[[c#5,b5]@8 [b4,c#6]@8 c6@15 ~, g#4@15 ~, e5@8 d#5@7 ~]/4", // C#7 Bsus2
})).s("gm_string_ensemble_1").gain(0.2).pan(0.2)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@25 A B C@2 D E B ~@17 F G H@2 I J K L M ~@8 N O P@2 Q@2 R S T ~@2>".pickRestart({
  A: "~@2 [g#4,b4]!2 ~@2 [f#4,a#4]!2 ~@2 [f#4,a#4]!2 ~@2 [f#4,a#4]!2", // G#m F#
  B: "~@2 [f#4,a#4]!2 ~@2 [f#4,a#4]!2 ~@2 [f#4,a#4]!2 ~@2 [f#4,a#4]!2", // F#
  C: "~@2 [g#4,b4]!2 ~@2 [g#4,b4]!2 ~@2 [g#4,b4]!2 ~@2 [g#4,b4]!2", // G#m
  D: "~@2 [f#4,b4]!2 ~@2 [f#4,b4]!2 ~@2 [f#4,b4]!2 ~@2 [f#4,b4]!2", // B5
  E: "~@2 [g#4,c#5]!2 ~@2 [g#4,c#5]!2 ~@2 [g#4,c#5]!2 ~@2 [g#4,c#5]!2", // C#5
  F: "~@2 [a4,c5]!2 ~@2 [g4,b4]!2 ~@2 [g4,b4]!2 ~@2 [g4,b4]!2", // Am G
  G: "~@2 [g4,b4]!2 ~@2 [g4,b4]!2 ~@2 [g4,b4]!2 ~@2 [g4,b4]!2", // G
  H: "~@2 [a4,c5]!2 ~@2 [a4,c5]!2 ~@2 [a4,c5]!2 ~@2 [a4,c5]!2", // Am
  I: "~@2 [g4,c5]!2 ~@2 [g4,c5]!2 ~@2 [g4,c5]!2 ~@2 [g4,c5]!2", // C5
  J: "~@2 [a4,d5]!2 ~@2 [a4,d5]!2 ~@2 [a4,d5]!2 ~@2 [a4,d5]!2", // D5
  K: "~@2 [a#4,d#5]!2 ~@2 [a#4,d#5]!2 ~@2 [a#4,d#5]!2 ~@2 [a#4,d#5]!2", // D#5
  L: "~@2 [a#4,d#5]!2 ~@2 [a#4,d#5]!2 ~@2 [a#4,d#5]!2 ~ [a#4,d#5]!2 ~", M: "[b4,d5] ~@15",
  N: "~@2 [g#4,c5]!2 ~@2 [g#4,c5] ~@3 [g#4,c5]!2 ~@2 [g#4,c5]!2", // G#
  O: "~@2 [g#4,c5]!2 ~@2 [g#4,c5]!2 ~@2 [g#4,c5]!2 ~@2 [g#4,c5]!2", // G#
  P: "~@2 [a#4,c#5]!2 ~@2 [a#4,c#5]!2 ~@2 [a#4,c#5]!2 ~@2 [a#4,c#5]!2", // A#m
  Q: "~@2 [g#4,c#5]!2 ~@2 [g#4,c#5]!2 ~@2 [a#4,d#5]!2 ~@2 [a#4,d#5]!2", // C#5 D#5
  R: "~@2 [b4,e5]!2 ~@2 [b4,e5]!2 ~@2 [b4,e5]!2 ~@2 [b4,e5]!2", // E5
  S: "~@2 [c#5,e5]!2 ~@2 [c#5,e5]!2 ~@2 [c#5,e5]!2 ~@2 [c#5,e5]!2", T: "~@2 [g#4,c5]!2 ~@2 [g#4,c5] ~@9",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.6)

// chords · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~ A B@3 C@3 D E@2 F@2 G H I J E@2 K@2 G L M@2 N@2 O@2 G H P@2 Q@2 F@2 G H R S T@2 U@2 V W X@2 Y@2 Z@3 AA AB@2 AC T@2
  AD@3 AE AF AG AH@2 AI@2 AJ@2 AK@4 ~
>`.pickRestart({
  A: "[f#3,a#3,c#4,f#4]", B: "[[g#3,c#4,f4] d#4 d4, f#2, ~@16 [f#3,b3]@31 ~]/3",
  C: "[[f#3,a#3,c#4]@2 [f#3,b3,d#4], c#3@47 ~]/3", D: "[c#3,f3,g#3,c#4]@5 ~@11", E: "[[a#3,c#4,f#4]@31 ~]/2",
  F: "[a#4@6 g#4@25 ~, [b3,d#4]@31 ~]/2", G: "[b3,d#4,f#4]", H: "[g#3,c#4,f4]",
  I: "[a#3,c#4,f#4]@10 [g#3,c#4,f4]@3 ~ [f#3,b3] ~, ~@7 d#4", J: "[f#3,a#3,c#4]@5 ~@11",
  K: "[[g#4,a#4] a#4@4 ~ g#4@25 ~, [b3,d#4]@31 ~]/2", L: "[g#3,c#4,f4]@15 ~", M: "[[a#3,c#4,f#4]@15 ~]/2",
  N: "[[d#4,g#4,b4]@5 ~ [c#4,f#4,a#4]@25 ~]/2", O: "[[b3,d#4,g#4]@31 ~]/2", P: "[[a#3,c#4,f#4]@9 ~@7]/2",
  Q: "[[c#4,f#4,a#4]@31 ~]/2", R: "[a#3,c#4,f#4]", S: "[d3,f#3,a3,d4]@15 ~", T: "[b3,d4,g4]/2",
  U: "[[c4,e4,a4]@31 ~]/2", V: "[c4,e4,g4]", W: "[d4,f#4,a4]@15 ~", X: "[[b3,d4,g4]@31 ~]/2",
  Y: "[[c4,e4,a4]@3 [b3,d4,g4]@13]/2", Z: "[a4@32 g4@15 ~, [c4,e4]@47 ~]/3", AA: "[a3,d4,f#4]",
  AB: "[[d#3,a#3,d#4], g4@15 ~]/2", AC: "[g3,b3,d4,g4]@5 ~@11", AD: "[a4@2 g4, [c4,e4]]/3", AE: "f#4 ~ f#4@6, [d4,a4]",
  AF: "[b3,d4,g4]", AG: "[d#3,a#3,d#4,g4]", AH: "[[c4,d#4,g#4]@31 ~, g#3@7 ~@9]/2", AI: "[c#4,f4,a#4]/2",
  AJ: "[[f4,g#4]@8 [a#3,d#4,g4]@8 [c#4,f4,g#4]@8 [a#3,d#4,g4]@7 ~, d#3, c#4@3 ~@13]/2", // Fm D# C# D#
  AK: "[e3@16 [c#3,c#4]@16 [g#2,c4,d#4]@29 ~@3, g#4@61 ~@3, [b3,e4] ~]/4", // C# G# E5
})).s("gm_pad_halo").gain(0.16).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@9 A@7 B A@15 B A@7 B A@16 B A@7 B A@8 C B ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x!2",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@9 A@7 ~ B@8 ~@8 B@7 ~@18 B@7 ~@12>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@24 A B@7 ~@8 A B@7 C B@7 D ~@8 A B@8 A ~@2>".pickRestart({
  A: "~@14 x!2", B: "~ x ~ x", C: "~@4 x ~@7 x!3 ~", D: "~@2 x ~@3 x!2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~@8 A B@7 C B@15 D B@7 C B@8 ~@8 E B@7 F ~@11>".pickRestart({
  A: "~@7 x", B: "x!8", C: "x ~@9 x!3 ~ x ~", D: "x ~@6 x", E: "~@10 x!3 ~ x ~", F: "x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 A ~@15 A ~@7 B ~@7 C ~@8 D ~@8 E ~@2>".pickRestart({
  A: "~@5 x!2 ~", B: "~@4 x!2 ~@2", C: "~@12 x!2 ~@2", D: "~@11 x!2 ~@3", E: "~@3 x",
})).gain(0.4)
// … 18 more lines

More by Engelbert Humperdinck