Strudelify

Slumbering Weald

Minako AdachiGo Ichinose

KeyA majorTempo114 bpm
0:00/0:00
// Slumbering Weald — Minako AdachiGo Ichinose
// 114 bpm, 3/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 4/4 at bar 37, 3/4 at bar 64, 4/4 at bar 108, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5864972; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/3)

// 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 · string ensemble 1 · "Atmosphere Synthesizer"
const string_ensemble_1 = note(`<
  A B C D E B F G H I J K L I M N H I O P L I Q R S@3 T@6 ~@4 U V ~ W X Y Z AA AB AC ~ AD AE ~ AF AG AH ~@3 AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ AW BA BB BC BD BE BF BG BD BH BI BJ BD BK BL BG BD BM BN BO BP BQ BR BS BQ
  BT BU BV ~@5 BW BX BY BZ CA CB CC ~ CD CE ~ CF CG AB CH CI AA ~@3 CJ AK AJ CK CL CM CN CO CP@2 CQ CR CS CT
>`.pickRestart({
  A: "~@8 a3@3 [e4,a4]@2 b4@3, ~@5 c#3@5 ~@6", B: "e5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3, ~@5 d3@5 ~@6",
  C: "e5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3, ~@5 e3@5 ~@6", D: "e5@3 a4@2 e5 f#5 e5 d5@3 c#5@2 a4@3, ~@5 d3@5 ~@6",
  E: "g#4@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3, ~@5 c#3@5 ~@6", F: "d5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3, ~@5 e3@5 ~@6",
  G: "c#5@5 c#5 d5 c#5 a4@3 g#4@2 a4@3, ~@5 d3@5 ~@6",
  H: "e4@3 [c#3,f#3,f#4,g#4] [e3,g#3,g#4] [a3,a4] ~ [e3,g#3,g#4] [f#3,a4] ~@2 [e4,a4]@2 b4@3, ~@5 [f#2,f#3]@3 a3@3 ~@5", // C#sus4 E A E F#m A5 F#
  I: "e5@3 a4@2 [d2,d3]@3 a3@3 [e4,a4]@2 b4@3", J: "e5@3 a4@2 [e2,e3]@3 a3@3 [e4,a4]@2 b4@3",
  K: "e5@3 a4@2 e5 f#5 e5 d5@3 c#5@2 a4@3, ~@5 [c#2,c#3]@4 ~@7", // C#
  L: "g#4@3 [c#3,f#3,f#4] [e3,g#3,g#4] [a3,a4] ~ [e3,g#3,g#4] [f#3,a4] ~@2 [e4,a4]@2 b4@3, ~@3 a4@2 [f#2,f#3]@3 a3@3 ~@5", // F#5 E A E F#m A5 F#
  M: "d5@3 a4@2 [e2,e3]@3 a3@3 [e4,a4]@2 b4@3", N: "c#5@5 c#5 d5 c#5 a4@3 g#4@2 a4@3, ~@5 [c#2,c#3]@4 ~@7",
  O: "e5@3 a3 [b3,b4] [c#4,c#5] ~ [d4,d5] [c#4,c#5] [b3,b4] ~ a3 [g#3,g#4] [f#3,f#4] ~ [g#3,g#4], ~@3 a4@2 [e2,e3]@3 a3@3 [e4,a4]@2 b4@2 ~", // B C# D C# B G# F# G# …
  P: "[a3,a4] [g#3,g#4] ~ a4@2 e5 f#5 e5 d5@3 c#5@2 a4@3, e5@3 a3 ~ [c#2,c#3]@4 ~@7", // A G# C#
  Q: "d5@3 a3 [b3,b4] [c#4,c#5] ~ [d4,d5] [c#4,c#5] [b3,b4] ~ a3 [g#3,g#4] [f#3,f#4] ~ [g#3,g#4], ~@3 a4@2 [e2,e3]@3 a3@3 [e4,a4]@2 b4@2 ~", // B C# D C# B G# F# G# …
  R: "[a3,a4] [g#3,g#4] ~ [f#3,f#4] ~ c#5 d5 c#5 a4@3 g#4@2 a4@3, c#5@5 [c#2,c#3]@4 ~@7", // A G# F# C#
  S: "[e4@3 g#4@2 ~@3 a3@3 [e4,a4]@2 b4@3 e5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3 e5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3, ~@5 c#5@16 a4@6 ~@10 b4@8 ~@3, ~@5 e4@6 ~@10 c#4@16 e4@6 ~@5]/3", // A5
  T: "[e5@3 a4@2 e5 f#5 e5 d5@3 c#5@2 a4@3 g#4@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3 e5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3 d5@3 a4@2 ~@3 a3@3 [e4,a4]@2 b4@3 c#5@5 ~ d5 c#5 a4@3 g#4@2 a4@3 e4@3 g#4@3 ~@10, ~@5 b3@16 c#4@16 e4@6 ~@10 [b3,g#4]@16 c#4@16 ~@11, ~@5 g#4@11 ~@5 a4@6 ~@10 e5@16 ~@16 [a4,c#5]@3 ~@24]/6", // A5 E A
  U: "~@13 b3@3", V: "d4@3 a4@3 ~@2 b3@3 d4@2 a4@3", W: "~@3 g#4@3 ~@2 b3@3 d4@2 g#4@3", X: "~@3 b3@2 d4@3 g#4@3 ~@5",
  Y: "~@11 e4@2 g4@3", Z: "~@3 c#4@2 e4@3 g4@3 ~@2 c#4@3", AA: "e4@3 g4@3 ~@10", AB: "~@13 a#3@3",
  AC: "c#4@3 g4@3 ~@2 c#4@3 e4@2 g4@3", AD: "~@8 c4@3 d#4@2 a4@3", AE: "~@3 c4@2 d#4@3 a4@3 ~@5",
  AF: "~@3 a#3@2 c4@3 g#4@3 ~@2 c4@3", AG: "d#4@3 g#4@3 ~@2 a#3@3 e4@2 g4@3", AH: "~@3 a#3@2 e4@3 g4@3 ~@5",
  AI: "~@13 f3@3", AJ: "c4@3 f4@3 ~@2 f3@3 c4@2 f4@3", AK: "~@3 f3@2 c4@3 f4@3 ~@2 f3@3",
  AL: "c4@3 f4@2 b3@3 b2@3 e3@2 e4@3", AM: "~@3 b2@2 e3@3 e4@3 b3@2 b2@3",
  AN: "e3@3 e4@2 e4@3 [b2,g#4]@3 [e3,b4]@2 [e4,e5]@3, b4@5 ~@11", AO: "~@3 e4@2 ~@3 b4@3 c#5@5, a3@5 a4@5 ~ e5@3 ~@2",
  AP: "~@3 g#3@2 [e4,g#4]@3 g#4@3 b4@5, e3@5 ~@6 e5@3 ~@2", AQ: "c#3@3 e3@2 c#4@3 e4@3 e5@2 f#5@3, ~@5 g4@5 ~ b4@5",
  AR: "e5 [e5,f#5] ~ d5@2 c#5@3 ~@3 f#4@2 e4@3, a#4!2", AS: "~@3 b3@2 f#4@3 b4@3 f#4@5, b2@5 d4@5 ~ d5@3 ~@2",
  AT: "~@3 b3@2 f#4@3 b4@3 f#4@5, a#2@5 d4@5 ~ d5@3 ~@2", AU: "~@3 b3@2 f#4@3 b4@3 f#4@5, a2@5 d4@5 ~ d5@3 ~@2",
  AV: "e5 [e5,f#5] ~ d5@2 c#5@3 b4@3 f#4@2 e4@3, g#2@5 ~@11", AW: "~@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3, c#3@5 ~@11",
  AX: "~@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3, d3@5 ~@11", AY: "~@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3, e3@5 ~@11",
  AZ: "e5 [e5,f#5] ~ d5@2 c#5@3 a4@3 g#4@2 a4@3, d3@5 ~@11", BA: "~@3 a3@2 [e4,a4]@3 b4@3 d5@2 a4@3, d3@5 ~@11",
  BB: "~@3 a3@2 [e4,a4]@3 b4@3 c#5@5, e3@5 ~@11", // A5
  BC: "c#5 [c#5,d5] ~ a4@2 g#4@3 a4@3 e4@2 [c#3,f#3,f#4] ~ [e3,g#3,g#4], d3@5 ~@8 g#4@2 ~", // Dmaj7 F#5 E
  BD: "[a3,a4] [e3,g#3,g#4] ~ [f#3,a4] ~ [e4,a4]@3 b4@3 e5@2 a4@3, [f#2,f#3]@3 a3@2 ~@11", // A E F#m A5 F#
  BE: "[d2,d3]@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3", BF: "[e2,e3]@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3",
  BG: "e5 [e5,f#5] ~ d5@2 c#5@3 a4@3 g#4@2 [c#3,f#3,f#4] ~ [e3,g#3,g#4], [c#2,c#3]@4 ~@9 a4@2 ~", // Esus2 F#5 E C#
  BH: "[d2,d3]@3 a3@2 [e4,a4]@3 b4@3 d5@2 a4@3", BI: "[e2,e3]@3 a3@2 [e4,a4]@3 b4@3 c#5@5",
  BJ: "c#5 [c#5,d5] ~ a4@2 g#4@3 a4@3 e4@2 [c#3,f#3,f#4] ~ [e3,g#3,g#4], [c#2,c#3]@4 ~@9 g#4@2 ~", // Dmaj7 F#5 E C#
  BK: "[d2,d3]@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@2 [b3,b4], ~@13 a3 ~@2", // D A5 B
  BL: "[c#4,c#5] [d4,d5] ~ [c#4,c#5] [b3,b4] [e4,a4]@2 [g#3,g#4] [f#3,f#4] [g#3,g#4] ~ [a3,a4] [g#3,g#4] a4@3, [e2,e3]@3 a3@2 a3 ~@2 b4@3 e5@2 a3 ~@2", // C# D C# B A5 G# F# G# …
  BM: "[d2,d3]@3 a3@2 [e4,a4]@3 b4@3 d5@2 a4@2 [b3,b4], ~@13 a3 ~@2", // D A5 B
  BN: "[c#4,c#5] [d4,d5] ~ [c#4,c#5] [b3,b4] [e4,a4]@2 [g#3,g#4] [f#3,f#4] [g#3,g#4] ~ [a3,a4] [g#3,g#4] [f#3,f#4] ~@2, [e2,e3]@3 a3@2 a3 ~@2 b4@3 c#5@5", // C# D C# B A5 G# F# G# …
  BO: "c#5 [c#5,d5] ~ a4@2 g#4@3 a4@3 e4@2 g#4@3, [c#2,c#3] ~@3", // Dmaj7 C#
  BP: "~@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3, c#5, e4@5 ~@11", BQ: "~@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3, c#4, a4@5 ~@11",
  BR: "~@3 a3@2 [e4,a4]@3 b4@3 e5@2 a4@3, b4 ~, e4@5 ~@11", // A5
  BS: "e5 [e5,f#5] ~ d5@2 c#5@3 a4@3 g#4@2 a4@3, b3, g#4@11 ~@5", // Esus2
  BT: "~@3 a3@2 [e4,a4]@3 b4@3 d5@2 a4@3, e5, e4@5 ~@11", BU: "~@3 a3@2 [e4,a4]@3 b4@3 c#5@5, [b3,g#4]",
  BV: "c#5 [c#5,d5] ~ a4@2 g#4@3 a4@3 e4@2 g#4@3, c#4, a4@3 ~@13", BW: "~@8 b3@3 d4@2 a4@3",
  BX: "~@3 b3@2 d4@3 a4@3 ~@5", BY: "~@13 g#4@3", BZ: "~@3 b3@2 d4@3 g#4@3 ~@2 b3@3", CA: "d4@3 g#4@3 ~@10",
  CB: "~@5 e4@3 g4@3 ~@2 c#4@3", CC: "e4@3 g4@3 ~@2 c#4@3 e4@2 g4@3", CD: "~@8 a#3@3 c#4@2 g4@3",
  CE: "~@3 c#4@2 e4@3 g4@3 ~@5", CF: "~@3 c4@2 d#4@3 a4@3 ~@2 c4@3", CG: "d#4@3 a4@3 ~@10",
  CH: "c4@3 g#4@3 ~@2 c4@3 d#4@2 g#4@3", CI: "~@3 a#3@2 e4@3 g4@3 ~@2 a#3@3", CJ: "~@8 f3@3 c4@2 f4@3",
  CK: "b3@3 b2@2 e3@3 e4@3 ~@2 b2@3", CL: "e3@3 e4@2 b3@3 b2@3 e3@2 e4@3, ~@11 b4@5",
  CM: "e4@3 [b2,g#4]@2 [e3,b4]@3 [e4,e5]@3 ~@2 e4@3, ~@11 a3@5", CN: "~@3 b4@2 c#5@5 ~@3 g#3@3, a4@5 e5@3 ~@3 e3@5",
  CO: "[e4,g#4]@3 g#4@2 b4@5 ~ c#3@2 e3@3, ~@5 e5@3 ~@8", // E
  CP: "[c#4@3 e4@2 e5@3 f#5@3 [e5,f#5] e5 d5@3 c#5@3 ~@2 f#4@3 e4@3 ~@2 b3@3, g4@5 b4@5 ~ a#4@8 a#4@8 b2@5]/2", // Esus2
  CQ: "f#4@3 b4@2 f#4@5 ~@3 b3@3, d4@5 d5@3 ~@3 a#2@5", CR: "f#4@3 b4@2 f#4@5 ~@3 b3@3, d4@5 d5@3 ~@3 a2@5",
  CS: "f#4@3 b4@2 f#4@5 ~ [e5,f#5] e5 d5@3, d4@5 d5@3 ~@3 g#2@5", CT: "c#5@3 b4@2 f#4@3 e4@3 ~@5",
})).s("gm_string_ensemble_1").gain(0.25)

