Strudelify

Snowblind

Styx

KeyG minorTempo73 bpm
0:00/0:00
// Snowblind — Styx
// 73 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 27, 4/4 at bar 27, 2/4 at bar 40, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 12 "Lead guitar" distortion guitar (copy of ch 11 "Lead guitar" distortion guitar)
// note: Full arrangement: all 88 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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 · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@19 A B@4 C D E F G H E F G H I@3 J K L M N@2 O P N@2 O P N@2 O P B@4 Q@2 ~@10 R S I@7 J T ~@8
>`.pickRestart({
  A: "[c2,g2] ~ [c2,g2] ~@3 [c2,g2] ~ [c2,g2] ~@3 d2@2 f2@2 g2@2 bb2@2 c3@2 bb2@2", // C5
  B: "[g2,d3]@3 [g2,d3] ~ [g2,d3] [f2,c3]@3 [f2,c3] ~ [f2,c3]", C: "[g2,d3]@5 ~ [f2,c3]@5 ~ [eb2,bb2]@12",
  D: "~@3 c3 bb2 f2 [g2,d3]@3 [g2,d3] ~ [g2,d3]", E: "[d2,d3]@3 [d3,a3] ~ [f2,c3] [g2,d3]@3 [g2,d3] ~ [g2,d3]",
  F: "[c3,f3]@3 [c3,f3] ~ [f2,c3] [bb2,eb3]@3 [bb2,eb3] ~ [g2,d3]", G: "[bb2,f3]@3 [bb2,f3] ~ [bb2,f3] [c3,g3]!6",
  H: "[d3,a3]!3 d3 f3 bb3 [g2,d3]@3 [g2,d3] ~ [g2,d3]", I: "[f2,c3]@3 [f2,c3] ~ [f2,c3] [g2,d3]@3 [g2,d3] ~ [g2,d3]",
  J: "[f2,c3]@6 [f2,c3]@2 ~@2 [f2,c3]@2 [g2,d3]@5 ~ [f2,c3]@5 ~", K: "[eb2,bb2]",
  L: "[g2,d3,g3]!2 ~@4 [f2,c3,f3]!2 ~@4", M: "[eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 ~@14 db3@2 c3@2 bb2 f2",
  N: "[g2,d3]@6 [g2,d3]@3 ~@3 [f2,c3,f3]@6 [f2,c3]@4 ~@2", // G5 F5
  O: "[bb2,eb3,bb3]@3 [bb2,eb3,bb3]@2 ~ [bb2,f3,bb3]@3 [bb2,f3,bb3]@2 ~", P: "[c3,g3]!6 [d3,a3]!3 d3 f3 bb3",
  Q: "[[g2,d3]@5 ~ [f2,c3]@5 ~ [eb2,bb2]@24 ~@12]/2", R: "~@12 [c2,g2] ~ [c2,g2] ~@3 [c2,g2] ~ [c2,g2] ~@3",
  S: "d2 f2 g2 bb2 c3 bb2 [g2,d3]@3 [g2,d3] ~ [g2,d3]", T: "[eb2,bb2] ~",
})).s("gm_overdriven_guitar").gain(0.8).pan(0.7)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@12 A B C D A B C E F@4 G H I J K L I J K M N@3 O P Q R S@2 T U S@2 T U S@2 T U F@4 V@5 W@8 X N@7 O Y Z AA AB@2 AC@2
  ~@2
>`.pickRestart({
  A: "g1", B: "f1", C: "bb1", D: "c2@23 ~", E: "c2!2 ~ c2!2 ~ d2 f2 g2 bb2 c3 d3",
  F: "g1@5 ~ g1@2 ~@2 g1@2 f1@5 ~ f1@2 ~@2 f1@2", G: "g1@5 ~ f1@5 ~ eb2@12",
  H: "~@6 c2@2 bb1@2 f1@2 g1@5 ~ g1@2 ~@2 f1@2", I: "d2@5 ~ d2@2 ~@2 f1@2 g1@5 ~ g1@2 ~@2 g1@2",
  J: "f1@5 ~ f1@2 ~@2 c2@2 eb2@5 ~ eb2@2 ~@2 d2@2", K: "bb1@5 ~ bb1@2 ~@4 c2@2 c2@2 c2@2 c2@2 c2@2 c2@2",
  L: "d2@2 d2@2 d2@2 d2@2 f2@2 bb2@2 g1@5 ~ g1@2 ~@2 f1@2", M: "d2@2 d2@2 d2@2 d2@2 f2@2 bb2@2 g1@5 ~ g1@2 ~@2 g1@2",
  N: "f1@5 ~ f1@2 ~@2 f1@2 g1@5 ~ g1@2 ~@2 g1@2", O: "f1@5 ~ f1@2 ~@2 f1@2 g1@5 ~ f1@5 ~", P: "eb2@7 ~",
  Q: "g1 ~ g1 ~@9 f1 ~ f1 ~@9", R: "eb1 ~ eb1 ~@15 db2 ~ c2@2 bb1 f1", S: "g1@5 ~ g1@2 bb1@2 c2@2 f1@6 ~@4 f1 ~",
  T: "eb2@5 f2 bb1@5 ~", U: "c2!6 d2!4 f2 bb2", V: "[g1@5 ~ f1@5 ~ eb2@24 g1@24 f1@24 bb1@24 c2@12]/5",
  W: "[~@12 g1@24 f1@24 bb1@24 c2@23 ~ g1@24 f1@24 bb1@24 c2@2 c2@2 ~@2 c2@2 c2@2 ~@2]/8",
  X: "d2@2 f2@2 g2@2 bb2@2 c3@2 d3@2 g1@5 ~ g1@2 ~@2 g1@2", Y: "eb2", Z: "eb2@5 ~ eb3@5 ~@2 eb2@5 ~ eb3@5",
  AA: "~ eb2@5 ~ eb3@5 ~@2 eb2@5 ~ eb3@4", AB: "[~@2 eb2@5 ~@2 eb3@5 ~ eb2@6 ~ eb3@6 eb2@6 ~ eb3@6 ~ eb2@6]/2",
  AC: "[~@2 eb3@7 ~@2 g1@34 ~@3]/2",
})).s("gm_electric_bass_pick").gain(0.8).pan(0.4)

