Strudelify
Shilo cover art

Shilo

Neil Diamond

KeyC majorTempo130 bpm
0:00/0:00
// Shilo — Neil Diamond
// 130 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 11 lead 2 sawtooth (copy of ch 12 flute); ch 11 viola (copy of ch 12 lead 5 charang)
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Lead 2 (Sawtooth), Instrument #82.
setcpm(130/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
const bass = note(`<
  ~@10 A@4 B C A@3 D@4 A E F G H I J C K@2 L M N O N O N O N O N P@2 O A@2 Q C@2 A@2 H D@4 A R N C A I J C S@2 T U N O N
  O N O N O N V@2 A W C@2 O@2 A D@3 X O Y F G H I J C K@2 L M A O A O A O A O N O N O N O N O Z AA AB@2 ~
>`.pickRestart({
  A: "c2@5 ~ c2 ~ c2@6 ~@2", B: "f2@4 ~@2 f2 ~ f2@6 ~@2", C: "f2@5 ~ f2 ~ f2@7 ~", D: "d2@5 ~ d2 ~ d2@7 ~",
  E: "c2@5 ~ c2 ~ c2@2 g1@2 a1@2 b1@2", F: "c2@5 ~ c2 ~ c2@5 ~ c2@2", G: "f2@5 ~ f2@5 ~ f2@4",
  H: "c2@5 ~ c2 ~ c2@3 ~ c2@3 ~", I: "f2@5 ~ e2@5 ~ d2@4", J: "c2@5 ~ c2 ~ c2@7 ~", K: "[g2@4 d3 g2@2 g3@6 a3@3]/2",
  L: "g3@9 ~ e3@4 c3@2", M: "d3@2 g2 ~ d2 b1 g1@2", N: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", O: "c2@4 ~@2 c2 ~ c2@4 g1@4",
  P: "[c2@4 ~@2 c2 ~ f2@2 e2@2 d2@2 c2@7 ~ c2 ~ c2@4 g1@3 ~]/2", Q: "c2@5 ~ c2 ~ c2@4 e2@3 ~",
  R: "~@2 c2@2 e1@2 f1@2 g1 ~ g1@2 a1@2 b1 ~", S: "[~@4 d3 g3@8 a3@3, g2@5 ~@11]/2", T: "g3@5 e3@2 c3",
  U: "d3@4 g2@2 ~@2 d2@2 b1@2 ~ g1@3",
  V: "[c2@4 ~@2 c2 ~ f2@2 e2@2 d2@2 ~@2 c2@4 ~@2 c2 ~ c2@4 g1@4, ~@14 c2@7 ~@11]/2", W: "c2@2 d2 e2",
  X: "d2@5 ~ d2 ~ d2@3 ~ d2@3 ~", Y: "c2 ~ e1@2 f1@2 g1 ~ g1@2 a1@2 b1@2 c2@2",
  Z: "c2@3 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AA: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AB: "c2/2",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@9 B C@3 D@2 C@3 E@4 C@2 F G H I F J K L M N O P Q P O R S T O U A B C@3 D@2 C@3 E@4 C@2 F G H I F J K L M N O V Q
  P O W S T O U X Y Z AA AB AC AD AE AF AG AF AH Y AI F G H I F J K L M N O P Q P O R S T O AJ AK X AL@2 AM@3 AN AO@3
>`.pickRestart({
  A: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 g3 ~ [g3,c4]@3 ~ [g3,c4]@2, c3@4 ~@2 c3 ~ c3@6 ~@2", // C C5
  B: "[c3,e3,g3,c4]@4 ~@2 [e3,g3,c4] ~ [e3,g3,c4]@3 ~ [e3,g3,c4] ~@3", // C
  C: "[e3,g3,c4]@4 ~@2 [e3,g3,c4] ~ [e3,g3,c4]@3 ~ [e3,g3,c4] ~@3", // C
  D: "[f3,a3,c4]@4 ~@2 [f3,a3,c4] ~ [f3,a3,c4]@3 ~ [f3,a3,c4] ~@3", // F
  E: "[f3,a3,d4]@4 ~@2 [f3,a3,d4] ~ [f3,a3,d4]@3 ~ [f3,a3,d4] ~@3", // Dm
  F: "[e3,g3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4]@3 ~ [e3,g3,c4]@3 ~", // C
  G: "[f3,a3,c4]@3 ~ [f3,c4]@2 [a3,d4] ~ [f3,a3,c4]@4 [f3,a3,c4]@3 ~, ~@4 a3 ~@11", // F F5 D5 F
  H: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 ~@2", // C
  I: "[a3,c4,f4]@5 ~ [g3,b3,e4]@4 ~@2 [f3,a3,d4]@2 ~@2", // F Em Dm
  J: "[f3,a3,c4]@3 ~ [f3,a3,c4]@2 [f3,a3,c4] ~ [f3,a3,c4]@3 ~ [f3,a3,c4]@3 ~", K: "[g3,b3,d4]@15 ~",
  L: "[f3,a3,c4]@7 ~", M: "[e3,g3,c4]@13 ~@3", N: "[d3,g3,b3]@13 ~@3",
  O: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@2", // C
  P: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C C5 C
  Q: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,g#3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@2", // C
  R: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C C5 C
  S: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4] ~, g#3 ~@15", // C
  T: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 g3@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C
  U: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@4", // C
  V: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2", // C C5 C
  W: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C C5 C
  X: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4] ~", // C
  Y: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2", // C
  Z: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [g3,c4] ~, g#3 ~@15", // C C5
  AA: "[f3,a3,c4]@3 ~ [f3,a3,c4] ~ [f3,a3,d4] ~ [f3,a3,c4]@2 [f3,a3,c4] ~ [f3,a3,c4]@2 [f3,a3,c4] ~", // F Dm F
  AB: "[f3,a3,c4]@3 ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4]@2 [f3,a3,c4] ~", // F
  AC: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~, ~@4 e3 ~@3", // C C5 C
  AD: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C
  AE: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4] ~, g#3 ~@15", // C
  AF: "[f3,a3,d4]@3 ~ [f3,a3,d4]@2 [f3,a3,d4] ~ [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4] ~", // Dm
  AG: "[f3,a3,d4]@3 ~ [f3,a3,d4] ~ [f3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2", // Dm
  AH: "[f3,a3,d4]@3 ~ [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4] ~", // Dm
  AI: "[e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C
  AJ: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2", // C
  AK: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@2", // C
  AL: "[[e3,g3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@3 ~ c4@2 c4@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2, ~@14 [e3,g3]@5 ~@13]/2", // C Em
  AM: "[[e3,g3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@3 ~ c4@2 c4@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [g3,c4]@2 [g3,c4]@2 [g3,c4]@2 [g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@2, ~@14 [e3,g3]@5 ~@11 e3@8 ~@10]/3", // C C5 C Em
  AN: "[e3,g3,c4]!3 [g3,c4]!2 [e3,g3,c4]!3, ~@3 e3@2 ~@3", AO: "[[e3,g3,c4]@11 ~@5]/3",
})).s("gm_acoustic_guitar_steel").gain(0.27)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@12 A B C ~ D E F G H@2 ~@2 I C ~@5 J K L M ~@12 N O P Q R S T@2 U@3 V W X@2 ~@33 C ~@5 J K L M ~@21
>`.pickRestart({
  A: "c3@3 e3@3 f3@2", B: "g3@3 a3@3 b3@2", C: "c4@9 ~@7", D: "~@7 c4", E: "g4 c4 f4 c4 e4 c4 d4 c4", F: "g3@15 ~",
  G: "~@6 f4 ~ f4@6 e4 ~", H: "[e4@5 ~ d4 ~ d4@12 ~@12]/2", I: "e3 f3 g3 a3 b3 c4 d4 e4",
  J: "~@6 g5@9 ~, ~@2 b4@13 ~, ~ d5@3", K: "~@3 f5@4 ~, ~@2 a4@13 ~, ~ c5@3", L: "~@6 e5@7 ~@3, ~ g4@6 ~, ~@2 c5@5 ~",
  M: "~@3 d5@4 ~, ~ g4@6 ~, ~@2 b4@5 ~", N: "~@2 g3 ~ a3 b3 ~ c4", O: "~@2 d4@3 ~ e4@3 ~ f4@3 ~ g4@2",
  P: "~@2 a4@3 ~ b4@2 ~@2 c5@3 ~ d5 ~", Q: "g5!6 ~ g5 f5@2 e5@4 ~@2, c5@15 ~", R: "g5!7 ~ f5 ~ e5@3 ~ e5 ~",
  S: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5]@2 ~@2 [g4,b4] ~@3 [g4,c5]@2", // C5 G C5
  T: "[~@2 [g4,c5] ~ [g4,c5] ~ [g4,c5] ~@3 [g4,b4] ~@3 c5@13 ~@5, ~@14 g4@11 ~@7]/2", // C5 G
  U: "[~@4 f5@2 ~@2 f5@2 e5@3 ~ g5@6 f5 ~ f5@6 e5@2 g5@6 f5 ~ f5@6 e5@3 ~]/3", V: "g5@4 f5 ~ f5@5 ~@5",
  W: "~@4 [g4,c5] ~@3 [g4,c5] ~ [g4,c5]@2 ~@2 [g4,c5] ~", X: "[~ c3 e3 f3 g3 a3 b3 c4@2 ~@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.5)

// chords · acoustic guitar nylon · "For General Midi"
const acoustic_guitar_nylon = note(`<
  ~@5 A@3 B A C D@3 E@2 F D@2 G H G@2 D@2 ~@9 I J@2 K@2 L@2 M@2 N@2 ~@22 O P Q R ~@10 S T ~ U V W@2 X Y ~ Z AA AB ~@10 I
  J@2 K@2 L@2 M@2 AC@2 AD D AD D F D@2 AE AF@2 ~
>`.pickRestart({
  A: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~, e4@3 f4@3 d4@2", // C5
  B: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5,d5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~, e4@3 f4@3 d4@2", // C5 Gsus4 C5
  C: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~, e4@3 ~@5", // C5
  D: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~", // C5
  E: "[a4,c5] ~ [a4,c5]@3 ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~", // Am
  F: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~", // C5
  G: "[a4,d5] ~ [a4,d5]@3 ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", // D5
  H: "[a4,d5] ~ [a4,d5] ~@3 [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", I: "~@7 g3",
  J: "[~@2 c4@12 ~ g3, e3@29 ~@3, ~@2 g3@27 ~@3]/2", K: "[~@4 c4@21 ~@5 g3@2, e3@25 ~@7, ~@2 g3@23 ~@7]/2",
  L: "[~@4 c4@17 ~@9 g3@2, e3@21 ~@11, ~ g3@10 ~@5]/2", M: "[~@4 c4@17 ~@9 g3@2, e3@11 ~@5, ~ g3@10 ~@5]/2",
  N: "[~@4 c4@21 ~@7, e3@25 ~@7, ~@2 g3@23 ~@7]/2", O: "~@3 g5@5, ~ b4@7, ~ d5@3",
  P: "~@7 f5@8 ~, ~@3 a4@12 ~, ~@4 c5@11 ~", Q: "~@6 e5@9 ~, ~@2 g4@13 ~, ~@4 c5@11 ~", R: "~@3 d5@5, ~ g4@7, ~ b4@3",
  S: "[g3,c4]@3 e4@3 f4 ~", T: "[c4,e4,g4]", U: "c4@5 ~ [f4,a4,e5]@5 ~ [f4,a4,d5]@3 ~, f4@3 ~@13",
  V: "[c4,f4]@4 ~@2 [f4,a4,d5]@5 ~ [f4,a4,c5]@2 ~@2", W: "[[c4,e4]@23 ~@9]/2", X: "[g3,c4]@6 e4@5 ~ d4@2 ~@2",
  Y: "[d4,f4]@11 ~@5", Z: "[d4,f4]@3 [a4,e5]@3 [a4,d5]@2", AA: "[d4,f4]@5 ~ [a4,d5]@5 ~ [a4,c5] ~@3", AB: "[c4,e4]",
  AC: "[[g4,c5] ~ [g4,c5]@2 ~@2 [g4,c5] ~ [g4,c5] ~ [g4,c5]@4 ~@2 [g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~, e3@13 ~@3, ~ g3@12 ~@3, ~@4 c4@21 ~@7]/2", // C5
  AD: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5]@4 ~@2", // C5
  AE: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~", AF: "[g4,c5]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.25)

// chords · percussive organ · "change track 11"
const percussive_organ = note(`<
  ~@25 A@3 B C D E@8 F@5 ~ G@5 H@2 I@3 J@4 K@2 L@3 M N@4 O@6 P@6 I@3 H@2 I@3 Q@4 R@5 B C D E@8 S T@3 U@8 V@4 ~
>`.pickRestart({
  A: "[[e5,g5]@15 ~ [a4,f5]@16 [g4,e5]@14 ~@2, c5@23 ~]/3", B: "[a4,c5,f5]@5 ~ [b4,e5,g5]@5 ~ [a4,d5,f5]@3 ~",
  C: "[g4,c5,e5]@15 ~", D: "[a4,c5,f5]", E: "[g5@43 e5 f5 e5 c5 g4@12 e5 f5 e5 c5 g4]/8",
  F: "[~@2 g5@20 e5@2 f5@2 e5@2 c5@2 g4@35 ~@15]/5", G: "[[g4,c5,e5]@79 ~]/5", H: "[a4,c5,f5]/2",
  I: "[[g4,c5,e5]@47 ~]/3", J: "[[a4,d5,f5]@63 ~]/4", K: "[~@14 g5@17 ~, [c5,e5], g4@7 ~]/2",
  L: "[[e5,g5]@15 ~ a5@16 [e5,g5]@15 ~, c5@47 ~, ~@16 f5@15 ~@17]/3", // Em
  M: "[c5,f5,a5]@5 ~ [e5,g5,b5]@5 ~ [d5,f5,a5]@3 ~, ~@6 c6 ~@9", // F Em Dm
  N: "[[e5,g5]@15 ~ a5@16 ~@6 g4@25 ~, c5@32 g5@9 ~@23, ~@8 f5@9 ~@15]/4", // Em
  O: "[~@8 g5@19 e5 f5 e5 c5 g4@12 e5 f5 e5 c5 g4, g4@31 ~@65]/6", P: "[~ g5@10 e5 f5 e5 c5 g4@12 ~ f4 e4 g3 c4@17]/6",
  Q: "[a4,d5,f5]/4", R: "[[c5,e5]@15 ~ [c5,e5,g5]@16 [e5,g5]@15 ~ [a4,f5]@16 [g4,e5]@14 ~@2, g4@16 c5@23 ~]/5",
  S: "~ g5@7", T: "[~@3 e5 f5 e5 c5 [c4,g4]@17]/3", U: "[~ g5, [c5,e5], g4@69 ~@59]/8", V: "c6/4",
})).s("gm_percussive_organ").gain(0.22)

// chords · electric guitar jazz · "Lead 2 (Sawtooth)"
const electric_guitar_jazz = note("<~@45 A@4 B@5 C@4 D ~@25 E ~@5 F ~@19 G ~@10 H ~@4>".pickRestart({
  A: "[~@2 e3@20 ~@9 c4@31 ~@2, ~@30 g3@31 ~@3]/4", B: "[~@15 a3@27 ~@5 c4@28 ~@5, ~@23 g3@14 ~@3]/5",
  C: "[~@15 [a3,d4]@39 ~@10]/4", D: "~@10 [a3,d4,f4]@5 ~", E: "~@6 c4@9 ~", F: "~@6 a3@9 ~", G: "~@10 e4 ~@5",
  H: "~@4 e4 ~@11",
})).s("gm_electric_guitar_jazz").gain(0.34)

// chords · electric guitar clean · "Instrument #82"
const electric_guitar_clean = note("<~@61 A B ~@2 A B ~@28 A B ~@2 A B ~@4 C D ~ D ~@3 E ~@5 F ~ F G ~@4>".pickRestart({
  A: "~@10 [e4,g4,c5] ~@5", B: "~@10 [f4,a4,c5] ~@5", C: "~@2 e3@13 ~", D: "~@6 e3 ~@9", E: "~@6 [e3,c4] ~@9",
  F: "[e3,g3] ~@15", G: "~@4 e3 ~@11",
})).s("gm_electric_guitar_clean").gain(0.34)

// other · acoustic guitar steel
const acoustic_guitar_steel_3 = note("<~@81 A B C D E F G H I J K L F M ~@31>".pickRestart({
  A: "c5!6 e5!4 ~@2 f5!3 ~", B: "g5@2 g5!7 ~ g5!6", C: "g5!10 g5@2 g5 ~@3", D: "f5!4 ~@2 e6@2 ~ e6!3 d6!4",
  E: "f5 ~ f5!4 ~ d6 ~ d6!2 ~ c6!4", F: "e5!16", G: "e5!10 ~ e5!2 ~@3", H: "c5!6 e5 ~ e5!2 ~ e5 d5 ~ d5!2", I: "f5!16",
  J: "f5!10 ~ f5 ~ f5 ~@2", K: "f5!5 ~ e6!5 ~ d6!3 ~", L: "~ f5!5 d6 ~ d6!3 ~ c6!4", M: "e5 e5@5 ~@10",
})).s("gm_acoustic_guitar_steel").gain(0.34)

// other · lead 5 charang
const lead_5_charang = note("<~@81 A B@2 C D E@2 F G@2 H D I@2 ~@31>".pickRestart({
  A: "c4@6 e4@5 ~ f4@3 ~", B: "g4/2", C: "f4@5 ~@2 e5@5 d5@4", D: "f4@6 d5@5 ~ c5@4", E: "[e4@22 ~@6 c4@3 ~]/2",
  F: "c4@6 ~ e4@5 d4@4", G: "[f4@31 ~]/2", H: "f4@3 e5@3 d5@2", I: "[e4@11 ~@5]/2",
})).s("gm_lead_5_charang").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A B@13 C D E@3 F E@2 ~@4 E@10 G@15 H E@3 F E@2 I@2 J ~ E@10 G@13 H E@3 F E@2 I@2 J ~ E@16 K L ~@3
>`.pickRestart({
  A: "~@7 x", B: "x ~@3 x ~@2 x", C: "x ~@3 x!2 ~ x", D: "x!2 ~@6", E: "x ~@2 x!2 ~@3", F: "~ x!2 ~ x!2 ~ x",
  G: "x ~@3 x!2 ~@2", H: "x!2", I: "x ~@6 x", J: "x", K: "x!4", L: "x ~ x ~ x ~ x!2",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@10 A@14 ~@11 A@25 ~@11 A@22 B ~@11 A@14 ~@7>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@24 A B@3 C B@2 ~@28 D E B@3 C B@2 ~@2 D E ~@22 F E B@3 C B@2 ~@18 B@2 G H E ~@2
>`.pickRestart({
  A: "~@4 x!3 ~@9", B: "~ x ~ x", C: "x ~@2 x ~@2 x ~", D: "~@14 x!2", E: "x", F: "~@12 x ~ x!2", G: "x!8",
  H: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@24 A ~@6 B ~@2 C ~@25 D ~@9 C ~@23 D ~@9 C ~@21>".pickRestart({
  A: "~@7 x", B: "x", C: "~@3 x", D: "~@6 x!2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<A@10 B@14 C ~@10 B@25 ~@11 B@23 ~@11 B@18 ~@3>".pickRestart({
  A: "x!4", B: "x!8", C: "x!2 ~@6",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 A ~@9 B ~@25 C ~@9 D ~@23 C ~@8 E F ~@21>".pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x!2 ~@3", C: "~@3 x!3 ~@2", D: "~@3 x ~ x ~@2", E: "~@7 x", F: "~ x ~ x!2 ~@3",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@28 [x ~@2 x ~@2 x ~] ~@35 [x ~@2 x ~@2 x ~] ~@33 [x ~@2 x ~@2 x ~] ~@27>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@24 A ~@9 B ~@25 C ~@9 B ~@23 C ~@8 D ~@22>".pickRestart({
  A: "~ x", B: "~ x ~@6", C: "~ x!2 ~@5", D: "~@4 x!2 ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@25 A ~@3 A ~@31 A ~@3 A ~@29 A ~@3 A ~@23 A ~@2>".pickRestart({
// … 27 more lines

More by Neil Diamond