Strudelify

Soolaimon

Neil Diamond

KeyD majorTempo135 bpm
0:00/0:00
// Soolaimon — Neil Diamond
// 135 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 5 "Staff-5" french horn (copy of ch 1 "Staff-1" trombone); ch 6 "Staff-6" synth strings 1 (copy of ch 3 "Staff-3" piano)
// note: Full arrangement: all 119 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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.

// other · trombone · "Staff-1"
const trombone = note(`<
  ~@6 A@3 B C@2 D@2 E@3 ~ F G H@2 ~@3 I@3 J I@3 J K@3 L ~@2 M@8 N@8 O ~ P@3 Q@2 R S T@2 U@3 V@3 W@2 ~@2 X@8 Y@5 ~ Z@7
  AA@8 AB@3 AC@2 AD AE ~ AF@2 ~@4
>`.pickRestart({
  A: "[~@5 a4@10 d4@6 g4@10 a4@10 g4@3 f#4@11 ~@17]/3", B: "~@11 f#4@6 ~ f#4@2 ~ g4 f#4@2, ~@18 g4 ~@5",
  C: "[g4 f#4@2 g4 f#4@6 d4@3 e4@5 ~ b3@11 ~@18, ~@9 d4 ~@14]/2", D: "[~@7 f#4@3 e4@3 ~ f#4@28 ~@6]/2",
  E: "[~@21 a4@13 d4@3 g4@6 a4@13 g4@3 ~ f#4@11 ~]/3", F: "~@2 f#4@6 ~ g4 f#4@2 g4 f#4@2 g4 f#4@2 ~ f#4@5, ~@19 g4 ~@4",
  G: "~ d4@3 e4@5 d4@2 b3@11 ~@2", H: "[~@22 e4@6 ~ f#4@3 f#4@11 ~@5]/2",
  I: "[~@12 f#4@21 g4@6 f#4@6 d4@8 ~@7 f#4@3 f#4@6 f#4@3]/3", J: "f#4@6 ~@3 g4@6 f#4@3 d4@5 ~",
  K: "[~@12 f#4@21 g4@6 f#4@6 d4@8 ~@7 f#4@3 f#4@5 ~ f#4@3]/3", L: "f#4@5 ~@4 g4@6 f#4@3 d4@5 ~",
  M: "[d5!3 d5@3 ~ d5@3 ~ d5@3 ~ d5@2 d5!2 d5@3 ~ d5@3 ~ d5@3 ~ d5@2 d5!2 d5@3 ~ d5@3 ~ d5@3 ~ d5@2 d5!2 c#5@2 c#5!2 b4@2 b4!2 a4@3 ~@2]/8",
  N: "[d5@3 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@8 ~@4 d5@6 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@9 ~@3 d5@6 d5@3 d5@3 d5@8 ~@4 d5@9 ~@3 d5@8 ~@4 d5@6 d5@3 d5@6 b4@3 a4@30 a4@3]/8",
  O: "c#4@6 e4@5 ~@13", P: "[~@16 a4@10 d4@6 g4@10 a4@9 g4@3 ~ f#4@11 ~@6]/3",
  Q: "[~@22 f#4@6 g4 f#4@2 g4 f#4@2 ~ f#4@2 ~ g4 f#4@5 d4@3 ~, ~@35 g4 ~@12]/2", R: "e4@4 d4@2 b3@11 ~@7",
  S: "~@6 f#4 e4", T: "[f#4@7 ~@5]/2", U: "[~@7 a4@13 d4@3 g4@6 ~ a4@13 g4@3 f#4@11 ~@15]/3",
  V: "[~@13 f#4@6 g4 f#4@2 ~ f#4@2 ~ g4 f#4@2 g4 f#4@6 d4@3 e4@5 ~ b3@11 ~@16, ~@23 g4 ~@20 d4@2 ~@26]/3",
  W: "[~@9 e4@6 f#4@3 ~ f#4@11 ~@18]/2",
  X: "[~@23 f#4@21 g4@6 f#4@6 d4@8 ~@7 f#4@3 f#4@6 f#4@3 f#4@6 ~@3 g4@6 f#4@3 d4@5 ~@13 f#4@21 g4@6 f#4@6 d4@8 ~@7 f#4@3 f#4@6 f#4@3 f#4@6 ~@3 g4@4]/8",
  Y: "[~@2 f#4@3 d4@5 ~@13 f#4@21 g4@6 f#4@6 d4@8 ~@7 f#4@3 f#4@5 ~ f#4@3 f#4@5 ~@4 g4@6 f#4@3 d4@5 ~@14]/5",
  Z: "[~@11 d5@3 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@9 ~@3 d5@6 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@9 ~@3 d5@6 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@9 ~@3 d5@6 d5@3 d5@3 c#5@4]/7",
  AA: "[~@2 c#5@3 c#5@3 b4@6 b4@3 b4@3 a4@9 ~@6 d5@3 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@8 ~@4 d5@6 d5@3 d5@3 d5@9 ~@3 d5@9 ~@3 d5@9 ~@3 d5@6 d5@3 d5@3 d5@8 ~@4 d5@9 ~@3 d5@8 ~@4 d5@6 d5@3 d5@3 c#5@4]/8",
  AB: "[~@2 c#5@3 c#5@3 b4@6 b4@3 b4@3 a4@9 ~@6 d4@3 d4@3 d4@3 d4@14 ~@14]/3",
  AC: "[~@13 d4@3 ~ d4@3 d4@3 d4@17 ~@8]/2", AD: "~@19 d4@3 d4@2", AE: "~@2 d4@3 d4@17 ~@2",
  AF: "[~@3 d4@3 d4@4 d4@3 d4@30 ~@5]/2",
})).s("gm_trombone").gain(0.45)

