Strudelify

The River

Brooks Garth

KeyD majorTempo76 bpm
0:00/0:00
// The River — Brooks Garth
// 76 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 25, 4/4 at bar 26, 2/4 at bar 34, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 6 "GUITAR ACOU" acoustic guitar steel (copy of ch 1 "GUITAR ACOU" acoustic guitar steel); ch 11 "SOLO VOX SYNTH" lead 6 voice (copy of ch 3 "BREATH NOISE" breath noise); ch 12 "STEEL" pad metallic (copy of ch 7 "GUITAR-ACOU.2" acoustic guitar steel)
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(76/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 steel · "GUITAR ACOU"
const acoustic_guitar_steel = note(`<
  ~@5 A@7 B@4 C D E F G H I J K L M N O P Q R S@2 C D E F G H I J K L M N O P Q T@2 U@2 V W ~@3 X@2 Y Z AA AB AC AD AE
  AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AG AF AH@2 ~@2
>`.pickRestart({
  A: "[~@11 g3@2 ~@6 g3 [e3,a3,c#4]@4 ~@11 d3 [e3,a3,c#4]@4 ~@3 g3@2 ~@6 g3 [g2,e3,a3,c#4]@4 ~@11 g3 [g2,e3,a3,c#4]@4 ~@3 g3@2 ~@6 g3 [e3,a3,c#4]@4 ~@11 d3 [e3,a3,c#4]@4 ~@3 g3@2 ~@2 d3, ~@2 g2@4 g2@4 g2@3 ~ [g2,d4]@3 ~ g2@4 g2@4 g2@2, ~@8 b3@5 b3@3 b3@4 ~@4 d4@7 d3@3 g3@2 ~@4 d3@2 d3@5 d3@3 d3@2 ~@7 d3@4 d3@3 d3@2 ~@4 d3@2 d3@5 d3@3 d3@2 ~@4 d3@2 g3@3 b3@3 d4@4 ~@5 g3@2 ~@3 g3@2, ~@8 d3@2 d3@5 d3@3 d3@2 ~@4 d3@2 g3@3 b3@3 d4@4 ~@5 g3@2 ~@3 g3@3 g3@2 ~@7 g3@4 g3@3 g3@2 ~@6 g3@2 ~@3 g3@3 g3@2 ~@6 b3@2 d3@3 g3@3 b3@3 ~@4 b3@5 b3@3, ~@9 g3@2 ~@3 g3@3 g3@2 ~@6 b3@2 d3@3 g3@3 b3@3 ~@4 b3@5 b3@3 b3@4 ~@5 b3@4 b3@3 b3@4 ~@4 b3@5 b3@3 b3@4 ~@4 d4@7 d3@3 g3@2 ~@4 d3@2 d3@5 ~]/7", // A A7 A G5
  B: "[~@3 g3 [g2,e3,a3,c#4]@4 ~@11 g3 b3 g3 f#2@2 ~@15 d3 d3@2 ~@13 d3 d3@2 ~@5 d3, b3@4 ~@5 b3@4 b3@3 b3@4 ~@6 a3@2 a3@2 a3@4 a3@3 d4@7 a3 d4@2 d3@2 a3 d3@4 a3@2 ~@2 a3@2 a3@2 a3@2, ~ g3@2 ~@7 g3@4 g3@3 g3@2 ~@10 d4@3 d4@4 e4@15 a3@2 d4@3 ~@3 d3@4 ~, ~ d3 ~@2 [g2,d4]@6 ~@2 d2@16 ~@4, ~@11 d3@4 d3@3 d3@2 ~@7 d3@4 d3@4 d3@3 a3@4 a3 d3@3 a3@2 d4@4 e4@4 ~@5 d4@3]/4", // A7 G5
  C: "e4 ~@6 a3 ~@3 d4@2 ~@2 b3, ~ f#4@7 g4@5 g4@3, ~ d4 d3!2 d3@4, ~@3 a3@4 ~@3 b3@5 ~, ~@5 d4@3 ~@6 d4@2",
  D: "e4 ~@2 a3@2 ~@2 d4 ~@3 d4@2 ~@2 b3, d3@5 d3@3 ~@2 b3@4 d4@2, ~ f#4@7 g4@5 g4@3, ~ d4@2 a3 g3@4",
  E: "e4 f#4 ~ d4@2 ~@2 a3 ~@6 b3@2, f#3 e3, ~@2 a3@4 d4@2 ~ b3@5 ~@2, ~@5 f#4@3 g4@2 e4@3 e4@3, ~@11 g4@5",
  F: "~@7 c#4 ~@3 f#4 ~@3 g4, a2 ~, c#4@2 a3@4 a3@2 ~ a3@3 ~ b3@3, ~ e3@4 e3@3 [d3,f#4]@4 [d3,g4]@4, ~@3 c#4@4 ~@3 d4@2 ~@2 d4@2", // D G5
  G: "f#4 ~@6 f#4 b3@2 ~ b3@2 ~@2 f#3, d3 b2, ~ a3@4 a3@3 ~@2 f#3@5 ~, ~@2 d4@4 d4@2 ~@5 d4@3, ~@3 f#4@4 ~@7 b3@2",
  H: "~@3 g3@2 ~@2 d3 ~@3 f#4 ~@3 g4, g2@4 ~ d4 ~ d4, b3@5 b3@3 ~ a3@3 ~ b3@3, ~ d3@2 g3 [d3,f#4]@2 [d3,g4]@2", // D G5
  I: "~@3 d4@2 ~@2 a3 ~@3 a3@2 ~@2 e3, d3 a2, f#4@5 f#4@3 ~@2 e3@4 a3@2, ~@2 a3@4 d4@2 c#4@5 c#4@3",
  J: "a3 ~ d4 [d3,b3,d4,g4]@2 [d3,g3,e4]@2 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@8, [d3,f#4]@3 ~@13, ~ a3@2 ~@13", // G Em7 D
  K: "f#4 ~@2 f#4 ~@3 g4 ~@7 d4, d3 [d3,g4] d3@2, ~ a3@3 ~ b3@3 ~ a3@5 a3@2, ~@2 d4@2 ~@2 d4@2 f#4@2 d4@3 d4@2 ~, ~@11 f#4@5", // G5
  L: "~@7 d4 e4 f#4 ~ d4@2 ~@2 a3, g3 d3, g4@2 d4@3 d4@2 ~@7 d4@2, ~ b3@5 b3@2 ~@2 a3@5 ~, ~@3 g4@5 ~@5 f#4@3",
  M: "~@7 d4 ~@7 f#3, g3 [f#3,f#4], g4@2 d4@3 d4@2 ~@4 d4@2 d4@3, ~ b3@5 b3@2 ~@2 a3@4 a3@2, ~@3 g4@5 ~@4 e4@4", // F#
  N: "~@6 b3@2 ~@3 c#4 [a2,f#3,d4]@2 [a2,g3,e4]@2, e3@2 [a2,c#4] ~, e4@2 e4@3 e4@3 ~@2 a3@2 ~@4, ~ b3@5 ~@3 e3@3 ~@4, ~@3 g4@5 ~@8", // D A7 A
  O: "~@3 f#4 ~@3 g4 ~@3 d4@2 ~@2 a3, [d3,f#4]@4 ~@2 d4@2 f#4@5 f#4@3, ~ a3@3 [g3,g4]@4 d3@8, ~@2 d4@2 ~ b3@3 ~@2 a3@4 d4@2", // D G
  P: "~@3 g4@2 b3 [a3,c#4]@2 b3@2 ~@4 b3@2, g3@6 ~@5 g4@5, g4@2 d4@4 ~@2 d4@5 d4@3, ~ b3@4 ~@5 b3@4 ~@2", // A
  Q: "~@3 f#4 ~@3 g4!2 ~@6 d3, [d3,f#4] [d3,g4] [d3,f#4]@2, ~ a3@3 ~ b3@3 ~@2 a3@4 a3@2, ~@2 d4@2 ~@2 d4@2 ~@3 d4@2 d4@3, ~@3 e4", // D G5 D
  R: "c#4@2 ~ a3@2 ~ a3@2 ~@7 d4, a2@8 ~ f#3@4 f#3@3, ~ e3@3 d3@4, ~@5 c#4@3 d4@2 a3@4 a3@2, ~@11 d4@4 ~",
  S: "[~@3 a3@2 ~@18 f#4 d3@2 ~@5 d3, e4@15 d4@2 f#4@5 d4@2 ~@5 d4@3, d3@7 d4 f#4@2 a3@3 d4 a3@4 d4@3 d3@3 ~@3 d3@4 ~, ~ f#4@7 d3@8 e4@8 ~@8, ~@2 d4@3 d4 a3@3 d4@2 f#4@5 d3@3 a3@5 ~@2 a3@2 a3@2 a3@2]/2",
  T: "[c#4@2 ~ a3@2 ~ a3@2 ~@11 d4 ~@3 e4 d4 ~@6 d4, a2@8 ~ d4@4 d4@2 d4@2 d4@2 ~ c#4@2 c#4@2 ~ b3@5 b3@2, ~ e3@3 d3@4 [d3,f#4]@2 c#3@2 b2@4, ~@5 c#4@3 f#4@2 a3@4 a3@4 a3@2 ~ a3@3 ~@3 f#4@5, ~@11 f#4@5 ~@10 d4@3 d4@2 ~]/2", // D
  U: "[~@7 b3 [d3,f#3,a3,d4]@3 [f#2,f#3,a3,d4]@3 [g2,g3,b3,d4]@8 [f#2,f#3,a3]@2 g3 ~@6 g3, g2 ~@2 e2, b3@2 b3@3 b3@2 ~@19 g3@3 g3@2 ~, ~ g3@5 g3@2 ~@17 e3@5 e3@2, ~@3 d4@5 ~@19 b3@5]/2", // D G F#m
  V: "a3 ~@6 a3 ~@7 g3, f#2 g2, ~ f#3@5 f#3@2 ~ g3@5 b3@2, ~@2 a3@3 a3@2 ~ b3@2 b3@3 d4@3, ~@3 d4@5 ~@3 d4 g4@4",
  W: "~@7 a3 [a2,a3,c#4,e4]@8, a2 ~, e4@3 a4@5 ~@8, ~ d4@4 e4@3 ~@8, ~@2 a3@4 d4@3 ~@7", // A
  X: "[~@8 [b3,d#4]@3 [c#4,e4]@3 ~@5 b3 ~@3 c#4 b3 ~@6 b3, ~@14 [d#4,f#4]@6 ~@7 b3@4 ~, ~@4 [e2,e4] [e2,c#4] e2@2, ~@8 g#3!2 ~ a3 ~ g#3@2 g#3, ~@17 e3@3 ~ e3@3 ~ e3@4 e3@3]/2", // B C#m D#m E C#m
  Y: "~@3 c#4@3 [b2,f#3,b3,d#4]@2 ~@6 a3@2, a2@3 ~ a2@4, c#4@2 a3@4 ~@2 e4@2 c#4@3 c#4@3, ~ e3@5 ~@3 a3@5 ~@2, ~@11 e4@5", // B
  Z: "~@3 b3 ~@3 c#4 ~@7 b3, [e2,b3] [e2,c#4] e2@2, ~ e3@3 ~ e3@3 ~ e3@4 e3@3, ~ g#3 ~ a3 b3 g#3@2 g#3, ~@11 b3@4 ~", // E5 C#m
  AA: "~@6 f#3@2 [e2,e3,g#3]@3 [f#2,f#3,a3]@3 [g#2,g#3,b3]@2, b2 ~, d#4@2 b3@3 b3@3 ~@8, ~ f#3@5 ~@2 f#3 ~@7, ~@3 d#4@5 ~@8", // E F#m G#m
  AB: "c#4 ~ a3 ~@4 a3 ~@3 b3 ~@3 c#4, a2@2 [e2,b3] [e2,c#4], ~ e3@2 c#4@5 ~@8, ~@5 a3@2 ~@3 g#3@2 ~@2 a3@2, ~@6 e3@2 ~ e3@3 ~ e3@3", // E5 C#m
  AC: "~@7 g#3 ~@7 b3, e2@4 ~ f#3@2 f#3, b3@2 g#3@3 g#3@2 ~@2 b3@4 b3@2 ~, ~ e3@5 e3@2 b2@8, ~@3 b3@5 d#4@3 d#4@5",
  AD: "c#4@2 ~ a3@2 ~@5 a3@2 [a2,f#3,b3,d#4]@4, a2@3 ~, ~ e3@2 a3@2 ~@3, ~@5 c#4@2 e3@5 ~@4, ~@2 c#4 ~", // B7
  AE: "~@3 c#4@2 ~@6 a3 [a2,b3,d#4,f#4]@4, a2@3 ~, e4@5 e4@2 a3@4 ~@5, ~ a3@2 c#4@2 c#4 ~@2, ~@2 e4 ~", // B7
  AF: "g#3@2 e3 ~@8 g#3@2 ~@2 e3, e2@7 g#3, ~@3 f#3@13, ~@5 b3@5 e3@3 b3@3, ~@6 g#3 e4@9",
  AG: "g#3@2 ~ g#3@2 ~@6 f#3@2 ~@2 e3, e2@7 f#3, ~@2 e3@5 e4@9, ~@5 b3@11, ~@6 g#3@4 e3@3 g#3@3",
  AH: "[g#3@2 ~ g#3@2 ~@6 f#3@2 ~@2 e3 [b2,e3,g#3,b3]@16, e2@13 g#3@2 e2@17, ~@2 e3@5 e4@9 ~@16, ~@5 b3@11 ~@16, ~@3 g#3@2 e3@2 f#3 ~@8]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.61).pan(0.7)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@15 A@3 B C@2 D@2 E@2 F G H E I E J@3 K L M N O P Q R S P T U S V S W X Y@2 Z AA ~@3 AB AC AD AC AE AF AG AH@2 AI@20
  ~@3
>`.pickRestart({
  A: "[~ d3@2 d3@2 g2]/3", B: "f#2 e2", C: "[a2 d2@2 b2]/2", D: "[g2 d2@2 a2]/2", E: "d2!2", F: "g2 d2", G: "g2 f#2",
  H: "e2 a2", I: "g2!2", J: "[a2 d1@2 d1@2 d1]/3", K: "d1 d2", L: "d1 g1", M: "f#1 e1", N: "a1 d1", O: "d1 b1",
  P: "g1 d1", Q: "d1 a1", R: "d1@5 d2@3 d1@8", S: "d1!2", T: "g1 f#1", U: "e1@8 a1@3 b1@3 c#2@2", V: "g1!2",
  W: "a1@8 d1@4 f#1 g1 a1@2", X: "d2 c#2 b1@2", Y: "[g1@8 d1@3 f#1@3 g1@8 f#1@2 e1@8]/2", Z: "f#1@8 g1@5 e2 g2 b2",
  AA: "a2@5 e2 g2 b2 a1@8", AB: "~@8 b1@3 c#2@3 d#2@2", AC: "e1!2", AD: "a1@3 b1 a1@4", AE: "b1@8 e1@3 f#1@3 g#1@2",
  AF: "a1 e1", AG: "e1 b1", AH: "a1", AI: "e1",
})).s("gm_electric_bass_finger").gain(0.72)

// bass · electric bass finger · "BASS" · soft notes
const bass_soft = note("<~@5 A@4 B@7 ~@74>".pickRestart({
  A: "[~@4 g2@8 g2@7 g2 g2@8 g2@4]/4", B: "[~@3 g2 g2@8 g2@8 g2@8 ~@8 d2@8 d2@8 ~@4, ~@7 g2@4 ~@3]/7",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · epiano1 · "PIANO ELEC."
const epiano1 = note(`<
  ~@5 A@8 B@3 ~@8 C D E F G@2 H I@4 J K L@2 M@2 N O P@2 Q R S O T U V@2 W@2 ~@3 X Y Z AA AB AC@2 AD AE AF@2 ~@21
>`.pickRestart({
  A: "[~@8 [g1,g2,d3,g3,b3]@12 [g1,g2,e3,a3,c#4]@4 [g1,g2,g3,b3,d4]@12 [g1,g2,e3,a3,c#4]@4 [g1,g2,d3,g3,b3]@12 [g1,g2,e3,a3,c#4]@3 [g1,g2,g3,b3,d4]@13 [g1,g2,e3,a3,c#4]@4 [g1,g2,d3,g3,b3]@12 [g1,g2,e3,a3,c#4]@3 [g1,g2,g3,b3,d4]@13 [g1,g2,e3,a3,c#4]@4 [g1,g2,d3,g3,b3]@12 [g1,g2,e3,a3,c#4]@4 [g1,g2,d3,g3,b3]@8]/8", // G A7 G A7 G A7 G A7 …
  B: "[~ [g1,g2,e3,a3,c#4] [d1,d2,f#3,a3,d4]@8 ~@2]/3", C: "[d3,f#3,a3]", D: "[d3,g3] [d3,f#3,a3], b3@3 ~@5",
  E: "[d3,g3,b3] [f#3,a3,d4]", F: "[e3,g3,b3] [e3,a3,c#4]",
  G: "[[f#3,a3]@2 [g3,b3]@2 [f#3,a3]@4 [g3,b3]@3 [e3,a3,c#4] [g3,b3,d4]@4, d3@11 ~@5]/2", // F#m G F#m G A G
  H: "[d3,f#3,a3] [g3,b3] [f#3,a3]@2, ~ d3@3", I: "[[c#3,e3,a3]@8 [d1,d3,f#3,a3]@31 ~ [d3,f#3,a3]@16 [d3,g3,b3]@8]/4",
  J: "[d3,f#3,a3] [d3,g3,b3]", K: "[f#3,a3,d4] [e3,g3,b3]",
  L: "[[e3,a3,c#4]@2 [f#3,a3] [g3,b3] [f#3,a3]@2 [f#3,b3,d4]@2, ~@8 d3@17 ~@7]/2", // A F#m G F#m Bm
  M: "[[d3,g3,b3]@4 [f#3,a3]@2 [g3,b3]@2 [f#3,a3]@4 [c#3,e3,a3]@3 ~, ~@8 d3@17 ~@7]/2", // G F#m G F#m A
  N: "[d3,f#3,a3]@3 [d3,g3,b3]@2 [c#3,e3,a3]@3 [d3,f#3,a3]@7 ~", O: "[d3,f#3,a3] [d3,g3,b3] [d3,f#3,a3]@2",
  P: "[d3,g3,b3] [d3,f#3,a3]", Q: "[e3,g3,b3]@8 [c#3,a3]@3 [d3,b3]@3 [e3,c#4]@2",
  R: "[f#3,a3]@4 [g3,b3]@3 ~ [f#3,a3]@8, d4", S: "[d3,g3,b3]@3 [e3,a3,c#4] [g3,b3,d4]@4",
  T: "[c#3,e3,a3]@5 ~@3 [d3,f#3,a3]@8", U: "[d3,f#3,a3,d4] [c#3,e3,a3,c#4] [b2,f#3,b3,d4]@2",
  V: "[[g2,g3,b3,d4]@8 [d2,d3,f#3,a3]@3 [f#2,f#3,a3,d4]@3 [g2,g3,b3,d4]@8 [f#2,f#3,a3,d4]@2 [e2,e3,g3,b3]@8]/2", // G D G D Em
  W: "[[f#2,f#3,a3,d4]@8 [g2,g3,b3,d4]@7 ~ a4@3 ~@4 a3 [a2,a3,c#4,e4]@8, ~@15 [a2,a3]@9 ~@8, ~@15 d4@7 d4@2 ~@8, ~@16 e4@5 e4@3 ~@8, ~@19 a4@6 ~@7]/2", // D G A
  X: "~@8 [b2,b3,d#4]@3 [c#3,c#4,e4]@3 [d#3,d#4,f#4]@2", Y: "[g#3,b3,e4] [a3,c#4] [g#3,b3]@2, e3, ~ e4@3",
  Z: "[e3,a3,c#4]@3 [f#3,b3,d#4] [a3,c#4,e4]@4", AA: "[g#3,b3,e4] [a3,c#4] [g#3,b3]@2, ~ e4@3",
  AB: "[f#3,b3,d#4]@6 ~@2 [e2,e3,g#3]@3 [f#2,f#3,a3]@3 [g#2,g#3,b3]@2", // B E F#m G#m
  AC: "[[a2,e3,a3,c#4]@8 [e2,e3,g#3,b3]@4 [a3,c#4]@4 [e2,g#3,b3]@8 [b2,d#3,f#3,b3]@7 ~, ~@12 e3@13 ~@7]/2", // A E A E B
  AD: "[a1,e3,a3,c#4]@3 [a1,f#3,b3,d#4]", AE: "[a1,a3,c#4,e4]@3 [a1,b3,d#4,f#4]", AF: "[e2,b3,e4,g#4]/2",
})).s("gm_epiano1").gain(0.72).pan(0.6)

// chords · acoustic guitar steel · "GUITAR-ACOU.2"
const acoustic_guitar_steel_2 = note("<~@69 A@2 ~@2 B@2 ~@2 B@2 ~@2 C@2 ~@2 C@2 ~@3>".pickRestart({
  A: "[e2,b2,e3,b3]/2", B: "[[e2,b2,e3,b3], a#3 ~@31]/2", C: "[[e2,b2,e3,b3]@15 ~, a#3 ~@31]/2",
})).s("gm_acoustic_guitar_steel").gain(0.64).pan(0.7)

// other · distortion guitar · "GUITAR-DIST"
const distortion_guitar = note(`<
  ~@9 A@7 ~@15 B@3 ~@3 C@3 ~@2 D@2 E F@2 G@2 H@4 I J ~@3 K@4 L M@2 N@4 ~ O P@2 Q@2 R@3 S@3 T@6 U@2 ~
>`.pickRestart({
  A: "[~@2 g3@3 a3@4 d4@4 d4@4 e4@9 ~@2]/7", B: "[~@2 a4@3 f#4 d4@4 ~@2]/3", C: "[~ d4@4 ~, ~ a3@9 ~@2]/3",
  D: "[~@3 a4@4 f#4]/2", E: "d4", F: "[~@8 c#4@3 d4@21]/2", G: "[~@2 d5 b4@5]/2",
  H: "[~@8 d4@4 ~@4 f#4@4 [c#4,e4]@4 [b3,d4]@16 [d3,f#3,a3]@3 [f#3,a3,d4]@3 [g3,b3,d4]@10 e3@8, ~@3 a3@2 ~@11, ~@14 d4@6 ~@26 c#4 ~@17]/4", // C#m Bm D G
  I: "f#3 g3", J: "a3", K: "[~@8 d#4@3 e4@17 e5@16 c#5@20]/4", L: "~@8 g#4@3 f#4@3 g#4@2", M: "[b3 e3@2 ~]/2",
  N: "[b3@3 c#4@4 f#4@9]/4", O: "~ b4", P: "[b4@3 a4]/2", Q: "[e4@12 ~@2 g#4 a4, ~@3 e4]/2",
  R: "[b4@23 ~ c#5@3 e5@21]/3", S: "[~ b4@3 g#4@12, e5 ~@7]/3",
  T: "[~@28 g#4@2 b3@26 g#4@3 b4@29 a4@8, b4@9 b4@7 b4@9 b4@6 ~@65, ~@3 g#4@9 g#4@7 g#4@9 ~@68, ~@6 e4@8 e4@8 e4@9 ~@65]/6",
  U: "e4/2",
})).s("gm_distortion_guitar").gain(0.48).pan(0.8)

// chords · piano · "PIANO ACOU"
const piano = note(`<
  ~@51
  [~@2 d4 ~@3 g4@2 ~@8, ~ g3@7 ~@8, ~@3 a4@5 ~@8, ~@5 d4@3 ~@8]
  ~
  [~ a5 d6 a6 g6 f#6 e6 d6 b5@8]
  [a6 d6 ~@6 e6@8, ~@2 a5@3 a5@11, ~@3 e5@13, ~@3 d6@5, ~@7 a6@9]
  ~@35
>`).s("gm_piano").gain(0.62).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@17 A B C@2 D@2 E@2 F G H I J I K@4 L B C@2 D@2 I@2 F G M I J I N O P@2 Q R ~@3 S T U T V W@2 X@2 Y@20 ~@3
>`.pickRestart({
  A: "~ g2", B: "f#2 e2", C: "[a2 d2@2 b2]/2", D: "[g2 d2@2 a2]/2", E: "d2/2", F: "g2 d2", G: "g2 f#2", H: "e2 a2",
  I: "d2", J: "g2", K: "[a2 d2@4 d2@2 g2]/4", L: "d2 g2", M: "e2@8 a1@3 b1@3 c#2@2", N: "a2 d2", O: "d3 c#3 b2@2",
  P: "[g2@8 d2@3 f#2@3 g2@8 f#2@2 e2@8]/2", Q: "f#2 g2", R: "a2 a1", S: "~@8 b1@3 c#2@3 d#2@2", T: "e2", U: "a2",
  V: "b2@8 e2@3 f#2@3 g#2@2", W: "[a2 e2@2 b1]/2", X: "a1/2", Y: "e1",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.3)

// other · timpani
const timpani = note("<~@13 A ~@17 A ~@35 B ~@3 B ~@3 B ~@3 B ~@3 B ~@6>".pickRestart({
  A: "~@2 d2 ~", B: "e1@5 ~@11",
})).s("gm_timpani").gain(0.8)

// drums · kick
const kick = s("bd").struct("<~@24 A@3 B A@4 C D A@2 E A@4 F A B@6 A E G H I B@8 J E A K@22 L ~@2>".pickRestart({
  A: "x!2", B: "x ~@6 x!2 ~@7", C: "~@7 x!2 ~@7", D: "~ x", E: "x ~@7 x ~@6 x", F: "x ~@4 x ~@2 x ~@7",
  G: "x ~@7 x ~@2 x ~@2 x ~", H: "~@8 x ~@6 x", I: "x ~@6 x!2 ~@6 x", J: "x ~@6 x!2 ~@5 x ~", K: "x ~@2 x ~@2 x ~@9",
  L: "x",
})).gain(0.79)

// drums · rim
const rim = s("rim").struct("<~@24 A@8 B A B@7 C B@6 D B A@3 B@2 ~@4 B@6 ~@25>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~ x!3",
})).gain(0.79)

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@16 A@3 ~@2 B C B C ~@6 B@22 ~@3>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~@7 x",
})).gain(0.79)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~ A ~ A ~ A ~@36 A ~@4 B C B C ~@6 B@22 ~@3>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~@11 x ~@2 x ~",
})).gain(0.79)

