Strudelify

Cuphead - Inkwell Isle One

Kristofer Maddigan/trans. Brandon Douglas

KeyG majorTempo86 bpm
0:00/0:00
// Cuphead - Inkwell Isle One — Kristofer Maddigan/trans. Brandon Douglas
// 86 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Flute" named as a pipe, played on flute (its clarinet patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5741774; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 68 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/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.

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C D E F C G H I ~@16 J K L M J K N O C D E F C G H I P Q ~@8 R S T U V W X Y ~@4 Z G H AA
>`.pickRestart({
  A: "d5 f5 ~ d#5 g5 ~@2 g5 d5 f5 ~ a#4@3 ~@2", B: "g4 a4 a#4 d#5 ~ d#5 c#5@2 d5 ~ d4 ~ e4 ~ f#4 ~",
  C: "b4 d5 ~ c5 e5 ~@2 f#5 d5 c#5@2 d5 ~ g4 f#4 f4", D: "e4 f#4 g4 f#4 g4 a4 ~ d4 ~ c#4 d4 e4 d4 f#4 c5 a4",
  E: "b4 d5 ~ c5 e5 ~@2 f#5 g5 f#5 e5 d5 ~ c#5 b4 a#4", F: "a4 c#5 ~ a4 c#5 b4 a4 c#5 d5 c5 ~ e5 d5 c5 a4 a#4",
  G: "e4 f#4 g4 f#4 g4 a4 ~ b4 ~ d5 c5 c#5 d5 c5 e4 f#4", H: "g4 f4 e4 d4 e4 f#4 g#4 ~ a4 b4 ~ c#5 ~ e5 d5 ~",
  I: "g4 ~@3", J: "~ f#4 g4 f#4 g4 a4 ~ g4 ~ f#4 ~ e4 ~ d4 c4 b3", K: "~ d4 e4 f#4 g4 b4 ~ a4 ~ g4 ~ f#4 ~ e4 f#4 g4",
  L: "a4 ~ a4 ~ g#4@2 a4 ~@3 a4@2 a#4@2 b4@2 ~@2 b4@2 a#4@2 b4@2 ~@2 b4@2 c5@2 c#5@2",
  M: "d5 c5 ~ b4 ~ a4 ~ g4 ~ f#4 ~ e4 ~ f4 ~ f#4",
  N: "a4 ~ a4 ~ g#4@2 a4 ~@3 a4@2 a#4@2 b4@2 ~@2 g4@2 e4@2 d4@2 ~@2 c#4@2 d4@2 d#4@2",
  O: "e4!2 ~ d4 f#4 e4 d4 g4@5 ~@4", P: "b4!2 ~ a#4 a4 ~ g#4 g4 ~ f#4 f4 e4 d#4!2 ~@2",
  Q: "d4!2 ~ c#4 c4 ~ a3 g#3 a3 ~ d4 ~ d4@4", R: "~@4 b4@4 d5@3 d5@2 ~@2 e5 ~@2 d5 e5 d5 e5 d5 e5 d5 e5 d5 e5 ~@4",
  S: "~@4 g5@4 g#5@4 a5@4 a#5@3 b5@2 ~@2 b5@9", T: "~@8 b4@3 d5@2 ~@2 d5@4 c5 b4@3 a4 g4@3 g4 e4@3 d4",
  U: "g4@3 g4@2 ~@2 b4 ~@3 b4@2 ~@2 d5 ~@3 a#4 a4@3 g4 ~@8",
  V: "~@4 g5@4 g5@3 g5@2 ~@2 b5!2 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6",
  W: "~@4 e5@2 ~@2 e5@2 ~@2 g#5@2 ~@2 a5@3 g#5@2 ~@2 f#5 ~@3 e5@5",
  X: "~@3 d5@2 ~@2 c5 b4@3 a4 g4@3 e4 d4@4 d4@3 f#4 g4@3 b4 d5@3 b4", Y: "~@3 a#4 a4@3 g4 a#4@3 g4@2 a4@3 g4@8 ~@8",
  Z: "b4 d5 ~ c5 e5@2 ~ f#5 d5 c#5@2 d5 ~ g4 f#4 f4", AA: "~ b4@3 c5 ~ c#5 ~ d5 ~ g5 g4 ~@4",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~ A B C D E F C G H I J K@2 L M N O ~@16 F C D E F C G P Q R ~@7 S T U V W X Y Z AA ~@3 AB F C G ~
>`.pickRestart({
  A: "g3 a3 a#3 d#4 ~ d#4 c#4@2 d4 ~ d3 ~ e3 ~ f#3 ~", B: "g3@6 ~@2 g3 ~@3 b3 ~@3",
  C: "c4 ~ g3 ~ a3 ~ a#3 ~ b3 ~ d4 ~ c4 ~ a3@2", D: "g3 ~@3 d3 ~@3 g3 ~@3 b3 ~ g#3@2",
  E: "a3 ~@3 e3 ~@3 d3 ~ d3 ~ e3 ~ f#3 ~", F: "g3 ~@3 d3 ~@3 g3 ~@3 b3 ~@3", G: "g3 ~@3 e3 ~ g#3@2 a3 ~@3 d3 ~@3",
  H: "g3 ~@3 d3 ~@3 g3 ~@7", I: "b3@6 ~ d#4", J: "e4 d4", K: "[~@2 d4 e4 g4 a4 b4@4 a4@2 f#4@2 d4 c4]/2",
  L: "b3@2 g4@3 f#4 f4 d4", M: "e4@2 g3@4 ~ e3", N: "d3 b3@2 f#3", O: "g3 ~", P: "g3 ~@3 d3 ~@3 g3 ~ d3 ~ g3@2 ~@2",
  Q: "g3 f#3 f3 e3 d#3 d3 c3 ~", R: "d3@2 c#3@2 c3@2 b2@2 a2 ~ d3 ~ d3@4", S: "~@20 d4@2 d#4@2 ~ e4@2 f4@2 ~ f#4@2",
  T: "g4@16 ~@11 g4@5", U: "g#4@16 ~@3 g#4 e4@3 d#4 d4@8", V: "~@8 f#4@3 f4 f#4@3 f4 f#4@3 d4 c#4@3 c4 c4@3 a#4 ~@3 e4",
  W: "g4@3 e4 ~@7 a#4@4 a#4@4 a#4@4 g4 ~@3 e4 d4@4", X: "g4@4 e4@4 d4@3 e4 a#3@3 b3 g3@3 e3 d3@2 ~@10",
  Y: "~@3 e4@4 e4 e4@4 d#4@3 d4@9 ~@8", Z: "f#4@7 d4@5 ~@4 c4@3 d4 b3@3 a3@9", AA: "~@4 e3@3 d#3 d3@3 b3@5 g3@8 ~@8",
  AB: "~@10 d3 ~ e3 ~ f#3 ~",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note(`<
  ~ A B C D E B C F G B C D E B C H I J K L M J K N O J K L M J K N P B C D E B C F Q R S T U V W T U V X T U V W T U V
  X Y C D E B C F Z
>`.pickRestart({
  A: "g2 a2 a#2 d#3 ~ d#3 c#3@2 d3 ~ d2 ~ e2 ~ f#2 ~", B: "g2 ~@3 d2 ~@3 g2 ~@3 b2 ~@3",
  C: "c3 ~ g2 ~ a2 ~ a#2 ~ b2 ~ d3 ~ c3 ~ a2@2", D: "g2 ~@3 d2 ~@3 g2 ~@3 b2 ~ g#2@2",
  E: "a2 ~@3 e2 ~@3 d2 ~ d2 ~ e2 ~ f#2 ~", F: "g2 ~@3 e2 ~ g#2@2 a2 ~@3 d2 ~@3",
  G: "g2 ~@3 d2 ~@3 g2 ~ d2@2 e2@2 f#2@2", H: "g2 ~@3 e2 ~@3 a2 ~@3 d2 ~@3", I: "g2 ~@3 d2 ~@3 g2 ~ d2@2 e2@2 f2@2",
  J: "f#2 ~@3 d2 ~@3 a2 ~@3 a2 ~ d2 ~", K: "g2 ~@3 d2 ~@3 g2 ~@3 g2 ~ a#2 ~", L: "a2 ~@3 d2 ~@3 b2 ~@3 b2 ~ c3 ~",
  M: "d3 ~@3 a2 ~@3 g2 ~ f#2 ~ e2 ~ f2 ~", N: "a2 ~@3 d2 ~@3 b2 ~@3 e2 ~ g#2 ~", O: "a2 ~@3 d2 ~@3 g2 ~ d2@2 e2@2 f2@2",
  P: "a2 ~@3 d2 ~@3 g2 ~ d2 ~ g2@2 ~@2", Q: "g2 ~@3 d2 ~@3 g2 ~ d2 ~ g2@2 ~@2", R: "g2 g#2 a2 a#2 b2 c3 d#3@2",
  S: "d3@2 c#3@2 c3@2 b2@2 a2 ~ d3 ~ d2@4", T: "g2@2 ~@6 d2@2 ~@6 g2@2 ~@6 d2@2 ~@5 d#2",
  U: "e2 ~@3 b1 ~@3 e2 ~@3 b1 ~@3", V: "d2@2 ~@6 a1@2 ~@6 d2@2 ~@5 d2 a1@2 ~@2 f#2@2 ~@2",
  W: "g2@2 ~@6 d2@2 ~@6 g2@2 ~@2 g2@3 g2@4 a2 g2@2 ~@2", X: "g2 ~@3 d2 ~@3 g2 ~ d2 ~ e2 ~ f#2 ~",
  Y: "g2 ~@3 d2 ~@3 g2 ~@3 b2 ~ b2@2", Z: "~ g2 ~@2 d2 ~@3 g2 ~ d2 g1 ~@4",
})).s("gm_tuba").gain(0.3)

// other · string ensemble 1 · "Violins"
const string_ensemble_1 = note(`<
  A B C D E F C G H I ~@16 J K L M J K N O C D E F C G H I P Q ~@20 R G H S
>`.pickRestart({
  A: "d5 f5 ~ d#5 g5 ~@2 g5 d5 f5 ~ a#4@3 ~@2", B: "g4 a4 a#4 d#5 ~ d#5 c#5@2 d5 ~ d4 ~ e4 ~ f#4 ~",
  C: "b4 d5 ~ c5 e5 ~@2 f#5 d5 c#5@2 d5 ~ g4 f#4 f4", D: "e4 f#4 g4 f#4 g4 a4 ~ d4 ~ c#4 d4 e4 d4 f#4 c5 a4",
  E: "b4 d5 ~ c5 e5 ~@2 f#5 g5 f#5 e5 d5 ~ c#5 b4 a#4", F: "a4 c#5 ~ a4 c#5 b4 a4 c#5 d5 c5 ~ e5 d5 c5 a4 a#4",
  G: "e4 f#4 g4 f#4 g4 a4 ~ b4 ~ d5 c5 c#5 d5 c5 e4 f#4", H: "g4 f4 e4 d4 e4 f#4 g#4 ~ a4 b4 ~ c#5 ~ e5 d5 ~",
  I: "g4 ~@3", J: "~ d5 e5 d5 e5 f#5 ~ e5 ~ d5 ~ c5 ~ b4 a4 g4", K: "~ d5 e5 d5 e5 g5 ~ f#5 ~ e5 ~ d5 ~ e5 f#5 g5",
  L: "a5 ~ a5 ~ g#5@2 a5 ~@3 a5@2 a#5@2 b5@2 ~@2 b5@2 a#5@2 b5@2 ~@2 b5@2 c6@2 c#6@2",
  M: "d6 c6 ~ b5 ~ a5 ~ g5 ~ f#5 ~ e5 ~ f5 ~ f#5",
  N: "a5 ~ a5 ~ g#5@2 a5 ~@3 a5@2 a#5@2 b5@2 ~@2 g5@2 e5@2 d5@2 ~@2 c#5@2 d5@2 d#5@2",
  O: "e5!2 ~ d5 f#5 e5 d5 g5@5 ~@4", P: "b5!2 ~ a#5 a5 ~ g#5 g5 ~ f#5 f5 e5 d#5!2 ~@2",
  Q: "d5!2 ~ c#5 c5 b4 a4 g#4 a4 ~ d5 ~ d4@4", R: "b4 d5 ~ c5 e5@2 ~ f#5 d5 c#5@2 d5 ~ g4 f#4 f4",
  S: "~ b4@3 c5 ~ c#5 ~ d5 ~ g5 g4 ~@4",
})).s("gm_string_ensemble_1").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<A B C D E F C D G H ~@16 I J K L I J M N C D E F C D G O P Q ~@20 C D G R>".pickRestart({
  A: "~@11 a#2@2 a#2 a2 g#2", B: "g2 a2 a#2 d#3 ~ d#3 c#3@2 d3 ~ d2 ~ e2 ~ f#2 ~", C: "g3 ~@3 d3 ~@3 g3 ~@3 b3 ~@3",
  D: "c4 ~ g3 ~ a3 ~ a#3 ~ b3 ~ d4 ~ c4 ~ a3@2", E: "g3 ~@3 d3 ~@3 g3 ~@3 b3 ~ g#3@2", F: "a3 ~@3 e4 ~@3 d4 ~@3 e4 ~@3",
  G: "g3 ~@3 e3 ~ g#3@2 a3 ~@3 d3 ~@3", H: "g3 ~@3 d3 ~@3 g3 ~ d3@2 e3@2 f#3@2", I: "f#3 a3", J: "g3@4 b3@3 a#3",
  K: "a3@2 a3 a#3 b3@2 b3 c4", L: "a3@2 d4@2 g3 f#3 e3 f3", M: "a3@2 a3 a#3 b3@2 e3 g#3", N: "a3 d3 g3 ~",
  O: "g3 ~@3 d3 ~@3 g3 ~ d3 ~ g3@2 ~@2", P: "g2 g#2 a2 a#2 b2 c3 d#3@2", Q: "d3@2 c#3@2 c3@2 b2@2 a2 ~ d3 ~ d2@4",
  R: "~ g2 ~@2 d2 ~@3 g2 ~ d2 g2 ~@4",
})).s("gm_cello").gain(0.3)

