Strudelify

1977

After The Lovin'

Engelbert Humperdinck

KeyF majorTempo78 bpm
0:00/0:00
// After The Lovin' — Engelbert Humperdinck
// 78 bpm, 4/4, key C major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 8, 4/4 at bar 8) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D@3 E F G H I J K L M N O P Q R S T U V W T X Y Z AA M N O P Q R AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY AZ BA AX AY AZ BA BB BC@8
>`.pickRestart({
  A: "~@3 e2 c2 b1 a1@4 ~ d2", B: "e2@8 ~@2 b1 ~ a1@8 ~@2 e2@2", C: "d2@4 ~ a1 d2@4 ~ d2",
  D: "[e2@8 ~@4 f2@2 ~@2 a2@4 ~@2 d2@17 ~@3 d2@3 ~ g2@24 ~@2]/3", E: "c2@12 g2@11 ~", F: "c3@10 c2 c#2",
  G: "d2@12 a2@9 ~ a2@2", H: "d3@12 g2@7 ~ c2@2 c#2@2", I: "d2@9 ~@2 a2", J: "d3@4 g2@3 ~", K: "c3 g2",
  L: "c3@19 ~ g2@2 c2@2", M: "c2@3 ~@2 c2 g2@6", N: "c2@7 ~@3 c2@2 g1@5 ~ c2@4 c#2@2",
  O: "d2@6 ~@4 d2@2 a1@7 ~ a1@2 c2@2", P: "d2@7 ~@3 d2@2 g2@6 g1@4 ~@2", Q: "d2@7 ~@3 d2@2 d2@8 ~@2 d2@2",
  R: "g1@7 ~@3 g1@2 g1@7 ~ a1@2 b1@2", S: "c2@7 ~@3 c2@2 g2@8 ~@2 g2@2", T: "c2@7 ~@3 c2 ~ c2@5 ~ c2@4 ~@2",
  U: "f2@10 c2@2 f2@7 ~ f2@2 e2@2", V: "c2@8 ~@2 g1@2 c2@7 ~ c2@2 d2@2", W: "g1@7 ~@3 g1@2 g1@9 ~ d2@2",
  X: "a2@8 ~@2 e2@2 a2@7 ~ a2@2 e2@2", Y: "a1@8 ~@2 a1 ~ a1@8 ~@2 a1@2", Z: "d2@8 ~@2 d2@2 g1@7 ~ g1@2 c2@2",
  AA: "d2@7 ~ d2@2 a1@2 g1@6 g2@2 g1@2 g2@2", AB: "a1@8 ~@2 e2@2 a2@7 ~ a2@2 e2@2", AC: "a1@4 ~ a1 a1@3 a2@2 ~",
  AD: "f2@7 ~ f2@2 c2@2 f1@8 c2@2 f2@2", AE: "e2@9 ~ g#2@2 b2@6 g#2@4 e2@2", AF: "a2@7 ~ a2@2 e2@2 a1@7 ~@3 a1@2",
  AG: "d2@7 ~ d2@2 a1@2 d2@6 d2@3 ~@3", AH: "d2@11 ~ e2@7 ~ e2 ~ e2@2", AI: "g2@7 ~ g2@2 d2@2 g1@7 ~ g1@2 d2@2",
  AJ: "c2@8 ~@2 g2@2 c3@7 ~ c3@2 g2 ~", AK: "g#1@5 ~ g#1@5 ~ a#1@5 ~ c2@4 ~@2", AL: "c#2@3 ~@2 c#2 g#2@6",
  AM: "c#2@7 ~@3 c#2@2 g#1@5 ~ c#2@4 d2@2", AN: "d#2@6 ~@4 d#2@2 a#1@7 ~ a#1@2 c#2@2",
  AO: "d#2@7 ~@3 d#2@2 g#2@6 g#1@4 ~@2", AP: "d#2@7 ~@3 d#2@2 d#2@8 ~@2 d#2@2",
  AQ: "g#1@7 ~@3 g#1@2 g#1@7 ~ a#1@2 c2@2", AR: "a#1@8 ~@2 f2@2 a#2@7 ~ a#2@2 f2@2", AS: "a#1@4 ~ a#1 a#1@3 a#2@2 ~",
  AT: "f#2@7 ~ f#2@2 c#2@2 f#1@8 c#2@2 f#2@2", AU: "f2@9 ~ a2@2 c3@6 a2@4 f2@2",
  AV: "a#2@7 ~ a#2@2 f2@2 a#1@7 ~@3 a#1@2", AW: "d#2@7 ~ d#2@2 a#1@2 d#2@6 d#2@3 ~@3", AX: "d#2@11 ~ f2@7 ~ f2 ~ f2@2",
  AY: "d#2@7 ~ d#2@2 c2@2 g#1@7 ~ g#1@2 g#2@2", AZ: "c#2@7 ~@3 g#1@2 c#2 ~@3 c#2@3 ~ c#2@2 c2@2",
  BA: "a#1@8 a#2@2 f2@2 a#1@3 ~ a#1@3 ~ a#1@2 ~@2", BB: "d#1@6 ~ f1@5",
  BC: "[~@4 d#1@13 g#1@12 ~@2 a#1@8 ~@2 d#2@2 f2@8 ~@2 c2 ~ a#1@8 ~@2 f2@2 d#2@8 ~@2 a#1@2 d#2@8 ~@2 d#2@2 f2@8 ~@4 f#2@2 ~@2 a#2@3 ~@3 d#2@10 ~@4 g#1@11 ~ c#2@48 ~@5]/8",
})).s("gm_acoustic_bass").gain(0.56)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D@3 E@2 F G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV AW AX AY AZ BA BB BC BD BE BF BC BD BE BF BG@4 BH@5
>`.pickRestart({
  A: "~@3 e3 c3 b2 a3@3 ~@2 [c4,e4], ~ a2, ~@6 [c4,e4]@5 ~, ~@3 e3, ~@5 a3", // C
  B: "[a2,g#3,c4,e4]@9 ~ [g#3,c4,e4]@2 [g3,c4,e4]@12", C: "[f#3,a3,c4]@9 ~@3 [d3,f3,a3,d4]@11 ~",
  D: "[[e3,g3,b3,e4]@9 ~@3 [e4,e5,a5]@2 ~@2 [d4,b4,d5,g5]@3 ~@3 [c#4,a4,c#5,e5]@14 ~@6 [c#4,c#5,e5]@2 ~@2 [c4,c5]@14 ~@12, ~@12 c5 ~@29 a4 ~@3 [a4,f5]@12 ~@14]/3", // Em A5 G A C#m C Dm
  E: "[~@5 g5 ~@10 g5 [e5,g5] ~@5 e5, c4@6 c4@2 g4 c6@6 c4 d5@2 [c4,c5,g5]@6, g5@4 e5@2 e5@4 c4 g4 g5 g4@5 e5@4 d5@2, e5@6 c5@6 b4@25 ~@3 g4@8, c5@4 g4@8 g5@8 b5@17 ~@5 b4@6]/2", // Em C5
  F: "~@4 f5 [a4,f5] ~@4 f5 [f5,a5], [d4,c5] d4, f5@4 [d5,a5]@2 a5@5 ~, ~@3 a4@2 ~ f5@3 c#5@3, ~@3 c#5 a4@2", // Dm F D7 D5
  G: "~@8 d5 [g3,g4]@2 ~, [d4,f5,a5]@12 d5@2 e5@5 ~@5, c5@10 c5@9 ~@5, ~@6 a4@13 ~@5, ~@8 f4@11 ~@5", // G Dm
  H: "[d4,a4]@3 a4 ~ d4 [d4,f4,a#4]@3 d4@2 d4, d3 ~, f4@4 [f4,a4]@2 ~@3 [f4,a#4]@3, ~@3 d4@2 ~@7", // D5 A# F A#5
  I: "d4@6 ~@4 d4@2 ~@4 d4@2 ~@2 [f4,b4]@2 [g4,b4] ~, [g4,b4]@6 g4@5 ~, g3@8 g3@6 g3@9 ~, ~@3 d4@2 ~ b4@4 ~@2, ~@12 d4@4 ~@2 d4@5 ~", // Fdim G
  J: "[[c4,g4]@8 g4@2 [d4,g4]@2 ~@12 a4@6 [a4,c5]@6 a4@6 ~@2 c5@2 e5 ~, [c3,e4]@12 [c3,c4,e4,g4]@12 ~@18 a4@5 ~, ~@4 c4@2 ~@3 g3@3 [c4,f4]@6 c5@4 ~@2, ~@22 f3@14 [g3,f4]@11 ~]/2", // C5 G5 Am C F5 G7
  K: "~@5 [d4,g4] ~@5 d4, [c3,c4,e4] [c3,g4], g4@5 ~ d4@5 ~, ~@2 g3 b3@2 b3, ~@3 g3", // G5 C C5
  L: "~@8 g4 ~@2 d4, c3@2 c4, g4@6 d4@3 ~ g3@2, c4@4 g3@5 c3@3, ~@2 e4@3 c4@2 e4@2 ~@3",
  M: "~@6 a3@2 [d4,f4,a4] ~@13 [c#4,f4,a4]@2, [d3,d4,f4,a4]@9 ~ d3@14, ~@6 [c#4,f4,a4]@5 ~, ~@5 a3", // Dm C#aug Dm C#aug
  N: "~@5 c4 ~@2 b3 [f3,b3,d4]@2 ~, [d3,f4,a4]@6 g2@5 ~, c4@5 ~@7, ~@4 a3@2 ~ g3@4 ~", // Bdim Dm
  O: "~@5 [d4,f4,a4] [c#4,f4,a4]@3 [c#4,f4,a4]@3, d3!2, [d4,f4,a4]@5 ~@7, ~@2 a3 ~@3", // Dm C#aug Dm
  P: "d3@2 ~@8 d3@2 ~@6 b3@5 ~, [c4,f4,a4]@12 g3@4 [g3,d4]@7 ~, ~@8 g2@15 ~, ~@7 b3@2 ~@3", // F G5
  Q: "~@10 [c4,e4,g4]@2 [d4,f4,g4]@3 ~@7 [c4,e4,g4]@2, c3!2, [c4,e4,g4]@5 ~@3 [c4,e4,g4]@3 ~, ~@2 g3 ~@2 g3", // C G7 C
  R: "~@20 g4@2 c3 ~, [c3,g4]@6 g4@2 c5 c3@2 ~, e4@10 e4@13 ~, a#3@8 a#3@15 ~, ~@6 g3@6 c3@2 g3@9 ~", // C5
  S: "~@5 e4 [e4,a4,c5]@2 [e4,a4,c5]@2 [e4,a4,c5]@2, f3, [a4,c5] ~, e4@5 ~@7, ~ c4@2", // Am
  T: "~@6 [d4,g4] ~@3 [c4,e4,g4]@2, [c3,b3,e4]@5 ~ c3@2, g4@6 ~ [e4,g4]@3 ~@2, ~@8 g3@7 ~@9, ~@10 c4@5 ~ c4@4 ~@4", // G5 C Cmaj7 Em
  U: "~@4 c4 [c4,f4,a4] c4 ~ c4 [c4,f4,a4]@3, d3, [f4,a4]@5 ~ [f4,a4]@3 ~@3, c4 ~@2, ~@6 a3@7 ~ a3@10", // F
  V: "c4@3 ~@2 e4 ~@2 [e4,g4] [b2,b3,e4]@3, [c3,g4]@2 [c3,c4] ~, e4@5 ~@4 g4 ~@2, ~ g3 ~@2, ~@2 c4 ~@3", // Em E5 C5 C
  W: "~@5 e3 [g#3,c4,e4]@4 ~ a2, a2@6 a2@5 ~, [c4,e4]@2 [c4,e4] ~@3, a3@3 a3@3 ~@4 [g#3,c4,e4]@2, ~@2 e3@3 ~@7", // G#aug C G#aug
  X: "[g3,c4,e4]@8 [g3,c4,e4]@4 [f#3,c4,e4]@8 [f#3,c4,e4]@3 ~, a2@13 ~@11", // C F#m7b5
  Y: "[d3,c4,f4,a4]@6 ~@5 d4, ~ g2, ~@3 d4@2 b3, ~@2 b3 g3, ~@3 g3 d3@2", // Dm7
  Z: "[c4,e4] ~ [c4,e4]@2 a3@2 ~@4 [e4,g4]@2 g3@2 ~@2 g3@2 g3@2 a3@2 b3 ~, d3@12 ~@2 g2@5 ~@5, ~ [d4,f4] ~@2, ~@8 a3@4 [b3,d4]@7 ~@5", // C Em Dm Bm
  AA: "~@5 [c4,e4,g4] [b3,e4,g4]@3 ~@2 c3, c3@6 c3@5 ~, [c4,e4,g4]@5 ~@4 [b3,e4,g4]@3, ~@2 g3 ~@3", // C Em C Em
  AB: "[c3,a3,e4,g4]@6 ~@12 [c4,e4,g4]@5 ~, ~ [a3,e4,g4] [b3,e4,g4] ~, ~@10 c3@6 c3@7 ~", // Am7 C A7 Em
  AC: "~@5 [f4,a4] [c#4,f4,a4]@2 ~@3 d3, d3@6 d3@3 d3@2 ~, [f4,a4]@5 ~@7, d4@2 d4 ~ [c#4,f4,a4]!2, ~ a3 ~@2", // F C#aug F C#aug
  AD: "c4@8 c4@2 [c4,f4,a4]@2 g3@6 ~@2 g3@2 b3 ~, d3@6 [g2,d4]@5 ~, [f4,a4]@5 ~ b3@4 ~@2, ~@18 d3@5 ~", // F G5 F
  AE: "~@5 f4 [c#4,f4]@3 [c#4,f4]@3, a4 ~, f4@2 d4 ~@3, d4 a3 ~@2, ~ d3@2 d3@3", // C#
  AF: "[c4,f4]@4 [c4,f4] [c4,f4,a4] [g3,b3,d4]@3 [g3,b3,d4]@2 ~, a4@5 ~ g2@5 ~", // F5 F G
  AG: "a3@8 ~@2 [a3,c#4,e4]@2 [b3,d4,e4]@3 ~ [a3,c#4,e4]@2 a2@2 [a3,c#4,e4]@2 a2 ~, a2@3 a2 ~@2, [c#4,e4]@5 ~@7, ~@2 e3 ~@3", // A E7 A C#m
  AH: "g3@3 ~@7 [a3,c#4]@2, e4@6 a3 c#4@2 [a2,e3]@3, c#4@5 e3@3 e4@4, a2@2 a2@2 a3 ~, ~ g3@3", // A A5
  AI: "~@11 a4, c4@8 a3 c4 f4@2, a3@5 c3@7, f3@4 f3@2 a3 f3@5, ~ f2@5",
  AJ: "[b3,e4]@4 ~@2 e4@6 ~@6 g#3@5 ~, [e3,g#4,b4]@2 g#3 ~, ~@4 g#3@8 [b3,e4]@11 ~, ~@16 e2@7 ~", // E5 E E5
  AK: "~@6 e3@2 [a3,c4,e4] ~ a2 ~ [g#3,c4,e4]@7 ~ [g#3,c4,e4]@2 ~@2, [a2,a3,c4,e4] ~@2", // Am G#aug Am
  AL: "c4@6 ~ c4 ~ c4@3, e4@15 ~ e4@8, f#3@11 ~ f#3@12", AM: "[d3,f3,a3,c4,f4,a4]@12 [e3,g3,b3,d4,g4,b4]@11 ~",
  AN: "c4@4 ~@14 c5@5 ~, f3@23 ~, a4@12 a4@11 ~, f4@10 f4@13 ~, ~@8 c4@15 ~",
  AO: "~@5 d4 ~@2 g3 [c4,e4,g4]@2 ~, c3@19 ~@5, [c4,e4,g4]@5 g4@4 ~@3, ~ g3 e4 ~", // C
  AP: "g#3@2 ~ c4@3 ~@3 [c4,d#4]@2 ~, [g#2,d#3,d#4,g#4]@6 ~@2 [g#2,d#3,g#3]@3 ~, c4 ~ c#4 ~, ~ g#3@2 ~@3", // Cm G#5
  AQ: "~@5 [c#4,f4,g#4] [c4,f4,g#4]@3 ~@2 c#3, c#3@6 c#3@5 ~, [c#4,f4,g#4]@5 ~@4 [c4,f4,g#4]@3, ~@2 g#3 ~@3", // C# Fm C# Fm
  AR: "[c#3,a#3,f4,g#4]@6 ~@12 [c#4,f4,g#4]@5 ~, ~ [a#3,f4,g#4] [c4,f4,g#4] ~, ~@10 c#3@6 c#3@7 ~", // A#m7 C# A#7 Fm
  AS: "~@5 [f#4,a#4] [d4,f#4,a#4]@2 ~@3 d#3, d#3@6 d#3@3 d#3@2 ~, [f#4,a#4]@5 ~@7, d#4@2 d#4 ~ [d4,f#4,a#4]!2, ~ a#3 ~@2", // F# Daug F# Daug
  AT: "c#4@8 c#4@2 [c#4,f#4,a#4]@2 g#3@6 ~@2 g#3@2 c4 ~, d#3@6 [g#2,d#4]@5 ~, [f#4,a#4]@5 ~ c4@4 ~@2, ~@18 d#3@5 ~", // F# G#5 F#
  AU: "~@5 f#4 [d4,f#4]@3 [d4,f#4]@3, a#4 ~, f#4@2 d#4 ~@3, d#4 a#3 ~@2, ~ d#3@2 d#3@3", // D
  AV: "[c#4,f#4]@4 [c#4,f#4] [c#4,f#4,a#4] [g#3,c4,d#4]@3 [g#3,c4,d#4]@2 ~, a#4@5 ~ g#2@5 ~", // F#5 F# G#
  AW: "a#3@8 ~@2 [a#3,d4,f4]@2 [c4,d#4,f4]@3 ~ [a#3,d4,f4]@2 a#2@2 [a#3,d4,f4]@2 a#2 ~, a#2@3 a#2 ~@2, [d4,f4]@5 ~@7, ~@2 f3 ~@3", // A# F7 A# Dm
  AX: "g#3@3 ~@7 [a#3,d4]@2, f4@6 a#3 d4@2 [a#2,f3]@3, d4@5 f3@3 f4@4, a#2@2 a#2@2 a#3 ~, ~ g#3@3", // A# A#5
  AY: "~@11 a#4, c#4@8 a#3 c#4 f#4@2, a#3@5 c#3@7, f#3@4 f#3@2 a#3 f#3@5, ~ f#2@5",
  AZ: "[c4,f4]@4 ~@2 f4@6 ~@6 a3@5 ~, [f3,a4,c5]@2 a3 ~, ~@4 a3@8 [c4,f4]@11 ~, ~@16 f2@7 ~", // F5 F F5
  BA: "~@6 f3@2 [a#3,c#4,f4] ~ a#2 ~ [a3,c#4,f4]@7 ~ [a3,c#4,f4]@2 ~@2, [a#2,a#3,c#4,f4] ~@2", // A#m Aaug A#m
  BB: "c#4@6 ~ c#4 ~ c#4@3, f4@15 ~ f4@8, g3@11 ~ g3@12",
  BC: "[d#3,f#3,a#3,c#4,f#4,a#4]@12 [f3,g#3,c4,d#4,g#4,c5]@11 ~", // D#m7 Fm7
  BD: "~@10 g#2@2 [g#2,f#3,a#3,c#4]@3 ~@5 [f#3,a#3,c#4]@2 [c#3,g#3] ~, d#3@3 ~ [f#3,a#3,c#4] ~, [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~@3, ~@6 a#3@6 ~@6 g#2@5 ~", // F# C#5 F#
  BE: "~@8 g#4@2 [f4,g#4,a#4]@2 ~@4 g#3@2 ~@2 [c#4,g#4]@2 g#3 ~, [c#3,c#4]@4 c#3@3 ~, f4@10 ~@10 f4 ~@3, g#4@4 d#4@2 [c#4,f4,g#4]@3 ~@3, ~ g#3 ~@2", // A#7 C#5 C#
  BF: "[a#3,d#4,f4]@3 ~@3 f3@2 [f3,a#3,f4]@4 [d4,f4,g#4]@6 [d4,f4,g#4]@2 ~@4, [a#2,f3,g#3] [a#2,g#3] ~@2, ~ d#4@2 ~@3, ~@4 [a#3,f4]@4 ~@4 [f3,a#3]@9 ~@3", // A#sus4 A#5 Ddim A#7 A#5
  BG: "[[d#3,f#3,a#3,c#4,f4]@12 ~@2 [f2,c3,f3,g#3,c4,d#4]@14 [d#3,f#3,a#3,c#4,f4]@13 [f#3,c#4,f4]@14 a#3@6 ~@4 [c#4,f4]@2 [a#2,a3,c#4,f4]@9 ~ [a3,c#4,f4]@2 [g#3,c#4,f4]@12 [g3,a#3,c#4]@5, ~@41 [g#2,a#3]@12 ~@2 a#2@12 ~@29, ~@55 [c#4,f4]@10 ~@31, ~@61 f3@6 ~@29, ~@63 a#3@4 ~@29]/4", // D#m7 Fm7 D#m7 F#maj7 C# A#m Aaug C# …
  BH: "[~@7 [d#3,f#3,a#3,d#4]@11 ~ [f3,g#3,c4,f4]@9 ~@3 [a#3,c#4,f4]@2 ~@2 [g#3,c4,d#4]@3 ~@3 [f#3,a#3,c#4]@13 ~ [f#3,a#3]@11 ~ [c#2,c#3,f3,g#3,c4]@48 ~@5]/5", // D#m Fm A#m G# F# C#maj7
})).s("gm_piano").gain(0.56)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  A@6 ~@8 B@2 C@2 D@2 E@2 F G H I J K L M N O P@2 Q R S@2 T U V@2 W X Y Z AA AB AC@2 AD AE AF@2 AG AH AI@2 AJ AK AL AM
  AJ AK AL AM AN@2 AO@7