// drums · high tom
const high_tom = s("ht").struct("<~@56 [~@11 x ~@4] ~ [~@11 x ~@4] ~@31>").gain(0.79)

// drums · crash
const crash = s("cr").struct("<~@50 [~ x]!3 ~@6 x ~@30>").gain(0.55)

// drums · ride
const ride = s("rd").struct("<~@15 [~ x ~@4 x ~ x ~@7] ~@7 [~ x] ~@17 [~ x] ~@48>").gain(0.63)

// drums · tambourine
const tambourine = s("tb").struct("<~@54 A B C D E F E@5 G H@3 I@18 ~@3>".pickRestart({
  A: "~@12 x!4", B: "x!7 ~@5 x!4", C: "~@4 x!2 ~ x!9", D: "x!5 ~ x!3 ~ x!6", E: "x!16", F: "x!8 ~@2 x!6",
  G: "~@4 x!9 ~@3", H: "~@4 x!2 ~@6 x ~@3", I: "~ x ~ x",
})).gain(0.47)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@54 A B C D ~ E ~@5 F G ~@23>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@7 x!5 ~@4", C: "x!4 ~@2 x ~@9", D: "~@5 x ~@3 x ~@6", E: "~@8 x!2 ~@6", F: "x!4 ~@9 x!3",
  G: "x",
})).gain(0.24)

// drums · congas
const congas = s("conga:13").struct("<~@24 A@7 B C@9 A@8 B C@5 A@7 B C@2 A@22 ~@3>".pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@3", B: "~@4 x ~@2 x ~@4 x ~@2 x", C: "~@4 x ~@7 x ~@2 x",
})).gain(2.52)

// drums · congas
const congas_2 = s("conga:18").struct("<~@24 [x!2]!63 ~@3>").gain(2.52)

// drums · congas
const congas_3 = s("conga:33").struct("<~@24 A@7 ~ B@9 A@8 ~ B@5 A@7 ~ B@2 A@22 ~@3>".pickRestart({
  A: "~@9 x ~ x ~@4", B: "~ x ~ x ~@12",
})).gain(2.52)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@3 [~@8 x!8] [x!16]!83 x ~@2>").gain(1.2)

// … 11 more lines

More by Brooks Garth