Strudelify
Nothing cover art

Nothing

Sinead O'Connor

KeyF majorTempo120 bpm
0:00/0:00
// Nothing — Sinead O'Connor
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: 
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 150 bars on a 24-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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A@4 B@2 C@2 D@2 E F B@2 C@2 D@2 E G H@4 D@2 E I B@2 C@2 D@2 J@2 K L K L M@2 N@2 B@2 C@2 D@2 E F B@2 C@2 D@2 O@2 H@4
  D@2 E I B@2 C@2 D@2 J@2 K L P Q@5 B@2 C@2 D@2 E F B@2 C@2 D@2 E G H@4 D@2 E I B@2 C@2 D@2 J@2 K L P R ~@2 K L P R ~@2
  K L P R ~@2 K L P R ~@2 K L P R ~@2 B@2 ~@2
>`.pickRestart({
  A: "[f1@15 c2]/4", B: "f1/2", C: "e1/2", D: "d1/2", E: "f1", F: "c1", G: "c1@11 ~", H: "[f1 e1]/4", I: "c1@8 ~ c1@3",
  J: "[a1@15 ~]/2", K: "eb2", L: "bb1", M: "[c2@14 g1 ~]/2", N: "[c2@47 ~]/2", O: "[bb1@15 ~]/2", P: "d2@23 ~",
  Q: "[c2@119 ~]/5", R: "c2",
})).s("gm_fretless_bass").gain(0.4)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~@18 A B C@2 D@2 E@2 A B C@2 D@2 E@2 F@2 G H I J K@4 C@2 D@2 L@2 A M C@2 D@2 N@2 O@2 C@2 D@2 E@2 A B C@2 D@2 E@2 F@2 P
  Q R S@5 T@2 U@2 V@2 W X T@2 Y@2 Z@2 AA AB C@2 D@2 E@2 A B C@2 D@2 E@2 F@2 P Q R AC@3 P Q R AC@3 P Q R AC@3 AD AE AF
  AG@3 AD AE AF AG@3 AH@3 ~
>`.pickRestart({
  A: "[c4,f4,a4]@23 ~", B: "[bb3,d4,f4,g4]@23 ~", C: "[[c4,f4,a4]@47 ~]/2", D: "[[c4,e4,g4]@47 ~]/2",
  E: "[[c4,d4,f4,a4]@23 ~]/2", F: "[[a3,db4,e4,g4]@15 ~]/2", G: "[bb4,eb5], g4@11 ~, [eb3,eb4]@5 ~",
  H: "[f4,bb4,d5]@23 ~, [bb2,bb3]@19 ~@5", I: "[g4,bb4,eb5]@23 ~, [eb3,eb4]@19 ~@5",
  J: "[bb4,d5]@23 ~, f4@7 ~, [bb2,bb3]@19 ~@5", K: "[c3,c4,e4,g4,c5]/4", L: "[[c4,d4,f4,a4]@47 ~]/2",
  M: "[bb3,d4,f4,g4]@11 ~", N: "[[c4,f4,a4]@15 ~]/2", O: "[bb3,d4,f4]/2", P: "[eb3,eb4,bb4,eb5], g4@11 ~",
  Q: "[bb3,f4,bb4], d5@11 ~", R: "[d4,f4,a4,d5]@23 ~, d3@5 ~", S: "[c3,c4,e4,g4,c5]/5", T: "[[f3,c4,f4,a4]@47 ~]/2",
  U: "[[e3,c4,e4,g4]@47 ~]/2", V: "[d3,c4,d4,f4,a4]/2", W: "[f3,f4], [c4,a4]@11 ~", X: "[bb3,f4,g4]@11 ~, [c3,d4]",
  Y: "[[e3,c4,g4], e4@23 ~]/2", Z: "[[c4,d4,a4]@23 ~, [d3,f4]]/2", AA: "[f3,f4,a4], c4@11 ~",
  AB: "[c3,bb3,d4,f4,g4]@23 ~", AC: "[c3,c4,e4,g4,c5]/3", AD: "[eb3,eb4,bb4,g5,bb5], g4@11 ~, eb5@5 ~",
  AE: "[bb3,f4,bb4,f5], d5@11 ~", AF: "[d4,f4,a4,d5,f5,a5]@23 ~, d3@5 ~", AG: "[[c3,c4,e4,g4], [c5,e5,g5]@35 ~]/3",
  AH: "[[c4,f4]@9 [c4,f4,a4]@3 [f4,a4]@9 [f4,a4,c5]@3 [a4,c5]@9 [a4,c5,f5]@3 [c5,f5]@9 [c5,f5,a5,c6]@4 [c5,f5,a5,c6]@23, [f2,f3]@8 ~, a3 a4, ~ c4@4 ~, ~ f4@2]/3", // F5 F Am F F5 F
})).s("gm_synth_strings_1").gain(0.05)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@4 B@2 C@2 D@4 E@2 F@2 G@4 B@2 C@2 H@4 I@2 J@2 K@2 L@2 M@3 N@5 O@2 P@2 Q@4 R@2 S@2 T@2 U@2 O@2 P@2 V@4 W@2 X@2 Y@2
  Z@2 AA AB AC AD@5 AE@2 AF@2 AG@4 AH@2 AI@2 AJ@4 O@2 P@2 V@4 W@2 X@2 Y@2 Z@2 AK AB AC AL@3 AM AB AC AL@3 AM AB AC AL@3
  AN AB AC AL@3 AM AB AC AL@3 AO@4
