Strudelify

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: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~@10 A@2 B C D E F B@2 G@3 H B I J K L M N O P@2 Q R S T U T U V W T W X@2 Y Z@2 AA O E Z@2 L AB@4 Z AC W AD Z AE AF O
  AG@2 AH AI S Y U Y U T U Y W AJ Y B AK AL E T@2 F AB AM@2 AN T AO J K L M N O P@2 Q R Z Y B Y B Y B Y U T U T S T U AP
  AQ AR AS@2 ~
>`.pickRestart({
  A: "c2@4 ~@2 c2 ~ c2@6 ~@2", B: "c2@5 ~ c2 ~ c2@6 ~@2", C: "c2@4 ~@2 c2 ~ c2@5 ~@3", D: "f2@4 ~@2 f2 ~ f2@6 ~@2",
  E: "f2@5 ~ f2 ~ f2@8", F: "c2@4 ~@2 c2 ~ c2@7 ~", G: "d2@5 ~ d2 ~ d2@6 ~@2", H: "d2@4 ~@2 d2 ~ d2@8",
  I: "c2@5 ~ c2 ~ c2@2 g1@2 a1@2 b1@2", J: "c2@5 ~ c2 ~ c2@5 ~ c2@2", K: "f2@5 ~ f2@5 ~ f2@4",
  L: "c2@5 ~ c2 ~ c2@3 ~ c2@3 ~", M: "f2@5 ~ e2@5 ~ d2@4", N: "c2@4 ~@2 c2 ~ c2@8", O: "f2@5 ~ f2 ~ f2@7 ~",
  P: "[g2@4 d3 g2@2 g3@6 a3@3]/2", Q: "g3@9 ~ e3@4 c3@2", R: "d3@2 g2 ~ d2 b1 g1@2", S: "c2@5 ~ c2 ~ c2@4 ~@2 c2 ~",
  T: "c2@4 ~@2 c2 ~ c2@4 g1@4", U: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", V: "c2@5 ~ c2 ~ c2@4 g1@3 ~",
  W: "c2@4 ~@2 c2 ~ c2@5 ~ c2 ~", X: "[c2@4 ~@2 c2 ~ f2@2 e2@2 d2@2 c2@7 ~ c2 ~ c2@4 g1@3 ~]/2",
  Y: "c2@5 ~ c2 ~ c2@4 g1@4", Z: "c2@5 ~ c2 ~ c2@7 ~", AA: "c2@5 ~ c2 ~ c2@4 e2@3 ~", AB: "d2@5 ~ d2 ~ d2@7 ~",
  AC: "~@2 c2@2 e1@2 f1@2 g1 ~ g1@2 a1@2 b1 ~", AD: "f2@4 ~@2 f2 ~ f2@8", AE: "f2@5 ~ e2@6 d2@4",
  AF: "c2@5 ~ c2 ~ c2@8", AG: "[~@4 d3 g3@8 a3@3, g2@5 ~@11]/2", AH: "g3@5 e3@2 c3",
  AI: "d3@4 g2@2 ~@2 d2@2 b1@2 ~ g1@3", AJ: "c2@5 ~ c2 ~ f2@2 e2@2 d2@2 c2@2", AK: "c2@2 d2 e2",
  AL: "f2@5 ~ f2 ~ f2@6 ~@2", AM: "d2@4 ~@2 d2 ~ d2@7 ~", AN: "d2@5 ~ d2 ~ d2@3 ~ d2@3 ~",
  AO: "c2 ~ e1@2 f1@2 g1 ~ g1@2 a1@2 b1@2 c2@2", AP: "c2@5 ~ c2 ~ c2@3 ~ g1@4",
  AQ: "c2@3 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AR: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AS: "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 E C F@2 G@2 H G C@2 I J K L M N O P Q R S T U T V W X Y S Z A B C@3 D E C F@2 G@2 H G C@2 I J K L AA N O
  P Q R S AB U T S AC X Y S Z AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ I J K L AA N O P Q R S T U T S W X Y AR AS AT AU
  AV@2 AW@3 AX AY@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,c4]@5 ~ [f3,a3,c4] ~ [f3,a3,c4]@3 ~ [f3,a3,c4] ~@3", // F
  F: "[e3,g3,c4]@5 ~ [e3,g3,c4] ~ [e3,g3,c4]@3 ~ [e3,g3,c4] ~@3", // C
  G: "[f3,a3,d4]@4 ~@2 [f3,a3,d4] ~ [f3,a3,d4]@3 ~ [f3,a3,d4] ~@3", // Dm
  H: "[f3,a3,d4]@5 ~ [f3,a3,d4] ~ [f3,a3,d4]@3 ~ [f3,a3,d4] ~@3", // Dm
  I: "[e3,g3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4]@3 ~ [e3,g3,c4]@3 ~", // C
  J: "[f3,a3,c4]@3 ~ [f3,c4]@2 [a3,d4] ~ [f3,a3,c4]@4 [f3,a3,c4]@3 ~, ~@4 a3 ~@11", // F F5 D5 F
  K: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 ~@2", // C
  L: "[a3,c4,f4]@5 ~ [g3,b3,e4]@4 ~@2 [f3,a3,d4]@2 ~@2", // F Em Dm
  M: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@3 ~ [e3,g3,c4]@3 ~", // C
  N: "[f3,a3,c4]@3 ~ [f3,a3,c4]@2 [f3,a3,c4] ~ [f3,a3,c4]@3 ~ [f3,a3,c4]@3 ~", O: "[g3,b3,d4]@15 ~",
  P: "[f3,a3,c4]@7 ~", Q: "[e3,g3,c4]@13 ~@3", R: "[d3,g3,b3]@13 ~@3",
  S: "[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
  T: "[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
  U: "[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
  V: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@2", // C
  W: "[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
  X: "[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
  Y: "[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
  Z: "[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
  AA: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@3 ~", // C
  AB: "[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
  AC: "[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
  AD: "[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
  AE: "[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
  AF: "[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
  AG: "[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
  AH: "[f3,a3,c4]@3 ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4]@2 [f3,a3,c4] ~", // F
  AI: "[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
  AJ: "[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
  AK: "[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
  AL: "[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
  AM: "[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
  AN: "[f3,a3,d4]@3 ~ [f3,a3,d4] ~ [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4] ~ [f3,a3,d4]@2", // Dm
  AO: "[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
  AP: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4]@2", // C
  AQ: "[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
  AR: "[e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@2 ~@2 [e3,g3,c4]@2", // C
  AS: "[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
  AT: "[e3,g3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@2", // C
  AU: "[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]@2", // C
  AV: "[[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
  AW: "[[e3,g3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4]@2 [e3,g3,c4] ~ [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
  AX: "[e3,g3,c4]!3 [g3,c4]!2 [e3,g3,c4]!3, ~@3 e3@2 ~@3", AY: "[[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 J ~@5 K L M N ~@12 O P Q R S T U@2 V@3 W X Y@2 ~@33 J ~@5 K L M N ~@21
>`.pickRestart({
  A: "c3@3 e3@3 f3@2", B: "g3@3 a3@3 b3@2", C: "c4@5 ~@3", 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: "c4@9 ~@7",
  K: "~@6 g5@9 ~, ~@2 b4@13 ~, ~ d5@3", L: "~@3 f5@4 ~, ~@2 a4@13 ~, ~ c5@3", M: "~@6 e5@7 ~@3, ~ g4@6 ~, ~@2 c5@5 ~",
  N: "~@3 d5@4 ~, ~ g4@6 ~, ~@2 b4@5 ~", O: "~@2 g3 ~ a3 b3 ~ c4", P: "~@2 d4@3 ~ e4@3 ~ f4@3 ~ g4@2",
  Q: "~@2 a4@3 ~ b4@2 ~@2 c5@3 ~ d5 ~", R: "g5!6 ~ g5 f5@2 e5@4 ~@2, c5@15 ~", S: "g5!7 ~ f5 ~ e5@3 ~ e5 ~",
  T: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5]@2 ~@2 [g4,b4] ~@3 [g4,c5]@2", // C5 G C5
  U: "[~@2 [g4,c5] ~ [g4,c5] ~ [g4,c5] ~@3 [g4,b4] ~@3 c5@13 ~@5, ~@14 g4@11 ~@7]/2", // C5 G
  V: "[~@4 f5@2 ~@2 f5@2 e5@3 ~ g5@6 f5 ~ f5@6 e5@2 g5@6 f5 ~ f5@6 e5@3 ~]/3", W: "g5@4 f5 ~ f5@5 ~@5",
  X: "~@4 [g4,c5] ~@3 [g4,c5] ~ [g4,c5]@2 ~@2 [g4,c5] ~", Y: "[~ 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@2 B C A D E@3 F@2 G E@2 H I H@2 E@2 ~@9 J K@2 L@2 M@2 N@2 O@2 ~@22 P Q R S ~@10 T U ~ V W X@2 Y Z ~ AA AB AC
  ~@10 J K@2 L@2 M@2 N@2 AD@2 AE E AE E G E@2 AF AG@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] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~, e4@6 f4@5 ~ d4@4", // C5
  C: "[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
  D: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~, e4@3 ~@5", // C5
  E: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~", // C5
  F: "[a4,c5] ~ [a4,c5]@3 ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~", // Am
  G: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~", // C5
  H: "[a4,d5] ~ [a4,d5]@3 ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", // D5
  I: "[a4,d5] ~ [a4,d5] ~@3 [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", J: "~@7 g3",
  K: "[~@2 c4@12 ~ g3, e3@29 ~@3, ~@2 g3@27 ~@3]/2", L: "[~@4 c4@21 ~@5 g3@2, e3@25 ~@7, ~@2 g3@23 ~@7]/2",
  M: "[~@4 c4@17 ~@9 g3@2, e3@21 ~@11, ~ g3@10 ~@5]/2", N: "[~@4 c4@17 ~@9 g3@2, e3@11 ~@5, ~ g3@10 ~@5]/2",
  O: "[~@4 c4@21 ~@7, e3@13 ~@3, ~ g3@12 ~@3]/2", P: "~@3 g5@5, ~ b4@7, ~ d5@3",
  Q: "~@7 f5@8 ~, ~@3 a4@12 ~, ~@4 c5@11 ~", R: "~@6 e5@9 ~, ~@2 g4@13 ~, ~@4 c5@11 ~", S: "~@3 d5@5, ~ g4@7, ~ b4@3",
  T: "[g3,c4]@3 e4@3 f4 ~", U: "[c4,e4,g4]", V: "c4@5 ~ [f4,a4,e5]@5 ~ [f4,a4,d5]@3 ~, f4@3 ~@13",
  W: "[c4,f4]@4 ~@2 [f4,a4,d5]@5 ~ [f4,a4,c5]@2 ~@2", X: "[[c4,e4]@23 ~@9]/2", Y: "[g3,c4]@6 e4@5 ~ d4@2 ~@2",
  Z: "[d4,f4]@11 ~@5", AA: "[d4,f4]@3 [a4,e5]@3 [a4,d5]@2", AB: "[d4,f4]@5 ~ [a4,d5]@5 ~ [a4,c5] ~@3", AC: "[c4,e4]",
  AD: "[[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
  AE: "[g4,c5] ~ [g4,c5]@3 ~ [g4,c5] ~ [g4,c5] ~ [g4,c5]@4 ~@2", // C5
  AF: "[g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~ [g4,c5] ~", AG: "[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: "[~@2 g5@20 e5@2 f5@2 e5@2 c5@2 g4@25 ~ f4@2 e4@2 g3@2 c4@34]/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 I J@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: "f4@6 d5@5 ~ c5@3 ~", J: "[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({
// … 45 more lines

More by Neil Diamond