Strudelify

When She Cries

Restless Heart

KeyA majorTempo120 bpm
0:00/0:00
// When She Cries — Restless Heart
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · pad warm
const pad_warm = note(`<
  ~@2 A B@8 C D E F G H@3 I@7 J K L@2 M N@4 O P Q@4 R S T U V W@2 X@8 Y Z AA AB AC AD@3 AE AF AG AH AI@3 AJ AK AL@2 AM@4
  AE AN AO AP AQ@3 AR AS AT@2 AU@4 AV AW AX AY AZ@3 BA BB BC@2 BD@3
>`.pickRestart({
  A: "~@13 [a3,c#4,e4]@19", // A
  B: "[~@16 [f#3,a3,c#4]@30 ~@4 [a3,c#4,e4]@32 ~@2 [f#3,a3,c#4]@29 ~@5 [a3,c#4,e4]@27 ~@8 [d3,f#3,a3]@28 ~@6 [e3,g#3,b3]@26 ~@9 e4@31 ~@3, ~@221 [a3,c#4]@32 ~@3]/8", // F#m A F#m A D E A
  C: "[a3,c#4,e4]@13 ~@3", D: "~@2 [d3,f#3,a3]@25 ~@5", E: "~@4 [b3,d4,f#4]@25 ~@3", F: "~@3 [e3,g#3,b3]@13",
  G: "~@9 [a3,c#4,e4]@23", H: "[~@11 [d3,f#3,a3]@28 ~@7 [e3,b3]@23 ~@11 [a3,c#4,e4]@15 ~, ~@15 g#3@8 ~@9]/3",
  I: "[~ [c#4,e4]@8 ~ [g#3,c#4,e4]@7 ~ [f#3,a3,c#4]@19 ~@15 [b3,d4,f#4]@26 ~@9 [e3,g#3,b3]@25 ~@9 [a3,c#4,e4]@26 ~@8 [f#3,a3,d4]@12 ~ [f#3,a3,d4]@12 ~ [f#3,a3,d4]@4 ~@5 [e3,a3,c#4]@12 [e3,a3,c#4]@11 ~@2 [e3,a3,c#4]@4 ~@5, ~ a3@5 ~@4 d#4 ~@213]/7", // C#m F#m Bm E A D A
  J: "[b3,d4,f#4]@9 ~@8 [e3,g#3,b3]@10 ~@5", K: "~@2 [a3,c#4,e4]@9 ~@8 [f#3,a3,c#4]@10 ~@3",
  L: "[~@4 [f#3,a3,d4]@12 ~@2 [f#3,a3,d4]@11 ~ [f#3,a3,d4]@4 ~@5 [e3,a3,c#4]@11 ~@2 [a3,c#4]@11 ~, ~@51 e3@11 ~@2]/2", // D A
  M: "[e3,a3,c#4]@4 ~@5 [b3,e4,f#4]@8 ~ [b3,e4,f#4]@7 ~@2 [b3,f#4]@5, ~@13 d4@3", // A Bsus4 B5
  N: "[~@3 b3@2 ~@6 [e3,a3,b3]@7 ~@2 [e3,a3,b3]@8 ~ [e3,g#3,b3]@7 ~ [e3,g#3,b3]@4 ~@5 a3@12 ~ [f#3,a3,d4]@11 ~ [f#3,a3,d4]@4 ~@5 [e3,a3,c#4]@12 ~ [e3,a3,c#4]@11 ~ [e3,a3,c#4]@4 ~@5 [b3,d4,f#4]@9 ~@5, ~@2 [d4,f#4]@3 ~@24 a#3 ~@15 [f#3,d4]@12 ~@71]/4", // Esus4 E D A Bm D
  O: "~@3 [e3,g#3,b3]@9 ~@9 [a3,c#4,e4]@9 ~@2", P: "~@6 [a3,c#4]@9 ~@8 [b3,d4,f#4]@9, ~@5 f#3@8 ~@19",
  Q: "[~@3 [b3,d4,f#4]@13 ~ [b3,d4,f#4]@3 ~@5 [e3,g#3,b3]@27 ~@7 [a3,c#4,e4]@13 [a3,c#4,e4]@14 ~@9 [f#3,a3,c#4]@10 ~ [f#3,a3,c#4]@15 ~@7]/4", // Bm E A F#m
  R: "~ e4@11 ~ [a3,c#4,e4]@14 ~@5, [a3,c#4]@11 ~@21", S: "~@3 c#4@11 ~ [f#3,a3,c#4]@12 ~@5, ~@2 [f#3,a3]@11 ~@19",
  T: "~@5 [a3,c#4,e4]@25 ~@2", U: "~@3 [d3,f#3,a3]@13", V: "~@9 [e3,g#3,b3]@14 ~@9",
  W: "[~@6 [a3,c#4,e4]@16 ~ [a3,c#4,e4]@9]/2", // A
  X: "[~@17 a3@24 ~@2 a#3 ~@7 [b3,d4,f#4]@25 ~@9 [e3,g#3,b3]@26 ~@8 [a3,c#4,e4]@25 ~@9 [d3,f#3,a3]@27 ~@8 [e3,g#3,b3]@25 ~@9 [a3,c#4,e4]@15 ~@2 [c#4,e4]@8 ~ [g#3,c#4,e4]@6 ~@2, ~@16 [d3,f#3]@24 ~@199 a3@4 ~@13]/8", // Bm E A D E A C#m D
  Y: "~ f#3@25 ~@6, [a3,c#4]@25 ~@7", Z: "~@3 f#4@26 ~@3, ~ [b3,d4]@13 ~@2", AA: "~@5 [e3,g#3,b3]@26 ~",
  AB: "~@4 [a3,e4]@11 ~, ~@7 c#4@22 ~@3", AC: "~@5 [f#3,a3,d4]@6 [f#3,a3,d4]@5",
  AD: "[~@4 [f#3,a3,d4]@4 ~@4 [e3,a3,c#4]@12 ~ [e3,a3,c#4]@11 ~ [e3,a3,c#4]@4 ~@5 [b3,d4,f#4]@9 ~@8 [e3,g#3,b3]@10 ~@8 [a3,c#4,e4]@9 ~@6]/3", // D A Bm E A
  AE: "~@2 [f#3,a3,c#4]@10 ~@7 [f#3,a3,d4]@12 ~", AF: "[f#3,a3,d4]@11 ~ [f#3,a3,d4]@4 ~@5 [e3,a3,c#4]@11",
  AG: "~@2 [e3,a3,c#4]@11 ~@2 a3@4 ~@5 [b3,e4,f#4]@8, ~@7 [e3,c#4]@2 ~@7", // A Bsus4 C#m
  AH: "[b3,e4,f#4]@7 ~@2 [b3,d4,f#4]@7 ~ [b3,d4,f#4]@3 ~@5 [e3,a3,b3]@7", // Bsus4 Bm Esus4
  AI: "[~@2 [e3,a3,b3]@8 ~ [e3,g#3,b3]@7 ~@2 [e3,g#3,b3]@4 ~@4 [f#3,a3,d4]@12 ~@2 f#3@10 ~@2 [f#3,a3,d4]@5 ~@3 [e3,a3,c#4]@12 ~ [e3,a3,c#4]@11 ~@2 [e3,a3,c#4]@4 ~@4, ~@11 a#3 ~@29 [a3,d4]@11 ~@44]/3", // Esus4 E D A D5
  AJ: "~ b3@9 ~@7 [e3,g#3,b3]@9 ~@6, [d4,f#4]@9 ~@23", AK: "~@3 [a3,c#4,e4]@9 ~@8 [f#3,a3,c#4]@9 ~@3",
  AL: "[~@5 [b3,d4,f#4]@11 ~@2 [b3,f#4]@13 [b3,d4,f#4]@3 ~@6 [e3,g#3,b3]@11 ~ [e3,g#3,b3]@11 ~, ~@17 d4@13 ~@34]/2", // Bm B5 Bm E
  AM: "[[e3,g#3,b3]@6 ~@4 [f#3,a3,d4]@12 ~ [f#3,a3,d4]@12 ~ [f#3,a3,d4]@4 ~@5 c#4@11 ~ [e3,a3,c#4]@11 ~@2 [e3,a3,c#4]@4 ~@4 [b3,d4,f#4]@9 ~@9 e3@10 ~@7 [a3,c#4,e4]@9 ~@6, ~@44 [e3,a3]@12 ~@39 [g#3,b3]@10 ~@23]/4", // E D A Bm A A5 G#m
  AN: "[f#3,a3,d4]@11 ~@2 [f#3,a3,d4]@4 ~@5 [e3,a3,c#4]@10", // D A
  AO: "~@2 [e3,a3,c#4]@11 ~@2 [e3,a3,c#4]@4 ~@5 [b3,e4,f#4]@8", // A Bsus4
  AP: "~ [b3,e4,f#4]@7 ~ [b3,d4,f#4]@7 ~ [b3,d4,f#4]@3 ~@6 [e3,a3,b3]@6", // Bsus4 Bm Esus4
  AQ: "[~@3 [a3,b3]@8 [e3,g#3,b3]@7 ~@2 [e3,g#3,b3]@4 ~@4 [f#3,a3,d4]@12 ~@2 [f#3,a3,d4]@11 ~ [f#3,a3,d4]@4 ~@5 [e3,a3,c#4]@12 ~ [e3,a3,c#4]@11 ~ [e3,a3,c#4]@4 ~@4, ~@2 e3@7 ~@2 a#3 ~@84]/3", // Asus2 E D A
  AR: "~ [b3,d4,f#4]@9 ~@7 [e3,g#3,b3]@9 ~@6", AS: "~@4 e4@8 ~@8 [f#3,a3,c#4]@9 ~@3, ~@3 [a3,c#4]@9 ~@20",
  AT: "[~@5 [b3,d4,f#4]@11 ~@2 [b3,d4,f#4]@13 ~ f#4@2 ~@6 [e3,g#3,b3]@11 ~@2 [e3,g#3,b3]@10 ~, ~@31 [b3,d4]@3 ~@30]/2", // Bm E Bm
  AU: "[~ [g#3,b3]@2 ~@7 [a3,d4,f#4]@12 ~ [a3,d4,f#4]@12 ~ [a3,d4,f#4]@3 ~@6 [a3,e4]@10 ~@2 [a3,c#4,e4]@11 ~@2 [a3,c#4,e4]@3 ~@5 [b3,d4,f#4]@7 ~@2 [b3,d4,f#4]@2 ~@7 [e3,b3]@7 ~ [e3,g#3,b3]@3 ~@6 [a3,c#4,e4]@7 ~ [a3,c#4,e4]@3 ~@4, ~ e3 ~@8 b3 ~@34 [b3,c#4]@4 ~@46 g#3@7 ~@26, ~@45 d4@2 ~@81]/4", // G#m D A5 A Bm E5 E A …
  AV: "~@2 [f#3,a3]@6 ~@3 [f#3,a3,c#4]@2 ~@6 [a3,d4,f#4]@12 ~, ~@2 c#4@2 ~@7 f3 ~@20", // F#m D
  AW: "[a3,d4,f#4]@11 ~@3 a3@3 ~@5 [a3,c#4,e4]@10, ~@13 [d4,f#4]@4 ~@15", // D A D
  AX: "~@3 [a3,c#4,e4]@10 ~@3 [a3,c#4]@3 ~@5 [b3,d4,f#4]@6 ~@2, ~@15 e4@3 ~@14", // A Bm
  AY: "~ [b3,d4,f#4]@6 ~@2 [b3,d4,f#4]@6 ~@3 [b3,d4,f#4]@3 ~@5 [e3,g#3,b3]@6", // Bm E
  AZ: "[~@3 [e3,g#3,b3]@7 ~@2 [e3,g#3,b3]@6 ~@2 [g#3,b3]@2 ~@6 [a3,d4,f#4]@11 ~@3 [a3,d4,f#4]@10 ~@2 [a3,d4,f#4]@4 ~@5 [a3,c#4,e4]@10 ~@3 [a3,c#4,e4]@10 ~@3 [a3,c#4,e4]@2 ~@2 d#4 ~@2, ~@20 e3 ~@75]/3", // E G#m D A
  BA: "~@2 [b3,d4,f#4]@6 ~@2 [b3,d4,f#4]@3 ~@6 e3@6 ~@2 [e3,g#3,b3]@3 ~@2, ~@9 [g#3,b3]@3 ~@4", // Bm E G#m
  BB: "~@4 [a3,c#4,e4]@5 ~@3 [a3,c#4,e4]@3 ~@6 [f#3,a3,c#4]@6 ~@2 [f#3,a3,c#4]@3", // A F#m
  BC: "[~@6 [b3,d4,f#4]@11 ~@2 [b3,d4,f#4]@11 ~ [b3,d4,f#4]@2 ~@7 [e3,g#3,b3]@11 ~@2 [e3,g#3,b3]@10 ~]/2", // Bm E
  BD: "[~@2 [e3,g#3,b3]@3 ~@6 [a3,d4,e4]@12 ~ [a3,c#4,e4]@54 ~@18]/3", // E Asus4 A
})).s("gm_pad_warm").gain(0.71).pan(0.7)