>`.pickRestart({
  A: "[[f3,a3]@7 ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5 [f3,a3] ~@5, c4@47 ~, f2@91 ~@5, [f4,a4] ~@89 a2@5 ~]/4", // F
  B: "[[c4,a4] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4, [f3,f4], a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@23]/2", // F Am F
  C: "[g3@3 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2, [e3,e4]@47 ~, c4@2 ~@10 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5, g4 ~@47]/2", // E
  D: "[[c4,a4]@2 ~@4 c4 ~@5 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [f4,g4] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4, f4@71 ~ bb3@21 ~@3, d3@24 f3@23 ~, a3@6 ~@6 a3 ~@29 a3 ~@11 a3 ~@17 [c3,d4]@23 ~, ~@72 [g3,c4]@6 ~@6 g3 ~@5 g3 ~@5]/4", // F Am Fsus2 Csus2 C5
  E: "[[c4,a4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2, [f3,f4], a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5]/2", // F
  F: "[[c4,g4] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 [g3,c4] ~@5 c4@2 ~@4 c4@2 ~@4, [e3,e4]@47 ~, g3@6 ~@6 g3 ~@5 g3 ~@5 g3 ~@11 g3 ~@5 g3 ~@5]/2", // C5 E
  G: "[[c4,a4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 [a3,c4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 g3@3 c4 ~@2 c4 ~@2 c4 ~@2, f4@47 ~, d3@48 f3@24 c4@2 ~@10 g3 ~@5 g3 ~@5, a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@11 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 [c3,bb3,d4]@21 ~@3, ~@72 g4 ~@23]/4", // F Am Gm
  H: "[[c4,a4]@2 ~@4 c4 ~@5 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 c4@2 ~@4 [a3,c5]@2 ~@4 a3 ~@5 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [f4,g5] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4, f4@71 ~ bb4@21 ~@3, d3@24 f3@23 ~, a3@6 ~@6 a3 ~@29 a3 ~@5 a5@24 [g3,c4]@6 ~@6 g3 ~@5 g3 ~@5, ~@48 c4@8 ~@16 [c3,bb3,d4,g4]@23 ~]/4", // F Am Fsus2 C5 Gm
  I: "[[c4,a4]@2 ~ c4@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~, [f2,f3], f4@23 ~, a3@5 ~@19]/2", // F Am F
  J: "[[c4,g4]@2 ~ c4@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~, [e2,e3]@47 ~, e4@15 ~, g3@5 ~@19]/2", // C5 E
  K: "[[c4,a4]@2 ~ c4@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~, [d2,d3,f4], a3@5 ~@19]/2", // F Am Dm
  L: "[e3@10 ~@2 e3@4 ~@2 e3@4 ~@2 e3@4 ~@2 e3@4 ~@2 e3@3 ~@3 e3@4 ~@2, [a2,a3,db4,g4]@47 ~, e4 ~@11]/2", // A7
  M: "[[eb3,eb4,g4,eb5,g5,eb6]@23 bb5 f4@23 ~ [eb3,eb4,g4,bb4,eb5]@24, bb4@47 [g5,eb6]@25, ~@23 [bb2,bb3,d5]@25 ~@24]/3", // Eb Cm Bb
  N: "[[bb2,bb3,bb4,d5,bb5]@23 ~ c5@3 ~@9 c4@4 ~@2 c4@4 ~@2 c4@4 ~@2 c4@4 ~@2 c4@4 ~@2 c4@4 ~@2 c4@4 ~@2 [c3,c4]@4 ~@2 [c3,c4]@4 ~@2 [c3,c4]@4 ~@2 [c3,c4]@4 ~@2 [c3,c4]@4 ~@2 [c3,c4]@4 ~@2 [c3,c4]@3 ~@3, f4@22 ~ c3@53 ~@44, ~@23 c4@11 ~@38 c6@46 ~@2, ~ [e4,g4]@4, ~@12 g5@47 ~]/5", // Bb C Em
  O: "[[c4,a5] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4, [f3,f4,a4,f5], a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@23]/2", // F Am F
  P: "[g3@3 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2, [e3,e4,g4], e5@23 ~, c4@2 ~@10 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5, g5 ~@47]/2", // Em
  Q: "[[c4,a4] ~@2 c4 ~@2 c4 ~@2 [a3,c4] ~@2 [a3,c4] ~@2 [a3,c4] ~@2 [a3,c4] ~@2 c4 ~@2 [a3,c4] ~@2 c4 ~@2 [a3,c4] ~@2 [a3,c4] ~@2 g3@3 c4 ~@2 c4 ~@2 c4 ~@2, [f4,f5]@24 bb3@7 ~, d3@24 f3@23 ~, a3@6 ~@6 a3 ~@29 a3 ~@11 a3 ~@17 [c3,d4,d5]@24, ~@72 [c4,g4]@2 ~@10 g3 ~@5 g3 ~@5]/4", // F Am F Csus2 C5
  R: "[[c4,a5] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2, [f3,f4,a4,f5], a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5]/2", // F
  S: "[[c4,g5] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 [g3,c4] ~@5 c4@2 ~@4 c4@2 ~@4, [e3,e4,g4,e5], g3@6 ~@6 g3 ~@5 g3 ~@5 g3 ~@11 g3 ~@5 g3 ~@5]/2", // C5 Em
  T: "[[c4,a4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 [a3,c4] ~@2 c4 ~@2, [d3,f4,f5], a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@11 a3 ~@5]/2", // F Am Dm
  U: "[[bb3,d5] ~@2 bb3 ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2, bb2@23 ~, d4 ~@5, [a3,c4] ~@47]/2", // Bb Am
  V: "[[a3,c4]@8 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 c4@2 ~@4 [a3,c5]@2 ~@4 a3 ~@5 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [f4,g5] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4, f4@71 ~ bb4@21 ~@3, [d3,f5]@24 f3@23 ~, [a4,c5]@2 ~@10 a3 ~@29 a3 ~@5 a5@24 [g3,c4]@6 ~@6 g3 ~@5 g3 ~@5, ~@48 c4@8 ~@16 [c3,bb3,d4,g4]@23 ~]/4", // Am Fsus2 Dm Am C5 Gm
  W: "[[c4,a5]@2 ~ c4@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~, [f2,f3,f4,a4], f5@23 ~, a3@5 ~@19]/2", // F Am F
  X: "[[c4,g5]@2 ~ c4@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@2 ~, [e2,e3,e4,g4], e5@15 ~, g3@5 ~@19]/2", // C5 Em
  Y: "[[a3,c4]@5 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~ [a3,c4]@2 ~, [d2,d3,f4,f5], [a4,c5] ~@11]/2", // Am Dm Am
  Z: "[e3@10 ~@2 e3@4 ~@2 e3@4 ~@2 e3@4 ~@2 e3@4 ~@2 e3@3 ~@3 e3@4 ~@2, [a2,a3,db4,g4,db5]@47 ~, g5@15 ~, e4 ~@11]/2", // A7
  AA: "[bb3,eb4]@3 ~ [bb3,eb4] ~ [bb3,eb4] ~, bb4, [eb3,g4]@7 ~, [eb5,bb5] ~@7", // Eb5 Eb Eb5
  AB: "[f3,bb3]@3 ~ [f3,bb3] ~ [f3,bb3] ~, [f4,d5], bb2@7 ~, [bb4,f5] ~@5", // Bb5 Dm Bb5
  AC: "[a3,d4]@3 ~ [a3,d4] ~ [a3,d4] ~, a4, d3@7 ~, [d5,a5] ~@5", // D5
  AD: "[[g3,c4]@3 ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~, [c3,e4,g4], [c5,g5] ~@29]/5", // C5 C C5
  AE: "[[c4,a4] ~@5 c4@2 ~@4 a5@6 bb5@6 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4, [f3,f4], a3@6 ~@6 c4@2 ~@4 c4@2 ~@4 c6@13 ~@11, ~@12 a3 ~@5 a3 ~@5 a3 ~@11 d6@11 ~]/2", // F Am F
  AF: "[g3@3 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2, [e3,e4]@47 ~, c6@37 ~@11, c4@2 ~@10 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5 g3 ~@5, g4 ~@35 d6@12]/2", // E
  AG: "[[c4,a4]@2 ~@4 c4@2 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 [a3,c4]@2 ~@4 [a3,c4]@2 ~@4 [f4,g4] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4, f4@71 ~ bb3@21 ~@3, d3@24 [f3,f6]@23 ~, a6@25 ~@17 a3 ~@5 c6@24 [g3,c4]@6 ~@6 g3 ~@5 g3 ~@5, a3@6 ~@6 a3 ~@11 [d6,g6]@24 a3 ~@5 a3 ~@17 [c3,d4,bb5,c6]@23 ~]/4", // F Am Fsus2 F C5 G5 Gm
  AH: "[[c4,a4] ~@2 c4 ~@2 c4 ~@2 [a3,c4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2, [f3,f4,c6], a6 g6 f6 d6, a3@6 ~@6 a3 ~@11 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5]/2", // F Am F5
  AI: "[[c4,g4] ~@5 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 [g3,c4] ~@5 c4@2 ~@4 c4@2 ~@4, [e3,e4]@47 ~, c6@2 d6 e6, g3@6 ~@6 g3 ~@5 g3 ~@5 g3 ~@11 g3 ~@5 g3 ~@5]/2", // C5 E
  AJ: "[[c4,a4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 [a3,c4] ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 g3@3 c4 ~@2 c4 ~@2 c4 ~@2, f4@47 ~, d3@48 f3@24 [c4,g4]@2 ~@10 g3 ~@5 g3 ~@5, f6@36 c6@12 c6@47 ~, a3@6 ~@6 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@11 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 a3 ~@5 [c3,bb3,d4]@21 ~@3]/4", // F Am C5 Gm
  AK: "[bb3,eb4]@9 ~@3 [bb3,eb4]@3 ~@3 [bb3,eb4]@2 ~@4, bb4, [eb3,g4]@7 ~, [eb5,bb5] ~@7", // Eb5 Eb Eb5
  AL: "[[g3,c4]@3 ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~, [c3,e4,g4], [c5,g5] ~@17]/3", // C5 C C5
  AM: "[bb3,eb4]@3 ~ [bb3,eb4] ~ [bb3,eb4] ~, bb4@23 ~, eb3@5 ~, [eb5,bb5] ~@7", // Eb5
  AN: "[bb3,eb4]@9 ~@3 [bb3,eb4]@3 ~@3 [bb3,eb4]@2 ~@4, bb4@23 ~, eb3@5 ~, [eb5,bb5] ~@7", // Eb5
  AO: "[[f3,f4,a4,c5,f5,a5]@73 ~@23, c4 ~@95]/4", // F
})).s("gm_string_ensemble_1").gain(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@28 A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A
  B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B A B C B A B A B C B A B A B C B A B A B C B
  A B D ~@3
>`.pickRestart({
  A: "x ~@10 x", B: "~ x ~@2", C: "x ~@4 x ~@6", D: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@28 A@7 B A@7 C A@23 D A@7 B A@7 C A@15 B A@7 D A@7 E A@30 ~@4>".pickRestart({
  A: "~ x", B: "~@3 x!2 ~", C: "x ~@5 x ~@2 x ~ x", D: "~@2 x ~@3 x ~@2 x ~ x", E: "~@2 x ~@3 x ~@4 x",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  A@27 B C D C D C D C E C D C D C D C E C D C D C D C E C D C D C D C E C D C D C D C E C D C D C D C E C D C D C D C E
  C D C D C D C E C D C D C D C E C D C D C D C E C D C D C D C E C D C D C E C D C D C E C D C D C E C D C D C E C D C
  D C E ~@4
>`.pickRestart({
  A: "x!2", B: "x ~ x!2", C: "x ~ x!2 ~ x!2 ~ x!2 ~ x", D: "x ~ x ~@2 x!2 ~ x!2 ~ x", E: "x ~ x ~@2 x!2 ~ x ~@3",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@29 A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A
  ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ B ~ A ~ A ~ B ~ A ~ A ~ B ~ A ~ A ~ B ~ A ~ A ~
  B ~@4
>`.pickRestart({
  A: "~ x ~@2", B: "~ x ~ x",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@28 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@6 B A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@5 A ~@5 A ~@5 A ~@5 A ~@3
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.25)

stack(bass, synth_strings_1, string_ensemble_1, kick, snare, hihat, open_hat, crash)