Strudelify

Heartlight

Neil Diamond

KeyE majorTempo128 bpm
0:00/0:00
// Heartlight — Neil Diamond
// 128 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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.

// chords · acoustic guitar nylon · "Ac Guit"
const acoustic_guitar_nylon = note(`<
  A@2 B@3 C@4 D@2 E@2 F G H I J@2 C@4 D@2 E@2 F G H I J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@4 R@2 S T@2 U@2 C@4 D@2 E@2 F G H I
  J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@4 R@2 V W X Y Z AA AB AC@2 AD AE AF AG AH@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@4 R@2 A@2 AI@2
  AJ@5 ~@2
>`.pickRestart({
  A: "[~@5 d#4 ~@4 e4@2 ~ f#3 ~ f#3, a2@4 c#4@4 f#3@4 ~@2 e4@4 g#3@7 ~@3 d#4@4, ~@2 e3@4 b2@8 ~@2 e3@8 g#2@7 ~]/2",
  B: "[~@2 e3@2 ~@2 e3@2 ~@2 [f#3,d#4]@2 ~@8 e4@4 g#3@2 e4@3 ~@3 [c#4,e4]@15 ~, a2@6 ~@2 b2@5 ~@3 e3@14 b2@13 ~@5, ~@4 c#4@5 ~@5 [g#3,e4]@4 g#3@5 ~@8 a3@16 ~]/3", // D#m C#m
  C: "[~@10 b3@4 f#4@4 ~@4 b3@4 f#4@2 b3@2 ~@16 f#2@2 ~@12 b2@2 a3 ~, e3@14 ~@4 g#2@12 ~@2 f#2@13 ~@19, ~@4 b3@5 ~@11 d#3@9 ~@5 c#3@12 ~@2 b2@5 ~ b2@5 ~@5, ~@6 g#4@8 ~@16 e4@6 a3@5 ~ a3@7 ~ a3@5 ~ a3@4 ~@4, ~@38 e4@12 ~@2 e4@5 ~ e4@6]/4",
  D: "[~@10 g#4@3 ~@9 f#4@4 b3@2 f#4@2 b3@2, e3@4 g#4@4 b3@10 e3@11 ~@3, ~@2 b3@4 e3@10 g#2@13 ~@3, ~@14 f#4@5 ~ b3@5 ~@7]/2",
  E: "[~@3 a3 ~@11 a3, f#2@15 ~@17, ~@4 c#3@11 ~ b2@5 ~ b2@4 ~@2 b2@4, ~@8 e4@4 ~@2 e4@5 ~ e4@4 ~@2 e4@6, ~@10 a3@7 ~ a3@5 ~ a3@5 ~@3]/2",
  F: "~@3 d#4@2 g#3 ~ g#3, e2@3 ~, ~@2 g#3@3 ~ d#4@2",
  G: "~@3 e4@2 g#3 ~ g#3, c#3@7 ~, ~ g#3@3 ~@4, ~@2 b3@3 ~ [b3,e4]@2", // E5
  H: "~@3 e4@2 a3 b3 a3, f#2@15 ~, ~ a3@3 ~@4, ~@2 b3@3 ~@3",
  I: "~@3 e4@2 ~ b3 c#4, b2@15 ~, ~ a3@2 ~@2 a3@2 ~, ~@4 c#4@5 ~@7",
  J: "[~ a3 b3 e4@2 a3 ~@2 [b2,e4]@7 ~, b2@7 a3@8 ~, e4@2 ~@4 b3@9 ~]/2", // E5
  K: "[~@2 g#3@2 ~@2 g#3@4 [g#3,e4] ~ [f#3,d#4] ~ g#3@2 ~@10 g#3@2 ~@2 g#3@2, a2@15 ~ a2@8 a2@4 ~@4, e4@6 ~@8 e4@6 c#4@7 ~ c#4@4, ~@4 c#4@6 ~@8 g#3@7 ~@7, ~@11 e4@5]/2", // C#m D#m
  L: "[~ g#3 ~ g#3@2 ~@9 d#4 e3, e3@13 ~ e3@9 ~ e3@5 ~@3, ~@4 d#4@8 g#3@5 ~ g#3@7 ~ g#3@4 ~@2, ~@10 g#4@5 ~ f#4@13 ~@3, ~@10 d#4@3 ~@3]/2",
  M: "[~@3 e4@2 ~@2 f#3 ~@3 d#4@2 ~@2 b2, b2@7 ~ b2@6 d#4@2, ~@2 a3@7 ~ a3@8 f#3@11 ~@3, ~@12 e4@6 ~@2 a3@5 ~ a3@5 ~]/2",
  N: "[~@2 c#4 d#4 ~ c#4 ~@8 g#3@2, e3@7 ~ e3@5 ~ e3@4 c#4@4 g#3@6 ~@4, ~ g#3@3 ~@2 d#4@2 g#3@2 e3@3 g#2@2 ~, ~@3 d#4]/2",
  O: "[~@2 g#3@2 ~@2 g#3@3 ~ [g#3,e4] ~ [f#3,d#4]@2 ~@8 c#4@2 ~@2 g#3@2 b2@2 g#3 ~, a2@16 ~@2 a2@9 ~@5, ~@2 c#4@2 ~@3 [g#3,e4]@3 g#3@2 e4@4]/2", // C#m D#m C#m
  P: "[~@10 b3@2 f#4@2 ~@14 b3@2 c#3 ~, c#3@3 f#4@2 ~@2 f4@2 b3@4 ~@3, ~@4 b3@4 c#3@7 ~ c#3@6 d4@4 f4@4 ~@2, ~@24 c#3@5 ~@3]/2",
  Q: "[~@10 a3@2 ~@8 a3@2 ~@4 a3@2 ~@2 a3@2 ~@4 b3 ~@3 e4@8 a3@2 b3@2 ~@6 a3@3 ~ a3@2, f#3@16 e4@5 ~@7 e4@6 a3@13 ~@5 a3@5 ~@7, ~@2 a3@4 e4@6 ~@2 a3@4 f#3@13 ~ f#3@23 ~ b2@7 ~, ~@4 b3@6 ~@2 b3@8 ~@2 b3@13 ~@5 g#4@12 ~@2 [e4,g#4]@9 ~]/4", // E
  R: "[~@16 e3@8 ~@4 b3@3 ~, e3@8 e3@7 ~@9 g#2@7 ~, ~@4 g#3@5 ~ g#3@15 ~ g#3@5 ~, ~@6 [d#4,f#4]@7 ~ [d#4,f#4]@11 ~@7]/2", // D#m
  S: "~@12 e3@2 c#4 ~, a2@3 c#4@4 ~, ~@2 e3@8 g#3@5 ~, ~@4 g#3@4 a2@7 ~",
  T: "[~@2 b3@2 ~@2 b3@4 f#3@3 ~@7 a3@2 b3@4 a3@2 e3@2 a3@2, g#2@15 ~ f#2@15 ~, ~@4 f#3@5 ~@5 a3@4 e3@9 ~@5]/2",
  U: "[~@4 c#4@2 e4@4 ~@2 b3@2 ~@2 [b2,e4]@15 ~, b2@14 c#4@17 ~, ~@2 a3@6 ~@2 a3@21 ~]/2", // E5
  V: "~ g#3 ~@3 c#4@2 g#3, a2@15 ~, ~@4 c#4@5 ~@7, ~@6 g#3@7 ~@3",
  W: "~@5 g#3 ~ g#3, e2@7 ~, ~@2 g#3@6 b2@7 ~, ~@2 d#4@3 ~ d#4@2",
  X: "~ f#3 ~@5 b3, g#2@4 g#2@3 ~, ~ b3@2 ~, ~@3 f#3@3 f#3@2, ~@10 d#4@5 ~",
  Y: "~@5 e3 ~ e3, f#2@15 ~, ~@2 e3@7 ~@7, ~@4 a3@7 ~ a3@4, ~@3 c#4@5", Z: "~ a3 ~@5 b2, b2@3 a3@2 e4@3, ~ e4 b2 a3",
  AA: "~@2 e4@2 ~ e4@2 f#3, e2@15 ~, ~@2 g#3@5 ~ g#3@5 ~@3",
  AB: "~@5 b3 ~ b3, g#2@6 g#2@9 ~, ~@2 b3@6 d#4@7 ~, ~@4 f#3@5 ~@3 f#3@4",
  AC: "[~@5 a3 ~@7 a3 ~ a3, f#2@4 a3@4 c#4@10 e3@9 ~ e3@4, ~@2 e3@9 ~ e3@4 b2@5 ~ b2@10, ~@6 f#2@8 a3@5 ~ a3@4 c#4@7 ~]/2",
  AD: "~@2 g#3 ~ f#3 ~@2 f#3, e2@7 ~, ~@2 e3@4 b3@4 g#3@5 ~, ~@3 b3",
  AE: "~@3 d#4 ~ [g#3,e4]@2 b3, c#3@7 ~ c#3@8, ~@2 f#3@7 ~@7, ~@4 b3@5 ~@7", // C#m
  AF: "~@2 a3 ~@3 e3 f#2, f#2@13 ~@3, ~ e3@4 a3@2 ~, ~@6 c#4@7 ~@3", AG: "[a3,c#4]@7 ~ [b3,d#4]@7 ~, b2@15 ~",
  AH: "[[c#4,e4]@8 [d#4,f#4]@8 b3@7 ~@9, b2@3 ~]/2", // C#m D#m
  AI: "[~@2 e3@2 ~@2 e3@2 ~@2 [f#3,d#4]@2 ~@8 e4@4 g#3@2 e4@3 ~@3, a2@6 ~@2 b2@5 ~@3 e3@14 ~@2, ~@4 c#4@5 ~@5 [g#3,e4]@4 g#3@5 ~@9]/2", // D#m C#m
  AJ: "[~@10 [f#3,d#4]@20 ~@3 e4@43 ~@4, a2@4 c#4@5 ~@71, ~ e3@3 ~@12 [b2,g#3]@22 ~@2, ~@6 b2@24 ~ e2@45 ~@4]/5", // D#m E
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.2)

// bass · fretless bass · "El Bass"
const bass = note(`<
  ~@3 A B C D E F G H E I J@2 K L M B C D E F G H E I J@2 K L M N O P C Q R S T@2 O U V W X Y Z@2 AA@2 AB AC AD L B C D
  E F G H E I J@2 K L M N O P C Q R S T@2 O U V W X Y Z@2 AA@2 AE AF AG AD AH AF AI Y AJ AK@2 AD AL@2 AM O P C Q R S T@2
  O U V W X Y Z@2 AA@2 ~@3 A ~@2 AN@4 ~
>`.pickRestart({
  A: "e1", B: "b1@15 ~", C: "e2@7 b1", D: "g#1@7 g#1", E: "f#1@13 ~ f#1@2", F: "b1@13 ~ b1@2", G: "e2@6 b1 a1",
  H: "g#1@7 e1", I: "b1", J: "[e2@10 g#2@2 b2 ~ c#3@8 c#2@7 ~ c#2@2]/2", K: "f#2@6 g#1 a1", L: "b1@7 f#2",
  M: "b2@7 f#2", N: "b1@7 ~ c#2@2 e2@4 c#2 ~", O: "a1@5 f#2 e2 c#2", P: "a1@13 ~ b1@2", Q: "e2@5 g#1 c#2@2",
  R: "b1@7 b2", S: "b1@6 c#2 b1", T: "[e2@5 c#2 b1 e1@6 g#1@3]/2", U: "a1@6 b1 c2", V: "c#2@7 g#2", W: "c#3@8 c#2@7 ~",
  X: "f#2@7 c#2", Y: "f#1", Z: "[f#2@3 b1]/2", AA: "[e2@21 ~ e1@2 g#1@7 ~]/2", AB: "a1@13 ~ a1@2", AC: "g#1@13 ~ g#1@2",
  AD: "f#1@6 g#1 a1", AE: "a1@7 c#2", AF: "e1@7 f#1", AG: "g#1@7 c#2", AH: "b1@6 b1 c#2", AI: "g#1@11 ~ b1@2 c#2@2",
  AJ: "b1@5 ~ b1@5 ~ b1@4", AK: "[e1@5 g#1 b1 c#2@7 d#1 e1]/2", AL: "b1@7 f#1", AM: "b1@7 ~ c#2@2 e2 ~@3 c#2@2",
  AN: "[e1@21 e2@38 ~@5]/4",
})).s("gm_fretless_bass").gain(0.5)

// chords · epiano1 · "Rhodes"
const epiano1 = note(`<
  A@2 B@2 C D@3 E@4 F G@2 H I@2 J D@3 E@4 F G@2 H K L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@4 T@2 U@5 D@3 E@4 F G@2 H K L@2 M@2
  N@2 O@2 P@2 Q@2 R@2 S@4 T@2 V W@3 X Y Z AA AB AC AD AE AF@3 M@2 N@2 O@2 P@2 Q@2 R@2 S@4 T@2 A@2 AG@2 AH@2 AI@5
>`.pickRestart({
  A: "[~@2 e4 ~@2 [f#3,b3,d#4]@2 ~@8 e4, [a2,e3,a3,c#4]@3 [b2,e3,a3,c#4]@4 b3@4 b3@5, ~ d#4@2 ~@4 [g#3,e4]@5 e4@3 ~, ~@2 e2 g#2, ~@13 b4@3]/2", // B A C#m
  B: "[~@2 e4 f#3@2 ~@9 e4@2, [a2,a3,c#4]@3 [b2,e3,a3,c#4]@5 e2@5 b3@3, ~ d#4@2 ~@2 [f#3,b3,d#4]@3 b3@3 f#3@5, ~@7 e4@5 g#3@4, ~@4 g#3 b2@3]/2", // A B
  C: "[b2,e3,f#3,a3,c#4]", // F#m7
  D: "[e3@3 ~@5 g#3@3 ~@5 [f#2,e3,f#3,a3]@8, [e2,f#3,g#3,b3]@6 e4 f#4@6 d#4 b3 c#4@9, ~@3 e3@5 g#2@8 ~@8, ~ c#4 b3 e4 ~@2, ~@5 d#4@3 d#4@3 g#3@5 ~@8]/3", // F#m7 E
  E: "[[c#4,e4]@3 [e4,a4]@3 e4@2 ~@8 [f#3,g#3]@3 ~@5 [e3,f#3]@3 ~ a3@4, [b2,a3,b3]@12 c#4 d#4 e4 f#4@6 d#4 b3 c#4@9, ~@3 c#4@5 [e4,f#4]@3 e3@5 b3@4 e4@4 ~@3 [e3,f#3]@5, ~@6 [a4,c#5]@10 d#4@3 [f#3,g#3]@5 a3@4 ~@4, ~ [e2,g#4,b4] g#2 f#2]/4", // C#m A5 F#sus2 Esus2 B7 Esus2 A F#sus2 …
  F: "~@3 [a3,f#4], [b2,c#4,e4,a4]@15 ~, ~@6 [b3,g#4]@9 ~", // D A E
  G: "[b3@4 ~@2 f#4 ~@2 b4@2 ~@2 g#4@3, [e2,d#4,g#4]@7 [f#4,d#5]@9, ~@4 b3@3 b4@2 e5@7, ~ c#3, ~@9 g#4@2 b4@5]/2", // Emaj7 D#m
  H: "a3@6 ~ f#2, [b3,c#4,e4], f#2@7 ~, ~@3 a3", // C#m7
  I: "[a3@3 ~@5 b4@7 ~, b2@6 e4 f#4@8 ~, f#4@5 c#4@10 ~, e4@4 b3@11 ~, c#4@3 a3@12 ~]/2",
  J: "e4@8 [e4,a4,c#5]@7 ~, b2, [a3,b3,c#4]@13 ~@3", K: "[a3,c#4,f#4] [b3,d#4,g#4]",
  L: "[~@8 [b3,b4]@21 ~@3, [c#4,e4,a4]@29 ~@3]/2", // B A
  M: "[g#4@10 ~@2 [f#4,b4,d#5]@2 [e4,g#4]@10 [b3,c#4,e4,g#4]@7 ~, [a2,b3,c#4,e4]@14 [a2,c#5]@17 ~, ~@10 [g#4,c#5,e5]@5 ~@17]/2", // B E C#m7 A C#m
  N: "[~@6 [e4,c#5] ~@7 b4@2, e2, [b3,d#4]@7 d#4@4 g#4@5, f#4@5 [f#4,d#5]@2 b4@6 d#4@3, ~@3 g#3@4 ~@3 f#4@6]/2", // C#m B D#m
  O: "[~@8 a3@3 ~ b2@3 b2, [c#4,a4] ~, b2@7 b2@5 ~@4, e4@5 e4@3 d#4@8, ~@3 a3@5 ~@3 a3@5]/2", // F#m
  P: "[~@2 g#4@2 [c#4,f#4] ~ [d#4,g#4] ~@3 f#4@2 ~@2 e3@4 e3@4 e3@4 [g#2,b3,d#4,f#4]@5 ~, e3@13 ~@19, [g#3,d#4]@4 ~@6 c#4 ~ [d#4,g#4]@14 ~@6]/2", // F#5 G#5 G#m7 G#5
  Q: "[g#4@5 ~ [f#4,d#5] ~@7 b2@2, a2@5 a2@3, [b3,c#4,e4]@7 c#5@9, ~@5 [g#4,e5]@2 e4@6 [e4,g#4]@3]/2", // D#m C#m7 C#m E
  R: "[b3 ~ [b3,d4,f4,g#4]@2, c#4@7 c#3@9, c#3@3 f#4 ~@4, f#4@5 d#4@3 ~@8, d#4 b3 ~@2]/2", // Bdim
  S: "[~@23 f#2@5 [b2,a3,b3,c#4,e4]@4, f#2@4 [a3,b3,e4]@3 ~, [a3,b3]@11 b4@16 ~@5, g#4@4 e4@3 g#4@7 ~@2, e4@3 d#4@8 ~@5]/4", // A Asus2
  T: "[g#3@12 ~@8 b3@4 [g#2,f#3,b3,e4]@7 ~, [e2,f#4]@25 ~@7, [b3,d#4]@14 [d#4,g#4]@11 ~@7, ~@12 g#3@6 g#3@7 ~@7, ~@7 b3@3 ~@6]/2", // E Esus2 B G#5
  U: "[e3@6 ~@6 e4@2 ~@2 b3@6 ~@6 b3@2 ~@18 a3@4 ~@12 b4@15 ~, [a2,g#3]@14 f#4@16 ~@10 e3@16 c#4@4 f#4@19 ~, c#4@8 c#4@7 ~@7 b3@6 ~@2 c#4@14 f#3@14 e4@21 ~, ~@6 e3@9 ~@9 e4@6 ~@6 g#3@18 b3@25 ~, ~@10 d#4@5 ~ d#4@10 d#4@4 ~@2 a3@16 [b3,c#4,e4]@4 a3@27 ~]/5", // Amaj7 C#m7
  V: "c#4@4 ~ e4@3, [b3,g#4], e4@5 ~@3, ~ c#4", // E
  W: "[~@6 d#4 ~@7 b3 ~ a3@3 ~ c#4@4, f#4@14 b3@8 b3@4 d#4@5 ~ c#4@8 ~@8, d#4@6 ~ d#4@5 e4@3 e4@9, b3@10 b3@4 f#3@17 ~@7 a3@10, ~@6 g#3@9 ~ g#2@15 ~ f#2@16]/3",
  X: "a4@3 ~@3 [b3,e4,g#4]@2, c#5, e4@3 ~, b2@5 b2@3, ~@3 a4@5", Y: "[e3,g#3,b3,d#4]",
  Z: "~@3 d#4, g#2, d#4@3 ~, b3!2, ~@2 f#3@3 f#3@3", AA: "[f#2,e3,a3,c#4]",
  AB: "~@3 [a3,f#4], [b2,c#4,e4,a4], ~@3 [b3,g#4]@5", // D A E
  AC: "~@12 b3@2 [d#4,f#4] ~, [e3,g#4]@7 ~, b3@4 b3@2 ~ b3, ~@2 d#4@3 d#4@2 ~", // D#m E
  AD: "~@2 b3@4 ~@4 b3@5 ~, ~@2 g#4@13 ~, ~@2 e4@6 e4@7 ~, ~@3 b3@2 ~@3", AE: "[f#2,a3,c#4,e4]",
  AF: "[[a3,c#4,f#4]@8 [b3,d#4,g#4]@8 ~@8 b4@8 ~ b4@13 ~@2, b2@23 ~, ~@16 [c#4,e4,a4]@21 ~@11, ~@16 b3@7 ~]/3", // F#m G#m A
  AG: "[~@4 e4@2 f#3@4 ~@18 e4@3 ~, [a2,a3,c#4]@6 [b2,e3,a3,c#4]@10 e2@10 b3@5 ~, ~@2 d#4@4 ~@4 [f#3,b3,d#4]@6 b3@6 f#3@9 ~, ~@14 e4@10 g#3@7 ~, ~@16 g#3@4 b2@11 ~]/2", // A B
  AH: "[~@2 e4 [e3,a3,c#4]@2 [f#3,b3,d#4]@11, [a2,e3,a3,c#4]@3 b2@13, ~ d#4@2 ~@13]/2", // A B A
  AI: "[~@4 [g#4,e5]@3 ~, [e2,b2]@25 g#4@11 f#4@32 ~@12, ~ g#3@27 e4@32 ~@20, ~ e4@19 b3@32 ~@28, ~@17 f#4@15 b4@32 ~@16]/5", // C#m E5
})).s("gm_epiano1").gain(0.22).pan(0.8)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@19 A@3 B C@3 B D@2 E F@2 ~@8 G H@2 I J K@4 L@2 M N O P@2 A@3 B C@3 B D@2 E F@2 ~ Q@2 R@2 S T U@2 H@2 I J K@4 L@2 V W
  X Y S Z@2 Y AA AB AC Y AD AE@2 Q@2 R@2 S T U@2 H@2 I J K@4 L@2 ~@6 AF@4 ~
>`.pickRestart({
  A: "[[g#3,b3]@2 ~@6 c#3@2 d#3@2 e3@2 f#3@10 e3@2 d#3 ~ b2@2 c#3@18]/3", B: "[a3,e4]",
  C: "[[g#3,b3]@4 [c#3,c#4] [d#3,d#4] [e3,e4] [f#3,f#4]@5 [e3,e4] d#4 [b2,b3] [c#3,c#4]@9, ~@26 d#3 ~@21]/3", // G#m C# D# E F# E B C#
  D: "[[e3,b3,d#4,g#4]@7 [c#3,b3,e4,g#4]@9]/2", E: "[f#2,a3,c#4,e4]",
  F: "[[a3,c#4,e4]@8 [g#3,b3,d#4]@8 e4@7 ~ f#4@8, b2, ~ [a3,c#4]]/2", G: "~@5 [g#2,f#3,b3,d#4]@3",
  H: "[a2,g#3,c#4,e4]/2", I: "[c#3,b3,d#4,f#4]", J: "[c#3,b3,d4,f4]", K: "[[f#2,c#3,a3,b3,e4]@7 [b2,a3,e4,g#4]]/4",
  L: "[[e2,b2]@3 g#2, [g#3,d#4]]/2", M: "[a2,e3,g#3,c#4]", N: "[g#2,d#3,f#3,b3]", O: "[f#2,c#3,e3,a3]",
  P: "[[b2,a3,e4]@15 ~, c#4@17 ~@15]/2", Q: "[[g#3,c#4]@3 [g#3,c#4,e4], a2]/2", R: "[e2,f#3,b3,d#4]/2",
  S: "[b2,a3,c#4,e4]", T: "[b2,a3,d#4,f#4]", U: "[[e3,g#3,d#4,g#4]@3 [g#2,f#3,b3,d#4]]/2", V: "[a2,g#3,c#4,e4]",
  W: "[e2,f#3,b3,d#4]", X: "[g#2,f#3,b3,d#4]", Y: "[f#2,e3,a3,c#4]",
  Z: "[[e2,g#3]@2 [f#3,b3] [b3,d#4,f#4], d#4@3 ~, ~ g#2]/2", AA: "[a3,c#4]@3 [g#3,b3]@3 [f#3,a3,e4]@2, b2, e4@3 ~",
  AB: "[e2,g#3,d#4]", AC: "[g#3,d#4] [g#3,b3,e4], c#3", AD: "[e3,a3,c#4] [f#3,b3,d#4], b2",
  AE: "[e4@8 f#4@8 b3@8 c#4@2 [e3,e4]@4 [c#3,c#4] ~, b2@23 ~ c#3 ~@7, [a3,c#4] ~]/2", // E C# A
  AF: "[~@27 e1@31 ~@6, e2@27 ~@37, ~ [g#3,e4,b4]@57 ~@6]/4", // E
})).s("gm_string_ensemble_1").gain(0.29)

// other · timpani
const timpani = note("<~@31 A B C ~@6 D C ~@26 A B C ~@6 D C ~@9 C ~@12 A B C ~@6 D C ~@20>".pickRestart({
  A: "~@14 b2!2", B: "b2 ~@7 c#3 ~ e3 ~@3 c#3 ~", C: "a2 ~@15", D: "~@8 g#2 ~ g#2 ~@3 g#2 ~",
})).s("gm_timpani").gain(0.51)

// other · electric guitar jazz · "Jaz Guit"
const electric_guitar_jazz = note("<~@51 A@5 ~@33 B@3 ~ C@4 D@3 E F ~@30>".pickRestart({
  A: "[~@8 c#4 ~ d#4 ~ e4@2 f#4@9 ~ d#4@4 b3 ~ c#4@14 a3@2 ~@2 e4@27 ~@5, ~@23 b3@14 ~@3]/5",
  B: "[~@8 [c#3,c#4]@2 [d#3,d#4]@2 [e3,e4]@2 [f#3,f#4]@9 ~ [e3,e4]@2 [d#3,d#4]@2 [b2,b3]@2 [c#3,c#4]@18]/3", // C# D# E F# E D# B C#
  C: "[~@8 [c#3,c#4]@2 [d#3,d#4] ~ [e3,e4]@2 [f#3,f#4]@9 ~ [e3,e4]@4 [b2,b3]@2 [c#3,c#4]@31 ~@3]/4", // C# D# E F# E B C#
  D: "[~@9 b3 c#4 ~ d#4 ~ d#4@4 e4@3 ~ b3@4 g#3@3 ~ e3@17 ~]/3", E: "f#3 g#3", F: "a3 b3",
})).s("gm_electric_guitar_jazz").gain(0.2)

// other · glockenspiel · "Bell"
const glockenspiel = note(`<
  ~@40 A B C D E F G ~ H E I ~@26 A B C D E F G ~ H E I ~@22 A B C D E F G ~ H E I ~@11
>`.pickRestart({
  A: "~@8 g#5 ~ b5 ~@3 g#5 ~", B: "c#6 ~@3 c#6 ~@11", C: "~@8 c#6 ~@7", D: "b5 ~@15", E: "g#5 ~@15",
  F: "c#5 ~@13 d#5 ~", G: "e5 ~@5 b5 ~@5 g#5 ~@3", H: "~@8 b5 ~@5 a5 ~", I: "~@8 c#5 ~@7",
})).s("gm_glockenspiel").gain(0.16)

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

// drums · rim
const rim = s("rim").struct("<~@5 [~ x]!27 ~@24 [~ x]!13 ~@63>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@32 A B@7 C B@14 ~@14 A B@7 C B@24 ~ B@7 C B@10 ~@11>".pickRestart({
  A: "~@4 x!2 ~ x", B: "~ x", C: "~ x!2 ~@5",
})).gain(0.4)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A B@10 ~@2 C A B@10 ~@3 A B@4 D B ~ E B@3 ~@2 C F B@2 A B@3 ~ A B@10 ~@3 A B@4 D B ~ E B@3 ~@2 C F B@3 A B@11 ~@2
  A B@4 D B ~ E B@3 ~@2 C F B@2 ~@11
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x", D: "x ~ x!2", E: "~@3 x", F: "x ~@2 x ~@2 x ~",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@36 A ~@24 B ~@7 A ~@21>".pickRestart({
  A: "~@5 x!2 ~", B: "~@5 x ~@2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@18 A ~@20 B ~ C ~@8 A ~@4 D ~@20 B ~ C ~@8 A ~@21 B ~ C ~@8 A ~@11>".pickRestart({
  A: "~@3 x ~@4", B: "~ x ~@5 x", C: "~ x ~@2", D: "~@3 x",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@40 A ~@36 A ~@24 B ~@7 A ~@21>".pickRestart({
  A: "~@3 x!2 ~@3", B: "~ x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@33 A ~@7 A ~@3 A ~@5 A ~@3 A ~@14 A ~@7 A ~@3 A ~@6 A ~@11 A@3 ~@7 A ~@3 A ~@16
>`.pickRestart({
  A: "x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
// … 18 more lines

More by Neil Diamond