// chords · piano · "Staff-3"
const piano = note(`<
  ~@4 A B C@5 D@6 E F@2 G@2 H I@2 J@3 K L@3 M N@3 K O P Q@8 R@6 S@3 T@6 U V W X@8 Y@3 Z@5 AA@8 AB AC@8 AD@7 AE@3 AF ~
  AG@2 AH@2 AI@2 AJ@3
>`.pickRestart({
  A: "~ [a4,d5]@23", B: "~ [a4,d5]@7", C: "[~@5 [a3,d4]@24 ~@2 [a3,d4]@24 ~@2 [a4,d5]@24 ~@2 [a3,d4]@24 ~@2 g3@11]/5",
  D: "[~@15 [g4,d5,g5]@24 ~@2 f#4@24 ~@2 [a4,d5]@24 ~@2 [a3,d4]@24 ~@2 [a3,d4]@24 ~]/6", E: "[a4,d5]",
  F: "[~ [a3,d4]@12 ~ g3@9 ~]/2", G: "[~@6 [g4,d5,g5]@24 ~@2 f#4@11 ~@5]/2", H: "~@10 a4@11 ~@3",
  I: "[~@2 d5 ~@3 a4 ~@2 d4 ~@2 [a3,e4]@22 ~@14]/2", // A5
  J: "[~@12 [a3,d4]@20 ~ [b3,d4]@6 [a3,d4]@5 ~ [f#3,a3]@8 ~ [b3,d4]@5 ~ [a3,d4]@3 [a3,d4]@5 ~ [a3,d4]@3]/3", // D5 Bm D5 F#m Bm D5
  K: "[a3,d4]@5 ~@4 [b3,d4]@6 [a3,d4]@3 [f#3,a3]@5 ~", // D5 Bm D5 F#m
  L: "[~@21 [a4,d5,f#5]@11 ~ [b3,d4]@6 [a3,d4]@5 ~ [f#3,a3]@8 ~ [g4,b4,d5]@5 ~ [a3,d4]@3 [a3,d4]@5 ~ [a3,d4]@3]/3", // D Bm D5 F#m G D5
  M: "[a3,d4]@5 ~@4 [b3,d4]@6 [a3,c#4]@3 [f#3,a3]@5 ~", // D5 Bm A F#m
  N: "[~@12 [a3,d4,f#4]@20 ~ [b3,d4,g4]@6 [a3,d4,f#4]@5 ~ [f#3,a3,d4]@8 ~ [d4,g4,b4,d5]@5 ~ [a3,d4]@3 [a3,d4]@5 ~ [a3,d4]@3]/3", // D G D G D5
  O: "~@12 a3@5 ~ a3@5 ~", P: "f#3@3 g3@3 g#3@3 a3@8 ~ a3@5 ~",
  Q: "[d4@3 d4@3 d4@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 d5@3 d5@3 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@6 d5@3 d5@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 c#4@3 c#4@3 [c#4,e4,a4]@6 c#5@3 c#5@3 [b3,d4,e4]@6 b3@3 b3@3 a3@8 ~@7]/8", // D G D A E7
  R: "[d4@3 d4@3 d4@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 d5@3 d5@3 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@6 d4@3 d4@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@3]/6", // D G D
  S: "[~@3 d4@3 d4@3 c#4@3 [a3,c#4,e4]@46 ~@14]/3", // A
  T: "[~@7 [a4,d5]@12 ~ [a3,d4]@12 ~ [a3,d4]@12 ~ [a4,d5]@12 ~ [a3,d4]@12 ~]/6", U: "g3@3 ~", V: "~ [g4,d5,g5]@23",
  W: "~ f#4@7",
  X: "[~@5 [a4,d5]@24 ~@2 [a3,d4]@24 ~@2 [a3,d4]@24 ~@2 [a4,d5]@24 ~@2 [a3,d4]@24 ~@2 g3@18 ~@8 [g4,d5,g5]@24 ~@2 f#4@5]/8", // D5 G5
  Y: "[~@21 a4@11 ~@5 d5 ~@2 a4 ~@2 d4 ~@3 [a3,e4]@22 ~@3]/3", // A5
  Z: "[~@23 [a3,d4]@20 ~ [b3,d4]@6 [a3,d4]@5 ~ [f#3,a3]@8 ~ [b3,d4]@5 ~ [a3,d4]@3 [a3,d4]@5 ~ [a3,d4]@3 [a3,d4]@5 ~@4 [b3,d4]@6 [a3,d4]@3 [f#3,a3]@5 ~@14]/5", // D5 Bm D5 F#m Bm D5 Bm D5 …
  AA: "[~@8 [a4,d5,f#5]@11 ~ [b3,d4]@6 [a3,d4]@5 ~ [f#3,a3]@8 ~ [g4,b4,d5]@5 ~ [a3,d4]@3 [a3,d4]@5 ~ [a3,d4]@3 [a3,d4]@5 ~@4 [b3,d4]@6 [a3,c#4]@3 [f#3,a3]@5 ~@13 [a3,d4,f#4]@20 ~ [b3,d4,g4]@6 [a3,d4,f#4]@5 ~ [f#3,a3,d4]@8 ~ [d4,g4,b4,d5]@5 ~ [a3,d4]@3 [a3,d4]@5 ~ [a3,d4]@3 [a3,d4]@5 ~@4 [b3,d4]@6 [a3,d4]@3 [f#3,a3]@5 ~@13 a3]/8", // D Bm D5 F#m G D5 Bm A …
  AB: "~@5 a3@5 ~ f#3@3 g3@3 g#3@3 a3@4",
  AC: "[~@5 a3@5 ~ d4@3 d4@3 d4@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 d5@3 d5@3 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@6 d5@3 d5@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 c#4@3 c#4@3 [c#4,e4,a4]@6 c#5@3 c#5@3 [b3,d4,e4]@6 b3@3 b3@3 a3@4]/8", // D G D A E7
  AD: "[~@11 d4@3 d4@3 d4@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 d5@3 d5@3 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@8 ~@4 [d4,g4,b4]@6 d4@3 d4@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 d4@3 d4@3 c#4@4]/7", // D G D
  AE: "[~@2 c#4@3 c#4@3 [b3,d4,e4]@6 b3@3 b3@3 a3@8 ~@7 d4@3 d4@3 d4@3 [d3,f#3,a3]@27 ~]/3", AF: "[a3,c4,d4,f#4]",
  AG: "[~@5 [b3,d4,e4,g4]@25 ~@18]/2", AH: "[~@13 [c4,d4,f#4,a4]@26 ~@9]/2",
  AI: "[~@21 [e3,g3,b3]@12 ~@2 [g3,b3,d4]@6 ~ [g4,b4,d5]@6]/2", // Em G
  AJ: "[~ [a4,d5,f#5]@12 ~@2 [d4,g4,b4]@6 ~ [g4,b4,d5]@6 ~ [a4,d5,f#5]@26 ~@17]/3", // D G D
})).s("gm_piano").gain(0.59)

