Strudelify
Delilah cover art

1968 · Delilah

Delilah

Tom Jones

KeyE minorTempo186 bpm
0:00/0:00
// Delilah — Tom Jones
// 186 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "bass" named as a bass, played on electric bass finger (its piano patch is not one); ch 3 "guitar" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 4 "strings" named as a string part, played on string ensemble 1 (its piano patch is not one); ch 5 "brass" named as a brass, played on brass section (its piano patch is not one)
// note: Full arrangement: all 160 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(186/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 · electric bass finger · "bass"
const bass = note(`<
  ~@3 A B@3 C@3 D@3 E@3 D@3 F G H I@3 J K@2 L M@2 N@2 O P@3 Q@3 R@3 S@3 T@3 U@2 V W X@2 Y@3 Z@3 AA@3 AB@3 AC@3 AD@3 J
  AE@2 AF AG@2 R@3 AH AI@2 AJ@3 AK AL@2 AM@3 AN AO@2 AP@2 V AQ@3 AR@2 AS AT@2 AU AR@2 AS AT@2 AU AF AV@2 AW@3 J AE@2 AF
  AX@2 AY AZ BA BB@3 BC@3 BD@2 BE BF@3 BG BH@2 AP@2 V BI@3 BJ@3 BK BL BM BK BN BO
>`.pickRestart({
  A: "~@14 d2 ~", B: "[e2@23 ~ e2@23 ~]/3", C: "[e2@21 ~@3 e2@23 ~]/3",
  D: "[b1@19 ~ d#2@3 ~ f#2@15 ~ g2@3 ~ f#2@3 ~]/3", E: "[e2@23 ~ e2@19 ~ g2 ~ e2 ~]/3", F: "e2",
  G: "b2@3 ~ e2@3 ~ d2@8", H: "e2@4 d2@3 ~ e2@3 ~ d2@4",
  I: "[a1@8 c2@3 ~ e2@7 ~ c2@3 ~ a1@11 ~ c2@3 ~ e2@3 ~ c2@3 ~]/3", J: "e2@11 ~ g2@3 ~",
  K: "[e2@3 ~ g2@3 ~ b1@10 ~@2 b1@3 ~ c#2@3 ~ b1@3 ~]/2", L: "e2@11 ~ e2@3 ~",
  M: "[g2@3 ~ e2@3 ~ d2@11 ~ d2@3 ~ e2@3 ~ f#2@3 ~]/2", N: "[g2@7 ~ d2@3 ~ g2@6 ~@2 d2@3 ~ g2@7 ~]/2",
  O: "d2@3 ~ g2@7 ~ d2@3 ~", P: "[a2@11 ~ d2@11 ~ a2@11 ~ d2@11 ~]/3",
  Q: "[a2@11 ~ d2@11 ~ a2@11 ~ d2@3 ~ e2@3 ~ f#2@3 ~]/3", R: "[g2@11 ~ d2@11 ~ g2@11 ~ d2@11 ~]/3",
  S: "[g2@11 ~ d2@11 ~ g2@11 ~ g2@3 ~ f2@3 ~ e2@4]/3", T: "[c2@11 ~ g1@7 ~ c2@3 ~ a1@11 ~ c2@3 ~ e2@3 ~ c2@3 ~]/3",
  U: "[g2@11 ~ d2@7 ~ g2@3 ~ d2@8]/2", V: "~@4 d2@3 ~ e2@3 ~ f#2@3 ~", W: "g2@11 ~ g2@3 ~",
  X: "[d2@3 ~ b1@3 ~ b1@10 ~@2 f#2@3 ~ d#2@3 ~ f#2@3 ~]/2", Y: "[e2@11 ~ b2@9 ~ g2 ~ e2@11 ~ b2@3 ~ g2@3 ~ e2@4]/3",
  Z: "[b1@11 ~ f#2@12 b1@11 ~ f#2@11 ~]/3", AA: "[e2@11 ~ b2@12 e2@11 ~ b2@3 ~ a2@3 ~ g2@3 ~]/3",
  AB: "[b1@11 ~ f#2@12 b1@11 ~ f#2@4 e2@3 ~ f#2@3 ~]/3", AC: "[e2@11 ~ b2@12 e2@11 ~ e2@3 ~ d2@3 ~ c2@3 ~]/3",
  AD: "[a1@11 ~ e2@6 d2 ~ c2@3 ~ a1@12 c2@3 ~ a1@4 c2@3 ~]/3", AE: "[e2@3 ~ g2@3 ~ b1@10 ~@2 b1@3 ~ c#2@3 ~ d#2@3 ~]/2",
  AF: "e2@11 ~ b2@3 ~", AG: "[g2@3 ~ e2@3 ~ d2@11 ~ a2@3 ~ f#2@3 ~ d2@3 ~]/2", AH: "a2@6 ~@2 d2@3 ~ a2@4",
  AI: "[~@4 d2@3 ~ a2@11 ~ a2@3 ~ f#2@3 ~ d2@3 ~]/2", AJ: "[d2@11 ~ a2@11 ~ d2@11 ~ a2@10 ~@2]/3", AK: "g2@11 ~ d2@4",
  AL: "[b2 ~ a2 ~ g2 ~ f#2@2 g2@11 ~ d2@11 ~]/2", AM: "[g2@11 ~ d2@11 ~ g2@11 ~ g2@3 ~ a2@3 ~ g2@3 ~]/3",
  AN: "c2@11 ~ c2@3 ~", AO: "[e2@3 ~ c2@4 a1@11 ~ a1@3 ~ c2@3 ~ d2@3 ~]/2", AP: "[g2@11 ~ g2@10 ~@2 d2@8]/2",
  AQ: "[g2@11 ~ d2@7 ~ g2@3 ~ b1@11 ~ b1@2 d#2 ~ f#2@3 ~ d#2@3 ~]/3", AR: "[e2@7 ~ b1@3 ~ e2@7 ~ b1@3 ~ e2@7 ~]/2",
  AS: "b1@3 ~ e2@7 ~ b1@3 ~", AT: "[f#2@7 ~ b1@3 ~ f#2@7 ~ b1@3 ~ f#2@7 ~]/2", AU: "b1@3 ~ f#2@8 b1@3 ~",
  AV: "[g#2@4 e2@3 ~ d2@11 ~ e2@3 ~ d2@3 ~ c2@3 ~]/2", AW: "[a1@11 ~ e2@11 ~ a1@11 ~ a1@3 ~ c2@3 ~ a1@4]/3",
  AX: "[g2@3 ~ e2@3 ~ d2@11 ~ a1@10 ~@2]/2", AY: "g2@5 ~@2 g2 d2@2 ~@2 g2@4", AZ: "~@3 g2 d2@2 ~@2 b2@3 ~ g2@3 ~",
  BA: "d2@3 ~ b2 b1@2 ~ b2@3 ~ g2@3 ~", BB: "[d2@11 ~ a2@11 ~ d2@11 ~ a2@2 ~ f#2@2 ~@2 a2 f#2@2 ~@2]/3",
  BC: "[d2@11 ~ a2@11 ~ d2@11 ~ a2@3 ~ f#2@3 ~ a2@2 ~@2]/3",
  BD: "[g1@2 ~@2 g2@2 ~@2 g2@3 ~ g1@2 ~ g2@2 ~@2 g1 g2@3 ~ g1@4 g2 ~@3]/2", BE: "g2@3 ~ g1@3 g2!2 ~@3 g2@3 ~",
  BF: "[g2@11 ~ d2@11 ~ g2@11 ~ f2@2 a2@2 g2@2 f2 ~ e2@2 d2@2]/3", BG: "c2@11 ~ g1@4",
  BH: "[c2@3 ~ d2@3 ~ a1@12 c2@3 ~ d2@3 ~ c2@3 ~]/2", BI: "[g2@11 ~ d2@11 ~ b1@11 ~ b1@3 ~ c#2@3 ~ d#2@3 ~]/3",
  BJ: "[e2@8 ~@4 e2@7 ~ g2@3 ~ b1@11 ~ b1@3 ~ c#2@3 ~ d#2@3 ~]/3", BK: "e2@6 ~@2 b1@4 e2@3 ~", BL: "b2@3 ~ e2@4 a2@8",
  BM: "e2@3 ~ a2@3 ~ e2@3 ~ a2@3 ~", BN: "b2 ~ b2 ~ e2@2 ~@2", BO: "b2@3 ~ e3@2 ~@2 e2@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · electric guitar clean · "guitar"
const electric_guitar_clean = note(`<
  ~@3 A@4 B C D E F G B C D E F G H I J K L M N O@2 P Q R S T U V W X V W X S T U S Y Z AA AB AC AD AE@2 AD AF AG B C D
  E F G B C D E F G H I J K L M N O@2 P Q R S T U V W X V W X S T U S Y Z AA AB AC AD AE@2 AD AF AG B C D E F G B C D E
  F G H I J K L M N O@2 P Q R S T U V W X V W X S T U S Y Z AA AB AC AD AE@2 S AH@2 AI AJ@2 AK AL AM AN AO AP
>`.pickRestart({
  A: "[~@16 e4@21 ~@3 [g3,b3]@23 ~, ~@7 d3@12 d3@10 ~@3, ~@15 [g3,b3]@22 ~@3 e4@21 ~@3]/4", // G
  B: "~@4 [e4,g4,b4] ~@3 [e4,g4,b4] ~@7", C: "[e4,g4,b4] ~@3 [e4,g4,b4] ~@7 [e4,g4,b4] ~@3",
  D: "[e4,g4,b4] ~@7 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3", E: "~@4 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@7",
  F: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@7 [a3,d#4,f#4] ~@3", G: "[a3,d#4,f#4] ~@7 [a3,d#4,f#4] ~@3 [a3,d#4,f#4] ~@3",
  H: "~@3 [e4,g#4,b4] [g#4,b4] ~@3 [e4,g#4,b4] ~@6 [e4,g#4,b4]", // E G#m E
  I: "[g#4,b4] ~@3 [e4,g#4,b4] ~@6 [d4,g#4,b4] [g#4,b4] ~@3", // G#m E G#dim G#m
  J: "[d4,g#4,b4] ~@6 [d4,g#4,b4] [g#4,b4] ~@3 [d4,g#4,b4] ~@3", K: "~@3 [c4,e4,a4]!2 ~@3 [c4,e4,a4] ~@6 [c4,e4,a4]",
  L: "[c4,e4] ~@3 [c4,e4,a4] ~@6 [c4,e4,a4]!2 ~@3", M: "[c4,e4,a4] ~@6 [c4,e4,a4]!2 ~@3 [c4,e4,a4] ~@3",
  N: "~@4 [b3,e4,g4] ~@3 [b3,e4,g4] ~@7", O: "[[b3,e4,g4] ~@3 [b3,e4,g4] ~@7 [a3,b3,d#4]@17 ~@3]/2",
  P: "~@3 [b3,e4,g4]!2 ~@3 [b3,e4,g4] ~@6 [b3,e4,g4]", Q: "[b3,e4,g4] ~@3 [b3,e4,g4] ~@6 [a3,c4,f#4]!2 ~@3",
  R: "[a3,c4,f#4] ~@7 [a3,c4,f#4] ~@3 [a3,c4,f#4] ~@3", S: "~@4 [b3,d4,g4] ~@3 [b3,d4,g4] ~@6 [b3,d4,g4]",
  T: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3", U: "[b3,d4,g4] ~@6 [b3,d4,g4] ~@4 [b3,d4,g4] ~@3",
  V: "~@4 [c4,d4,f#4] ~@3 [c4,d4,f#4] ~@6 [c4,d4,f#4]", W: "~@4 [c4,d4,f#4] ~@7 [c4,d4,f#4] ~@3",
  X: "[c4,d4,f#4] ~@6 [c4,d4,f#4] ~@4 [c4,d4,f#4] ~@3", Y: "~@4 [b3,d4,g4] ~@7 [b3,d4,f4] ~@3",
  Z: "[b3,d4,f4] ~@6 [b3,d4,f4] ~@4 [b3,d4,f4] ~@3", AA: "~@4 [g3,c4,e4] ~@3 [g3,c4,e4] ~@6 [g3,c4,e4]",
  AB: "~@4 [g3,c4,e4] ~@7 [a3,c4,e4] ~@3", AC: "[a3,c4,e4] ~@6 [a3,c4,e4] ~@4 [a3,c4,e4] ~@3",
  AD: "~@4 [g3,b3,d4] ~@3 [g3,b3,d4] ~@6 [g3,b3,d4]", AE: "[~@4 [g3,b3,d4] ~@3 [a3,c4,d4]@14 ~@10]/2",
  AF: "~@4 [g3,b3,d4] ~@7 [a3,b3,d#4] ~@3", AG: "[a3,b3,d#4] ~@4 [a3,b3,d#4] ~ [b3,d#4] ~@4 [a3,b3,d#4] ~@3",
  AH: "[[b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [a3,d#4,f#4]@16 ~@8]/2", // G D#dim
  AI: "[e4,g4,b4] ~@2 [e4,g4,b4] ~@3 [e4,g4,b4]!2 ~@3 [e4,g4,b4] ~@2 [e4,g4,b4]", // Em
  AJ: "[~@3 [e4,g4,b4]!2 ~@3 [d#4,f#4,b4]@14 ~@10]/2", // Em B
  AK: "[e4,g4,b4] [g4,b4] ~@3 [g4,b4] ~ [g4,b4] ~@4 [e4,g4,b4] ~@2 [e4,g4,b4], ~@5 e4@2 ~@9", // Em G Em
  AL: "~@3 [e4,g4,b4]!2 ~@3 [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5]", // Em A
  AM: "[e4,a4,c#5] ~@3 [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5]!2 ~@3", // A
  AN: "[e4,g4,b4]!2 ~@5 [e4,g4,b4]!2 ~@3 [e4,g4,b4] ~@2 [e4,g4,b4]", // Em
  AO: "~@3 [g4,b4]!2 ~@3 [e4,g4,b4] ~@7, ~@3 e4@3 ~@10", AP: "[e4,b4] ~@3 [e4,e5] ~@3 [e4,b4]@2 ~@6",
})).s("gm_electric_guitar_clean").gain(0.51)

// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note(`<
  ~@3 A B@3 C@3 D@3 E@3 F@3 G@8 ~ H@3 I@6 J@3 K@3 L@3 M@5 N@4 O@6 P@6 Q@3 R@3 S@2 T@2 U@8 V@3 W@3 X@3 Y@3 Z@2 AA@4 AB@5
  AC@6 AD@7 AE AF AG@7 AH@3 AI@3 AJ@3 AK@3 AL@3 AM@2 AN@4 AO@3 AP@3 AQ@2 AR
>`.pickRestart({
  A: "~@7 d3", B: "[e3@41 ~@7]/3", C: "[e4 b4, g4]/3", D: "[~ a4@23 b3@24, d#4, f#4@25 ~@23]/3",
  E: "[e4@2 b4 e4, g4]/3", F: "[[d#4,f#4]@23 [b3,d#4]@22 ~@3]/3",
  G: "[[g#4,b4]@24 [g#4,d5]@24 ~ a4@45 ~@2 b4@24 [f#4,a4]@3 ~@5, e4@15 ~, ~@24 c5@24 g4@11 ~@5]/8", // G#m G#dim F#m
  H: "[[b4,e5]@23 [a4,c5]@25]/3", I: "[g5@12 b4@11 g4@12 ~ d5@11 ~ a4@47 ~, d5@23 b4@24 f#5@47 ~@2]/6",
  J: "[[c5,f#5]@12 d5@11 ~ c5@19 [a#4,c#5]@5, a4@23 a4@20 ~@5]/3", K: "[[b4,d5]@47 ~]/3", L: "[g5@23 ~ f5@24, d5]/3",
  M: "[[c5,e5]@24 [e4,a4]@23 ~ g3@23 [d3,f#4]@4 ~@5, ~@47 g4@24 ~@9, ~@48 d4@27 ~@5]/5", // C A5 D
  N: "[~@16 g3@23 ~ [b3,a4]@24, ~@15 [g4,b4]@23 ~ b4@23 ~@2]/4", // B7 G
  O: "[e3@23 g3@11 ~@2 b3@11 ~ b3@12 f#3@11 ~ b3@12 f#3@11 ~, [e5,g5]@47 [b4,d#5]@48 ~]/6", // Em B
  P: "[g5@24 b4@12 g5@11 ~@25 [a4,b4]@24, [e3,e5]@47 d#5@24 ~@25, ~ b3]/6", Q: "[e5@24 d5@23 ~, [e3,b4]]/3",
  R: "[[c5,e5]@23 ~, a3]/3", S: "[[e3,g5,b5]@23 ~ [b3,d#5,a5]@5 ~@3, ~@23 f#5@4 ~@5]/2", T: "[~@15 [e3,b4,e5]@17]/2",
  U: "[~@8 d4@23 ~ d5@12 ~@11 c6 d6@12 [g5,b5]@11 d4@36 a3@12 d6, ~@7 [c5,d5]@24 g3@48 ~@49, ~@32 g5@23 ~@24 [a5,c6]@48 ~, ~@44 b5@23 ~@61]/8", // G Csus2 Am
  V: "[a5@11 [a3,c6]@12 ~ f#5@11 ~ [d5,f#5]@6 [f#5,a#5]@6, d4@13 ~@11 d4@18 ~@6, ~@11 a5@25 ~@12, ~@24 b5 ~@23]/3", // Am D F#
  W: "[g3@11 d4@12 ~ [g3,d5,g5]@24, [g5,b5] ~, a#5 ~@47]/3", X: "[~@23 f5@24 ~, d5, b4@13 ~@11, ~ g3@45 ~@2]/3",
  Y: "[[c4,c5,e5] [a3,a4,c5]]/3", Z: "[[g3,b4,d5]@6 [d3,a4,c5] ~]/2",
  AA: "[~@15 [g3,g4,b4]@24 ~ [a4,d#5]@22 ~ e3, ~@40 b3@23 ~]/4", // G Adim
  AB: "[~@12 b3@11 e3@12 [b3,e5]@11 ~@2 f#5@12 b4@4 d#5@4 f#5@3 a5@9, g5@47 d#5@12 ~@21, b5@35 b4@23 ~@22, ~@24 b3@5 ~ b3@10]/5", // E5
  AC: "[~@3 f#3@4 g5 ~ g5@2 [f#3,f#5]@4 ~@25 b5@11 e5@12 ~ b3@11 ~ b4@4 d#5@4 f#5@4 a5@8, ~@7 d#3@4 ~@4 g5@23 ~@2 g5@24 ~@32, ~@8 a5@2 ~@5 e5@25 ~@23 [d#5,f#5]@12 ~@21, ~@4 e3@12 ~@3 b3@5]/6", // F# D#m
  AD: "[~@7 g5 ~ g5@2 f#5@4 ~@40 e4@8 ~ [a3,a5]@47 ~, ~@8 a5@2 ~@5 b5@25 d6@24 ~@48, ~@16 g#5@47 c6@49, ~@4 e3@9 ~@15]/7", // A
  AE: "[e4,b5,e6]@2 ~@2 [e4,b5,e6] ~@3 [e4,e6]@2 ~ [e4,b5,e6]@2 ~@3, ~@8 b5 ~@7", // E5 E E5
  AF: "[e4,b5,e6]@2 ~@2 [e4,b5,e6]@4 [b3,a5,d#6]@3 ~@5", // E5 B7
  AG: "[~@4 d#5@11 [e3,e5]@24 ~ [c5,d5]@21 ~@3 d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~ d6 b5 g5 ~, ~@4 b4@36 d4@23 g3@46 ~@3, ~@38 d4@17 ~]/7", // E Csus2
  AH: "[c5@36 e5 d5 c5 d5 c5 b4 c5 b4 a4 b4 a4 g4, d4]/3",
  AI: "[d4@12 ~@11 a5@12 a3@7 ~@2 f#3@4, [a4,f#5]@20 ~@15 [a4,f#5]@13, c5@18 ~@5 c5@23 ~@2, ~@12 d3@23 ~@13]/3", // D
  AJ: "[g3@12 d3@12 g3@12 d3@11 ~, [b4,d5]@47 ~, g5@23 ~ g4@22 ~@2]/3", // Bm
  AK: "[g3@12 d3@12 g3@12 d3@11 ~, [d5,g5]@24 [d5,f5]@23 ~]/3", AL: "[[c4,g5] [a3,a5], e5@23 ~ e5@22 ~@2]/3",
  AM: "[[d5,g5]@23 ~ d3@4 ~@4, g3@19 ~@4 [c5,f#5]@4 ~@5]/2", // G5 Cdim
  AN: "[~@15 [g3,g5]@25 [d#5,f#5]@22 ~@2, ~@15 b4@47 ~@2, ~@15 d5@23 ~@2 b3@24]/4", // G D#m
  AO: "[[e3,g5,b5]@23 ~ [a5,b5]@23 ~, ~@23 [b3,d#6]@24 ~]/3", AP: "[[e3,g5,b5,e6]@23 ~ [a3,a5,c#6,e6]@24]/3",
  AQ: "[[e3,g5,b5,e6]@27 ~@5]/2", AR: "[b3,b5]@2 ~@2 e6@2 ~@2 [e3,e5]@3 ~@5",
})).s("gm_string_ensemble_1").gain(0.51)

// chords · brass section · "brass"
const brass_section = note(`<
  ~@10 A B@2 C ~@2 A B@2 D@3 E F@2 G@2 ~ H I@2 J K L ~ M N O@2 P ~ Q R S@3 T U@2 V ~@3 W X ~@3 A B@2 Y ~@2 A B@2 D@3 E
  Z@2 G@2 ~ H AA@2 AB AC L ~ AD@2 O@2 AE ~ AF R AG@3 AH@3 AI ~@5 AJ AK AL@4 AM@2 AN AO@2 ~ AP@3 E AQ@2 G@2 ~ H AA@2 AB
  AC L ~ AD@2 O@2 AE ~ AF R AG@3 AR@3 AI ~@3 AS AT AU ~@2 AV AW AX AY AZ BA
>`.pickRestart({
  A: "~@3 [b2,b3]", B: "[[d#3,d#4] [f#3,f#4] [a3,a4]@4 [g3,g4] [f#3,f#4]]/2", C: "[e3,e4] ~@7",
  D: "[[g#3,e4]@19 ~@5]/3", E: "~@3 [e4,e5]", F: "[[d4,d5]@3 ~ [c4,c5]@4 [b3,b4] [c4,c5] [b3,b4] [a3,a4]@19 ~@2]/2",
  G: "[~@6 [g3,e4]@6 [f#3,d#4] ~@3]/2", H: "~@3 [d4,b4]", I: "[[b3,g4]@3 [g3,e4]@4 ~ [f#3,d4]@16 ~@8]/2",
  J: "~@3 [b3,g4] ~@4 [b3,g4] ~@6 [b3,g4]", K: "~@4 [b3,g4] ~@6 [b3,g4] ~@4", L: "[b3,g4] ~@5 g4 b3 ~@4 [b3,g4] ~@3",
  M: "~@4 [a3,f#4]@2 [b3,g4]@2 [c4,a4]@2 [d4,b4]@2 [c4,a4]@2 [b3,g4] ~", // D Em F G F Em
  N: "~ [g3,e4]@2 ~ [a3,f#4]@9 ~@3, [a3,f#4] ~@7", // C D
  O: "[~@2 [c4,f#4] ~@5 [c4,f#4] ~@6 c4@2 ~@3 [c4,f#4] ~@6 f#4@2 ~@3, ~@15 f#4 ~@11 c4 ~@4]/2", // Cdim
  P: "[c4,f#4] ~@6 [c4,f#4]@4 ~ [c#4,a#4]@4", Q: "~@4 [b3,g4]@2 [c4,a4]@2 [d4,b4] ~ [e4,c5]@2 [d4,b4]@2 [c4,a4]@2",
  R: "b3@2 [a3,f#4]@2 [b3,g4]@9 ~@3, g4 ~@15", // D Em
  S: "[~@12 [g3,g4]@8 [f#3,f#4]@4 [f3,f4]@11 ~ [g3,g4]@3 ~ [a3,a4]@3 ~ [b3,b4]@4]/3", T: "[c4,c5]@13 ~@3",
  U: "[~@4 [g3,e4]@4 [a3,e4]@10 ~@2 [e4,c5]@3 ~ [d4,b4]@3 ~ [c4,a4]@3 ~]/2", V: "[b3,g4] ~@7",
  W: "~@8 [b3,b4] [c4,c5] [b3,c4,b4,c5] [b3,b4] [c4,c5] [b3,b4] [b3,c4,b4,c5] [c4,c5]", // B C Cmaj7 B C B Cmaj7 C
  X: "[b3,b4] [c4,c5] [b3,b4] [b3,c4,b4,c5] ~ [b3,c4,b4,c5] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [b3,c4,b4,c5] [c4,c5] [b3,b4] [c4,c5]", // B C B Cmaj7 C B C B …
  Y: "~ e4@2 ~@13, e3@3 ~@13", Z: "[[d4,d5]@4 [c4,c5]@4 [b3,b4] [c4,c5] [b3,b4] ~ a4@19 ~, ~@6 a3@7 ~@3]/2",
  AA: "[[b3,g4]@3 ~ [g3,e4]@4 f#3@18 ~@6, ~ d4@2 ~]/2", AB: "~@2 [b3,g4] ~@5 [b3,g4] ~@5 [b3,g4] ~",
  AC: "~@4 [b3,g4] ~@5 [b3,g4] ~@5", // Em
  AD: "[~@4 [a3,f#4]@2 b3 ~ c4@2 ~@2 c4@2 g4 ~@3 g3@2 [a3,f#4]@10 ~@2, ~@3 g4 ~ [d4,b4] ~ b3 a3 ~@7, ~@7 a4@2 ~@2 a4@2 ~@2 f#4@2 e4@2 ~@13]/2", // D G
  AE: "[c4,f#4] ~@6 f#4@4 ~ [c#4,a#4]@4, ~@7 c4 ~@8", // Cdim F#
  AF: "~@4 [b3,g4]@2 [c4,a4]@2 b4 ~ e4@2 [d4,b4]@2 [c4,a4]@2, ~@4 d4 ~@3, ~@9 c5@2 ~@5", // Em F G F
  AG: "[~@12 g3@6 [f#3,f#4]@4 ~ f3@12 ~ [g3,g4]@3 ~ [a3,a4]@3 ~ [b3,b4]@4, ~@12 g4@8 ~@2 f4@11 ~@15]/3", // F# G A B
  AH: "[c4@19 ~ [g3,e4]@4 [a3,e4]@10 ~@2 [e4,c5]@3 ~ [d4,b4]@3 ~ [c4,a4]@3 ~, c5@13 ~@35]/3", AI: "[b3,g4]@3 ~@13",
  AJ: "[b3,b4]@2 [b3,b4] ~@3 [b3,b4] ~ [b3,b4] ~@3 [b3,b4] ~ [b3,b4] ~", // B
  AK: "~@2 [b3,b4] ~ [b3,b4] ~@3 [b3,b4] ~ [b3,b4] ~@3 [b3,b4] ~", // B
  AL: "[[b3,b4] ~@3 [b3,b4] ~ [c4,c5] [b3,b4] ~ [b3,b4] ~ [a3,g4,a4] [g3,a3,a4] [g3,g4]@2 [f#3,f#4]@3 ~@2 [b2,b3]@33 ~@11, ~@4 [a3,a4] ~@27]/4", // B C B A7 Gsus2 G F# B …
  AM: "[[b3,b4]@2 ~ [b3,b4] ~@2 b4 b3 [b3,b4] ~@3 [b3,b4]@2 ~ [b3,b4]@2 ~ [b3,b4] ~ [b3,b4] ~@3 [b3,b4]@2 ~ [b3,b4] ~@2 [b3,b4] ~]/2", // B
  AN: "[b3,b4]@2 ~@2 [b3,b4] [c4,c5]@2 [b3,b4] [a3,a4]@2 [b3,b4] [a3,a4] [g3,g4] [a3,a4] [g3,g4] ~", // B C B A B A G A …
  AO: "[[f#3,f#4]@29 ~@3]/2", AP: "[g#3,e4]/3",
  AQ: "[[d4,d5]@4 [c4,c5]@4 [b3,b4] [c4,c5] [b3,b4] ~ a4@19 ~, ~@3 a3@4 ~]/2", // D C B C B
  AR: "[[c4,c5]@19 ~ [g3,e4]@4 [a3,e4]@10 ~@2 [e4,c5]@3 ~ [d4,b4]@3 ~ [c4,a4]@3 ~]/3", // C A5 C G F
  AS: "[g3,g4] ~@3 [a3,a4]@2 ~@2 [b3,b4] [c4,c5] [b3,c4,b4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4]", // G A B C Cmaj7 B C B …
  AT: "[b3,c4,b4,c5] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [b3,c4,b4,c5] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4]", // Cmaj7 C B C B C B Cmaj7 …
  AU: "[b3,c4,b4,c5] ~@15", AV: "~@3 [e4,b4]@3 ~ [b3,g4] [e4,b4]@2 ~@2 [g4,b4]@3 ~",
  AW: "[f#4,a4]@4 [e4,g4]@2 ~@5 [e4,c#5]@3 ~ [c#4,a4]", AX: "[e4,c#5]@2 ~@2 [g4,e5]@3 ~ [f#4,d5]@3 ~ [e4,c#5]@3 ~",
  AY: "~@2 [e4,b4]@4 [b3,g4] ~ [e4,b4]@3 ~ [g4,b4]@3 ~", AZ: "[f#4,a4]@2 [e4,g4] ~ [e4,b4] ~@3",
  BA: "[b3,b4]@2 ~@2 [e4,e5] ~@3 [e3,e4]@2 ~@6", // B E
})).s("gm_brass_section").gain(0.51)

// chords · piano · Bsus4
const piano = note("<~ [[b4,e5,f#5,b5] ~@3 [b4,e5,f#5,b5] ~@3 [b4,e5,f#5,b5] ~@3 [b4,e5,f#5,b5] ~@3]!6 ~@153>")
  .s("gm_piano").gain(0.51)

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

// drums · rim
const rim = s("rim").struct("<[~ x!3] ~@159>").gain(0.51)

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

// drums · low tom
const low_tom = s("lt").struct("<~@30 A ~@23 A ~@23 A ~@23 A ~@23 A ~@33>".pickRestart({
  A: "~@4 x!2 ~ x ~@8",
})).gain(0.51)

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

// … 38 more lines

More by Tom Jones