// chords · piano
const piano = note(`<
  A B C D E F C D G H I D J K I L M N O P Q R O P S T O P Q R O P S U C D E F C D G V W X Y@2 Z AA Y@2 Z AB Y@2 Z AA Y@2
  Z AB AC D J AD C D G AE
>`.pickRestart({
  A: "[d4,d5] [f4,f5] ~ [d#4,d#5] [g4,g5] ~@2 [g4,g5] [d4,d5] [f4,f5] ~ [a#3,a#4]@3 ~@2", // D F D# G D F A#
  B: "[g3,g4] [a3,a4] [a#3,a#4] [d#4,d#5] ~ [d#4,d#5] [c#4,c#5]@2 [d4,d5] ~ [d3,d4] ~ [e3,e4] ~ [f#3,f#4] ~", // G A A# D# C# D E F#
  C: "g2 ~ [d4,g4,b4] ~ d2 ~ [d4,g4,b4] ~ g2 ~ [d4,g4,b4] ~ b2 ~ [d4,g4,b4] ~", // G
  D: "c3 ~ [g2,e4,g4,c5] ~ a2 ~ [a#2,e4,g4,c5] ~ b2 ~ [d3,c4,d4,f#4,a4] ~ c3 ~ [c4,d4,f#4,a4] ~, ~@7 a2", // C C7 D7
  E: "g2 ~ [d4,g4,b4] ~ d2 ~ [d4,g4,b4] ~ g2 ~ [d4,g4,b4] ~ b2 ~ [d4,g4,b4] ~, ~@7 g#2", // G
  F: "a2 ~ [a3,c#4,e4,g4] ~ e3 ~ [a3,c#4,e4,g4] ~ d3 ~ [c4,d4,f#4,a4] ~ e3 ~ [c4,d4,f#4,a4] ~", // A7 D7
  G: "g2 ~ [b3,d4,g4]@2 e2 ~ [g#2,g#3,b3,d4,e4]@2 a2 ~ [c#4,e4,g4,a4]@2 d2 ~ [a3,c4,d4,f#4]@2", // G E7 A7 D7
  H: "[g2,g3] ~ [b3,d4,g4]@2 [d2,d3] ~ [b3,d4,g4]@2 [b3,d4,g4]@2 [d2,d3,d4]@2 [e2,e3,e4]@2 [f#2,f#3,f#4]@2, ~@8 [g2,g3] ~@7", // G D G D E F# G
  I: "g2 ~ [b3,d4,g4] ~ d2 ~ [b3,d4,g4] ~ g2 ~ [b3,d4,g4] ~ b2 ~ [b3,d4,g4] ~", // G
  J: "g2 ~ [b3,d4,g4] ~ d2 ~ [b3,d4,g4] ~ g2 ~ [b3,d4,g4] ~ b2 ~ [g#2,b3,d4,f4,g#4]@2", // G G#dim
  K: "a2 ~ [a3,c#4,e4,g4] ~ e2 ~ [a3,c#4,e4,g4] ~ d2 ~ [d2,c4,d4,f#4,a4] ~ e2 ~ [f#2,c4,d4,f#4,a4] ~", // A7 D7
  L: "[c3,c4] ~ [g2,g3] ~ [a2,a3] ~ [a#2,a#3] ~ [b2,b3] ~ [d3,d4] ~ [c3,c4] ~ [a2,a3]@2", // C G A A# B D C A
  M: "g2 ~ [b3,d4,g4] ~ e2 ~ [g#3,b3,d4,e4] ~ a2 ~ [c#4,e4,g4,a4] ~ d2 ~ [a3,c4,d4,f#4] ~", // G E7 A7 D7
  N: "g2 ~ [b3,d4,g4]@2 d2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 [d2,d3,d4]@2 [e2,e3,e4]@2 [f2,f3,f4]@2, ~@8 g2 ~@7", // G D E F
  O: "f#3 ~ [c4,d4,f#4,a4] ~ d3 ~ [c4,d4,f#4,a4] ~ a3 ~ [c4,d4,f#4,a4] ~ a3 ~ [d3,c4,d4,f#4,a4] ~", // D7
  P: "g3 ~ [d4,g4,b4] ~ d3 ~ [d4,g4,b4] ~ g3 ~ [d4,g4,b4] ~ g3 ~ [a#3,c#4,g4,a#4] ~", // G Gdim
  Q: "a3 ~ [c4,d4,f#4,a4] ~ d3 ~ [c4,d4,f#4,a4] ~ b3 ~ [d4,g4,b4] ~ b3 ~ [c4,d4,g4,b4] ~", // D7 G
  R: "d4 ~ [f#4,a4,c5,d5] ~ a3 ~ [f#4,a4,c5,d5] ~ [g2,g3] ~ [f#2,f#3] ~ [e2,e3] ~ [f2,f3] ~", // D7 G F# E F
  S: "a3 ~ [c4,d4,f#4,a4] ~ d3 ~ [c4,d4,f#4,a4] ~ b3 ~ [d4,g4,b4] ~ e3 ~ [d4,e4,g#4,b4]@2, ~@14 g#3 ~", // D7 G E7
  T: "a3 ~ [c#4,e4,g4,a4] ~ d3 ~ [a3,c4,d4,f#4] ~ [g3,b3,d4,g4] ~ [d3,d4]@2 [e3,e4]@2 [f3,f4]@2", // A7 D7 G D E F
  U: "a3 ~ [c#4,e4,g4,a4] ~ d3 ~ [a3,c4,d4,f#4] ~ [g3,b3,d4,g4] ~ [d3,b3,d4,g4] ~ [b3,d4,g4] ~@3, ~@6 g3 ~", // A7 D7 G
  V: "[g2,g3] ~ [b3,d4,g4]@2 [d2,d3] ~ [b3,d4,g4]@2 [b3,d4,g4]@2 [d2,d3] ~ [g2,g3]@2 ~@2, ~@8 [g2,g3] ~@7", // G D G D G
  W: "b5!2 ~ a#5 a2@2 g#5 g5 ~ f#5 f5 e5 d#5!2 ~@2, g2@2 g#2@2 a5 ~ a#2@2 b2@2 c3@2 d#3@4",
  X: "d5!2 ~ c#5 c5 b4 a4 g#4 [a2,a4] ~ [d3,d5] ~ [d2,d4]@4, d3 c#3 c3 b2 ~@4", // A D
  Y: "[[g2,b4]@3 d5 [d3,g3,b3,e5]@3 d5 [d2,g4,g5]@3 [g4,g5] [d3,g3,b3,b4]@3 d5 [g2,e4,e5]@3 d5 [d3,g3,b3,g4,g5]@3 [g4,g5] [d2,b4]@3 d5 [d3,g3,b3,e4,e5]@3 ~ e2@2 ~ d5 [d3,e3,g#3,b3,e4,e5]@3 d5 [b1,f#4,f#5]@3 ~ [d3,e3,g#3,b3]@2 ~@2 e2@2 ~@2 [d3,e3,g#3,b3,b4]@3 d5 [b1,e4,e5]@3 ~ [d3,e3,g#3,b3]@2 ~ [f#4,f#5], ~@31 b4@4 ~@8 [f#4,f#5]@2 ~@2 [e4,e5]@5 ~@7 [e4,e5]@2 ~@3]/2", // G Em7 G5 G C G Em7 E7 …
  Z: "d2@2 ~ [f#4,f#5] [f#3,a3,c4,d4,a4,a5]@3 [a4,a5] [a1,d4,d5]@3 ~ [f#3,a3,c4,d4]@2 ~@2 d2@2 ~@2 [f#3,a3,c4,d4,f#4,f#5]@3 [f#4,f#5] [a1,a4,a5]@3 ~ [f#3,a3,c4,d4]@2 ~ [e4,e5], ~@11 [c#4,c#5]@4 [d4,d5]@5 ~@7 [a4,a5]@2 ~@3", // F# D7 A D5 D7 F# A D7 …
  AA: "g2@2 ~ [e4,e5] [d3,g3,b3,g4,g5]@3 [g4,g5] [d2,b3,b4]@3 ~ [d3,g3,b3]@2 ~@2 g2@2 ~@2 g2@3 g2@4 a2 g2@2 ~@2, ~@11 [a#3,a#4]@4 [b3,b4]@16 ~", // E G A# B
  AB: "g2@2 ~ [e4,e5] [d3,g3,b3,g4,g5]@3 [g4,g5] [d2,b3,b4]@3 ~ [d3,g3,b3]@2 ~@2 g2@2 ~@2 d2@2 ~@2 e2@2 ~@2 f#2@2 ~@2, ~@11 [a#3,a#4]@4 [b3,b4]@16 ~", // E G A# B
  AC: "g2 ~ [b3,d4,g4] ~ d2 ~ [b3,d4,g4] ~ g2 ~ [b3,d4,g4] ~ b2 ~ [b3,d4,g4] ~, ~@7 b2", // G
  AD: "a2 ~ [a3,c#4,e4,g4] ~ e2 ~ [a3,c#4,e4,g4] ~ [d2,d3,d4] ~ [d2,d3,d4] ~ [e2,e3,e4] ~ [f#2,f#3,f#4] ~", // A7 D E F#
  AE: "~@7 [f#6,g6]", // Gmaj7
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@2 A@7 B A@7 B C ~@7 C ~@7 A@7 B C@2 ~@8 D@7 E A@3 B A@3 ~>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x", D: "x!8", E: "x!5 ~@3",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct("<~@4 A ~@7 A ~@23 A ~@25 A ~@5>".pickRestart({
  A: "~@3 x",
})).gain(0.25)

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