>`.pickRestart({
  A: "[~@12 [c5,c6]@7 ~ [d5,d6]@2 [e5,e6]@2 ~@14 [d5,d6]@2 [e5,e6]@2 ~@6 d4@10 [e4,e5]@2 [e4,e5]@4 [d4,d5]@18 ~@2 [e4,e5,a5]@2 ~@2 [d4,b4,d5,g5]@3 ~@3 [c#4,a4,c#5,e5]@14 ~@6 [c#4,c#5,e5]@2 ~@2 [c4,a4,c5,f5]@16 ~@10, ~ e4@3 ~@8, ~@12 a4@12 [c5,c6]@14 ~@4 [c5,c6]@14 ~@28 c5 ~@59, ~@36 g4@12 ~@66 a4 ~@29]/6", // C D E D E D A5 G …
  B: "[c4@5 ~ b3@6 a3@6 b3@5 ~, e4@15 ~, g3@11 ~@13]/2", C: "[d4@12 c#4@12 c4@12 b3@11 ~, f4@47 ~]/2",
  D: "[d4@11 ~ c#4@11 ~ c4@12 b3@11 ~, f4@23 ~, a3 ~]/2",
  E: "[~@4 c5@4 ~@4 d5@3 ~, [c4,e4]@23 ~, ~@3 g4@20 ~, ~@12 a#4@11 ~]/2", F: "~@6 f4@6 a4@6 c5@5 ~, [a5,c6]",
  G: "~@6 g4@5 ~, [g5,b5]@23 ~", H: "f5@17 ~ c6@6, a5", I: "c5@9 b4@2 ~, b5@5 ~", J: "[e4,c5,a5] [a4,e5,b5]",
  K: "[g4,g5,c6]@6 [f#4,a5,e6]@5 ~", L: "[d4,a4,d5,f5]@11 ~ [g3,b4,d5,g5]@11 ~",
  M: "[d4,a4,d5,f5,a5]@11 ~ [g3,b4,d5,g5,b5]@10 ~@2", N: "c5@12 b4@11 ~", O: "a4@6 b4@5 ~",
  P: "[d5@12 c#5@11 ~ c5@10 ~@8 g4@3 ~@3, a4@18 b4@5 ~]/2", Q: "a4 c#5", R: "d5 g5", S: "[~@24 e5@23 ~, a5]/2",
  T: "[f4,a4,c5]", U: "[e4,g#4,b4]@23 ~", V: "[a4@11 ~ g#4@12 f#4@22 ~@2, [c5,e5]@11 ~]/2",
  W: "[f4,a4]@12 [e4,g4,b4]@11 ~", X: "[a4,c5]@11 ~", Y: "[e4,g4,c5]@23 ~", Z: "[d#4,g#4,c5]@11 ~",
  AA: "c#5@12 c5@11 ~", AB: "a#4@6 c5@5 ~", AC: "[d#5@12 d5@11 ~ c#5@10 ~@8 g#4@3 ~@3, a#4@18 c5@5 ~]/2", AD: "a#4 d5",
  AE: "d#5 g#5", AF: "[~@24 f5@23 ~, a#5]/2", AG: "[f#4,a#4,c#5]", AH: "[f4,a4,c5]@23 ~",
  AI: "[a#4@11 ~ a4@12 g4@22 ~@2, [c#5,f5]@11 ~]/2", AJ: "[f#4,a#4]@12 [f4,g#4,c5]@11 ~", AK: "[a#4,c#5,f5]@23 ~",
  AL: "[f4,g#5,c#6]", AM: "[c5,c6]@6 [g#4,g#5]@5 ~ [f4,f5]@10 ~@2",
  AN: "[[f#4,c#5,a#5]@13 ~ [f4,c5,g#5]@13 ~ [c#5,a#5]@20]/2", // F# Fm F#
  AO: "[~@7 [c#5,c#6]@7 ~ [d#5,d#6]@2 [f5,f6]@2 ~@14 [d#5,d#6]@2 [f5,f6]@2 ~@6 d#4@10 [f4,f5]@2 [f4,f5]@4 [d#4,d#5]@18 ~@2 [c#5,f5]@2 ~@2 [c5,d#5]@3 ~@3 c#5@14 [f#4,a#4]@11 ~ [c#3,c4,c5,d#5,g#5]@39 ~@14, ~@7 f4@36 ~@125, ~@7 a#4@12 [c#5,c#6]@14 ~@4 [c#5,c#6]@14 ~@117, ~@31 g#4@12 ~@46 a#4@12 ~@67]/7", // C# D# F D# F D# C# Cm …
})).s("gm_synth_strings_2").gain(0.21)

// chords · synth strings 2 · "SYN STR 2" · soft notes
const synth_strings_2_soft = note("<~ A B ~@20 C ~ D ~@11 E ~@4 F ~@10 G ~@4 H I E ~ H I E ~@3 J@3 ~@4>".pickRestart({
  A: "g#4@13 ~@11", B: "f#4@3 ~@5", C: "b4@13 ~@11", D: "g5@5 ~, c4@5 ~@3", E: "c#5@23 ~", F: "d4 ~", G: "d5@23 ~",
  H: "d#4 ~", I: "f#4@11 ~", J: "[~@19 a4@13 ~@11 g4@9 ~@20]/3",
})).s("gm_synth_strings_2").gain(0.14)

// other · synth brass 2 · "SYNBRASS 2"
const synth_brass_2 = note(`<
  ~@2 A B ~@26 C D E F G H I J K L M N O P Q@2 R S T U V W X Y Z AA AB AC AD ~ AE@2 AD ~ AE@2 ~@4 AF@5