// bass · lead 8 bass lead · "Bass & Lead"
const bass_2 = note("<~@2 A@2 B C D E B C D E B C D E B C D E ~@64 F@4>".pickRestart({
  A: "[g1@23 ~]/2", B: "g1", C: "f1", D: "bb1", E: "c2@23 ~", F: "[~@11 [g1,d4,g4,d5,d6]@84 ~]/4",
})).s("gm_lead_8_bass_lead").gain(0.48).pan(0.7)

// chords · piano · "El Grand"
const piano = note(`<
  A B A B A B C B A B A B A B C B A B C B ~@5 D E F G H E F G I ~@7 J@2 K L J@2 K L J@2 K L ~@5 A B A B A B C B A B A M
  ~@18
>`.pickRestart({
  A: "[g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4, ~@3 d4@2 ~@2 d4@2 d4@2 ~@4 d4@2 ~@2 d4@2 d4@2 ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  B: "[g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4, ~ d4@2 d4@2 ~@2 d4@2 d4@2 ~@2 d4@2 d4@2 ~@2 d4@2 d4@2 ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  C: "[g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4, ~@3 d4@2 ~@2 d4@2 d4@2 ~@4 d4@2 ~@4 d4@2 ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  D: "~@12 [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~", // G5
  E: "[d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~", // D5 G5
  F: "[d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~", // D5 Bb5
  G: "[c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~", // F5 G5
  H: "[gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~", // Gbm G5
  I: "[gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~@13", // Gbm
  J: "[d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~ [d5,a5] ~", // G5 D5
  K: "[f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [f5,bb5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~", // Bb5 F5
  L: "[d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~ [gb5,a5] ~", // G5 Gbm
  M: "[g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 ~@12, ~ d4@2 d4@2 ~@2 d4@2 d4@2 ~@13", // Gm Gsus2 Gm Gsus2
})).s("gm_piano").gain(0.15).pan(1)

// chords · epiano1 · "El Grand"
const epiano1 = note("<A@20 ~@38 B C B C B C D C B C B E ~@9 F G@5 ~@3>".pickRestart({
  A: "[g4,bb4] ~ [g4,bb4] ~ [g4,a4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,a4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,a4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,a4] ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  B: "[g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4, ~@3 d4@2 ~@2 d4@2 d4@2 ~@4 d4@2 ~@2 d4@2 d4@2 ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  C: "[g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4, ~ d4@2 d4@2 ~@2 d4@2 d4@2 ~@2 d4@2 d4@2 ~@2 d4@2 d4@2 ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  D: "[g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4 [g4,bb4] d4 [g4,bb4] ~ [g4,a4] d4, ~@3 d4@2 ~@2 d4@2 d4@2 ~@4 d4@2 ~@4 d4@2 ~", // Gm Gsus2 Gm Gsus2 Gm Gsus2 Gm Gsus2
  E: "[g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 [g4,bb4] ~ [g4,bb4] ~ [g4,a4] d4 ~@12, ~ d4@2 d4@2 ~@2 d4@2 d4@2 ~@13", // Gm Gsus2 Gm Gsus2
  F: "~@2 [eb2,eb3] [f4,a4,c5]", // Eb F
  G: "[[eb2,eb3]@6 [f4,a4,c5]@7 [eb2,eb3]@6 [f4,a4,c5]@6 [eb2,eb3]@6 [f4,a4,c5]@7 [eb2,eb3]@6 [a4,c5]@4 ~@2 [eb2,eb3]@6 ~ [f4,a4,c5]@6 [eb2,eb3]@7 [f4,a4,c5]@6 [eb2,eb3]@7 [f4,a4,c5]@7 [eb2,eb3]@8 [f4,a4,c5]@9 eb2@8 ~@5, ~@22 f4@3 ~@35]/5", // Eb F Eb F Eb F Eb Am …
})).s("gm_epiano1").gain(0.13).pan(0)

// other · lead 2 sawtooth · "Saw Lead"
const lead_2_sawtooth = note(`<
  ~@19 A B@2 C@2 D E@2 F G H@2 F G I@5 J ~@14 B@2 C@2 K@2 ~@10 L M@6 N@3 O@5 P@4
>`.pickRestart({
  A: "c5 ~ c5@3 ~ c5 ~ c5@3 ~ d4@2 f4@2 g4@2 bb4@2 c5@2 bb4@2", B: "[[g5,g6]@21 [g4,g6] [f4,d6] [bb4,bb6]]/2",
  C: "[[g4,g6]@11 ~]/2", D: "~ g5@2 ~ g5@2 ~ g5@5", E: "[~@3 c6 bb5 f5 g6@9 f6@3 g6@6]/2", F: "a6 bb6", G: "f6 c6",
  H: "[d6@2 g6@3 f6 g6@2]/2", I: "[d6@6 [g5,g6]@21 [g4,g6] [f4,d6] [bb4,bb6] [g4,g6]@22 ~@3 g5@2 ~ g5@2]/5",
  J: "~ g6@11, ~ g5@5 ~@6", K: "[~ g5@2 ~ g5@2 ~ g6@11 ~@6, ~@7 g5@5 ~@12]/2", L: "~@12 c5 ~ c5@3 ~ c5 ~ c5@3 ~",
  M: "[d4 f4 g4 bb4 c5 bb4 [g5,g6]@21 [g4,g6] [f4,d6] [bb4,bb6] [g4,g6]@22 ~@2 [g5,g6]@18]/6", // G Dm Bb G
  N: "[~@3 [g4,g6] [f4,d6] [bb4,bb6] [g4,g6]@22 ~@3 g5@2 ~ g5@2]/3", O: "[~ g5@59]/5", P: "[~@11 [g1,g2,g4]@84 ~]/4",
})).s("gm_lead_2_sawtooth").gain(0.56).pan(0.7)

// other · distortion guitar · "Lead guitar"
const distortion_guitar = note("<~@28 A B ~@9 C D E F G H I J K L M N O P@2 ~@34>".pickRestart({
  A: "~@10 c4 d4", B: "g4 d4 f4 d4 f4 bb3 g3@3 ~@3", C: "g5!2 d5 g5!2 d5 g5!2 d5 g5!2 d5 c6@6 [d3,a3,d4,g4]@6",
  D: "d6@6 d6@6 d6@6 db6@2 c6@2 bb5 f5", E: "g5@6 g3 bb3 d4@3 bb3 c4@6 ~ d4@3 f4@2, ~@9 c4 ~@2",
  F: "g4@2 bb4@2 c5@2 d5@4 c5 [g4,bb4] f4@8 ~@3 d4, ~@10 g4 f4, ~@21 d4@2 ~", // Gm
  G: "d4@5 ~ c4 ~ c4@4 c4@3 f4@3 f4 g4 f4 d5@3, ~@5 bb3@2 ~@14 g4 ~@2", H: "d5@10 ~ f4 d4@4 gb4@4 a4@4",
  I: "bb4@6 d5@3 bb4 c5@6 c5@2 c5 bb4 c5@3 bb4",
  J: "g4 bb4 c5 bb4 g4 [f4,bb4] c5 ~ [ab4,bb4] f4 bb4 ~ bb4 ab4 bb4@6 [ab4,bb4] c5@2 eb5, ~@11 c5@2 ~ f4 ~@9", // Bb5 Absus2
  K: "~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5!2, c5!8",
  L: "~ eb5!2 ~ eb5!2 ~ eb5!2 ~ eb5 ab4 gb4@6 ~@2 g4@2 g5!2, c5@3 c5@3 c5@3 c5@2 ~@13",
  M: "c6@4 ~ c6@4 c6@2 [f5,bb5] g5 ~ g5@4 f5@2 [d5,f5] c6 ~ [g5,bb5]", // Bb5 Dm Gm
  N: "f5 d5 c6 bb5 g5 ~ c6 ~ [g5,bb5] f5 ~ bb4 c5@5 ~@2 d5 eb5 f5 [d5,eb5] [bb4,c5], ~@5 [d5,f5]@2 ~@3 d5@2 ~@6 c5@2 ~@4", // Gm Ebmaj7 Bbsus2 Dm
  O: "d5 c5 [d5,eb5] f5 eb5 [c5,d5] bb4 g4 [eb4,f4] d4 c4 bb3 c4@3 bb3@3 c4 bb3@3 ~@2", // Ebmaj7 Csus2 Ebsus2
  P: "[c4 d4 g4 bb4 c5 g4 bb4 g4 c5@3 [f4,g4] d4@4 gb4@3 ~ a4@6 ~@22]/2", // Fsus2
})).s("gm_distortion_guitar").gain(0.8).pan(0.4)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@18 A B ~@5 C ~@3 D ~@3 E ~@6 B ~@3 F ~@3 G ~@3 H ~@16 C I ~@3 J ~@13>".pickRestart({
  A: "~@11 x", B: "~@23 x", C: "~@5 x ~@6", D: "~@10 x!2 ~@12", E: "~@7 x ~@2 x!2 ~@12", F: "~@17 x ~@5 x",
  G: "~@21 x!2 ~", H: "~@22 x!2", I: "~@5 x ~@4 x!2 ~@12", J: "~@11 x ~@12",
})).gain(0.64).pan(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@12 A ~@3 A ~@3 B@4 ~ C B@11 D ~@3 B@3 E B@12 ~@13 C B@7 D ~@9>".pickRestart({
  A: "x", B: "x!12", C: "~@6 x!6", D: "x!6 ~@6", E: "x!7 ~ x!4",
})).gain(0.8).pan(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@11 A B C@3 B C@3 ~@24 D ~@24 E F ~@17>".pickRestart({
  A: "~@4 x!4", B: "~ x!7", C: "x!8", D: "~@7 x ~@4", E: "~@5 x!3", F: "x!4 ~@4",
})).gain(0.4).pan(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A B ~@5 C ~@3 D ~@3 E ~@6 F ~@3 G ~@3 H ~@3 I ~@16 C D ~@3 J ~@13>".pickRestart({
  A: "~@5 x", B: "~@10 x!2 ~@2 x!2 ~@5 x!2 ~", C: "~ x ~", D: "~@6 x!4 ~@14", E: "~@6 x ~ x!2 ~@14", F: "~@11 x",
  G: "~@15 x!3 ~@4 x!2", H: "~@19 x!2 ~@3", I: "~@20 x!2 ~@2", J: "~@7 x ~ x!2 ~@13",
})).gain(0.72).pan(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~ A B ~@4 A B ~@30 C D ~@3 E ~@3 E ~@3 E ~@21 B ~@13>".pickRestart({
  A: "~@23 x", B: "x", C: "x!2 ~@4 x!2 ~@4", D: "x!2 ~@10", E: "~ x!5 ~@6",
})).gain(0.8).pan(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@20 B ~@3 C ~@7 D ~@21 E ~@13>".pickRestart({
  A: "~@16 x!5 ~@3", B: "~@5 x", C: "~@14 x ~@5 x!2 ~@2", D: "~@18 x!2 ~@4", E: "~ x ~",
})).gain(0.72).pan(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~@3 A ~@2 B A ~@3 C D ~@2 D E ~@2 D E ~@3 F A ~@2 A ~@2 E A ~@2 E A ~@2 A@2 ~@3 C D ~@3 D ~@3 D ~@2 G H ~@3 D
  ~@3 F A ~@8
>`.pickRestart({
  A: "x", B: "x!2 ~ x!2 ~ x ~@5", C: "x!3 ~", D: "~ x", E: "x!2", F: "~@2 x!2", G: "~@6 x!2 ~ x!2 ~",
  H: "x!2 ~@4 x ~@5",
})).gain(0.8).pan(0.4)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@28 [~@7 x!5] ~@59>").gain(0.4).pan(0.4)

// drums · ride bell
const ride_bell = s("rd").struct("<~@39 [x!2 ~@4 x!2 ~@4] [x!2 ~@10] ~@47>").gain(0.8).pan(0.4)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct("<~@32 [~@7 x!5] ~@55>").gain(0.4).pan(0.4)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@3 [~@11 x] ~@84>").gain(3.81).pan(0.4)

stack(
  overdriven_guitar, bass, bass_2, piano, epiano1, lead_2_sawtooth, distortion_guitar, kick, snare, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, high_tom, crash, crash_soft, ride_bell, ride_bell_soft, bell_tree
)

More by Styx