// bass · acoustic bass · "Staff-4"
const bass = note(`<
  A@3 B C D E F G H@8 I@7 J K L M L@3 M L N L M L O P Q R S T U R V W Q R S T U R X@2 Y@7 B C D E F Z@8 AA@8 AB@5 AC@8
  AD@8 AE@4 AF@3 AG AH@2 AI AJ AK@3
>`.pickRestart({
  A: "[~@20 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~, ~@10 [a2,d3]@12 ~ [a2,d3]@12 ~]/3", // D5
  B: "d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@2, [a2,d3]", C: "~ d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3, ~ [a2,d3]@23",
  D: "d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2, ~ [a2,d3]@7", // D5
  E: "~@2 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3, ~@5 [a2,d3]@19", // D5
  F: "~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2, ~@7 [a2,d3]@17", // D5
  G: "~@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@2, ~@3 [a2,d3]@5", // D5
  H: "[~ d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3, ~@11 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~]/8", // D5
  I: "[d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 a2@4 a2 ~ a2@3 e2@3, [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~@7]/7", // D5
  J: "a2@4 a2 ~ a2@3 e2@3 a2@4 a2 ~ a2@3 e2@3", K: "a2@4 a2 ~ a2@3 e2@3 d2@3 d2@3 d2@3 d2@3", L: "d2!8",
  M: "d2!3 a1 d2!4", N: "a1 b1 d2 b1 d2!4", O: "d2@3 d2@3 f#2@3 g2@3 [a1,a2]@5 ~ [a1,a2]@5 ~",
  P: "[f#1,f#2]@3 [g1,g2]@3 [g#1,g#2]@3 [a1,b2]@8 ~ [a1,b2]@5 ~", Q: "~@4 [d2,a2]!2 [d2,b2] [d2,a2]",
  R: "[d2,a2]!2 [d2,b2] [d2,a2]!3 [d2,b2] [d2,a2]", S: "[d2,a2]!2 [d2,b2] [d2,d3] [g2,d3]!2 [g2,e3] [g2,d3]",
  T: "[g2,d3]!2 [g2,e3] [g2,d3]!3 [g2,e3] [g2,d3]", U: "[g2,d3]!2 [g2,e3] [g2,d3] [d2,a2]!2 [d2,b2] [d2,a2]",
  V: "[d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [a2,a3]@5 ~ [a2,a3]@5 ~", // D5 G D5 A
  W: "[f#2,f#3]@3 [g2,g3]@3 [g#2,g#3]@3 [a2,a3]@8 ~ [a2,a3]@5 ~", X: "[[d2,a2]!2 [d2,b2] [d2,a2] [a1,a2]@12]/2",
  Y: "[~@6 a2@3 e2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~, ~@6 [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~ [a2,d3]@12 ~]/7", // D5
  Z: "[~@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ a2, ~@9 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@2 [a2,d3]@24 ~@3]/8", // D5
  AA: "[~@3 a2 ~ a2@3 e2@3 a2@4 a2 ~ a2@3 e2@3 a2@4 a2 ~ a2@3 e2@3 a2@4 a2 ~ a2@3 e2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 a1@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 a1@3 d2]/8",
  AB: "[~@2 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 a1@3 b1@3 d2@3 b1@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 a1@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2]/5",
  AC: "[~@2 d2@3 d2@3 d2@3 d2@3 d2@3 f#2@3 g2@3 [a1,a2]@5 ~ [a1,a2]@5 ~ [f#1,f#2]@3 [g1,g2]@3 [g#1,g#2]@3 [a1,b2]@8 ~ [a1,b2]@5 ~@13 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]]/8", // A F# G G# Asus2 D5 G D5 …
  AD: "[~@2 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [a2,a3]@5 ~ [a2,a3]@5 ~ [f#2,f#3]@3 [g2,g3]@3 [g#2,g#3]@3 [a2,a3]@8 ~ [a2,a3]@5 ~@13 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,e3]@3 [g2,d3]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]]/8", // D5 G D5 G D5 A F# G …
  AE: "[~@2 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [d2,a2]@3 [d2,a2]@3 [d2,b2]@3 [d2,a2]@3 [a2,a3]@5 ~ [a2,a3]@5 ~ [f#2,f#3]@3 [g2,g3]@3 [g#2,g#3]@3 [a2,a3]@8 ~ [a2,a3]@5 ~@13 d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3]/4", // D5 G D5 G D5 A F# G …
  AF: "[d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 d2@3 ~ d2@3 d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 d2@2]/3",
  AG: "~@2 d2@3 d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@2",
  AH: "[~@2 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 ~]/2",
  AI: "d2@3 d2@3 ~ d2@3 d2@3 ~ d2@3 d2@3 ~ g2@3", AJ: "f#2@6 ~ d2@7 ~ b1@6 ~ b1@2",
  AK: "[~ [d2,d3]@12 ~@2 [g1,g2]@6 ~ [b1,b2]@6 ~ [d2,a2,d3]@26 ~@17]/3", // D G B D5
})).s("gm_acoustic_bass").gain(0.25)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A B C D E F G H I J K L M N O P Q R S T@31 U V W X Y Z AA AB AC A B C D E F G H I J K AD@32 L M AE AF AG AH AI AJ
  AA AK ~@2
