Strudelify

Io vivro (senza te)

Battisti

KeyC minorTempo75 bpm
0:00/0:00
// Io vivro (senza te) — Battisti
// 75 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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 · fretless bass
const bass = note("<~@17 A@8 B C D@8 E@3 F@8 G@2 ~@10 C H@8 E@3 I@2 J@7 K@8 L@2 ~@4>".pickRestart({
  A: "[~@22 c2@20 ~ c2@3 f2@20 ~@4 bb2@17 ~ d2@6 eb2@20 ~@4 ab2@18 g2@6 f2@23 ~ g2@26, ~@67 c3@5 ~@120]/8",
  B: "~@22 c2 ~", C: "~ c2@2 ~ f2 g2 ~ c3@15 f2 ~",
  D: "[~ f2@16 ~@5 bb2@18 d2@6 eb2@23 ~ ab2@13 ~@2 eb3 ab3 ~ g3@18 f2@8 ~@2 f3@2 eb3@16 g2 c3 ~ d3 eb3 ~@3 c2@6 ~@3 c2@14 ~ d2@6 ~@3 d2@12 ~@3 d2@2, ~@42 c3 ~@14 ab2 ~@12 c3 ~@25, ~@115 c3@2 ~@22 d3@2 g2@2 ~@49]/8",
  E: "[~@7 d2@12 ~@3 eb2@7 ~@2 eb2@14 ~ eb2@7 ~@2 eb2@13 ~@2 g2@2]/3",
  F: "[~ g2 ~@2 g2 ~@2 g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@12 ~@12 c2@6 ~@3 c2@9 ~@6 bb1@6 ~@3 bb1@12 ~@3 ab1@6 ~@3 ab1@11 ~@4 g1@6 ~@3 g1@4 c2@4 ~ g2@6 c2@6 ~@3 c2@12 ~@3 bb1@6 ~@3 bb1@13 ~@2 ab1@2]/8",
  G: "[~@7 ab1@13 ~@2 g1@24 ~@2]/2",
  H: "[~ f2@16 ~@5 bb2@18 d2@6 eb2@23 ~ ab2@13 ~@2 eb3 ab3 ~ g3@18 f2@8 ~@2 f3@2 eb3@16 g2 c3 ~ d3 eb3 ~ c3 g2 c2@6 ~@3 c2@14 ~ d2@6 ~@3 d2@12 ~@3 d2@2, ~@42 c3 ~@14 ab2 ~@38, ~@115 c3@2 ~@22 d3@2 ~@51]/8",
  I: "[~ g2 ~@2 g2 ~@2 g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@12 ~@14]/2",
  J: "[~@22 c2@6 ~@3 c2@9 ~@6 bb1@6 ~@3 bb1@12 ~@3 ab1@6 ~@3 ab1@11 ~@4 g1@6 ~@3 g1@4 c2@4 ~ g2@6 c2@6 ~@3 c2@12 ~@3 bb1@6 ~@3 bb1@13 ~@2 ab1@2]/7",
  K: "[~@7 ab1@13 ~@2 g1@12 ~@12 eb2@6 ~@3 eb2@9 ~@6 db2@6 ~@3 db2@12 ~@3 b1@6 ~@3 b1@11 ~@4 bb1@6 ~@3 bb1@4 eb2@4 ~ bb2@6 eb2@6 ~@3 eb2@12 ~@3 db2@6 ~@3 db2@13 ~@2 b1@2]/8",
  L: "[~@7 b1@13 ~@2 bb1@12 ~@14]/2",
})).s("gm_fretless_bass").gain(0.52)