// drums · hihat
const hihat = s("hh").struct("<~@51 [~@7 x] [~ x ~ x ~ x ~ x]!7 [~ x ~ x ~ x ~@2] ~@7 [~@7 x]>").gain(0.2)

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

// drums · cowbell
const cowbell = s("cb").struct("<~@43 A B C D E B C D F ~@5 G ~@10>".pickRestart({
  A: "~@27 x!2 ~@2 x", B: "x ~@3 x ~@3 x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~@3 x!2 ~@2 x",
  C: "x ~@3 x ~@2 x!2 ~@2 x ~@3 x!2 ~@3 x ~@2 x ~@3 x!2 ~@2 x",
  D: "x ~@3 x ~@2 x!2 ~@2 x ~@3 x!2 ~@2 x!2 ~@2 x ~@3 x!2 ~@2 x", E: "x ~@3 x ~@2 x!2 ~@2 x ~@3 x!2 ~@15",
  F: "x ~@3 x ~@2 x!2 ~@2 x ~@3 x ~@16", G: "~@3 x!2 ~@2 x!2 ~@2 x ~@3 x!2 ~@3 x ~@2 x!2 ~@3 x ~@3",
})).gain(0.2)

stack(trumpet, trombone, bass, string_ensemble_1, cello, piano, kick, rim, snare, hihat, crash, cowbell)