// chords · overdriven guitar
const overdriven_guitar = note("<~@74 A@3 B@8 ~@4 C@3 D E F@7 G@2 H@2 I@3>".pickRestart({
  A: "[~@29 a4@4 [b4,c#5]@3 ~@2 c#5@24 [c5,e5]@9 ~ e5@24, ~@37 e5@24 ~@10 c#5@25]/3", // Bsus2 C
  B: "[~ [e4,a4]@5 [a4,c#5]@4 [c#5,e5]@8 [b4,d5]@9 [a4,c#5]@8 ~ g#4@5 ~@3 [b4,d5]@8 ~ c#5@8 [f#4,b4]@7 ~@2 e4@4 [a4,c#5]@4 [c#5,e5]@25 ~@2 c5@12 e5@21 ~ e4@4 [f#4,b4]@8 ~ a4@17 [f#4,b4]@17 [a4,e5]@16 ~ e5@4 [e4,a4]@4 ~ c#5@3 ~ c#5@26 ~@14, ~@35 b4@8 ~@9 a4@6 ~@11 a4@3 ~@32 e5@12 ~ c#5@15 ~@6 a4@4 ~@9 c#5@16 ~@36 g#4@8 a4@4 ~ e5@23 ~@17]/8", // A5 A C#m Bm A Bm B5 A …
  C: "[~@29 a4@4 ~ b4@3 ~ c#5@24 ~ c5@8 ~ e5@24, ~@33 c#5@3 ~ e5@24 ~ e5@9 c#5@25]/3",
  D: "~@2 e4@4 [a4,c#5]@4 [c#5,e5]@8 ~ [b4,d5]@8 [a4,c#5]@5, ~ a4@5 ~@26", // A C#m Bm A
  E: "~@4 b4@8 [b4,d5]@8 ~ [a4,c#5]@8 [f#4,b4]@3, ~@4 g#4@5 ~@23", // Bm A B5
  F: "[~@6 [e4,a4]@4 [a4,c#5]@4 ~ [c#5,e5]@24 ~@2 c5@12 e5@22 [e4,a4]@4 ~ f#4@8 [a4,c#5]@17 [f#4,b4]@17 [a4,e5]@16 ~ e5@4 [e4,a4] [e4,a4]@4 [a4,c#5]@4 [c#5,e5]@25 ~ c5@11 ~ e5@21 ~ [e4,a4]@4 [a4,c#5]@4 ~ e5@3, ~@40 e5@12 ~ c#5@15 ~@11 b4@7 ~@53 g#4@9 ~@29 e5@12 ~ c#5@18 ~@12 c#5@4, ~@190 d#5 ~@33]/7", // A5 A C#m A5 A B5 A5 A …
  G: "[~@5 b4@8 ~ a4@8 [g#4,b4]@8 [b4,d5]@9 [a4,c#5]@8 ~ [f#4,b4]@7 ~ [e4,b4]@4 ~ [a4,c#5]@3, ~@5 d5@6 ~@2 c#5@8 ~@43]/2", // G#m Bm A B5 E5 A
  H: "[~ b4@11 b4@5 ~ [f#4,b4]@4 [b4,d5]@2 [a4,c#5]@2 [f#4,b4]@9 [b4,d5]@2 [a4,c#5]@2 ~ b4@20 ~ [b4,d5]@3, ~ d5@15 ~@23 d5@20 ~@5]/2", // B5 Bm A B5 Bm A Bm
  I: "[~@2 g#4@8 [b4,d5]@14 c#5@53 ~@19, ~ b4@7 ~@16 a4@43 ~@29]/3", // Bm
})).s("gm_overdriven_guitar").gain(0.71)