>`.pickRestart({
  A: "~@3 x ~@9 x ~@2 x ~@7", B: "~@5 x ~@9 x ~@2 x ~@5", C: "~@7 x ~@9 x ~@2 x ~@3", D: "~@9 x ~@9 x ~@2 x ~",
  E: "~@11 x ~@9 x ~@2", F: "x ~@12 x ~@9 x", G: "~@2 x ~@12 x ~@8", H: "~ x ~@2 x ~@12 x ~@6",
  I: "~@3 x ~@2 x ~@12 x ~@4", J: "~@4 x ~@3 x ~@12 x ~@2", K: "~@6 x ~@3 x ~@12 x", L: "~@2 x!2 ~@2",
  M: "x ~@9 x ~@2 x ~@10", N: "~@2 x ~@9 x ~@2 x ~@8", O: "~@4 x ~@9 x ~@2 x ~@6", P: "~@6 x ~@9 x ~@2 x ~@4",
  Q: "~@8 x ~@9 x ~@2 x ~@2", R: "~@10 x ~@9 x ~@2 x", S: "~@4 x ~@2 x", T: "x ~@3 x ~@2 x", U: "x", V: "~@7 x ~@4",
  W: "x ~@2 x ~@12 x ~@7", X: "~@2 x ~@2 x ~@12 x ~@5", Y: "~@3 x ~@3 x ~@12 x ~@3", Z: "~@5 x ~@3 x ~@12 x ~",
  AA: "~@7 x ~@3 x ~@12", AB: "x ~@2 x!2 ~@3", AC: "~ x ~@9 x ~@2 x ~@9", AD: "~@8 x ~@2 x ~@11 x",
  AE: "~@2 x ~@10 x ~@2 x ~@7", AF: "~@5 x ~@10 x ~@2 x ~@4", AG: "~@8 x ~@10 x ~@2 x ~", AH: "~@13 x ~@9 x",
  AI: "~@3 x ~@13 x ~@6", AJ: "~@3 x ~@3 x ~@13 x ~@2", AK: "~ x ~@10 x ~@2 x ~@8",
})).gain(0.34)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B C D E F G H I J D E K L M N O P Q R@15 S R@7 S R@7 T U V M N O P F G H W X D E F G H I C Y Z@15 AA Z@7 AA Z@7
  AA E K AB I O AC AD AE AF AG AH ~
>`.pickRestart({
  A: "~@10 x ~@9 x ~@2 x", B: "x!3 ~@3 x ~@5", C: "~ x ~@12 x ~@9", D: "~@3 x ~@12 x ~@7", E: "~@5 x ~@12 x ~@5",
  F: "~@6 x ~@12 x ~@4", G: "~@8 x ~@12 x ~@2", H: "~@10 x ~@12 x", I: "~ x", J: "~ x ~@9 x ~@2 x ~ x!2 ~ x ~@4",
  K: "~@7 x ~@12 x ~@3", L: "~@9 x ~@12 x ~", M: "~@11 x ~@12", N: "x ~@12 x ~@10", O: "~@2 x ~@12 x ~@8",
  P: "~@4 x ~@12 x ~@6", Q: "~@2 x ~@3 x!2 ~ x!2 ~@7 x ~@5", R: "~ x ~ x", S: "~@3 x ~@2 x!2 ~ x!2 ~@7 x ~@5",
  T: "~@3 x ~@2 x!2 ~ x!2 ~@13", U: "~@5 x", V: "~@6 x ~@2 x ~ x ~ x!2 ~@7 x ~", W: "~@4 x ~@2 x",
  X: "~ x!2 ~ x ~ x ~@7 x ~@9", Y: "~@3 x ~@9 x ~@2 x ~ x!2 ~ x ~@2", Z: "~@5 x ~@11 x ~@6",
  AA: "~@5 x ~@8 x ~@2 x!2 ~ x!2 ~@2", AB: "~@9 x ~@13 x", AC: "~@3 x ~@6 x ~", AD: "~@5 x ~@6", AE: "x ~@6 x ~@4",
  AF: "~@2 x ~@6 x ~@2", AG: "~@8 x ~@10 x ~@2 x ~", AH: "x!3 ~@9",
})).gain(0.34)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@6 A B C D E F G H I J K L M N O P Q R S@14 T R S@6 T R S@6 T ~@2 U V W X Y Z AA AB ~ AC C D E F G AD AE AF AG@14 AH
  AF AG@6 AH AF AG@6 AH AF K L AI AJ AK AL AM AN AO ~@3