>`.pickRestart({
  A: "~@12 [a3,d4,f4]@11 ~", B: "[b3,e4,g4]@10 ~@2 [f3,c4,e4,a4] ~@11",
  C: "~@6 [a3,a4]@2 [e3,e4]@2 [g3,g4]@9 ~@3 [g3,g4] ~", D: "[g3,g4]@19 ~ [e3,e4]@2 [g3,g4] ~",
  E: "~@20 [f3,f4]@2 [g3,g4] ~", F: "[f3,f4]@6 ~@2 [d3,d4] ~ [f3,f4] ~ [d3,f3,d4,f4] ~ [f3,f4]@6 [d3,d4]@2 [f3,f4]@2",
  G: "[f3,f4] ~@3 [f3,f4] ~@11 [f3,f4] ~@3 [f3,f4] ~@3", H: "[f3,f4]@15 ~ [g3,g4]@5 ~@3",
  I: "~@4 [e3,e4]@2 [g3,g4]@2 ~@2 [a3,a4]@11 ~ [e3,e4]@2", J: "[g3,g4]@2 ~@2 [f#3,f#4] ~@5 [e3,e4]@12 ~@2",
  K: "~@4 [c4,f4,a4] ~@11 [c4,f4,a4] ~@7", L: "~@4 [b3,e4,g#4] ~@11 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@3",
  M: "[a3,a4]@2 [b3,b4] [c4,c5]", N: "[g#3,g#4]@5 ~ [a3,a4]@6 [b3,b4]@6 [c4,c5]@4 ~@2",
  O: "[a3,d4,f4]@11 ~ [b3,e4,g4]@11 ~", P: "[f4,a4]@11 ~",
  Q: "[~@4 [g3,g4] ~ [a3,a4]@2 ~@2 [c4,c5]@5 ~ [g3,g4]@2 [a3,a4]@2 ~@4 [d#4,g#4]@12 [c#4,f#4,a#4,c#5]@6 [d#4,g#4,c5,d#5]@5 ~, ~@11 [c4,c5]@7 ~@6]/2", // G A C G A G#5 F# G# …
  R: "~@6 [a#3,a#4]@2 [f3,f4]@2 [g#3,g#4]@9 ~@3 [g#3,g#4] ~", S: "[g#3,g#4]@19 ~ [f3,f4]@2 [g#3,g#4] ~",
  T: "~@20 [f#3,f#4]@2 [g#3,g#4] ~", // F# G#
  U: "[f#3,f#4]@6 ~@2 [d#3,d#4] ~ [f#3,f#4] ~ [d#3,f#3,d#4,f#4] ~ [f#3,f#4]@6 [d#3,d#4]@2 [f#3,f#4]@2", // F# D# F# D#m F# D# F#
  V: "[f#3,f#4] ~@3 [f#3,f#4] ~@11 [f#3,f#4] ~@3 [f#3,f#4] ~@3", W: "[f#3,f#4]@15 ~ [g#3,g#4]@5 ~@3",
  X: "~@4 [f3,f4]@2 [g#3,g#4]@2 ~@2 [a#3,a#4]@11 ~ [f3,f4]@2", Y: "[g#3,g#4]@2 ~@2 [g3,g4] ~@5 [f3,f4]@12 ~@2",
  Z: "~@4 [c#4,f#4,a#4] ~@11 [c#4,f#4,a#4] ~@7", AA: "~@4 [c4,f4,a4] ~@11 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3",
  AB: "[a#3,a#4]@2 [c4,c5] [c#4,c#5]", AC: "[a3,a4]@5 ~ [a#3,a#4]@6 [c4,c5]@6 [c#4,c#5]@4 ~@2",
  AD: "[a#3,d#4,f#4]@11 ~ [c4,f4,g#4]@11 ~", // D#m Fm
  AE: "[~@4 [g#3,g#4]@2 [a#3,a#4]@2 ~@2 [c#4,c#5]@5 ~ [g#3,g#4]@2 [a#3,a#4]@2 ~@2 [d#4,d#5]@4 ~@2 [d#4,d#5]@3 ~@3 [f4,g#4,b4,d5,f5]@12 ~@2]/2", // G# A# C# G# A# D# Fdim
  AF: "[~@7 [a#3,d#4,f#4]@11 ~ [c4,f4,g#4]@10 ~@2 f4 ~@3 d#4@3 ~@3 c#4@13 ~ a#3@12 c4@37 ~@16]/5", // D#m Fm
})).s("gm_synth_brass_2").gain(0.18)

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

// drums · snare
const snare = s("sd").struct("<~@45 A B@7 C B@3 C B@3 C B@3 D ~@2 E F@2 G ~@3>".pickRestart({
  A: "~@10 x!2", B: "~ x ~ x", C: "~@3 x ~@7 x", D: "~@3 x ~@6 x!2", E: "~@13 x ~@10", F: "~ x ~@11 x ~@10",
  G: "~ x ~@22",
})).gain(0.36)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@45 A ~@7 B ~@3 B ~@3 B ~@3 A ~@9>".pickRestart({
  A: "~@7 x!3 ~@2", B: "~@8 x!3 ~",
})).gain(0.11)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@2 A ~ B ~@7 C ~@7 D ~@7 B ~@7 B ~@3 B ~@3 D ~@7 D ~@3 D ~@3 D ~@3 D ~@5 E ~@3
>`.pickRestart({
  A: "~@5 x ~@6", B: "~@11 x", C: "~@3 x!2 ~", D: "~@10 x!2", E: "~@5 x ~@18",
})).gain(0.36)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A ~@13 B C B C B C B D B C B C B C E F B C B C B C B C B C B C B C G E B C B C B C B C B C B C B C B C B C B C ~@2 H I
  J K L ~@2
>`.pickRestart({
  A: "~ x ~@2", B: "~@2 x ~@2 x ~@2 x ~@2 x", C: "~@2 x ~@2 x ~@2 x ~@3", D: "~@2 x ~@2 x ~@6",
  E: "~ x!2 ~ x!2 ~ x!2 ~ x!2", F: "~ x!2 ~ x!2 ~ x!2 ~ x ~", G: "~@2 x ~@2 x ~ x!2 ~ x!2",
// … 32 more lines

More by Engelbert Humperdinck