// chords · string ensemble 1
const string_ensemble_1 = note("<A@4 ~@104>".pickRestart({
  A: "[~@9 [e3,d4]@65 ~@2 c#4@33 ~@19, ~@9 [a3,e4,a4]@98 ~@21]/4", // E7 A5
})).s("gm_string_ensemble_1").gain(0.57)

// bass · electric bass pick
const bass = note(`<
  ~@2 A B C@2 D@2 E@2 F G H I J K L M@2 N@2 O@2 P Q R S T U V W X Y@2 Z@2 AA AB@2 AC AD AE AF AG AH AI@2 AJ@2 AK@2 AL AM
  AN AO AP AQ AR AS@2 AT@2 AU@2 AV AW AX AY AZ BA BB BC@2 BD@4 BE BF BG BH BI BJ BK BL BM BN@2 BO@2 BP BQ BR BS BT BU BV
  BW@2 BX@2 BY@2 BZ@2 CA@3
>`.pickRestart({
  A: "~@13 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2",
  B: "~@2 a1@2 ~@3 a1@3 ~ a1@3 ~@2 f#1@3 ~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2",
  C: "[~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@3 f#1@3 ~ a1@3 ~ a1@3 ~ a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1 ~@3 a1@3 ~ f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~]/2",
  D: "[~ f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1 ~@4 d2@2 ~@2 d2@2 ~]/2",
  E: "[~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 e1@3 ~ e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 a1@3]/2",
  F: "~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@3",
  G: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1 ~@2",
  H: "~@2 d2 ~@3 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3",
  I: "d2@2 ~@2 b1@3 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2",
  J: "~@2 b1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2",
  K: "e1@2 ~@2 e1 ~@4 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1 ~@3 a1@2",
  L: "~@2 a1@2 ~@2 a1 ~@4 d2@2 ~@2 d2 ~@4 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2",
  M: "[~ d2 ~@3 d2 ~@3 d2@2 ~@2 e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2]/2",
  N: "[~ a1@8 ~ g#1@8 f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 b1@3 ~@2 b1@2 ~@2 b1@2 ~]/2",
  O: "[~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 a1@2 ~@2 a1@2 ~]/2",
  P: "~ a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1 ~@3 a1 ~@4 d2@2 ~@3",
  Q: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 c#2@2 ~",
  R: "~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3",
  S: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@3 ~ e1@3 ~ e1@2 ~@3 e1@2 ~@2 e1@2",
  T: "~@2 a1@3 ~@2 a1@3 ~ a1@2 ~@2 a1@3 ~ f#1@3 ~@2 f#1@2 ~@2 f#1@2 ~@2",
  U: "f#1@3 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2",
  V: "~@2 d2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2",
  W: "c#2@2 ~@3 c#2@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@3 ~ b1@2 ~@2 b1@2",
  X: "~@2 b1@2 ~@3 b1@3 ~ e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  Y: "[e1@2 ~@3 e1@2 ~@2 e1@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2 ~@4 d2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~]/2",
  Z: "[~ c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@3 ~ e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@3 ~ a1@2 ~@3 a1@2 ~@2 a1@2 ~]/2",
  AA: "~ a1@3 ~ f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@3 ~@2 b1@3 ~ b1@2 ~@3",
  AB: "[b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 e1@34 ~ a1@2 ~@2]/2",
  AC: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1 ~@3 a1@2 ~@3 a1@3 ~ f#1@2",
  AD: "~@2 f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2",
  AE: "a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2",
  AF: "~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2",
  AG: "~ f#1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2",
  AH: "~@3 a1 ~@3 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2",
  AI: "[~ d2@2 ~@2 d2@2 ~@2 e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 a1@3 ~ a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~]/2",
  AJ: "[~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1 ~@4 d2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~]/2",
  AK: "[~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 b1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~]/2",
  AL: "~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1 ~@3 a1@2 ~@2 a1@2 ~@3",
  AM: "a1@2 ~@2 a1@2 ~@2 a1 ~@3 a1@2 ~@3 a1@2 ~@2 a1 ~@3 d2@2 ~@3 d2 ~",
  AN: "~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2 ~@4 d2 ~@3 d2@2 ~@2 e1@3 ~",
  AO: "e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 a1@2",
  AP: "~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@8 ~ g#1@8",
  AQ: "~ f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~@2 f#1@2",
  AR: "~@2 b1@3 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  AS: "[~ b1@2 ~@2 e1@3 ~ e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@3 a1@2 ~]/2",
  AT: "[~ a1 ~@3 a1 ~@3 d2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~]/2",
  AU: "[~ c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@3 ~ e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@3 ~@2 a1@3 ~ a1@3 ~ a1@2 ~@2 a1@3]/2",
  AV: "~@2 f#1@3 ~ f#1@2 ~@2 f#1@2 ~@2 f#1@3 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@3",
  AW: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2",
  AX: "~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 b1@2 ~@3 b1@2 ~@2",
  AY: "b1@2 ~@3 b1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@3 ~ e1@3 ~@2 e1@2",
  AZ: "~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 d2@2 ~@2",
  BA: "d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2 ~@3 d2@2 ~@2 c#2@2",
  BB: "~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2",
  BC: "[~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@3 ~@2 e1@3 ~ e1@2 ~@2 e1@2 ~@3 e1@3 ~ a1@2 ~@2 a1@2 ~@3 a1@2 ~@2 a1@3 ~ f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~]/2",
  BD: "[~ f#1@3 ~ b1@3 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 e1@34 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~]/4",
  BE: "~ c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@3 ~@2",
  BF: "e1@3 ~ e1@2 ~@2 e1@2 ~@3 e1@3 ~ a1@2 ~@2 a1@3 ~@2 a1@2 ~@2 a1@2",
  BG: "~@2 f#1@3 ~ f#1@3 ~ f#1@2 ~@3 f#1@3 ~ d2@2 ~@2 d2@2 ~@2 d2@2 ~@3",
  BH: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2",
  BI: "~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 b1@2 ~@2 b1@2 ~@2",
  BJ: "b1@2 ~@3 b1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@3 ~ e1@3 ~ e1@2",
  BK: "~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 d2@2 ~@2",
  BL: "~ d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2 ~@3 d2@2 ~@2 c#2@2",
  BM: "~@3 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~",
  BN: "[~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@3 ~ e1@3 ~ e1@2 ~@3 e1@2 ~@2 e1@3 ~ a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@3 ~ f#1@2 ~@2 f#1@2 ~@3 f#1@2 ~]/2",
  BO: "[~ f#1@3 ~ b1@3 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 e1 ~@3 e1 ~@3 e1@2 ~@3 e1 ~@3 e1 ~@3 e1 ~@2]/2",
  BP: "~ e1 ~@3 e1 ~@4 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 d2@2 ~@2",
  BQ: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~",
  BR: "~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@3 ~",
  BS: "e1@3 ~ e1@2 ~@3 e1@2 ~@2 e1@3 ~ a1@3 ~@2 a1@3 ~ a1@2 ~@2 a1@2",
  BT: "~@2 f#1@3 ~@2 f#1@3 ~ f#1@2 ~@2 f#1@3 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2",
  BU: "d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2",
  BV: "~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 b1@2 ~@2 b1@2 ~@2",
  BW: "[~ b1@2 ~@2 b1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@3 ~ e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@3 d2@2 ~]/2",
  BX: "[~ d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2 ~@4 d2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@2 c#2@2 ~@3 c#2@2 ~]/2",
  BY: "[~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 b1@3 ~ e1@3 ~@2 e1@2 ~@2 e1@2 ~@2 e1@3 ~ a1@2 ~@3 a1@2 ~@2 a1@2 ~@2 a1@3 ~ f#1@2 ~@3 f#1@2 ~@2 f#1@2 ~]/2",
  BZ: "[~ f#1@3 ~@2 b1@3 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~]/2",
  CA: "[~@2 e1 ~@3 e1@2 ~@3 a1@68 ~@17]/3",
})).s("gm_electric_bass_pick").gain(0.5)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B C D E F G H I J K L M N O P Q C D R F G S B J K E M N T U Q C V W X Y A B J Z E M AA H U Q AB L W AC O A B AD
  D E M G H U AE K L AF N O A Q C D E AG AH H B J K L M N O U Q C D W F G A B J K E M N T U Q C L W F AI ~@2