>`.pickRestart({
  A: "~@5 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", B: "~ x ~@5 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x",
  C: "~@3 x ~@5 x ~@2 x ~@3 x ~@2 x ~@2 x ~", D: "~ x ~@3 x ~@5 x ~@2 x ~@3 x ~@2 x ~@2",
  E: "x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@3 x", F: "~@2 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@2",
  G: "~ x ~@2 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x", H: "~ x!4 ~@3", I: "~@7 x", J: "x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@6 x",
  K: "~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@5", L: "x ~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@3",
  M: "~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~", N: "~@4 x ~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2",
  O: "x ~@5 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~", P: "~@2 x ~@5 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2", Q: "x!2 ~@4",
  R: "~@4 x!4", S: "x!3 ~ x!4", T: "x!3 ~@5", U: "~@16 x ~@2 x ~@2 x ~", V: "~@2 x ~@2 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2",
  W: "x ~@2 x ~@3 x ~@2 x ~@2 x ~@6 x ~@2 x", X: "~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@6 x ~",
  Y: "~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@6", Z: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@4",
  AA: "~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2", AB: "~@3 x ~@3 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x",
  AC: "~@7 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x", AD: "~@3 x ~@2 x ~@2 x ~@2 x ~@6 x ~@2 x ~",
  AE: "~ x ~@2 x ~@3 x ~@2 x ~@2 x ~@9", AF: "~@23 x", AG: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x",
  AH: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@6", AI: "~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@2 x ~@3 x",
  AJ: "~@5 x ~@3 x ~@2 x ~@3 x ~@2 x ~@2 x ~", AK: "~@2 x ~@5 x ~@3 x ~@2 x ~@3 x ~@2 x ~",
  AL: "~@2 x ~@3 x ~@6 x ~@2 x ~@3 x ~@2 x", AM: "~@3 x ~@2 x ~@3 x ~@6 x ~@2 x ~@3",
  AN: "x ~@2 x ~@3 x ~@2 x ~@3 x ~@6 x ~@2", AO: "x ~@3 x ~@2 x ~@3 x ~@3 x ~@2 x ~@5",
})).gain(0.34)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A B C D E F G ~ H I J ~ K L M N ~ O@15 ~ O@7 ~ O@7 ~@3 G P Q R S ~ T U ~ B C D E F G V ~ R@15 ~ R@7 ~ R@7 ~ I J ~
  U M O W V S ~@3
>`.pickRestart({
  A: "~ x ~@4", B: "~ x ~@2", C: "~ x ~", D: "~@5 x ~@6", E: "~ x", F: "~@7 x ~@4", G: "~@5 x ~@2", H: "~@19 x ~@4",
  I: "~@7 x", J: "~@23 x", K: "~ x ~@22", L: "~ x ~@6", M: "~@5 x ~@18", N: "~@7 x ~@16", O: "~@3 x ~@4", P: "~@2 x",
  Q: "~@3 x", R: "~@5 x", S: "~@11 x", T: "x", U: "~ x ~@10", V: "~@17 x ~@6", W: "~@13 x ~@10",
})).gain(0.34)

// drums · crash
const crash = s("cr").struct("<~@117 [~@5 x ~@18] ~>").gain(0.34)

stack(trombone, piano, bass, kick, snare, hihat, open_hat, crash)

More by Neil Diamond