// other · pad poly
const pad_poly = note("<~@32 A@5 ~@66 B@2 C@2 ~@35>".pickRestart({
  A: "[~@5 c#5@32 a4@32 ~@11]/5", B: "c#5/2", C: "a4/2",
})).s("gm_pad_poly").gain(0.4)

// other · piano
const piano = note("<~@34 A@2 ~@69 B ~@36>".pickRestart({
  A: "[~@5 a4@15 ~@12]/2", B: "a4@15 ~",
})).s("gm_piano").gain(0.3)

// other · pan flute
const pan_flute = note("<~@36 A@3 B@5 C@3 D@2 E@2 F G@3 H@8 ~@43 I J@2 K@2 L M@3 N@5 O@3 P@4 Q@4 R@3 ~@8>".pickRestart({
  A: "[e4@3 c5@2 b4@32 ~@3 a4@3 b4@2 a4@3]/3",
  B: "[g#4@19 [g4,g#4] f#4 e4@16 f4@3 f5@3 e5@32 ~@2 b4@3, ~@21 f4 ~@58]/5", // G#maj7
  C: "[c#5@3 b4@2 c#5@21 ~ a#4@16 f#4@2 g#4@3]/3", D: "a4/2", E: "[~@3 a4@2 b4@3 a4@3 g#4@21]/2", F: "d#4",
  G: "[g4@3 f5@2 e5@43]/3", H: "[c#5@21 a#4@21 ~ c5@42 b4@43]/8", I: "~@11 e4@2 c5@3", J: "b4/2",
  K: "[~@3 a4@2 b4@3 a4@3 g#4@18 g#4 g4 [f4,f#4]]/2", L: "e4", M: "[f4@3 f5@2 e5@32 ~@3 b4@3 c#5@2 b4@3]/3",
  N: "[c#5@21 a#4@16 f#4@3 g#4@3 a4@32 ~@2 a4@3]/5", O: "[b4@3 a4@2 g#4@21 ~ d#4@16 g4@2 f5@3]/3",
  P: "[e5@43 c#5@21]/4", Q: "[a#4@21 c5@43]/4", R: "[b4@43 ~@5]/3",
})).s("gm_pan_flute").gain(0.3)