// other · piccolo
const piccolo = note("<A@5 B C D ~@85>".pickRestart({
  A: "[~@22 eb6@18 d6@6 c6@19 ~@5 d6@18 bb5@5 ~ g5@12 ~@12 ab5 ~]/5", B: "~ ab5 ~@2 bb5 ~@2 c6@7 ~@8 c6@2",
  C: "~ c6 ~@2 d6 ~@2 eb6@7 ~@8 b5 ~", D: "~ b5 ~@2 c6 ~@2 d6@14 ~@3",
})).s("gm_piccolo").gain(0.15).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note("<A@5 B C D E F@8 G@8 H@6 I@8 J@3 K@6 E F@8 H@6 I@8 ~ L@8 M@3 N@7 ~@3>".pickRestart({
  A: "[~@22 [eb4,eb5]@18 [d4,d5]@6 [c4,c5]@21 ~@3 [d4,d5]@18 [bb3,bb4]@6 [g3,g4]@16 ~@8 [ab3,ab4] ~]/5", // Eb D C D Bb G Ab
  B: "~ [ab3,ab4]@2 ~ [bb3,bb4]@2 ~ [c4,c5]@12 ~@3 [c4,c5] ~", // Ab Bb C
  C: "~ [c4,c5] ~@2 [d4,d5] ~@2 [eb4,eb5]@11 ~@4 [b3,b4] ~", D: "~ [b3,b4] ~@2 [c4,c5] ~@2 [d4,d5]@15 ~@2",
  E: "~@11 [c3,g3,c4,eb4]", // Cm
  F: "[~@16 [bb2,bb3,d4]@5 ~ [a3,c4]@23 ~ [bb2,bb3]@18 [a2,a3]@6 [eb3,g3,bb3,eb4]@21 ~@3 [ab2,ab3]@17 ~ [g2,g3]@5 ~ [f2,f3]@12 eb2@11 ~ [eb2,gb3,a3]@23 ~@25 g4@2, ~@8 f3@15 [f3,d4]@12 ~@12 [c4,eb4]@11 ~ c4@24 ~@13, ~@22 f2@24 ~@72 ab3@23 ~@51, ~@65 eb3@17 ~ [g2,g3,b3,d4]@13]/8", // Bb Am Bb A Eb Ab G F …
  G: "[~@11 [eb4,c5]@9 [d4,bb4]@3 [c4,a4]@12 [g4,d5]@9 [f4,c5]@3 [eb4,bb4]@12 [g4,c5]@24 [d4,b4]@13]/8", // Cm Gm F G5 F5 Eb5 C5 G
  H: "[~@11 [bb4,g5]@12 [a4,f5]@12 [f4,d5]@12 [g4,eb5]@12 [eb4,c5]@13]/6", // Eb Dm Cm
  I: "[~@11 [eb4,c5]@24 [f4,d5]@24 eb5@24 g5@12 [g3,g4,d5], ~@59 g4@36 ~, ~@83 b4@13]/8", // Cm Dm G5
  J: "[~@22 [c4,c5]@6 [d4,d5]@5 [eb4,eb5]@6 ~ [f4,f5]@6 [g4,g5]@21 ~@3 [c4,c5]@2]/3", // C D Eb F G C
  K: "[~@4 [d4,d5]@6 [eb4,eb5]@6 [f4,f5]@6 [d4,d5]@13 ~@6 [g3,g4] [c4,c5] [d4,d5] [eb4,eb5] [g4,g5] [c5,c6]@47 ~ [eb4,c5]@24 [d4,b4]@26]/6", // D Eb F D G C D Eb …
  L: "[~@22 [c4,c5]@6 [d4,d5]@5 [eb4,eb5]@6 ~ [f4,f5]@6 [g4,g5]@24 [c4,c5]@6 [d4,d5]@6 [eb4,eb5]@6 [f4,f5]@6 [d4,d5]@13 ~@6 [bb2,g3,bb3,g4] [eb3,c4,eb4,c5] [f3,d4,f4,d5] [gb3,eb4,gb4,eb5] [bb3,g4,bb4,g5] [eb4,c5,eb5,c6]@47 ~ [eb4,c5]@24 [d3,d4] ~]/8", // C D Eb F G C D Eb …
  M: "[~ [d3,d4]@2 ~ [eb3,eb4]@2 ~ [f3,f4]@2 ~@13 [eb4,eb5]@6 [f4,f5]@5 [gb4,gb5]@6 ~ [ab4,ab5]@6 [bb4,bb5]@24 [eb4,eb5]@2]/3", // D Eb F Eb F Gb Ab Bb …
  N: "[~@4 [f4,f5]@6 [gb4,gb5]@6 [ab4,ab5]@6 [f4,f5]@13 ~@6 [bb3,bb4] [eb4,eb5] [f4,f5] [gb4,gb5] [bb4,bb5] [eb5,eb6]@47 ~ [gb4,eb5]@24 [ab4,eb5,ab5]@48 ~@2]/7", // F Gb Ab F Bb Eb F Gb …
})).s("gm_string_ensemble_2").gain(0.21).pan(0.3)

// other · viola
const viola = note("<A@5 B C D@2 ~@84>".pickRestart({
  A: "[~@22 c3@18 bb2@6 a2@15 ~@9 bb2@18 g2@6 eb2@19 ~@5 f2@2]/5", B: "~ f2@3 g2@3 ab2@11 ~@4 ab2@2",
  C: "~ ab2@3 bb2@3 c3@10 ~@5 g2@2", D: "[~ g2@3 a2@2 ~ b2@25 ~@16]/2",
})).s("gm_viola").gain(0).pan(0.7)

