Strudelify
Only Sixteen cover art

1976 · With Love

Only Sixteen

Dr. Hook

KeyF majorTempo110 bpm
0:00/0:00
// Only Sixteen — Dr. Hook
// 110 bpm, 4/4, key F major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 bass finger
const bass = note(`<
  ~@4 A B@2 C D E F G H I J K L F M N O P F Q R S T U V W X Y Z AA AB AC N AD AB B AE AA AB B AF W AG B AH AI AJ AK AL
  AI W AM AN AO AD AB B AF W AP B AQ W AR AS AT AU AV AW@2
>`.pickRestart({
  A: "g1", B: "c2 d2", C: "g1@3 d2", D: "g1@16 e2@13 ~@3", E: "c2@11 ~@5 d2@10 ~@2 b1@3 ~", F: "c2@7 ~ d2@7 ~",
  G: "g1@14 ~@2 d2@15 ~", H: "g1@13 ~@3 e2@13 ~@3", I: "c2@13 ~@3 d2@11 ~ b1@3 ~", J: "c2@7 ~ d2@6 ~@2",
  K: "g1@15 g2@4 ~ e2@2 ~ d2@4 ~ b1@2 ~@2", L: "g1@7 ~ e2@7 ~", M: "c2@14 ~@2 d2@13 ~@3", N: "g1@15 ~ d2@13 ~@3",
  O: "g1@15 ~ e2@15 ~", P: "c2@14 ~@2 d2@11 ~@2 b1@2 ~", Q: "g1@6 ~@2 g1@6 ~@2 a1@6 ~@2 b1@7 ~",
  R: "a1@10 ~@3 a1@2 ~ d2@14 ~@2", S: "g1@15 ~ d2@14 ~@2", T: "a1@15 ~ d2@15 ~", U: "g1@7 ~ a1@3 ~ b1@3 ~",
  V: "a1@15 ~ d2@14 ~@2", W: "g1 e2", X: "a1@15 ~", Y: "d2@15 ~", Z: "~@4 d2@2 ~@2 c2@8 b1@7 ~ a1@6 ~@2",
  AA: "g1@16 e2@15 ~", AB: "c2@16 d2@12 b1@3 ~", AC: "c2@16 d2@15 ~", AD: "g1@15 ~ e2@16",
  AE: "g1@15 g2@5 e2@3 d2@5 b1@3 ~", AF: "g1 d2", AG: "c2@8 d2@4 b1@3 ~", AH: "g1@14 ~@2 a1@6 ~@2 b1@7 ~", AI: "a1 d2",
  AJ: "g1@7 ~", AK: "a1@15 ~ d2@16", AL: "g1@2 b1 g1", AM: "a1", AN: "d2@27 ~@2 d2 ~@2",
  AO: "~@5 d2@2 ~ c2@8 b1@8 a1@7 ~", AP: "c2@15 ~ d2@13 b1@3", AQ: "g1@25 ~@7", AR: "c2@15 ~ d2@12 b1@3 ~",
  AS: "c2@31 ~", AT: "d2@31 ~", AU: "g1@20 a1@3 b1@9", AV: "c2", AW: "[g1@5 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.39)

// chords · vibraphone
const vibraphone = note(`<
  ~@15 A@2 B C@3 D E@3 F G H I H J ~ K@3 L@4 M@8 N O P@2 Q@3 R S@4 T U V@3 W@5 ~@5
>`.pickRestart({
  A: "[~@31 [d4,g4]@28 ~@5]/2", B: "~@16 [d4,gb4]@15 ~", C: "[g4@14 ~@7 [g4,b4]@9 ~@2, e4 ~@2]/3", D: "[g4,c5]@15 ~",
  E: "[c5@16 ~@16 [g4,b4]@26 ~@5 [a4,c5]@13 ~@4 [a4,d5]@13 ~@3, ~@16 d5@41 ~@39]/3", F: "[g4,b4]@13 ~@3",
  G: "[a4,c5]@3 ~ [a4,d5]@3 ~", H: "[b4,d5]@13 ~@3", I: "[a4,c5]@13 ~@3 [a4,d5]@13 ~@3", J: "[a4,db5]@31 ~",
  K: "[~@31 b4@32 ~ c5@30 ~@2, ~@21 g4@10 ~]/3",
  L: "[[g4,c5]@26 ~@6 b4@26 ~@5 g4@28 ~@4 [g4,c5]@29 ~@4, ~@31 g4@27 ~@70]/4", // C5
  M: "[c5@31 b4@28 ~@4 g4@27 ~@5 [g4,c5]@28 ~@4 [g4,c5]@25 ~@7 [b4,d5]@26 ~@6 [g4,b4]@28 ~@4 [g4,c5]@28 ~@5, g4@7 ~@57]/8", // C5 Bm G C5
  N: "[g4,c5]@3 ~", O: "~ g4@3 a4@2 b4@2", P: "[c5@16 d5@15 b4@33]/2",
  Q: "[c5@15 [a4,d5]@16 [g4,b4]@27 ~@5 [a4,c5]@14 ~@3 [a4,d5]@12 ~@4]/3", R: "[g4,b4]@27 ~@5",
  S: "[a4@27 ~@4 [a4,d5]@40 ~@25 b4@27 ~@5, ~@95 g4@27 ~@6]/4", T: "[g4,c5]@7 ~", U: "[g4,c5]@27 ~@5",
  V: "[[g4,b4]@28 ~@3 [g4,b4]@28 ~@5 c5@28 ~@4, ~@63 g4@28 ~@5]/3", // G
  W: "[[g4,c5]@29 ~@2 [g4,b4]@28 ~@4 [g4,b4]@29 ~@3 [g4,c5]@29 ~@3 [g4,c5]@30 ~@3]/5", // C5 G C5
})).s("gm_vibraphone").gain(0.31).pan(0.1)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@4 A@2 B C@2 D E@3 F G@3 H I@3 J K L M N O P M Q@3 R@3 S@3 T U@3 V W@3 X Y@2 Z AA@4 AB@6 AC@3 AD AE@4 AF AG@3 AH ~
>`.pickRestart({
  A: "[~@32 c4@7 ~ [e3,g3,c4] ~@8 a3@6 ~ [d3,gb3,a3] ~@7, ~@31 g3@8 ~@9 d3@7 ~@9]/2", // C D
  B: "[e3,g3,c4]@6 ~@2 [e3,g3,c4] ~@7 [gb3,a3]@7 ~ [d3,gb3,a3] ~@4 a3 ~@2", // C Gbm D
  C: "[[g3,b3]@7 ~ [d3,g3,b3] ~@7 b3@4 ~ e3@3 [d3,b3] ~@7 g3@6 ~@2 [d3,g3,b3] ~@7 [g3,b3]@7 ~ [e3,g3,b3] ~@7, ~@29 d3@9 ~@26]/2", // G Em
  D: "g3@7 ~ [e3,g3,c4] ~@15 [d3,gb3,a3] ~@7", // C D
  E: "[c4@7 ~ [e3,g3,c4]@2 ~@6 a3@6 ~@2 [d3,gb3,a3] ~@7 [g3,b3]@7 ~ [d3,g3,b3] ~@12 [e3,c4]@2 ~ [d3,g3,b3] ~@4 d3@8 ~@3 [d3,g3,b3] ~@6 [g3,b3]@6 ~@3 [e3,g3,b3] ~@7, ~@14 d3@8 ~@7 d3@9 ~@58]/3", // C D G C G Em
  F: "[g3,c4]@8 ~ [e3,g3,c4] ~@6 a3@6 ~@2 [d3,gb3,a3] ~@7, ~@13 d3@9 ~@10", // C5 C D
  G: "[[g3,c4]@7 ~ [e3,g3,c4] ~@7 d3@6 ~@2 [d3,gb3,a3] ~@7 b3@6 ~ [d3,g3,b3] ~@7 g3@5 [e3,c4]@3 [d3,g3,b3] ~@8 g3@6 ~@2 [d3,g3,b3] ~@15 [e3,g3,b3] ~@7, ~@28 d3@10 ~@23 d3@9 ~@26, ~@31 g3@7 ~@25 b3@6 ~@27]/3", // C5 C D G C G Em
  H: "[g3,c4]@6 ~@2 [e3,g3,c4] ~@7 [d3,gb3,a3]@5 ~@3 [d3,gb3,a3] ~@7", // C5 C D
  I: "[g3@6 ~@2 [e3,g3,c4] ~@7 [d3,gb3,a3]@6 ~ gb3 [d3,a3] ~@3 d3@2 ~ [g3,b3]@6 ~@2 [d3,g3,b3] ~@4 d3@6 ~@3 [e3,c4]@2 ~ [d3,g3,b3] ~@7 [g3,b3]@6 ~ d3 [g3,b3] ~@3 d3 ~@2 g3@6 ~@3 [e3,g3,b3] ~@7, ~@61 d3@8 ~@27]/3", // C D D5 G C G Em
  J: "[g3,c4]@6 ~@2 [e3,g3,c4] ~@7 [d3,a3]@6 ~@2 [d3,gb3,a3] ~@4 d3@2 ~", // C5 C D5 D
  K: "[e3,g3,c4]@7 ~ [e3,g3,c4] ~@7 [gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 d3@2 ~", // C Gbm D
  L: "[g3,b3]@6 ~@2 [d3,g3,b3] ~@4 [d3,g3,b3] ~@2 [e3,g3,c4]@6 ~@2 [d3,g3,b3]@7 ~", // G C G
  M: "[e3,g3,c4]@7 ~ [e3,g3,c4] ~@7 [d3,gb3,a3]@7 ~ [d3,gb3,a3] ~@4 d3@2 ~", // C D
  N: "[g3,b3]@6 ~@2 [d3,g3,b3] ~@4 d3 ~@2 [e3,g3,b3]@6 ~@2 [e3,g3,b3] ~@4 e3@2 ~", // G Em
  O: "[e3,g3,c4]@6 ~@2 [e3,g3,c4] ~@4 g3 ~@2 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 d3 ~@2", // C D
  P: "[g3,b3]@6 ~@2 [d3,g3,b3] ~@4 b3@2 ~ [e3,c4]@7 ~ [d3,g3,b3]@6 ~@2, ~@13 g3@9 ~@10, ~@13 d3 ~@18", // G C G
  Q: "[[d3,g3,b3]@5 ~@3 [d3,gb3,a3]@6 ~@2 [e3,g3,b3]@7 ~@6 [g3,b3]@2 ~ [a3,db4]@24 ~@9 a3@31, ~@8 e3@11 ~@2 d3@11, ~@2 gb3]/3", // G D Em G A
  R: "[~@7 e3@8 gb3@9 ~@7 [g3,b3]@7 ~@2 [g3,b3] ~@6 [e3,g3,b3]@7 ~@2 [e3,g3,b3] ~@7 c4@7 ~ [e3,g3,c4] ~@7 a3@7 ~ [d3,gb3,a3] ~@7, ~@5 d3@4 ~@15 d3@15 ~@24 g3@7 ~@7 d3@9 ~@10]/3", // G Em C D
  S: "[[g3,c4]@7 ~ [e3,g3,c4] ~@7 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@7 [g3,b3]@6 ~ d3 [g3,b3] ~@7 [g3,b3]@4 ~ [e3,g3,c4]@2 ~ [d3,g3,b3] ~@7 [g3,b3]@6 ~@2 [d3,g3,b3] ~@4 d3 ~ [g3,b3]@6 ~@3 [e3,g3,b3] ~@7, ~@29 d3@9 ~@7 d3@6 ~@10 d3@8 ~@27]/3", // C5 C D G C G Em
  T: "[g3,c4]@7 ~ [e3,g3,c4] ~@15 [d3,gb3,a3] ~@7", // C5 C D
  U: "[g3@6 ~@2 [e3,g3,c4] ~@7 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@6 [g3,b3]@7 ~@2 [d3,g3,b3] ~@4 d3 ~@2 [e3,g3,c4] ~@2 [d3,g3,b3] ~ d3 [g3,b3] ~ [e3,g3,c4] ~@2 [d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3]@7 ~ [d3,g3,b3] ~@5 b3 ~@2 e3@7 ~ [e3,g3,b3] ~@5 e3@2, ~@28 d3@9 ~@42 [g3,b3]@7 ~@10]/3", // C D G C G C G Em …
  V: "[g3,c4]@7 ~ [e3,g3,c4] ~@5 g3@2 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 [d3,gb3,a3] ~@2", // C5 C D
  W: "[[e3,g3,c4]@7 ~ [e3,g3,c4] ~@4 [e3,c4] ~@2 [d3,gb3,a3]@7 ~ [d3,gb3,a3] ~@7 [g3,b3]@6 ~@2 [d3,g3,b3] ~@4 [d3,g3,b3] ~@2 [d3,g3,b3]@4 ~ [e3,g3,c4]@2 ~ [d3,g3,b3] ~@7 [g3,b3]@7 ~ [d3,g3,b3] ~@5 [g3,b3] ~ [g3,b3]@6 ~@2 e3 [g3,b3] ~@4 e3@2, ~@29 d3@9 ~@23 d3@9 ~@26]/3", // C D G C G
  X: "[g3,c4]@7 ~ [e3,g3,c4] ~@4 g3 c4 ~ [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 [d3,gb3] ~@2", // C5 C D
  Y: "[[e3,g3,c4]@6 ~@2 [e3,g3,c4] ~@4 [e3,g3,c4] ~@2 [d3,gb3,a3]@7 ~ [d3,gb3,a3] ~@7 [g3,b3]@7 ~ [d3,g3,b3] ~@4 [d3,g3,b3] ~@2 [e3,g3,c4]@6 ~@2 [d3,g3,b3]@5 ~@3, ~@29 d3@10 ~@25]/2", // C D G C G
  Z: "[e3,g3,c4]@8 [e3,g3,c4] ~@7 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 [d3,gb3,a3]@2 ~", // C D
  AA: "[[g3,b3]@6 ~@2 [d3,g3,b3] ~@4 d3 ~@2 [g3,b3]@6 ~ [d3,g3,b3] ~@7 [e3,g3,c4]@8 ~ [e3,g3,c4] ~@4 c4 ~@2 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 [gb3,a3] ~@2 [g3,b3]@6 ~@2 [d3,g3,b3] ~@4 [d3,g3,b3] ~@2 [d3,b3]@4 ~ [e3,c4]@2 ~ [d3,g3,b3] ~@3 d3 ~@2 [e3,g3,c4]@7 ~@2 [e3,g3,c4] ~@7 [d3,gb3,a3]@7 ~ [d3,gb3,a3] ~@4 [d3,a3] ~@2, ~@61 d3@9 ~@10 g3@5 ~@43]/4", // G C D Gbm G C G C …
  AB: "[[d3,g3,b3]@5 ~@3 [d3,gb3,a3]@6 ~@2 [g3,b3]@8 ~@5 g3 ~@2 [a3,db4]@27 ~@6 a3@50 ~@13 [g3,b3]@7 ~ [g3,b3] ~@4 d3 ~@2 [e3,g3,b3]@7 ~ [e3,g3,b3] ~@7 [g3,c4]@7 ~ [e3,g3,c4] ~@5 c4 ~ [d3,gb3,a3]@7 ~ [d3,gb3,a3] ~@7, ~@16 e3@6 ~@2 e3@36 ~@3 d3@50 ~@7 d3@16 ~@22 e3@9 ~@25, ~@16 gb3@13 ~@19]/6", // G D G A G Em C5 C …
  AC: "[[e3,g3,c4]@7 ~ [e3,g3,c4] ~@4 g3 ~@2 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@7 [g3,b3]@7 d3 [g3,b3] ~@4 d3@2 ~ [g3,b3]@4 ~ [e3,g3,c4]@2 ~ [d3,g3,b3] ~@6 [g3,b3]@7 ~@2 [d3,g3,b3] ~@4 d3@2 ~ [e3,g3,b3]@6 ~@2 [e3,g3,b3] ~@4 e3@2 ~, ~@29 d3@9 ~@23 d3@9 ~@26]/3", // C D G C G Em
  AD: "[e3,g3,c4]@6 ~@2 [e3,g3,c4] ~@7 [d3,gb3,a3]@6 ~@2 [d3,gb3,a3] ~@4 d3 ~@2", // C D
  AE: "[[e3,g3,c4]@7 ~ [e3,g3,c4] ~@4 [e3,g3] c4 ~ [d3,gb3,a3]@7 ~ [d3,gb3,a3] ~@7 [g3,b3]@7 ~ [d3,g3,b3] ~@7 [g3,b3]@5 [e3,g3,c4]@2 ~ [d3,g3,b3] ~@6 [g3,b3]@7 ~@2 [d3,g3,b3] ~@3 d3 ~@2 [e3,g3,b3]@7 ~@2 [e3,g3,b3] ~@7 c4@7 ~ [e3,g3,c4] ~@7 [d3,gb3,a3]@7 ~ gb3@5 d3 ~@2, ~@29 d3@9 ~@7 d3@7 ~@9 d3@10 ~@24 g3@7 ~@18 a3@4 ~@4, ~@120 d3 ~@7]/4", // C Em D G C G Em C …
  AF: "e3@7 a2, a3", AG: "[gb3@7 ~ g3@6 ~@2 c4@7 ~, d3@21 ~@8 d3@32 g3@31 ~@4]/3", AH: "[g3,b3]",
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0.9)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@4 A@2 B@2 C@2 D E F G@2 H I J K@2 L M N O P O Q O R ~@4 S@3 ~ T@2 U V W X Y ~ Z AA ~@2 AB AC AD ~ AE ~@5 AF AG AH ~
  P ~@2 AI@2 ~@6
>`.pickRestart({
  A: "[~@31 e3@8 ~@6 [e3,c4]@2 ~ gb3@7 ~@6 [d3,gb3,a3]@2 ~]/2", // C D
  B: "[~@13 [e3,g3,c4] ~@2 d3@7 ~@6 d3@10 ~@14 c4@3 ~@8, ~@29 gb3@2 ~@14 d3@6 ~@13, ~@48 g3@9 ~@7]/2", // C
  C: "[b3@6 ~@7 e3@9 ~@10 c4@7 ~@6 d3@2 [d3,gb3,a3]@6 ~@7 e3@2 ~@2, ~@29 e3@9 ~@26]/2", D: "[e3,g3]@7 ~@9 gb3@6 ~@10",
  E: "~@16 g3@7 ~@9, ~@13 d3@6 ~@13, ~@4 b3 ~@3", F: "[g3,b3]@5 ~@7 e3@9 ~@7 e3@2 ~@2",
  G: "[e3@8 ~@8 gb3@6 ~@7 e3@9 ~@7 e3@2 ~ [gb3,a3]@6 ~@10]/2", H: "~@15 b3@4 ~@13, ~@12 d3@7 ~@13",
  I: "~@13 d3 ~@2 [e3,g3,b3]@5 ~@8 e3@2 ~", J: "e3@6 ~@6 e3@2 ~@15 d3 ~@2",
  K: "[[e3,c4]@6 ~@7 e3@2 ~@16 d3@6 ~@11 [g3,b3]@4 g3@2 ~@10]/2", L: "~@15 [e3,b3]@6 ~@8 e3@2 ~",
  M: "e3@6 ~@7 e3@2 ~ gb3@6 ~@10", N: "~@13 e3@2 ~@17", O: "d3@3 ~@13", P: "~@13 [e3,c4]@2 ~@17",
  Q: "~@13 [e3,c4] ~@18", R: "~@13 [e3,g3,c4] ~@18", S: "[~@7 d3 ~@21 e3@9 ~@10 gb3@7 ~@6 e3@10 ~@5 e3@2 ~@18]/3",
  T: "[~@15 e3@6 ~@8 e3@9 ~@7 e3@2 ~ [c3,d3,gb3] ~@2 [d3,a3]@2 ~@8 d3 ~@2]/2", U: "[e3,c4]@6 ~@7 [e3,g3]@2 ~@17",
  V: "~@14 [g3,b3] ~@17", W: "~@13 [d3,g3] ~@18", X: "e3@7 ~@6 e3 c4@2 ~@16", Y: "~@13 g3 ~@18",
  Z: "~@13 d3 ~@2 e3@6 ~@10", AA: "e3@7 ~@6 e3 ~@16 a3 ~", AB: "~@14 [e3,g3,c4] ~@17", AC: "d3@6 ~@9 d3@6 ~@7 d3 ~@3",
  AD: "~@13 [e3,g3] ~@18", AE: "~@13 [e3,g3,c4] ~@15 gb3 ~@2", AF: "~@14 [e3,g3] ~@14 [d3,gb3,a3] ~@2",
  AG: "~@13 e3 c4 ~@17", AH: "~@15 d3@4 ~@13", AI: "[~@29 e3@9 ~@6 e3@2 ~@15 e3 ~@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.9)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@24 A@5 B@6 C@4 D@8 E@6 F@3 ~ G@7 H@5 I J ~@3>".pickRestart({
  A: "[~@16 d4@13 ~@2 d4@29 ~@18 d4@14 ~@3 b4@26 ~@5 [a4,c5]@14 ~@3 [a4,d5]@13 ~@4, ~@15 g4@16 e4@7 ~@42, ~@63 a4@28 ~@69]/5", // Am D5
  B: "[~@15 [e4,g4,b4]@12 ~@4 [e4,a4,db5]@29 ~@3 a4@36 ~@28 [d4,g4]@15 ~ [e4,g4]@13 ~@2 [e4,g4,c5]@13 ~@3 gb4@15 ~@3, ~@31 [d4,gb4]@18 ~@47]/6", // Em A G5 Em C D
  C: "[[c4,e4]@13 ~@2 gb4@12 ~@4 [d4,g4]@27 ~@4 d4@15 ~@2 [e4,g4]@13 ~@3 [c4,e4,g4]@13 ~@3 gb4@13 ~@2 [c4,e4]@2, ~@61 g4@15 ~@52]/4", // C G5 Em C
  D: "[~@15 gb4@14 ~@2 d4@26 ~@5 [d4,g4,b4]@14 ~@3 [g4,b4]@13 ~@3 [e4,g4]@12 ~@3 [gb4,a4]@13 ~@3 [c4,e4,g4]@14 ~@3 [d4,gb4]@13 ~@3 [d4,g4]@25 ~@6 [b4,d5]@14 ~@3 g4@11 ~@4 [e4,g4,c5]@13 ~@4 gb4@15 ~@2, ~@14 d4@13 ~@3 g4@26 ~@22 e4@13 ~@3 c5@13 ~@82 d4@14 ~@3 [e4,b4,e5]@12 ~@38]/8", // G Em Gbm C D G5 Bm C …
  E: "[[c5,e5]@13 ~@2 d4@13 ~@2 [d4,b4]@26 ~@6 [e4,a4]@16 gb4@17 g4@28 ~@4 e4@13 ~@2 [d4,gb4]@16 ~ [d4,g4]@27 ~@5 e4, ~@14 d5@39 ~@73 a4@15 ~@51, ~@14 [gb4,a4]@14 ~@2 g4@29 ~@19 d4@45 ~@69]/6", // C G A5 D G5 Gbm
  F: "[~@31 g4@30 ~@2 e4@32 ~, ~@8 d4@17 ~@23]/3",
  G: "[~@47 e4@29 ~@3 d4@14 ~@2 [c4,e4]@15 ~@2 [d4,gb4]@14 [d4,g4]@26 ~@6 [d4,g4,b4]@14 ~@3 [e4,g4,b4]@12 ~@4 [e4,g4,c5]@13 ~@3 [d4,gb4]@12 ~@3 [c4,e4]@2, ~@15 d4@7 ~@90, ~@31 g4@45 ~@148]/7", // C D G5 G Em C D C
  H: "[~@15 gb4@12 ~@3 [d4,g4]@25 ~@8 b4@15 ~ [e4,g4,b4]@12 ~@3 [e4,g4]@13 ~@4 d4@12 ~@4 e4@26 ~@7, ~@62 [d4,g4]@15 ~@33 [gb4,a4]@13 ~@4 c4@17 ~@16]/5", // G5 Em G5 Gbm
  I: "~@2 d4@23 ~@7", J: "g3@27 ~@5",
})).s("gm_string_ensemble_2").gain(0.1).pan(0.7)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note(`<
  ~@24 A ~ B@4 C@3 ~ D E ~@2 F ~@3 G ~ H@3 I ~@4 J@2 ~ K@2 ~ L@3 ~@3 M ~ N@2 ~@6
>`.pickRestart({
  A: "~@4 [e4,a4]@11 ~@17", B: "[~@31 [d4,g4]@26 ~@5 e4@15 ~@18 b4@15 ~@18, ~@47 [d4,g4]@8 ~@9]/4",
  C: "[~@30 d5@37 ~@29]/3", D: "~@14 [d4,a4]@15 ~@3", E: "~@15 d4@12 ~@5", F: "~@15 d4@13 ~@4, ~@15 g4@3 ~@14",
  G: "~@14 d4@13 ~@5", H: "[~@30 g4@15 ~@17 e5@13 ~@4 [d4,a4,d5]@15 ~@2]/3", I: "[e4,g4]@13 ~@19",
  J: "[~@31 a4@15 ~ gb4@17]/2", K: "[~@15 gb4@7 ~@10]/2", L: "[~@30 c5@15 ~@2 [gb4,a4]@14 ~@2 g4@16 ~@17]/3",
  M: "~@15 d4@11 ~@6", N: "[~@30 c5@13 ~@21]/2",
})).s("gm_string_ensemble_2").gain(0.05).pan(0.7)

// chords · piano
const piano = note(`<
  ~ A B ~ C D E ~ F G H I@2 J K@7 L M@2 N O P Q R S T@2 U@3 V@3 W@3 X Y@3 Z AA@3 AB@2 AC@3 AD@3 AE@2 AF@2 AG AH@6 AI
  AJ@3 AK@2
>`.pickRestart({
  A: "~@2 g4@13 ~@3 gb4@14, ~@16 d4@13 ~@3", B: "c4@6 ~@3 gb4@7", C: "~@2 g4@25 ~@5, d4@27 ~@5",
  D: "~@8 e5@7 ~@9 d5@7 ~, e4@13 ~@19", E: "~@8 c5@7 ~@17", F: "[g4,d5]@5 e5@2 d5 ~@4 [g4,b4]@12 ~@5 a4@3",
  G: "g4@4 a4@3 ~@2 g4 ~ b4@4 a4@17, ~@5 a4 ~@10", H: "~@8 g4 ~@3 g4@7 ~ g4@2 a4@10",
  I: "[b4@2 d5@2 b4@22 ~@3 e5@2 d5@6 e5@2 d5 ~@4 b4@13 ~@4 a4@3]/2",
  J: "g4@5 a4@2 ~@4 g4 b4@4 a4@13 gb4@2 ~, ~@11 a4@2 ~@19",
  K: "[g4@10 ~@3 g4@8 ~@2 g4@4 ~ g4@15 ~@10 [g3,d4] ~@7 [g3,d4]@8 e4@3 [g3,d4]@3 ~@2 [g3,b3]@12 ~@4 a3@2 g3@5 a3@3 b3@5 a3@17 gb3@2 g3@11 ~@3 g3@6 ~ g3@3 a3@8 b3@2 ~@2 b3@17 d4@3 e4@5 d4 ~@2 d4@6 ~@2 d4@5 b3@17 a3@3, ~@21 e4@4 ~@137 d4@2 ~@33 e4@4 ~@23]/7", // G5 G
  L: "g3@3 a3@3 b3@2 a3@8", M: "[~@8 g3@2 ~@3 g3@11 e3@2 g3@2 ~ g3@23 ~ g3@7 ~@4]/2",
  N: "a3@2 ~@3 a3@5 ~@6 e4@16, ~@3 a3@5", O: "d4@6 ~@10 b3@7 ~@4 b3@2 ~ g3@2, ~@3 e4@5 ~@8, ~@12 d4@10 ~@7 a3@2 ~",
  P: "a3@11 ~@3 a3@2 g4@4 gb4@7 e4@5", Q: "d4@21 g3@3 a3@5 b3@3", R: "a3 ~@4 a3@5 ~ a3@2 ~@3 [a3,e4]@15 ~",
  S: "d4@5 ~ e4@5 d4@5 b3@13 ~@3", T: "[~ e4 ~@4 e4 ~@5 e4@2 ~@8 a3@4 ~ a3@2 b3@2 a3@32 ~, ~@17 e4@10 ~@37]/2",
  U: "[~@23 [g4,d5]@7 d5@6 ~@8 b4@13 ~@4 a4@2 g4@5 ~ a4@2 ~@5 b4@4 a4@16, ~@30 g4@27 ~@17 g4@2 ~@20, ~@36 e5@7 ~@53, ~@39 d5@18 ~@18 a4@2 ~@19]/3", // G5
  V: "[~@8 g4 ~@4 g4@9 ~@6 a4@2 b4@5 ~@3 b4@22 ~ e5@2 d5@5 e5@3 d5@5 b4@17 a4@3, ~@27 g4@2 ~@67]/3",
  W: "[g4@5 a4@3 ~@4 b4@4 a4@13 gb4@2 g4@10 ~@3 g4@8 ~@3 g4@4 ~ g4@22 ~@13 [d3,g3,b3,d4], ~@10 g4@2 ~@40 e4@5 ~@39, ~@11 a4@2 ~@83]/3", // G
  X: "~@5 [d3,g3,b3,d4]@9 ~@2 e4@2 ~@3 [e3,g3,b3,e4]@9 ~@2", // G Em
  Y: "[[g3,c4,e4] ~@4 [g3,c4,e4,g4]@3 ~@5 [a3,d4,gb4,a4]@2 ~@6 [a3,d4,gb4,a4]@2 ~@8 [c4,e4,g4]@6 ~@3 [g3,c4,e4,g4]@5 ~@3 [a3,d4,gb4,a4]@2 ~@3 [a3,d4,gb4,a4]@3 ~@5 [b3,d4,g4,b4]@14 ~@5 [b3,g4] ~@4 [a3,c4,e4] ~@2 [g3,b3,d4] ~@7, g4@2 ~@27 g3@8 ~@43 d4@2 ~@14]/3", // C D C D G Em Am G
  Z: "[g3,b3,d4] ~@5 [g3,b3,d4,g4]@8 ~@3 [g3,b3,e4] ~@4 [g3,b3,e4,g4]@7 ~@3, g4@2 ~@15 g4@2 ~@13", // G Em
  AA: "[[g3,c4,e4] ~@4 [g3,c4,e4,g4]@3 ~@5 [a3,d4,gb4,a4]@3 ~@5 [a3,d4,gb4,a4]@2 ~@8 [c4,g4]@6 ~@3 [g3,c4,e4,g4]@4 ~@4 [a3,d4,gb4,a4] ~@4 [a3,d4,gb4,a4]@2 ~@6 [g3,b3,d4,g4]@14 ~@10 g3@7 ~ g3@2 ~, g4@2 ~@27 g3@8 ~@59]/3", // C D C5 C D G
  AB: "[~@16 e4@15 d4@6 e4@6 d4@4 b3@10 ~@3 a3@2 g3@2, a3@19 ~@45]/2",
  AC: "[a3@15 g4@6 gb4@6 e4@4 d4@21 ~@3 a3@6 b3@2 a3@17 e4@16, ~@53 g3@4 ~@39]/3",
  AD: "[d4@6 ~@6 d4@4 b3@20 ~@9 e4 ~@2 e4@10 ~ a3@2 b3@2 a3@30 ~@3, ~@3 e4@5 ~@40]/3",
  AE: "[~@20 [g3,d4]@10 ~@7 e4@3 d4@5 [g3,b3]@15 ~@2 a3@2, ~@31 d4@6 ~@27, ~@32 g3@13 ~@19]/2", // G5 G
  AF: "[g3@6 a3@6 b3@4 a3@19 ~@5 g3 ~@4 g3@16 a3@3]/2", AG: "b3@2 ~@2 b3@17 e4@11, ~@3 d4@2 ~@27",
  AH: "[d4@5 e4@3 d4@4 b3@16 a3@3 g3@6 a3@6 b3@5 a3@20 ~@4 g3 ~@3 g3@8 e3@4 g3@4 g3@17 ~@10 d5@6 ~@2 d5@6 e5@2 d5@5 [g4,b4]@8 ~@3 a4@5 b4@3 g4@5 a4@3 b4@5 a4@15 ~@5, ~@119 g4@3 ~@5 g4@12 ~@9 g4@5 ~@39]/6", // G
  AI: "~@12 e5@2 d5 ~ g5 ~@3 [c5,g5]@8 ~@4, ~@11 d5@2 ~@19", // C5
  AJ: "[[c5,d5,g5,b5] ~@3 [d5,gb5,a5]@20 ~@8 [d5,g5]@24 ~@7 [c5,g5]@14 ~@2 e5@4 ~@2 d5@7 b4@2 ~@2, ~@31 b4@24 ~@41]/3", // G D G5 C5
  AK: "[~ [b4,d5]@3 [g4,b4,e5]@33 ~@27, g4 ~@15]/2", // Bm Em
})).s("gm_piano").gain(0.55).pan(0.3)

// chords · piano · soft notes
const piano_soft = note("<A B C@2 D E@2 F G ~@25 H ~ I ~@4 J ~@4 K@2 ~@2 L ~@20 M ~@2>".pickRestart({
  A: "~@4 d5@9 ~@3, d4@25 ~@7, ~ g4@11 ~@4, ~@5 b4@20 ~@7", B: "~@8 e5@11 ~@5 d5@8, e4@7 ~@9, ~@5 c5@11 ~@5 a4@11",
  C: "[~@8 c5@8 ~@24 d5@19 ~@5, ~@2 e4@13 ~ d4@13 ~@3 d4@27 ~@5, ~@5 g4@12 ~@4 a4@12 ~ g4@24 ~@6, ~@24 d5@12 ~ b4@21 ~@6]/2",
  D: "~@7 d5@20 ~@5, ~@5 b4@22 ~@5",
  E: "[~@5 c5@10 ~@6 a4@10 ~@6 g4@10 ~@8 d5@5 ~@4, ~@2 g4@13 d4@12 ~@4 c4@12 ~@4 d4@11 ~@6, ~@18 gb4@14 ~@2 e4@12 ~@4 gb4@11 ~@3, ~@53 a4@8 ~@3]/2",
  F: "~ d5@2 ~, d4@25 ~@7, ~ g4@11 ~@4, ~@5 b4@19 ~@8", G: "~@7 g4 ~@20 g4 ~@3", H: "~@5 g4 ~ a4 ~@24",
  I: "~@3 d5@3 ~@26", J: "~@16 [e3,g3,b3] ~@15", K: "[~@31 e4@5 ~@28]/2", L: "~@13 b3 ~@2", M: "~@15 c5@5 ~@12",
})).s("gm_piano").gain(0.31).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 A@20 B@6 ~@3 A@16 B@6 ~@3 A@14 C@2>".pickRestart({
  A: "x!2", B: "x!3 ~", C: "x",
})).gain(0.39)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A@7 ~@6 A ~@3 A ~@3 A ~@3 A@7 ~@3 A@9 ~ A@4 ~@2
>`.pickRestart({
  A: "~@3 x",
})).gain(0.39)

// drums · low tom
const low_tom = s("lt").struct("<~@72 [~@29 x ~ x] ~>").gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@24 A B A B A B ~@19 A B A B A B ~@19>".pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~",
  B: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@9",
})).gain(0.55)

// drums · open hat
const open_hat = s("oh").struct("<~@40 A ~@3 A ~@3 A ~ A ~ A ~@4 A ~@3 A ~@3 A ~ A ~@6>".pickRestart({
  A: "~@7 x",
})).gain(0.55)

// drums · ride
const ride = s("rd").struct("<~@41 A B@2 C B@3 C ~@9 D B@2 C B@3 C B C ~@6>".pickRestart({
  A: "x ~@7 x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2", B: "x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2",
  C: "x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2 x ~@7", D: "x ~@3 x ~@3 x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2",
// … 6 more lines

More by Dr. Hook