// bass · acoustic bass
const bass = note(`<
  ~@24 A@8 B C D@3 E F G H@3 I J K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T U V W X Y T Z ~@24 AA AB AC AD AA AB AC AE AF AG
  AH@2 AI AJ AK@2 AL AM AN AO AP@2 AQ@2 AR AS AT@2 AU@4 AV@2 AW@2 AX@2 AY@4 AZ@5
>`.pickRestart({
  A: "[~@5 f#2@16 d2@16 e2@16 c#2@16 f#2@16 d2@16 e2@16 c#2 ~ b1 a1@3 ~@5]/8", B: "~@5 f#1@3 a1@8",
  C: "a2@5 d1@3 d2@5 f#2@3", D: "[a2@5 e1@3 e2@29 f2@8 f2@3]/3", E: "b1@3 b1@3 ~@2 b1@3 f2@2 f2@3",
  F: "~@3 f2@2 b1@5 ~@3 b1@3", G: "e2@8 e2@3 b1@2 b1@3",
  H: "[~@3 b1@2 e2@3 ~@3 e2@11 ~@5 c#2@8 g2@2 e2 ~@2 g2@5 ~@3]/3", I: "e2@3 e2@3 ~@5 c#2@2 c#2@3", J: "~@5 f#2@8 c#2@3",
  K: "[e2 ~@2 f#2@5 c#2@3 f#2 ~ e2@5 ~ c#2!2 e2 ~@2 f#2@5 c#2@3]/2", L: "[d#2@8 d#2@3 f#2 ~ a2@5 ~@3 a2@3 a2@3 ~@5]/2",
  M: "[d#2@3 d#2@3 ~@5 g#1@8 g#2@2 f#2 ~@2 g#2@5 d#2@3]/2", N: "[c3 ~@2 g#2@5 g#2@3 f#2@2 g#2@5 ~@3 c#2@8 e2@3]/2",
  O: "[f#2 ~@2 a#2@5 ~@3 g2@2 g2@5 ~ e2@8 c#2@5]/2", P: "[f#1@8 f#2@3 e2@2 f#2@5 ~ c#2@2 f#2@3 e2@5 c#2 ~ c#2]/2",
  Q: "[e2@3 f#2@5 ~@3 f2@8 c2@2 e2@3 f2@5 c2@3]/2", R: "[g2@3 f2@5 c2@3 e2@2 f2@5 ~ b1@2 e2@8 e1@3]/2",
  S: "[d2@3 e2@5 e1@3 f2@2 e2@5 ~ b1@2 d2@3 e2@5 ~@3]/2", T: "a1", U: "e1", V: "c#1", W: "f#2@5 e2@5 ~ c#2@5", X: "b1",
  Y: "a#1", Z: "g#1", AA: "f#2", AB: "d2", AC: "e2", AD: "c#2", AE: "c#2 b1 ~ a1@3 ~@10", AF: "f#1@3 a1@8 a2@5",
  AG: "d1@3 d2@5 f#2@3 a2@5", AH: "[e1@3 e2@29]/2", AI: "f2@8 f2@3 b1@2 b1@3", AJ: "~@3 b1@2 f2@3 f2@3 ~@2 f2@3",
  AK: "[b1@5 ~@3 b1@3 e2@8 e2@2 b1@3 b1@3 ~@2 b1@3]/2", AL: "e2@3 ~@2 e2@11", AM: "~@5 c#2@8 g2@3",
  AN: "e2 ~@2 g2@5 ~@3 e2@2 e2@3", AO: "~@5 c#2@3 c#2@3 ~@5",
  AP: "[f#2@8 c#2@3 e2 ~ f#2@5 ~ c#2@2 f#2 ~@2 e2@5 c#2 ~ c#2]/2",
  AQ: "[e2 ~@2 f#2@5 c#2@3 d#2@8 d#2@2 f#2 ~@2 a2@5 ~@3]/2", AR: "a2@3 a2@3 ~@5 d#2@2 d#2@3", AS: "~@5 g#1@8 g#2@3",
  AT: "[f#2 ~@2 g#2@5 d#2@3 c3 ~ g#2@5 ~ g#2@2 f#2@3 g#2@5 ~@3]/2",
  AU: "[c#2@8 e2@3 f#2 ~ a#2@5 ~@3 g2@3 g2@5 e2@8 c#2@5 ~ f#1@8 f#2@2 e2@3 f#2@5 c#2@3]/4",
  AV: "[f#2@3 e2@5 c#2!2 ~ e2@2 f#2@5 ~@3 f2@8 c2@3]/2", AW: "[e2@3 f2@5 c2@3 g2@2 f2@5 ~ c2@2 e2@3 f2@5 b1@3]/2",
  AX: "[e2@8 e1@3 d2@2 e2@5 ~ e1@2 f2@3 e2@5 b1@3]/2", AY: "[d2@3 e2@5 ~@3 a1@16 e1@16 c#1@16 f#2@5]/4",
  AZ: "[e2@5 c#2@5 ~ b1@16 a#1@16 a1@16 g#1@16 ~@5]/5",
})).s("gm_acoustic_bass").gain(0.2)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@37 A B C ~ A B C ~ A D C ~ A B C ~ A B C E ~ B C ~ A D ~@44 C ~ A B C ~ A B C E ~ B C ~ A B C ~ A B F ~ A B C E ~@9
>`.pickRestart({
  A: "x", B: "~@5 x ~@10", C: "~@11 x ~@4", D: "~@3 x!2 ~@11", E: "~@13 x ~ x", F: "~@8 x!2 ~@6",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@33 C ~@2 D ~@2 E ~@2 F ~ G ~@2 E ~@4 G ~@2 E ~@2 F ~ G ~ B@42 ~@3 H ~@2 F ~ G ~@2 E ~@2 F ~@4 E ~@2 F ~ G ~@2 E D
  B@7 I
>`.pickRestart({
  A: "~@5 x ~@2 x ~@2 x ~ x ~@2", B: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", C: "x ~@2 x ~@12", D: "~@11 x ~ x ~@2",
  E: "~@5 x ~@10", F: "x", G: "~@11 x ~@4", H: "~@5 x ~@2 x ~@7", I: "x ~@2 x ~ x ~@2 x ~@7",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@31 A B ~@6 B ~ C ~@2 D ~ C ~@2 E C B D ~ C B ~ E ~@2 F ~ C ~@39 G ~@6 C ~@2 D ~@2 B ~ D ~@2 F E ~ B ~ E ~@2 F ~ C B
  ~ D ~@8
>`.pickRestart({
  A: "~@2 x!2", B: "x", C: "~@11 x ~@4", D: "~@5 x ~@10", E: "~@5 x ~@5 x ~@4", F: "x ~@4 x ~@10",
  G: "~@3 x ~@3 x ~@3 x ~@4",
})).gain(0.4)

// drums · splash
const splash = s("cr").struct("<~@35 [~@13 x!3] [x!4 ~ x ~@10] ~@69 [~@8 x!4 ~ x!2 ~] x ~@34>").gain(0.1)

// drums · splash · soft notes
const splash_soft = s("cr").struct("<~@35 [~@11 x ~@4] ~@70 [~@5 x!3 ~@8] ~@35>").gain(0.05)

stack(string_ensemble_1, pad_poly, piano, pan_flute, bass, kick, snare, hihat, open_hat, splash, splash_soft)