Strudelify
The Thunder Rolls cover art

No Fences (Australian)

The Thunder Rolls

Brooks Garth

KeyD minorTempo80 bpm
0:00/0:00
// The Thunder Rolls — Brooks Garth
// 80 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 14, 4/4 at bar 14, 2/4 at bar 25, ...) 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: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · "BASS"
const bass = note(`<
  ~@14 A@3 B C D E F G H I J K L M N O P M N Q R@4 S T H U V W H X Y Z AA AB AC AD AE AF AG AD AH AI@8 AJ@3
>`.pickRestart({
  A: "[~@2 d1@7 ~ d1@2]/3", B: "d2@6 ~ d1 bb1@7 ~", C: "bb1@8 a1@7 ~", D: "a1@7 ~ a1@6 ~@2", E: "d2@5 a1 d2 a1 d1@8",
  F: "d2@8 bb1@7 ~", G: "bb1@7 ~ a1@7 ~", H: "a1@7 ~ a1@7 ~", I: "d2@5 a1 d2 a1 d1@4 d2@3 ~",
  J: "c2@4 g1@4 c2@3 ~ b1@3 ~", K: "a1@4 e1@3 ~ a1@7 ~", L: "~@2 d2@2 ~ a1@3 d1@7 ~", M: "bb1@4 ~@2 bb1@2 c2@5 ~ c2 ~",
  N: "~@2 d2@2 ~ a1@2 ~ d1@5 d2 a1 d2", O: "bb1@5 ~ bb1 ~ c2@5 ~ c2 ~", P: "a1@4 ~ a1 e1 ~ a1@4 a1@2 ~@2",
  Q: "bb1@3 ~ bb1@4 c2@7 ~", R: "[d1@7 ~]/2", S: "d1@8 d2@6 ~ d1", T: "bb1@7 ~ bb1@8", U: "a1@6 ~@2 d2@5 a1 d2 a1",
  V: "d1 d2", W: "bb1@7 ~ bb1@7 ~", X: "a1@7 ~ d2@5 a1 d2 a1", Y: "d1@4 d2@3 ~ c2@4 g1@4",
  Z: "c2@3 ~ b1@3 ~ a1@4 e1@3 ~", AA: "a1@7 ~@3 d2@2 ~ a1@3", AB: "d1@7 ~@3 d2 ~@2 a1 ~@2",
  AC: "d1 ~@7 bb1@4 ~@2 bb1@2", AD: "c2@5 ~ c2 ~@3 d2@2 ~ a1@2 ~", AE: "d1@5 d2 a1 d2 bb1@5 ~ bb1 ~",
  AF: "c2@5 ~ c2 ~ a1@4 ~ a1 e1 ~", AG: "a1@2 a1 ~ bb1@2 ~ bb1", AH: "d1@5 d2 a1 d2 bb1@3 ~ bb1@4",
  AI: "[c2@7 ~ d1@28 ~@4 d1@28 ~@4 d1@28 ~@4 d1@24]/8", AJ: "[~@2 d1@7 ~@3]/3",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · piano
const piano = note(`<
  ~@4 A B C@2 A B C@2 D@2 E@6 F@4 G H I J K L M N K L O P@4 A B C@2 A B C@2 D@2 Q R S T U V@2 T W X@8 Y@3
>`.pickRestart({
  A: "[d2,a3], [d4,f4]@3 ~", B: "bb2@3 ~", C: "[[g3,db4,e4]@24 d4@7 ~, a2@19 ~@13]/2", D: "[~@2 g3@3 b2 a2@2]/2",
  E: "[[a2,a3]@3 ~ [d2,a2,d3,a3,d4,f4]@14 ~@2 [d2,a3]@8 bb2@6 ~@2 [g3,db4,e4]@12, ~@40 [d4,f4]@12 ~@20 a2@19 ~@5]/6", // A Dm D5 Dbdim Dm
  F: "[d4@7 ~ [d2,a3]@16 bb2@12 ~@4 [g3,db4,e4]@24, ~@8 [d4,f4]@12 ~@20 a2@19 ~@5]/4", G: "d4@7 ~@9", H: "g3@3 b2",
  I: "a2@4 [a2,a3]@3 ~", J: "~@2 [d3,a3,d4,f4] ~@2 [c3,g3,c4,e4] ~@2 [d3,a3,d4,f4]@7 ~",
  K: "[f3,bb3,d4]@4 d4@2 [a3,d4]@2 ~@4 [d4,g4]@2 [e4,g4] ~, bb2@8 [c3,g3,c4,e4]@7 ~, ~ [f3,bb3] ~@2", // Bb D5 G5 Em C Bb5
  L: "~@2 [d3,a3,d4,f4,a4]@3 [c4,e4,g4,a4] ~@2 [d3,a3,d4,f4,a4]@8", // Dm Am7 Dm
  M: "[f3,bb3,d4]@6 [f3,bb3,d4]@2 ~@4 [d4,g4]@2 [e4,g4] ~, bb2@8 [c3,g3,c4,e4]@7 ~", // Bb G5 Em C
  N: "~@2 [e3,g3,db4,e4]@3 ~@3 [g3,db4,e4]@2 e3 [g3,d4,e4]@2 e3 [g3,db4,e4] ~, ~@2 a2@9 ~@5, ~@5 [g3,db4,e4]@3 ~@8, ~@3 e3@2 ~@3", // Dbdim Em7 Dbdim
  O: "[f3,bb3,d4]@4 [f3,bb3,d4]@4 [c3,g3,c4,e4,g4]@7 ~, bb2 ~", P: "[[d2,a2,d3,a3,d4,f4]@7 ~]/2",
  Q: "[a2,a3]@6 ~@4 [d3,a3,d4,f4] ~@2 [c3,g3,c4,e4] ~@2", // A Dm C
  R: "f4@3 ~ e4 ~ c4 ~@3 [d2,a2,d3,a3,d4,f4] ~@2 [d2,a2,d3,a3,d4,f4] ~@2, [d3,a3]@7 ~@9, d4@5 d4@2 ~@9, ~@3 f4@4 ~@9", // Dm D5
  S: "[d2,a2,d3,a3,d4,f4] ~@7 [f3,bb3,d4]@4 d4@2 [a3,d4]@2, ~ bb2, ~@3 [f3,bb3]", // Dm Bb D5 Bb5
  T: "~@4 [d4,g4]@2 [e4,g4] ~@3 [d3,a3,d4,f4,a4]@3 [c4,e4,g4,a4] ~@2, [c3,g3,c4,e4]@7 ~@9", // G5 Em Dm Am7 C
  U: "[d3,a3,d4,f4,a4]@4 [f3,bb3,d4]@3 [f3,bb3,d4], ~ bb2", // Dm Bb
  V: "[~@4 [d4,g4]@2 [e4,g4] ~@3 [e3,g3,db4,e4]@3 ~@3 [g3,db4,e4]@2 e3 [g3,d4,e4]@2 e3 [g3,db4,e4] ~ [f3,bb3,d4]@4 d4@2 [a3,d4]@2, [c3,g3,c4,e4]@7 ~@3 a2@9 ~@5 bb2@8, ~@13 [g3,db4,e4]@3 ~@16, ~@7 e3@2 ~@5 [f3,bb3]@2]/2", // G5 Em Dbdim Em7 Dbdim Bb D5 C …
  W: "[d3,a3,d4,f4,a4]@2 [f3,bb3,d4]!2, ~ bb2", // Dm Bb
  X: "[[c3,g3,c4,e4,g4]@7 ~ [d2,a2,d3,a3,d4,f4]@28 ~@4 [d2,a2,d3,a3,d4,f4]@28 ~@4 [d2,a2,d3,a3,d4,f4]@28 ~@4 [d2,a2,d3,a3,d4,f4]@24]/8", // C Dm
  Y: "[~@8 [d2,a2,d3,a3,d4,f4]@31 ~@9]/3", // Dm
})).s("gm_piano").gain(0.31)

// chords · piano · soft notes
const piano_soft = note("<~@4 A B C@2 A B C@2 D@2 E ~ F@4 G@4 H I J ~@12 A B C@2 A B C@2 D@2 E ~@19>".pickRestart({
  A: "d3", B: "[f3,bb3,d4]@3 ~", C: "[e3@19 ~@5 [d3,f3,a3]@7 ~]/2", D: "[~@2 [c2,c3,e3]@3 ~@3]/2", E: "g3@3 ~@5",
  F: "[~@8 d3@16 [f3,bb3,d4]@12 ~@4 e3@19 ~@5]/4", G: "[[d3,f3,a3]@7 ~ d3@16 [f3,bb3,d4]@12 ~@4 e3@19 ~@5]/4",
  H: "[d3,f3,a3]@7 ~@9", I: "[c2,c3,e3]@3 ~", J: "~@4 g3@3 ~",
})).s("gm_piano").gain(0.2)

// chords · overdriven guitar · "LEAD GUIT"
const overdriven_guitar = note(`<
  ~@15 A@2 ~@3 B@2 ~@3 C D E ~ F ~ G ~ F ~ H@3 I ~@3 J K ~@3 L M@2 N O P Q R S T U ~ V@4 W@3 X@2 ~
>`.pickRestart({
  A: "[~@4 a3@3 ~ [d3,a3,d4]@14 ~@10]/2", B: "[~@2 eb4@2 d4@7 ~@5]/2", C: "c3@3 ~ c3@3 ~ c3@3 ~ b2@3 ~",
  D: "a2@13 ~@3, e3 ~", E: "~@2 [d4,f4] ~@2 [c4,e4] ~@2 [d4,f4]@7 ~", F: "~@2 [d4,f4] ~@2 [c4,e4] ~@2 [d4,f4]@5 ~@3",
  G: "~@2 a4@2 ~ c5@3 a4@6 ~@2", H: "[~@7 c5@13 ~@2 g4@2]/3", I: "d4@9 ~@7", J: "~@3 eb4", K: "d4@7 ~",
  L: "~@8 c3@3 ~ c3@3 ~", M: "[c3@3 ~ b2@3 ~ a2@13 ~@5 [d4,f4] ~@2 [c4,e4] ~@2, ~ e3 ~@2]/2",
  N: "f4@3 ~ e4 ~ c4 ~@3 [d3,a3,d4]@2 ~ [d3,a3,d4] ~@2, d4@5 d4@2 ~@9, ~@3 f4@4 ~@9", O: "[d3,a3,d4]@3 ~@13",
  P: "~@10 d5@2 ~ f5@2 ~", Q: "d5@3 ~@5", R: "~@10 e5@2 ~ c5@2 ~", S: "a4@3 ~@5", T: "~@10 [d4,f4] ~@2 [c4,e4] ~@2",
  U: "[d4,f4]@5 ~@11", V: "[~@8 d5@16 a4@15 ~ d4@15 ~@9]/4", W: "[~@3 a3 d4@6 f4@2 g4@7 ~ c5@3 b4]/3",
  X: "[g4@7 ~ g4@22 ~@2]/2",
})).s("gm_overdriven_guitar").gain(0.26)

// chords · acoustic guitar steel · "RHYTHM GU"
const acoustic_guitar_steel = note(`<
  A@2 B C D E F G D E F G H@2 I@8 J@3 K L M N O P Q N O R B C B C D E F G D E F G H@2 S T U V W X@2 V Y Z@8 AA@2 ~
>`.pickRestart({
  A: "[~@4 d4 ~@15 d4 ~@6 [d4,f4] ~@3 c4, d3@2 [d4,e4]@2 e4@5 e4 a3@2 c4 d3 a3 c4@13 [c4,e4]@4, ~ a3@5 d3@3 d3@2 e4@5 d3@2 [d4,e4] d3 e4 d4@2 [a3,e4] d4@2 [d3,e4]@2 ~ d3@3, ~@3 [d3,f4]@4 [a3,f4]@3 f4@9 f4@8 ~@5, ~@5 d4@3 d4@9 a3@5 d3@3 a3@3 ~@2 a3@2]/2", // Dm Dsus2 C Dsus2 A5 Dsus2 Dm
  B: "~@4 d4 ~@6 [d4,f4] ~@3 c4, d3@2 [d4,e4]@2 e4@2 d3@3 d3@3 ~ d3@3, ~ a3@6 [a3,e4]@3 [a3,e4]@2 ~@2 a3@2, ~@3 f4@8 ~@5, ~@3 d3@2 d4@3 d4@3 ~ [c4,e4]@4", // Dm Dsus2 A5 C
  C: "~@4 d4 ~@6 f4 ~@2 [c3,c4] a2, d3@2 [d4,e4]@2 e4@2 d3@3 d3@2 d3@4 ~, ~ a3@6 [a3,e4]@3 [a3,e4]@2 ~ a2@2 ~, ~@3 f4@8 ~@5, ~@3 d3@2 d4@3 d4@4 [c4,e4]@3 ~", // C Dsus2 A5 C
  D: "~@14 e4 d4, d3@10 e4@3 d4@2 ~, ~ a3@2 e4@3 f4@9 ~, ~@2 d4@2 a3@3 e4@2 d4@3 a3@3 ~, ~@5 d4@3 a3@3 d3@4 ~",
  E: "~@14 a3 bb3, bb2@3 d4@8 d4@4 ~, ~ f3@7 f3@7 ~, ~@2 bb3@2 bb2@3 bb2@3 bb2@3 bb2@2 ~, ~@5 bb3@4 bb3@3 bb3@3 ~",
  F: "~@14 a3 e3, a2@13 db4@2 ~, ~ e3@2 db4@2 db4@3 e3@2 a3@2 d4@3 ~, ~@2 a3@4 a3@3 db4@2 e3@4 ~, ~@4 e3@3 b3@8 ~",
  G: "~@15 d4, a2@9 f3 a3 d4 e4 f4 e4@2, ~ e3@2 db4@2 e4@2 a3 d3@8, ~ a3@2 db4@5, ~ e3@3",
  H: "[~@7 a3 ~@15 d4 ~@7 g3, d3@8 c3@14 c4@2 ~@3 d4@3 d4@2, ~ a3@5 d4@2 ~ g3@3 g3@2 d4@5 c4 b2@4 a2@4 a2@4, ~@2 d4@3 e4@3 ~@2 c4@3 c4@2 g3@2 e4@7 ~@8, ~@3 e4 f4@4 ~@3 e4@5 c4@2 g3@6 ~@2 g3@3 g3@2 ~]/2",
  I: "[[a2,g3,db4,e4]@7 ~@5 d4 ~@6 [d4,f4] ~@3 c4 ~@4 d4 ~@6 f4 ~@2 [c3,c4] a2 ~@14 e4 d4 ~@14 a3 bb3 ~@14 a3 e3 ~@15 d4 ~@14 e4 d4 ~@5 bb3@2 bb2, ~@8 d3@2 [d4,e4]@2 e4@2 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d4@3 d4@4 [c4,e4]@3 ~@2 a3@3 a3@3 e4@2 d4@3 a3@3 ~@2 f3@7 f3@7 ~@2 e3@3 e3@3 b3@6 db4@2 ~@3 a3@4 db4@3 f3 a3 d4 e4 f4 e4@2 ~@2 d4@3 d4@3 a3@3 d3@4 ~ bb2@4 bb2@3 ~, ~@9 a3@6 [a3,e4]@3 [a3,e4]@2 ~@2 a3@2 ~ a3@5 d3@3 d3@2 d3@4 ~ d3@10 e4@3 d4@2 ~@3 bb3@3 bb3@4 bb3@3 bb3@3 ~@3 a3@4 a3@3 db4@2 e3@4 ~@2 e3@3 e3@12 ~ a3@3 a3@3 e4@2 d4@3 a3@3 ~@2 f3@7, ~@11 f4@8 ~@8 f4@8 ~@7 d4@3 d4@3 a3@3 d3@4 ~ bb2@4 bb2@3 bb2@3 bb2@3 bb2@2 ~ a2@15 ~ a2@16 ~@3 e4@3 f4@9 ~@4 d4@5, ~@11 d3@2 d4@3 d4@3 ~ [c4,e4]@4 ~@2 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~ a2@2 ~@4 e4@3 f4@9 ~@4 d4@8 d4@4 ~@4 db4@2 db4@3 e3@2 a3@2 d4@3 ~@4 db4@2 e4@2 a3 d3@8 d3@10 e4@3 d4@2 ~@3 bb3@3 ~@3]/8", // A7 Dm C Dsus2 C A5 C Dsus2 …
  J: "[~@6 a3 bb3 ~@14 a3 e3 ~@15 d4 ~@7 a3, f3@7 ~@2 e3@3 e3@3 b3@6 db4@2 ~@3 a3@4 db4@3 f3 a3 d4 e4 f4 e4@2 ~@2 d4@3 e4@3, ~ bb3@2 d4@4 ~@4 db4@2 db4@3 e3@2 a3@2 d4@3 ~@4 db4@2 e4@2 a3 d3@8 d3@8, ~@2 bb2@2 bb3@3 ~@3 a3@4 a3@3 db4@2 e3@4 ~@2 e3@3 e3@12 ~ a3@5 d4@2, ~@5 bb2@2 ~ a2@15 ~ a2@16 ~@3 e4 f4@4]/3",
  K: "~@15 d4, c3@7 c4, ~ g3@2 e4@5 c4@2 g3@6, ~@2 c4@2 g3@2 d4@5 c4 b2@4, ~@5 c4@2 g3@2 e4@7",
  L: "~@7 g3 [a2,g3,db4,e4]@7 ~, a2@3 d4@2 g3@2 ~@9, ~ g3 a2@2 ~@4, ~@6 d4@3 ~@7", // A7
  M: "~@2 [d3,f3,a3,d4]@3 [e3,g3,c4]@3 [f3,a3,d4]@3 ~ [f3,a3,d4]!4, ~@11 d3@5", // Dm C Dm
  N: "[f3,bb3]@2 ~@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [c3,g3]@2 ~@2 [c4,e4]@2 [c3,g3,c4,e4] ~, [bb2,d4]@3 bb2@5 ~@3 [c3,g3]@3 ~@2, ~@2 [f3,bb3]@2 ~@4 [c4,e4] ~ [c4,e4]@2 ~@4", // Bb5 Bb C5 C Bb C5 Bb5 C
  O: "~@2 [d3,a3,d4] ~@2 [d3,a3,d4] ~@2 [d3,a3,d4]@8", // D5
  P: "[bb2,f3,bb3,d4]@2 ~ [f3,bb3,d4] [c3,g3] ~ [c4,e4]@2, ~@2 [f3,bb3,d4] ~@2 [c4,e4] ~@2, ~@5 bb2@3 ~@3 [c3,g3]@5", // Bb C5 C Bb C C5
  Q: "[e3,g3,db4,e4]@4 ~ e3@2 ~ [g3,db4,e4]@3 ~ [a2,e3]@2 [g3,db4,e4] ~, a2@11 [g3,db4,e4]@3 ~@2, ~@4 [g3,db4,e4]@3 e3@5 ~@4", // Dbdim A5 Dbdim
  R: "[bb2,f3,bb3,d4] ~ [f3,bb3,d4]@2 [c3,g3,c4,e4]@3 ~, ~ [f3,bb3,d4] ~@6, ~@3 bb2@5 ~@8", // Bb C Bb
  S: "[a2,g3,db4,e4]@7 ~@3 [d3,f3,a3,d4]@3 [e3,g3,c4]@3", // A7 Dm C
  T: "[f3,a3,d4]@3 ~ [f3,a3,d4]!4 ~@2 [d3,a3,d4] ~@2 [d3,a3,d4] ~@2, ~@3 d3@5 ~@8", // Dm D5
  U: "[d3,a3,d4] ~@3 [f3,bb3] ~ [f3,bb3,d4]!2, ~@8 [bb2,d4]@3 bb2@5, ~@5 [f3,bb3] ~@2", // D5 Bb5 Bb Bb5
  V: "[c3,g3]@2 ~@2 [c4,e4]@2 [c3,g3,c4,e4] ~@3 [d3,a3,d4] ~@2 [d3,a3,d4] ~@2, [c4,e4] ~ [c4,e4]@2 ~@12, ~@3 [c3,g3]@3 ~@10", // C5 C D5 C C5
  W: "[d3,a3,d4]@4 [bb2,f3,bb3,d4]@2 ~ [f3,bb3,d4], ~@6 [f3,bb3,d4] ~, ~@13 bb2@3", // D5 Bb
  X: "[[c3,g3]@2 ~@2 [c4,e4]@4 [e3,g3,db4,e4]@4 ~ e3@2 ~ [g3,db4,e4]@3 ~ [a2,e3]@2 [g3,db4,e4] ~ [f3,bb3]@2 ~@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2, ~@2 [c4,e4]@2 ~@8 [g3,db4,e4]@3 e3@4 [g3,db4,e4]@3 ~@4 [f3,bb3]@2 ~@4, ~@3 [c3,g3]@5 a2@12 ~@4 [bb2,d4]@3 bb2@5]/2", // C5 C Dbdim A5 Dbdim Bb5 Bb C …
  Y: "[d3,a3,d4]@4 [bb2,f3,bb3,d4] ~ [f3,bb3,d4]@2, ~@5 [f3,bb3,d4] ~@2, ~@11 bb2@5", // D5 Bb
  Z: "[[c3,g3,c4,e4]@6 ~@6 d4 ~@6 [d4,f4] ~@3 c4 ~@4 d4 ~@6 f4 ~@2 [c3,c4] a2 ~@4 d4 ~@6 [d4,f4] ~@3 c4 ~@4 d4 ~@6 f4 ~@2 [c3,c4] a2 ~@4 d4 ~@6 [d4,f4] ~@3 c4 ~@4 d4 ~@6 f4 ~@2 [c3,c4] a2 ~@4 d4 ~@6 [d4,f4] ~@3 c4 ~@4 d4 ~@2 [a3,e4], ~@8 d3@2 [d4,e4]@2 e4@2 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d4@3 d4@4 [c4,e4]@3 ~@2 a3@5 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d4@3 d4@4 [c4,e4]@3 ~@2 a3@5 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d4@3 d4@4 [c4,e4]@3 ~@2 a3@5 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d4@3, ~@9 a3@6 [a3,e4]@3 [a3,e4]@2 ~@2 a3@2 ~ a3@5 d3@3 d3@2 d3@4 ~ d3@3 f4@8 ~@8 f4@8 ~@7 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~@2 a3@2 ~ a3@5 d3@3 d3@2 d3@4 ~ d3@3 f4@8 ~@8 f4@5, ~@11 f4@8 ~@8 f4@8 ~@7 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~@2 a3@2 ~ a3@5 d3@3 d3@2 d3@4 ~ d3@3 f4@8 ~@8 f4@8 ~@7 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~@2 a3@2 ~ a3@5 d3@2, ~@11 d3@2 d4@3 d4@3 ~ [c4,e4]@4 ~@2 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~ a2@2 ~@4 d3@2 d4@3 d4@3 ~ [c4,e4]@4 ~@2 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~ a2@2 ~@4 d3@2 d4@3 d4@3 ~ [c4,e4]@4 ~@2 [d4,e4]@2 e4@3 [a3,e4]@3 [a3,e4]@2 ~ a2@2 ~@4 d3@2 d4@3 d4@3 ~ [c4,e4]@4 ~@2 [d4,e4]@2 e4@3 ~]/8", // C Dm C Dm C Dm C Dm …
  AA: "[~@3 f4 ~@2 [c3,c4] a2 [d3,f3,a3,d4]@21 ~@3, d4@4 [c4,e4]@3 ~@25, ~ d3@2 d3@4 ~@25, ~@2 [a3,e4]@2 ~ a2@2 ~@25]/2", // C Dm C A5
})).s("gm_acoustic_guitar_steel").gain(0.26)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@12 A@5 ~@3 B@4 C D E F G F H I G F J K@4 L M N@2 O@2 P@2 Q@3 R S T U V@2 T W X@4 Y@7
>`.pickRestart({
  A: "[~@8 c3@12 b2@4 a2@13 ~@27 [e4,e5]@7 ~@9, ~@40 [d2,d3]@29 ~@11]/5", // E D
  B: "[~@6 [f3,bb3]@4 a2@5 ~, ~@8 d4@32 a3@11 ~@13]/4", C: "~ a3 d4@2", D: "c4@3 b3", E: "a3@13 ~@3",
  F: "~@2 [d4,f4,a4] ~@2 [c4,e4,g4] ~@2 [d4,f4,a4]@5 ~@3", G: "[f3,bb3,d4] [g3,c4,e4]",
  H: "[f3,bb3,d4]@8 [g3,c4,e4]@7 ~", I: "[g3,db4,e4]@15 ~", J: "f4@4 g4@3 ~", K: "[~@16 d5@32 d4@15 ~, d3@63 ~]/4",
  L: "[f3,a3,d4]", M: "[f3,bb3,d4]@15 ~", N: "[[e3,a3,db4]@3 [f3,a3,d4]]/2", O: "[~ [f3,bb3], d4]/2",
  P: "[a2@5 ~@2 a3, a3@11 ~@21]/2", Q: "[d4@8 c4@12 b3@4 a3@13 ~@5 [d4,f4,a4] ~@2 [c4,e4,g4] ~@2]/3",
  R: "[d4,f4,a4]@5 ~@11", S: "~ [f3,bb3,d4]", T: "[g3,c4,e4]@8 ~@2 [d4,f4,a4] ~@2 [c4,e4,g4] ~@2",
  U: "[d4,f4,a4]@5 ~@3 [f3,bb3,d4]@8", V: "[[g3,c4,e4]@7 ~ [g3,db4,e4]@15 ~ [f3,bb3,d4]@8]/2",
  W: "[d4,f4,a4]@5 ~@3 f4@8", X: "[g4@3 ~@9 d5@16 d4@4, ~ d3@7]/4",
  Y: "[~@8 [c5,e5]@16 g6@4 f6@4 e6@4 c6@4 ~@16 d4@15 ~ [d4,c6,g6]@30 ~@10, ~@8 d3@63 ~@41, ~@6 d5@8 ~@4 a4@7 ~@3, ~@5 a5@4 ~@5]/7", // C Csus2
})).s("gm_string_ensemble_1").gain(0.26)

// drums · kick
const kick = s("bd").struct("<~@16 A B@7 C D E F G H D@2 G H I ~@4 B@8 J K L M N O P D Q O P R ~@7 S ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x ~@7 x ~@4 x ~ x", D: "x!4", E: "x ~@3 x ~@2 x!2 ~@6 x",
  F: "x ~ x ~@2 x ~@2 x ~@2 x ~@3 x", G: "x ~@6 x!2 ~ x ~@5", H: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x", I: "x!3 ~",
  J: "x ~@4 x ~ x!2 ~@3 x ~@3", K: "x ~@3 x ~@3 x ~@3 x ~@2 x", L: "x ~@6 x!2 ~ x ~@2 x ~@2",
  M: "x ~@2 x ~@3 x!2 ~ x ~@2 x ~@2", N: "x ~@2 x ~@3 x!2 ~@6 x", O: "x ~ x ~@5 x ~ x ~@2 x ~@2",
  P: "x ~ x ~@2 x ~ x!2 ~@3 x ~@3", Q: "x ~@3 x ~@3 x ~@6 x", R: "x", S: "~ x",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<~@16 A B@7 C B C ~@12 B@8 A B ~@20>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@27 A B A B@3 A@2 ~@14 C@3 B C B@3 C ~@11>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@3 x",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@16 A ~@9 B C@2 D ~@2 C D ~@15 E F@2 G ~@3 G ~@12>".pickRestart({
  A: "~ x ~@2", B: "~@14 x!2", C: "~@15 x", D: "x", E: "~@6 x!2 ~@8", F: "~@7 x ~@8", G: "~@7 x!2 ~@7",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct(`<
  A@16 B C@7 D C E ~ F G C@2 F G H A@4 C@8 I J K ~ L M N C O M P Q A@7 R ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!8", C: "x!16", D: "x!8 ~@3 x!5", E: "x!5 ~ x ~@5 x ~@3", F: "x!8", G: "~@13 x!2 ~",
  H: "x!7 ~@5 x!2 ~@2", I: "~@3 x!13", J: "x!13 ~ x ~", K: "~ x ~@2", L: "~@4 x!4", M: "x!4 ~@4", N: "~@5 x!2 ~ x!8",
  O: "x!9 ~ x ~ x ~ x ~", P: "~@5 x!2 ~ x!7 ~", Q: "~@4 x!2 ~@6 x ~@3", R: "~@2 x!4 ~@10",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 A ~@9 B C D ~@3 D ~@16 E F@2 G ~@3 G ~@12>".pickRestart({
  A: "~@3 x ~@12", B: "~@13 x ~@2", C: "~@7 x", D: "~@14 x!2", E: "~@5 x ~@10", F: "~@3 x ~@4", G: "~@6 x!2 ~@8",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@16 A ~@7 B ~ C D ~ E ~@3 E F ~@12 A G H I J B K ~@2 B L M ~@7 N ~@2>".pickRestart({
  A: "x", B: "~ x", C: "~@5 x ~ x!2 ~@7", D: "x ~@10 x ~@4", E: "x ~@7 x ~@3 x ~@2 x", F: "~@7 x!2 ~@5 x ~",
  G: "~@13 x ~ x", H: "x!2", I: "~@3 x ~@4 x ~@7", J: "~@3 x ~@12", K: "x ~@3 x ~@2 x ~@8", L: "x ~@3 x ~@2 x ~@7 x",
  M: "x ~@2 x ~@4", N: "~@3 x!2 ~@3",
})).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@27 A B ~@3 B ~@17 C@2 D ~@3 D ~@12>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@13 x ~@2", C: "~@4 x!2 ~@10", D: "~@5 x ~@10",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct("<~@27 A B A ~@2 B A ~@15 C D E C B ~ F C B ~@11>".pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@7", B: "x", C: "~@10 x ~@2 x ~@2", D: "x ~@9 x ~@2 x ~@2", E: "x!2", F: "~ x",
})).gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@24 A ~ A ~@7 A ~@12 B ~ B ~@8 C D E D E D E D E ~@2>".pickRestart({
  A: "~ x", B: "x", C: "x!2", D: "~@2 x ~@2 x ~ x!2 ~@7", E: "~ x ~@3 x ~ x!2 ~@7",
})).gain(0.51)

stack(
  bass, piano, piano_soft, overdriven_guitar, acoustic_guitar_steel, string_ensemble_1, kick, rim, snare, low_tom,
  hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Brooks Garth