>`.pickRestart({
  A: "~@13 x ~@16 x ~", B: "~@15 x ~@16", C: "~ x ~@16 x ~@13", D: "~@3 x ~@16 x ~@11", E: "~@5 x ~@16 x ~@9",
  F: "~@8 x ~@16 x ~@6", G: "~@10 x ~@16 x ~@4", H: "~@12 x ~@16 x ~@2", I: "~@7 x ~@8", J: "x ~@16 x ~@14",
  K: "~@2 x ~@16 x ~@12", L: "~@4 x ~@16 x ~@10", M: "~@7 x ~@16 x ~@7", N: "~@9 x ~@16 x ~@5", O: "~@11 x ~@16 x ~@3",
  P: "~@13 x ~@17 x", Q: "~ x", R: "~@5 x ~@17 x ~@8", S: "~@6 x ~@8 x", T: "~@11 x ~@17 x ~@2", U: "~@14 x ~@16 x",
  V: "~@3 x ~@17 x ~@10", W: "~@6 x ~@16 x ~@8", X: "~ x ~@2", Y: "~@9 x ~@4 x ~", Z: "~ x ~@8 x ~@5",
  AA: "~@9 x ~@17 x ~@4", AB: "~ x ~@17 x ~@12", AC: "~@4 x ~@8 x ~@2", AD: "x ~@8 x ~@6", AE: "~@17 x ~@14",
  AF: "~@3 x ~@8 x ~@3", AG: "~@16 x ~@4 x ~@3 x ~@3 x ~@2", AH: "~@2 x ~@3 x ~@3 x ~@16 x ~@4",
  AI: "~@11 x ~@11 x ~@8",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C D E F G H I J K L M N O P B Q R E F S H I T U V M W O X Y Z R AA N AB H AC C U L F G O AD J Z R M N AE AF B
  C U E AG AH AI I J AJ L M N AK P B C R E AL AM H I J U L M N AN P B Z R E F AM H I C AO L M G AP P J Z R AQ N AR ~@2
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@7 x ~@16 x ~@7", C: "~@9 x ~@16 x ~@5", D: "~@11 x ~@17 x ~@2", E: "~@14 x ~@16 x", F: "~ x",
  G: "~ x ~@16 x ~@13", H: "~@4 x ~@16 x ~@10", I: "~@6 x ~@16 x ~@8", J: "~@8 x ~@16 x ~@6", K: "~@5 x ~@8 x ~",
  L: "~@13 x ~@16 x ~", M: "~@15 x ~@16", N: "x ~@16 x ~@14", O: "~@3 x ~@16 x ~@11", P: "~@5 x ~@16 x ~@9",
  Q: "~@9 x ~@17 x ~@4", R: "~@12 x ~@16 x ~@2", S: "~@2 x ~@11 x ~@4 x!2 ~@2 x ~@8", T: "~@4 x ~@8 x ~@2",
  U: "~@11 x ~@16 x ~@3", V: "~@2 x ~@10 x ~@16 x ~", W: "x ~@8 x ~@6", X: "~ x!2 ~@2 x ~@3 x ~@12 x ~@9",
  Y: "~@7 x ~@17 x ~@6", Z: "~@10 x ~@16 x ~@4", AA: "~@7 x ~@8", AB: "~@9 x ~@6", AC: "~@3 x ~@8 x ~@3",
  AD: "~@5 x ~@17 x ~@8", AE: "~@2 x ~@16 x ~@12", AF: "~@2 x ~@8 x ~@4", AG: "~@16 x ~@12 x ~@2",
  AH: "~ x ~@3 x ~@12 x ~@13", AI: "~@3 x ~@17 x ~@10", AJ: "~@10 x ~@6 x ~@9 x ~@4", AK: "~@2 x ~@16 x!2 ~@11",
  AL: "~@16 x ~@3 x ~@4 x ~@3 x ~@2", AM: "~@2 x ~@3 x ~@12 x ~@12", AN: "~@3 x ~@15 x!2 ~@3 x!2 ~@6",
  AO: "~@11 x ~@5 x ~@10 x ~@3", AP: "~@3 x ~@16 x ~@4 x ~@6", AQ: "~ x ~@5 x ~@8", AR: "~ x ~@14",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@23 A ~@3 B C ~@2 D E ~@3 F ~@22 G H ~@3 I ~@3 J ~@5 K L ~@7 M ~@6 L ~@3 N ~@3 O ~@3 P ~@2 Q ~@2
>`.pickRestart({
  A: "~@14 x ~@3 x!2 ~@12", B: "~@7 x", C: "x", D: "~@29 x ~@2", E: "~@5 x ~@26", F: "~@14 x ~@6 x ~@10",
// … 74 more lines