// chords · french horn
const french_horn = note(`<
  A@5 B C D E F@8 G@8 H I@2 J@5 K@5 L M@7 N@2 E F@8 H I@2 J@5 K@5 O@2 P@8 Q@7 R@3 S@3
>`.pickRestart({
  A: "[~@22 [g3,c4,eb4]@16 ~@2 [f3,bb3,d4]@5 ~ [f3,a3,c4]@20 ~@4 [f3,bb3,d4]@16 ~@2 [f3,a3,d4]@6 [eb3,g3,bb3]@18 ~@6 [eb3,ab3,c4] ~]/5", // Cm Bb F Bb Dm Eb Ab
  B: "~ [eb3,ab3,c4] ~@2 [f3,bb3,d4] ~@2 [g3,c4,eb4]@10 ~@5 [eb3,ab3,c4] ~", // Ab Bb Cm Ab
  C: "~ [eb3,ab3,c4] ~@2 [f3,bb3,d4] ~@2 [g3,c4,eb4]@10 ~@5 [d3,g3,b3] ~", // Ab Bb Cm G
  D: "~ [d3,g3,b3] ~@2 [e3,a3,c4] ~@2 [f3,b3,d4]@17", E: "~@11 [g3,c4,eb4]",
  F: "[~@16 [bb3,d4]@6 [a3,c4]@24 bb3@17 ~ a3@5 ~ [eb3,g3,bb3]@23 ~ ab3@18 g3@5 ~@37 eb4@11 ~ [d3,g3,b3,d4]@25 ~, ~@16 f3@29 ~ [f3,d4]@25 ~@23 c4@72 ~@26, ~@94 eb3@24 [f3,ab3]@23 ~ [gb3,a3]@24 ~@26, ~@130 eb3@35 ~@27]/8", // Bb Am Eb G Dm Fm Gbm
  G: "[~@22 [c3,c4]@18 [bb2,bb3]@5 ~ [a2,a3,c4]@24 [bb2,bb3]@18 [ab2,ab3]@5 ~ [g2,g3,bb3,eb4]@23 ~ [ab2,ab3]@17 ~ [g2,g3]@5 ~@13 eb4@4 ~@2 [c2,c3,c4,eb4,gb4,a4]@5 ~ b3@12 c4@11 ~ b3@2, ~@22 [g3,eb4]@23 ~ f3@46 ~@26 eb4@23 ~ ab3@16 ~@20 g3@14, ~@70 d4@23 ~@25 c4@39 ~@35, ~@71 [f2,f3,f4]@7 ~@5 [g2,d4,g4]@13]/8", // C Bb Am Bb Ab Eb Ab G …
  H: "~@11 [c3,g3,c4,eb4]", I: "[~@8 [bb2,bb3]@3 [f2,a3,c4]@12 [bb2,bb3,d4], ~@11 f3@13]/2",
  J: "[~@16 [ab2,ab3]@5 ~ [g3,bb3]@22 ~@2 ab2@24 [f2,f4]@24 [ab2,c4]@24 [c3,g3,c4]@2, ~@11 eb4@24 ~@12 eb4@13, ~@22 g2@24 ab3@69 ~@5, ~@46 c4@47 ~@27]/5", // Ab Gm F Ab C5
  K: "[~@22 [g2,g3,b3,d4,f4]@48 [c3,c4,eb4,g4]@47 ~ [g2,c4,d4,g4] ~, ~@59 g3]/5", // G7 Cm Gsus4
  L: "~ [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4] ~@2 [g3,c4,d4]@2 ~ [g2,g3,c4,d4,g4]@2 ~ [g2,g3,c4,d4,g4]@2 ~ [g2,g3,b3,d4,g4]@2, ~@13 [g2,g4] ~@10", // Gsus4 G
  M: "[~@22 c4@23 ~ bb3@23 ~ [ab3,c4]@23 ~ c4@12 b3@11 ~ c4@6 d4@6 eb4@6 f4@6 [bb3,eb4,g4]@23 ~ [ab3,c4]@2, ~@22 eb4@72 d4@23 ~@51, ~@22 g3@47 ~@25 g3@70 ~@4]/7", // Ab Eb Ab
  N: "[~@4 d4@6 eb4@6 f4@6 c4@11 ~ b3@10 ~@4, ~@11 [g3,d4]@11 ~@2]/2", // G5
  O: "[~ [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4] ~@2 [g3,c4,d4]@2 ~ [g2,g3,c4,d4,g4]@2 ~ [g2,g3,c4,d4,g4]@2 ~ [g2,g3,b3,d4,g4]@5 ~@21, ~@13 [g2,g4] ~@34]/2", // Gsus4 G
  P: "[~@22 c4@23 ~ bb3@23 ~ [ab3,c4]@23 ~ c4@12 b3@11 ~ c4@6 d4@6 eb4@6 f4@6 [bb3,eb4,g4]@23 ~ c4@6 d4@5 ~ eb4@6 f4@6 [f4,d5] ~, ~@22 eb4@72 d4@23 ~@75, ~@22 g3@47 ~@25 g3@70 ~@2 ab3@23 ~@3]/8", // Ab Eb Dm
  Q: "[~ [f4,d5] ~@2 [g4,eb5] ~@2 [ab4,f5] ~@14 eb4@23 ~ db4@23 ~ [b3,eb4]@23 ~ eb4@12 d4@11 ~ eb4@6 f4@6 gb4@6 ab4@6 [db4,gb4,bb4]@23 ~ [b3,eb4]@2, ~@22 gb4@72 f4@23 ~@51, ~@22 bb3@47 ~@25 bb3@70 ~@4]/7", // Dm Cm Db B Gb B
  R: "[~@4 f4@5 ~ gb4@6 ab4@6 [bb2,f3,bb3]@38 ~@12]/3", S: "[~@11 eb4@22 ~@3]/3",
})).s("gm_french_horn").gain(0.21)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A@3 ~ B C D@3 E@6 F@8 G@4 H@8 I J@4 K@5 ~@10 G@4 H@8 I L@2 M@8 N@3 O@7 ~@3
>`.pickRestart({
  A: "[~@22 d3@18 f2@5 ~ f3@6 eb3@13 ~@7]/3", B: "~@22 b4 ~", C: "~ b4 ~@2 c5 ~@2 d5@17",
  D: "[~@11 c3@9 ~@3 a2@11 ~@2]/3", E: "[~@16 a2@5 ~ g2@24 ab2@18 g2@6 f2@12 ~@12 c2@18 a2@6 g2@22 ~@4]/6",
  F: "[~@22 c4@18 bb3@6 a3@18 ~@6 f3@18 d3@6 eb3@15 ~@9 c4@48 g3@26]/8", G: "[~@11 eb4@12 a3@12 f3@12 g3]/4",
  H: "[~@11 ab3@23 ~ ab3@12 c4@12 d4@24 eb4@13]/8", I: "~@11 [g2,g3,c4,d4,g4]",
  J: "[~ [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@2 ~ [g2,g3,c4,d4,g4]@2 ~ [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@2 ~ [g2,g3,b3,d4,g4]@6 d4 ~@17 [c4,g4]@6 [d4,b4]@6 [eb4,c5]@6 [f4,d5]@6 [g4,eb5]@24 c4@2, ~@52 c4 ~@41 g4 ~]/4", // Gsus4 G C5 G Cm Dm Cm
  K: "[~@4 [d4,b4]@6 [eb4,c5]@6 [f4,d5]@6 d4@16 ~@3 [bb3,bb4] [eb4,eb5] [f4,f5] [gb4,gb5] [bb4,bb5] [eb5,eb6]@47 ~ ab4@24 ~@2, ~@11 b4@11 ~@38]/5", // G Cm Dm Bb Eb F Gb Bb …
  L: "[~ [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@2 ~ [g2,g3,c4,d4,g4]@2 ~ [g2,g3,c4,d4,g4]@3 [g2,g3,c4,d4,g4]@2 ~ [g2,g3,b3,d4,g4]@6 d4 ~@19]/2", // Gsus4 G
  M: "[~@22 [c4,g4]@6 [d4,b4]@6 [eb4,c5]@6 [f4,d5]@6 [g4,eb5]@24 c4@6 [d4,b4]@6 [eb4,c5]@6 [f4,d5]@6 d4@16 ~@3 [bb3,bb4] [eb4,eb5] [f4,f5] [gb4,gb5] [bb4,bb5] [eb5,eb6]@47 ~ ab4@24 [d4,d5]@2, ~@28 c4 ~@41 g4 ~@23 b4@22 ~@76]/8", // C5 G Cm Dm Cm G Cm Dm …
  N: "[~ [d4,d5]@2 ~ [eb4,eb5]@3 [f4,f5]@3 ~@12 [eb4,bb4]@6 [f4,d5]@6 [gb4,eb5]@6 [ab4,f5]@6 [bb4,gb5]@24 eb4@2, ~@28 eb4 ~@41 bb4 ~]/3", // D Eb F Eb5 Dm Ebm Db Ebm
  O: "[~@4 [f4,d5]@6 [gb4,eb5]@6 [ab4,f5]@6 f4@16 ~@3 [db4,db5] [gb4,gb5] [ab4,ab5] [a4,a5] [db5,db6] [gb5,gb6]@47 ~ b4@24 eb3@46 ~@4, ~@11 d5@11 ~@62]/7", // Dm Ebm Db Gb Ab A Db Gb
})).s("gm_string_ensemble_1").gain(0.33)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@9 A B@2 ~@2 C ~@33 D@6 E@3 ~@36>".pickRestart({
  A: "~@8 bb2@3 ~", B: "[~@11 bb2@9 ~@4]/2", C: "~@5 eb2@6 ~",
  D: "[~@22 c3@18 bb2@6 a2@22 ~@2 bb2@18 a2@5 ~ g2@24 ab2@18 g2@6 f2@2]/6", E: "[~@5 eb2@6 c2@9 a2@3 g2@11 ~@2]/3",
})).s("gm_string_ensemble_1").gain(0.22)

// chords · piano
const piano = note("<A@5 B C D E@3 F@6 G@3 H@6 I@2 J@5 K@4 L@5 M@7 N@8 O I@2 J@5 P@7 Q@8 R@3 S@6 ~@4>".pickRestart({
  A: "[~@22 [c4,eb4]@5 ~@7 [c4,eb4]@3 g3@2 ~ [bb3,d4]@3 f3@3 [a3,c4]@3 f3@2 ~@7 f4@3 eb4@3 d4@3 c4@3 [bb3,d4]@3 f3@3 ~@3 f3@3 [bb3,d4]@3 ~@3 [a3,d4]@3 f3@2 ~ [bb3,eb4]@3 g3@3 [bb3,eb4]@3 g3@3 [bb3,eb4]@3 g3@3 [bb3,eb4]@3 g3@2 ~ [ab2,ab3,c4]@2, ~@22 c3@17 ~ bb2@6 f2@15 ~@33 eb2@18 ~@8, ~@22 g3@8 ~ g3@5 ~@16 c3@8 ~@10 bb2@14 ~@4 a2@6 ~@26, ~@28 [c4,eb4]@5 ~@22 f3@9 ~@12 [bb3,d4]@5 ~@4 f3@5 ~@28 eb3 ~]/5", // Cm Bb Am Bb D5 Eb5 Ab Cm …
  B: "~ [ab2,eb3,ab3,c4] ~@2 [bb2,d4]@2 ~ [c3,g3,c4,eb4]@7 ~@8 [ab2,c4,eb4]@2, ~@4 [f3,bb3] ~@17 ab3 ~", // Ab Bb Cm Ab Bb5
  C: "~ [ab2,ab3,c4,eb4] ~@2 [bb2,f4]@2 ~ [c3,c4,eb4,g4]@9 ~@6 [g2,d3,g3,b3] ~, ~@4 [bb3,d4] ~@19", // Ab Bb5 Cm G Bb
  D: "~ [g2,d3,g3,b3] ~@2 [a2,e3,a3,c4] ~@2 [b2,f3,b3,d4]@3 ~@9 g3@5, ~@5 g2@7, ~@13 d3@11, ~@2 f3", // G Am Bdim
  E: "[~@22 c4@2 ~@7 c4@3 c4 ~@2 c4 ~@2 d4@3 bb3 ~@2 a3@2 ~@19 a3 ~@2 [bb2,bb3,d4,f4]@2, ~@11 c3@9 [bb2,f4]@3 a2@12 ~, ~@22 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~@10 a3@5 ~ a3@5 ~ a3@5 ~@6, ~@25 c4@5 ~@10 bb3@2 ~@4 [c4,f4]@5 ~ [c4,f4]@5 ~ [c4,f4]@5 ~ [c4,f4]@5 ~@3]/3", // Bb Bb5 Eb F5
  F: "[~@7 bb3@2 ~ bb3@2 ~ bb3 ~@2 a3 ~@2 a3@2 ~ eb4@3 ~@3 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@3 [eb4,g4]@3 bb3 ~@2 c4@2 ~@7 c4@3 [eb4,ab4]@3 c4@3 ~@45 c4@3 ~@3 c4@2 ~ b3@3 b3@3 ~@15 b3@3 [d3,g3]@2, ~ bb3@5 ~@10 [a2,c4,f4]@5 ~ eb3@21 ~@3 ab2@17 ~ [g2,eb4,g4]@5 ~ [f2,f3]@22 ~@2 [c2,c3]@24 g2@26, ~@4 [d4,f4]@5 ~ [d4,f4]@5 ~@7 bb3@2 ~ bb3@5 ~ bb3@5 ~ bb3@5 ~@4 [eb4,ab4]@5 ~ [eb4,ab4]@5 ~@13 [f4,ab4]@6 [f4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,gb4]@5 ~ [eb4,gb4,a4]@5 ~ [eb4,gb4,a4]@5 ~ [eb4,gb4,a4]@5 ~ [d4,g4]@5 ~ [d4,g4]@5 ~ [d4,g4]@5 ~ [d4,g4]@6 ~@2, ~@49 c4@5 ~@13 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@19 b3@5 ~ b3@5 ~@6]/6", // Eb Ab5 G5 F Cm F C Dm …
  G: "[~@22 c4@2 ~@13 c4@2 ~ bb3@2 ~ bb3@2 ~ a3@2 ~@16 c4@3 a3@2 ~ [bb2,bb3,d4]@2, ~@22 c3@18 [bb2,eb4,g4]@5 ~ a2@24 ~@2, ~@22 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~@10 a3@5 ~ a3@5 ~ a3@5 ~@6, ~@25 c4@5 ~ c4@5 ~@10 [c4,f4]@5 ~ [c4,f4]@5 ~ [c4,f4]@6 f4@6 ~@2]/3", // Bb Eb F5
  H: "[~@13 bb3@2 ~ a3 ~@2 a3@3 ~@15 bb3@3 ~@3 bb3@2 ~ c4@2 ~@28 [f4,ab4]@3 ~@36 c4@2 ~ [g2,g3,b3,d4,g4]@12 ~@12 [c3,c4,eb4,g4]@2, ~ bb3@5 ~ bb3@5 ~@4 [a2,d4,f4]@5 ~ eb3@24 ab2@18 [g2,eb4,g4]@5 ~ [f2,f3]@12 c3@11 ~ g2@22 ~@28, ~@4 [d4,f4]@6 [d4,f4]@5 ~@7 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,ab4]@5 ~@7 [f4,ab4]@6 ~@6 [eb4,gb4,a4]@6 [c2,eb4,gb4,a4]@6 [d4,g4]@5 ~ [d4,g4]@5 ~ [g3,d4,g4]@5 ~ [g3,d4,g4]@5 ~@27, ~@25 bb3@5 ~ bb3@5 ~@13 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@30]/6", // Fm G Cm Dm Cm F Dm Eb …
  I: "[~@10 eb4@3 c4@2 ~ bb3@2 ~ bb3 ~@2 a3@2 ~@16 c4@3 a3@2 ~ [bb2,bb3,d4]@2, ~ c4@5 ~ c4@5 ~@4 [bb2,eb4]@5 ~ a2@24 ~@2, ~@4 [eb4,g4]@5 ~ g4@11 ~ [c4,f4]@5 ~ [c4,f4]@6 [c4,f4]@5 ~ f4@8, ~@25 a3@5 ~ a3@5 ~ a3@5 ~@6]/2", // Bb Eb5 Eb F5
  J: "[~@13 bb3@2 ~ d4@3 a3@2 ~ bb3@2 ~@4 eb4@3 ~@6 bb3@3 ~@3 bb3@2 ~ c4@2 ~@19 c4@2 ~ c4@2 ~@37 c4@3 ~@3 c4@3 [c3,c4,eb4,g4]@2, ~ bb3@5 ~ bb3@5 ~@4 [a2,f4]@6 eb3@24 ab2@23 ~ [f2,f3]@24 ab2@23 ~@3, ~@4 [d4,f4]@5 ~ [d4,f4]@5 ~ a3@2 ~@4 [eb4,g4]@5 ~ g4@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,ab4]@6 [eb4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,ab4]@5 ~ [f4,ab4]@6 [f4,ab4]@5 ~ [f4,ab4]@5 ~ [f4,ab4]@5 ~ [eb4,ab4]@5 ~ ab3@15 ~@5, ~@25 bb3@5 ~ bb3@5 ~@13 c4@5 ~ c4@5 ~ c4@5 ~@7 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@12, ~@100 [eb4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,ab4]@5 ~@3]/5", // Cm Dm F Dm Eb Ab5 Fm Ab5
  K: "[~@13 c4@3 [eb4,g4]@3 c4@2 ~ b3@2 ~@19 b3@2 ~ b3@2 ~@7 b3@3 b3@2 ~ b3@3 b3@2 ~ b3@2 ~ c4@2 ~ c4@3 c4@2 ~ c4@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@2 ~ [c3,c4,eb4,g4]@2, ~ c4@5 ~ c4@5 ~@4 c4 ~@5 [g2,g3]@23 ~ g2@24 c3@23 ~@3, ~@4 [eb4,g4]@5 ~ [eb4,g4]@5 ~@7 [d4,f4]@6 [d4,f4]@5 ~ [d4,f4]@5 ~ [d4,f4]@6 [d4,f4]@5 ~ [d4,f4]@6 [d4,f4]@5 ~ [d4,f4]@5 ~ [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~@3, ~@25 b3@5 ~ b3@5 ~ b3@5 ~@4 g3@22 ~@28, ~@49 b3@5 ~@42]/4", // Eb Cm G Eb Dm Eb
  L: "[~@13 c4@3 c4@2 ~ c4@2 ~ c4@2 ~@7 c4@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@2 ~ [g2,g3,b3,d4,g4]@12 ~@12 c4@2 ~ c4@3 c4@2 ~ c4@3 c4@2 ~ c4@3 eb4@3 c4@2 ~ bb3@2 ~@7 bb3@3 bb3@2 ~ bb3@3 bb3 ~@2 bb3@2 ~ [ab2,ab3,c4]@2, ~ c4@5 ~ c4@5 ~@10 g2@22 ~@26 c3@24 bb2@24 ~@2, ~@4 [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@6 g3@10 ~@2 [g3,d4,g4]@5 ~ [g3,d4,g4]@5 ~@52 bb3@5 ~@18, ~@22 [d4,g4]@5 ~ [d4,g4]@6 ~@36 [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ g4@11 ~@13 g4@5 ~@3, ~@25 c4@5 ~@64 eb4@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ eb4@8]/5", // G Ab Eb G5 Eb
  M: "[~@13 ab3@3 ~@3 ab3@2 ~ g3@2 ~ g3@3 g3@2 ~@7 g3@2 ~ g3@2 ~ g3 ~@2 c4@3 ~@18 c4@2 ~ bb3@2 ~ bb3@3 bb3@2 ~@7 bb3@3 ~@3 bb3@2 ~ ab3@2 ~@7 ab3@3 ab3@2 ~ ab3@3 ab3@2 ~ ab3@2 ~@25 g4@8 ~@16 [c3,c4,eb4,g4]@2, ~ ab3@5 ~ ab3@5 ~@10 g2@24 c3@24 bb2@24 ab2@24 g2@18 d3@3 g3@11 ~@18, ~@4 [c4,eb4]@5 ~ [c4,eb4]@6 [c4,eb4]@5 ~ [c4,d4]@6 [c4,d4]@5 ~ b3@11 ~@4 c4@5 ~ c4@5 ~ c4@5 ~@13 bb3@5 ~@10 [c4,eb4]@5 ~ [c4,eb4]@6 [c4,eb4]@5 ~ [c4,eb4]@5 ~@7 d3@6 c4@20 ~@18, ~@31 g3@5 ~@61 ab3@5 ~@19 c3@29 ~@18, ~@34 d4@6 [d4,g4]@5 ~ [eb4,g4]@6 [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@6 ~@33 g3@6 d4@17 ~@18]/7", // Cm Csus2 Cm G5 Eb
  N: "[~@7 c4@3 c4 ~@2 c4 ~@2 d4@3 bb3 ~@2 a3@2 ~@19 a3 ~@2 bb3@2 ~@7 bb3@2 ~ bb3@2 ~ bb3 ~@2 a3 ~@2 a3@2 ~ eb4@3 ~@3 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@3 [eb4,g4]@3 bb3 ~@2 c4@2 ~@7 c4@3 [eb4,ab4]@3 c4@3 ~@45 c4@3 ~@3 c4@2 ~ b3@3 b3@3 ~@15 b3@3 [d3,g3]@2, ~ c4@5 ~@10 [bb2,f4]@6 a2@24 bb2@17 ~ [a2,c4,f4]@5 ~ eb3@21 ~@3 ab2@17 ~ [g2,eb4,g4]@5 ~ [f2,f3]@22 ~@2 [c2,c3]@24 g2@26, ~@4 [eb4,g4]@5 ~ [eb4,g4]@5 ~ bb3@2 ~@4 [c4,f4]@5 ~ [c4,f4]@5 ~ [c4,f4]@5 ~ [c4,f4]@5 ~ [d4,f4]@5 ~ [d4,f4]@5 ~ [d4,f4]@5 ~@31 [eb4,ab4]@5 ~ [eb4,ab4]@5 ~@13 [f4,ab4]@6 [f4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,ab4]@5 ~ [eb4,gb4]@5 ~ [eb4,gb4,a4]@5 ~ [eb4,gb4,a4]@5 ~ [eb4,gb4,a4]@5 ~ [d4,g4]@5 ~ [d4,g4]@5 ~ [d4,g4]@5 ~ [d4,g4]@6 ~@2, ~@25 a3@5 ~ a3@5 ~ a3@5 ~@7 bb3@5 ~@16 bb3@2 ~ bb3@5 ~ bb3@5 ~ bb3@5 ~@7 c4@5 ~@13 c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~@19 b3@5 ~ b3@5 ~@6]/8", // Eb Ab5 G5 Bb5 F Cm F C …
  O: "~@11 [c3,c4,eb4,g4]", // Cm
  P: "[~@13 c4@3 [eb4,g4]@3 c4@2 ~ b3@2 ~@19 b3@2 ~ b3@2 ~@7 b3@3 b3@2 ~ b3@3 b3@2 ~ b3@2 ~ c4@2 ~ c4@3 c4@2 ~ c4@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@2 ~ c4@2 ~@13 c4@3 c4@2 ~ c4@2 ~ c4@2 ~@7 c4@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@2 ~ [g2,g3,b3,d4,g4]@12 ~@14, ~ c4@5 ~ c4@5 ~@4 c4 ~@5 [g2,g3]@23 ~ g2@24 c3@23 ~ c3@21 ~@3 g2@22 ~@28, ~@4 [eb4,g4]@5 ~ [eb4,g4]@5 ~@7 [d4,f4]@6 [d4,f4]@5 ~ [d4,f4]@5 ~ [d4,f4]@6 [d4,f4]@5 ~ [d4,f4]@6 [d4,f4]@5 ~ [d4,f4]@5 ~ [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@6 [d4,g4]@5 ~ [d4,g4]@6 ~@38, ~@25 b3@5 ~ b3@5 ~ b3@5 ~@4 g3@22 ~@50 g3@10 ~@2 [g3,d4,g4]@5 ~ [g3,d4,g4]@5 ~@27, ~@49 b3@5 ~@43 c4@5 ~ c4@5 ~@13 c4@5 ~@42]/7", // Eb G Eb Dm Eb G5
  Q: "[~@22 c4@2 ~ c4@3 c4@2 ~ c4@3 c4@2 ~ c4@3 eb4@3 c4@2 ~ bb3@2 ~@7 bb3@3 bb3@2 ~ bb3@3 bb3 ~@2 bb3@2 ~ ab3@2 ~@13 ab3@3 ~@3 ab3@2 ~ g3@2 ~ g3@3 g3@2 ~@7 g3@2 ~ g3@2 ~ g3 ~@2 c4@3 ~@18 c4@2 ~ bb3@2 ~ bb3@3 bb3@2 ~@7 bb3@3 ~@3 bb3@2 ~ ab3@2 ~@7 ab3@3 ab3@2 ~ ab3@3 ab3@2 ~ ab3@2 ~@3, ~@22 c3@24 bb2@24 ab2@23 ~ g2@24 c3@24 bb2@24 ab2@24 ~@2, ~@22 [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ g4@11 ~@13 g4@5 ~@4 ab3@5 ~ ab3@5 ~@19 g3@5 ~@61 ab3@5 ~@18, ~@46 eb4@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ eb4@11 ~@31 d4@6 [d4,g4]@5 ~ [eb4,g4]@6 [eb4,g4]@6 [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@5 ~ [eb4,g4]@6 ~@26, ~@49 bb3@5 ~@16 c4@5 ~ [c4,eb4]@5 ~ [c4,eb4]@6 [c4,eb4]@5 ~ [c4,d4]@6 [c4,d4]@5 ~ b3@11 ~@4 c4@5 ~ c4@5 ~ c4@5 ~@13 bb3@5 ~@10 [c4,eb4]@5 ~ [c4,eb4]@6 [c4,eb4]@5 ~ [c4,eb4]@5 ~@3]/8", // Eb G5 Eb Cm Csus2 Cm
  R: "[~@22 eb4@2 ~ eb4@3 eb4@2 ~ eb4@3 eb4@2 ~ eb4@3 gb4@3 eb4@2 ~ db4@2 ~@7 db4@3 db4@2 ~ db4@3 db4 ~@2 db4@2 ~ [b2,b3,eb4]@2, ~@11 eb3@12 db3@12 ~, ~@22 [gb4,bb4]@6 [gb4,bb4]@5 ~ [gb4,bb4]@5 ~ bb4@11 ~@13 bb4@5 ~@3, ~@46 gb4@6 [gb4,bb4]@5 ~ [gb4,bb4]@5 ~ gb4@8, ~@49 db4@5 ~@18]/3", // B Gb
  S: "[~@13 b3@3 ~@3 b3@2 ~ bb3@2 ~ bb3@3 bb3@2 ~@7 bb3@2 ~ bb3@2 ~ bb3 ~@2 eb4@3 ~@18 eb4@2 ~ db4@2 ~ db4@3 db4@2 ~@7 db4@3 ~@3 db4@2 ~ b3@2 ~@7 b3@3 b3@2 ~ b3@3 b3@2 ~ b3@2 ~ [bb3,eb4,f4]@17 ~@9, ~ b3@5 ~ b3@5 ~@10 bb2@24 eb3@24 db3@24 b2@24 ~@26, ~@4 [eb4,gb4]@5 ~ [eb4,gb4]@6 [eb4,gb4]@5 ~ [eb4,f4]@6 [eb4,f4]@5 ~ d4@11 ~@4 eb4@5 ~ eb4@5 ~ eb4@5 ~@13 db4@5 ~@10 [eb4,gb4]@5 ~ [eb4,gb4]@6 [eb4,gb4]@5 ~ [eb4,gb4]@5 ~@27, ~@31 bb3@5 ~@61 b3@5 ~@42, ~@34 f4@6 [f4,bb4]@5 ~ [gb4,bb4]@6 [gb4,bb4]@6 [gb4,bb4]@5 ~ [gb4,bb4]@5 ~ [gb4,bb4]@5 ~ [gb4,bb4]@5 ~ [gb4,bb4]@5 ~ [gb4,bb4]@6 ~@50]/6", // Bbsus4 Ebm Ebsus2 Ebm Bb5 Gb
})).s("gm_piano").gain(0.18)

// other · brass section
const brass_section = note("<~@39 A@7 B@2 ~@24 C@8 D@8 ~ E@4>".pickRestart({
  A: "[~@22 [c3,c4]@6 [d3,d4]@6 [eb3,eb4]@6 [f3,f4]@6 [g3,g4]@21 ~@3 [c3,c4]@6 [d3,d4]@6 [eb3,eb4]@6 [f3,f4]@6 [d3,d4]@22 ~@2 [c4,c5]@6 [d4,d5]@6 [eb4,eb5]@6 [f4,f5]@6 [g4,g5]@23 ~ [c4,c5]@2, ~@124 c4 ~@43]/7", // C D Eb F G C D Eb …
  B: "[~@4 [d4,d5]@6 [eb4,eb5]@6 [f4,f5]@6 [d4,d5]@15 ~@11]/2", // D Eb F D
  C: "[~@22 [c3,c4]@6 [d3,d4]@6 [eb3,eb4]@6 [f3,f4]@6 [g3,g4]@24 [c3,c4]@6 [d3,d4]@6 [eb3,eb4]@6 [f3,f4]@6 [d3,d4]@22 ~@2 [c4,c5]@6 [d4,d5]@6 [eb4,eb5]@6 [f4,f5]@6 [g4,g5]@18 ~@6 [c4,c5]@6 [d4,d5]@6 [eb4,eb5]@6 [f4,f5]@6 [d4,d5] ~, ~@124 c4 ~@67]/8", // C D Eb F G C D Eb …
  D: "[~ [d4,d5] ~@2 [eb4,eb5] ~@2 [f4,f5]@2 ~@13 [eb3,eb4]@6 [f3,f4]@6 [gb3,gb4]@6 [ab3,ab4]@6 [bb3,bb4]@24 [eb3,eb4]@6 [f3,f4]@6 [gb3,gb4]@6 [ab3,ab4]@6 [f3,f4]@22 ~@2 [eb4,eb5]@6 [f4,f5]@6 [gb4,gb5]@6 [ab4,ab5]@6 [bb4,bb5]@18 ~@6 [eb4,eb5]@6 [f4,f5]@6 [gb4,gb5]@6 [ab4,ab5]@6 ~@2, ~@124 eb4 ~@67]/8", // D Eb F Eb F Gb Ab Bb …
  E: "[~@11 eb4@31 ~@6]/4",
})).s("gm_brass_section").gain(0.46).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@17 A@6 B@3 ~@67>".pickRestart({
  A: "[~@112 bb3@6 ~@9 c4@17, ~@22 c3@18 ~@15 f4@18 ~@6 f4@18 ~@6 eb4@6 eb4@12 ~@23, ~@25 eb3@18 ~@3 f3@18 ~@6 f3@15 bb4@18 ~@3 g4@18 ~@20, ~@28 g3@18 ~@3 a3@18 ~@6 bb3@18 ~@6 eb3@18 ~@6 eb3@18 ~@5, ~@31 eb4@18 ~@3 c4@18 ~@6 d4@18 ~@6 bb3@12 ~@12 ab3@18 ~@2]/6",
  B: "[~@43 b4@18 ~@11, ~ eb3@18 eb4@18 ~ d4@18 ~@16, ~@2 ab3@9 ~@6 g3@9 ~@10, ~@10 c4@18 ~@13 f4@18 ~@13, ~@12 gb3@18 ~ d3@18 ~@23]/3",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.3)

// chords · overdriven guitar
const overdriven_guitar = note("<~@32 A@6 B@7 C@3 ~@16 D@8 E@8 F@6 G@3 ~@4>".pickRestart({
  A: "[~@22 [g2,c3]@8 ~ [g2,c3]@15 [g2,d3]@8 ~ [g2,d3]@14 ~ [g2,d3]@8 [g2,d3]@15 ~ [g2,c3]@8 ~ [g2,c3]@14 ~ [g2,c3]@8 [g2,c3]@14 ~@2 [g2,d3]@2]/6", // C5 G5 C5 G5
  B: "[~@4 [g2,d3]@5 ~ [g2,d3]@6 [g2,d3]@5 ~ [g2,d3]@9 ~@15 [c3,g3]@8 ~ [c3,g3]@15 [bb2,f3]@8 ~ [bb2,f3]@15 [ab2,eb3]@8 ~ [ab2,eb3]@14 ~ [g2,d3]@8 ~ [g2,d3]@11 ~@4 [c3,g3]@8 ~ [c3,g3]@14 ~ [bb2,f3]@2]/7", // G5 C5 Bb5 Ab5 G5 C5 Bb5
  C: "[~@7 [bb2,f3]@15 [ab2,eb3]@8 ~ [ab2,eb3]@14 ~ [g2,d3]@18 ~@8]/3", // Bb5 Ab5 G5
  D: "[~@22 [g2,c3]@8 ~ [g2,c3]@15 [g2,d3]@8 ~ [g2,d3]@14 ~ [g2,d3]@8 [g2,d3]@15 ~ [g2,c3]@8 ~ [g2,c3]@14 ~ [g2,c3]@8 [g2,c3]@14 ~@2 [g2,d3]@6 [g2,d3]@5 ~ [g2,d3]@6 [g2,d3]@5 ~ [g2,d3]@9 ~@17]/8", // C5 G5 C5 G5
  E: "[~@22 [c3,g3]@8 ~ [c3,g3]@15 [bb2,f3]@8 ~ [bb2,f3]@15 [ab2,eb3]@8 ~ [ab2,eb3]@14 ~ [g2,d3]@8 ~ [g2,d3]@11 ~@4 [c3,g3]@8 ~ [c3,g3]@14 ~ [bb2,f3]@7 ~@2 [bb2,f3]@15 [ab2,eb3]@8 ~ [ab2,eb3]@14 ~@3]/8", // C5 Bb5 Ab5 G5 C5 Bb5 Ab5
  F: "[~@22 [eb3,bb3]@8 ~ [eb3,bb3]@15 [db3,ab3]@8 ~ [db3,ab3]@15 [b2,gb3]@8 ~ [b2,gb3]@14 ~ [bb2,f3]@8 ~ [bb2,f3]@11 ~@4 [eb3,bb3]@8 ~ [eb3,bb3]@14 ~ [db3,ab3]@2]/6", // Eb5 Db5 B5 Bb5 Eb5 Db5
  G: "[~@7 [db3,ab3]@15 [b2,gb3]@8 ~ [b2,gb3]@14 ~ [bb2,f3]@18 ~@8]/3", // Db5 B5 Bb5
})).s("gm_overdriven_guitar").gain(0.29).pan(0.7)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~@26 A@7 ~@25 A@7 ~@14 B C ~@12>".pickRestart({
  A: "[~@4 g2@18 f2@24 [bb2,f3]@23 ~ [bb2,eb3]@24 [ab2,eb3]@24 [f2,c3]@24 [ab2,eb3]@24 ~@2, ~@2 c3@21 ~@61]/7", // Bb5 Eb5 Ab5 F5 Ab5
  B: "~@11 [c3,f3]", C: "~ [c3,f3]@2 ~ [eb3,ab3]@2 ~ [f3,bb3]@2 ~@15",
})).s("gm_overdriven_guitar").gain(0.19).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A B@7 A B@7 C@6 D E F@2 G E F@2 H A B@7 ~ A B@6 I C@6 J A E K F G E F E C E K E L E F E ~@5
>`.pickRestart({
  A: "~@11 x", B: "~@10 x ~@2 x ~@8 x ~", C: "~@7 x ~@14 x ~", D: "~@4 x ~@6 x", E: "~@2 x ~@4 x ~@6 x ~@7 x ~",
  F: "~@7 x ~@6 x ~@7 x ~", G: "~@4 x ~@2 x ~@3 x", H: "~ x ~", I: "~@5 x ~ x ~@3 x", J: "~@2 x ~@2 x",
  K: "~@7 x ~@5 x ~@8 x ~", L: "~@7 x ~@2 x ~@5 x ~@5 x ~",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@32 A B@6 C B@3 D B@3 ~@17 E B@6 F G B H B I B@5 H B J B@2 K ~@5>".pickRestart({
  A: "~@2 x", B: "~ x ~@2 x ~", C: "~@9 x!2 ~@13", D: "~@4 x ~@12 x ~@6", E: "~@11 x ~@12", F: "~@9 x!2 ~@11 x ~",
  G: "~@5 x ~@2 x ~@3", H: "~@2 x ~@4 x!2 ~ x ~", I: "~@4 x ~@2 x ~@2 x ~@2 x ~@2 x!2 ~@6",
  J: "~@2 x ~ x ~@6 x ~ x!2 ~ x!2 ~ x!2 ~@3", K: "~ x ~@4",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@18 A@7 ~ A@6 ~@17 A@7 ~@2 A@6 ~@29>".pickRestart({
  A: "~@2 x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@18 A@7 ~ A@6 ~@7 B ~@7 C ~ A@7 ~@2 A@6 ~@20 D ~@2 E ~@5>".pickRestart({
  A: "~ x ~@22", B: "~@3 x", C: "~@17 x ~@6", D: "~@11 x ~ x!2 ~ x!2 ~ x!2 ~@3", E: "~@19 x ~@4",
})).gain(0.4)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@11 x] [~@5 x ~@5 x]!6 [~@5 x ~@6] ~@85>").gain(0.16)

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

// … 50 more lines

More by Battisti