Strudelify

Living on Video

Trans-X

KeyG minorTempo138 bpm
0:00/0:00
// Living on Video — Trans-X
// 138 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 139 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(138/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 · synth brass 1
const synth_brass_1 = note(`<
  A B C B A B A B A B C B D E D E D E D E D E D E D E D E ~@2 F G H I J F K L J F K ~ D E D E D E D E D E D E D E J F J
  F J F J F D E D E D E D E D E D E D M@2 N ~ O@8 P@2 Q@18 N ~@23 R@5 ~
>`.pickRestart({
  A: "g4@4 ~@2 g4 ~@2 g4@2 ~ bb4 ~@2 eb4@3 a4@2 ~ [f4,bb4]@3, ~@9 a4 ~@5 g4@2 ~@7", // Bb5
  B: "eb4@2 ~ f4 ~@2 f4@2 ~ a4 ~@2 f4@2 ~ g4@2 ~ [g4,a4]@3 bb4@2 ~, ~@6 g4 ~@5 bb4 ~@2 a4 ~@8", // Gsus2
  C: "[g4,a4]@3 g4@2 ~ g4 ~@2 g4@2 ~ bb4 ~@2 eb4@3 a4@2 ~ [f4,bb4]@3, ~@9 a4 ~@5 g4@2 ~@7", // Gsus2 Bb5
  D: "g4@3 ~@3 g4 ~@2 [g4,a4] ~@2 bb4 ~@2 eb4@3 a4 ~@2 f4@3, ~@15 g4 ~@5 bb4 ~@2", // Gsus2
  E: "eb4 ~@2 f4 ~@2 [f4,g4] ~@2 a4 ~@2 [f4,bb4] ~@2 [g4,a4] ~@2 g4@3 bb4 ~@2, ~@18 a4 ~@5", // Fsus2 Bb5 Gsus2
  F: "g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g3 [g3,g4] ~@2 [g3,g4]@6 ~@2, g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g2@2 ~@10", // G
  G: "g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g3 [g3,g4] ~@2 g4@8, g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g2@2 ~@2 g3@6 ~@2", // G
  H: "g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g3 g4@2 ~ [g3,g4]@7 ~, g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g2@2 ~@10, ~@13 g3 ~@10", // G
  I: "g2@2 ~ g4@3 g2@2 ~ g4@3 g3 g4@2 ~ [g3,g4]@7 ~, g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g2@2 ~@10, ~@13 g3 ~@10", // G
  J: "g2@2 ~ [g3,g4] ~@2 g2@2 ~ g4@2 ~ g3 [g3,g4] ~@2 [g3,g4]@7 ~, g3 ~@5 g3 ~@2 g3 ~@2 g2@2 ~@10", // G
  K: "g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g3 [g3,g4] ~@2 [g3,g4]@7 ~, g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g2@2 ~@10", // G
  L: "g2@2 ~ g4@2 ~ g2@3 g4@2 ~ g3 [g3,g4] ~@2 [g3,g4]@7 ~, g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g2@2 ~@10", // G
  M: "[eb4 ~@2 f4 ~@2 [f4,g4] ~ a4 ~@2 bb4 f4 ~ a4 g4 ~@2 a4 ~@2 bb4 ~ g4@3 ~@3 g4 ~@2 a4 g4 ~ bb4 ~@3 g4 ~@2 a4 ~@2 bb4 ~@2, ~@17 g4@3 ~@18 eb4@3 ~@3 f4@4]/2", // Fsus2
  N: "eb4 ~ f4 ~@2 g4 f4 ~ a4 ~@2 bb4 f4 ~ a4 g4 ~@2 a4 ~@2 bb4 ~@2, ~@17 g4@3 ~@4",
  O: "[~@23 g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@6 ~ g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 g4@7 g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 g4@2 ~ [g3,g4]@7 g2@2 ~ g4@3 g2@2 ~ g4@3 g2@2 g4@2 ~ [g3,g4]@7 g2@2 ~ [g3,g4] ~@2 g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@7 g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@6 ~ g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@7 [g2,g3], ~@23 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@11 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@4 g3@6 ~ g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~ g3 ~@9 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~ g3 ~@9 g3 ~@5 g3 ~@2 g3 ~@2 g3 ~@11 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@11 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@12]/8", // G
  P: "[~@2 g4@2 ~ g2@3 g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@7 g4@3 ~@3 g4 ~@2 a4 g4 ~ bb4 ~@3 g4 ~@2 a4 ~@2 bb4 ~@2, ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@26 eb4@3 ~@3 f4@4]/2", // G
  Q: "[eb4 ~ f4 ~@2 g4 f4 ~ a4 ~@2 bb4 f4 ~ a4 g4 ~@2 a4 ~@2 bb4 ~ g4@3 ~@3 g4 ~@2 a4 g4 ~ bb4 ~@3 g4 ~@2 a4 ~@2 bb4 ~@2, ~@17 g4@3 ~@18 eb4@3 ~@3 f4@4]/2",
  R: "[~@23 g2@2 ~ [g3,g4] ~@2 g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@7 g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@6 ~ g2@2 ~ [g3,g4] ~@2 g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@7 g2@2 ~ g4@2 ~ g2@2 ~ g4@2 ~ g2@2 [g3,g4] ~@2 [g3,g4]@6 ~@2, ~@23 g3 ~@5 g3 ~@2 g3 ~@2 g3 ~@11 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@11 g3 ~@5 g3 ~@2 g3 ~@2 g3 ~@11 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@12]/5", // G
})).s("gm_synth_brass_1").gain(0.22).pan(0.8)

// chords · synth brass 1 · soft notes
const synth_brass_1_soft = note(`<
  A B C B A B A B A B C B D E D E D E D E D E D E D E D E ~@14 D E D E D E D E D E D E D E ~@8 D E D E D E D E D E D E D
  E D E ~@10 D E D E D E D E D E D E D E D E D E D E ~@29
>`.pickRestart({
  A: "~@21 g4@2 ~", B: "a4@2 ~ bb4@2 ~ eb4@2 ~@10 f4@2 ~ g4@2 ~", C: "~@3 bb4@2 ~ a4@2 ~@13 g4@2 ~", D: "~@21 g4 ~@2",
  E: "a4 ~@2 bb4 ~@2 eb4 ~@11 f4 ~@2 g4 ~@2",
})).s("gm_synth_brass_1").gain(0.13).pan(0.8)

// chords · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~@12 A B A B A B A B A B A B A B A B ~@6 C D C D C D C D A B A B A B A B A B A B A B C D C D C D C D ~@8 A B A B A E F
  G ~@5 H I J I J F K F K F K F K F K F K F K F K F K F G ~@29
>`.pickRestart({
  A: "[g2,d3]!2 ~ [g3,d4]!2 ~ [g2,d3]!2 ~ [g3,d4]!2 ~ [eb2,bb2]!2 ~ [eb3,bb3]!2 ~ [eb2,bb2]!2 ~ [eb3,bb3]!2 ~", // G5 Eb5
  B: "[f2,c3]!2 ~ [f3,c4]!2 ~ [f2,c3]!2 ~ [f3,c4]!2 ~ [f2,c3]!2 ~ [f3,c4]!2 ~ [f2,c3]!2 ~ [f3,c4]!2 ~", // F5
  C: "[g2,d3]!2 ~ [g3,d4]!2 ~ [g2,d3]!2 ~ [g3,d4]!2 ~ [bb2,f3]!2 ~ [bb3,f4]!2 ~ [bb2,f3]!2 ~ [bb3,f4]!2 ~", // G5 Bb5
  D: "[c3,g3]!2 ~ [c4,g4]!2 ~ [c3,g3]!2 ~ [c4,g4]!2 ~ [c3,g3]!2 ~ [c4,g4]!2 ~ [c3,g3]!2 ~ [c4,g4]!2 ~", // C5
  E: "[f2,c3]!2 ~ [f3,c4]!2 ~ [f2,c3]!2 [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [g2,d3]", // F5 G5
  F: "~ [g2,d3] [g3,d4] ~ [g3,d4] [g2,d3] ~ [g2,d3] [g3,d4] ~ [g3,d4] [eb2,bb2] ~ [eb2,bb2] [eb3,bb3] ~ [eb3,bb3] [eb2,bb2] ~ [eb2,bb2] [eb3,bb3] ~ [eb3,bb3] [f2,c3]", // G5 Eb5 F5
  G: "~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] ~", // F5
  H: "~@23 [g2,d3]", // G5
  I: "~ [g2,d3] [g3,d4] ~ [g3,d4] [g2,d3] ~ [g2,d3] [g3,d4] ~ [g3,d4] [bb2,f3] ~ [bb2,f3] [bb3,f4] ~ [bb3,f4] [bb2,f3] ~ [bb2,f3] [bb3,f4] ~ [bb3,f4] [c3,g3]", // G5 Bb5 C5
  J: "~ [c3,g3] [c4,g4] ~ [c4,g4] [c3,g3] ~ [c3,g3] [c4,g4] ~ [c4,g4] [c3,g3] ~ [c3,g3] [c4,g4] ~ [c4,g4] [c3,g3] ~ [c3,g3] [c4,g4] ~ [c4,g4] [g2,d3]", // C5 G5
  K: "~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [f2,c3] ~ [f2,c3] [f3,c4] ~ [f3,c4] [g2,d3]", // F5 G5
})).s("gm_lead_8_bass_lead").gain(0.17).pan(0.6)

// bass · synth bass 2
const bass = note(`<
  ~@20 A B C D E B F B ~@2 G H I J K L M L K L M L A B C D A B C D ~@2 A B C D K L K L K L K L A B C D E B F B A B C D E
  N@3 ~ O@2 P@8 Q@7 ~@3 R@8 S ~@7 T@8 U@8 V@5 ~
>`.pickRestart({
  A: "g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@2 ~ eb2 eb1 ~", B: "f1 f2 f1 f2 f1 f2 f1 f2",
  C: "g1@3 g2@3 g1@3 g2@3 eb1@2 ~ eb2@3 eb1@3 eb2@3", D: "f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 ~ f1 ~, ~@21 f2@2 ~",
  E: "g1@3 g2@3 g1@2 ~ g2@3 eb1@3 eb2@3 eb1@3 ~ eb1 ~, ~@21 eb2@2 ~",
  F: "g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@3 ~ eb1@2, ~@21 eb2@2 ~",
  G: "g1@3 g2@3 g1@3 g2@3 bb1@3 bb2@3 bb1@2 ~@2 bb1 ~, ~@21 bb2@2 ~", H: "c2@2 ~ c3@3 c2@3 c3@3 c2@3 c3@2 ~ c2@3 c3@3",
  I: "g1@3 g2@3 g1@2 ~ g2@3 bb1@2 ~ bb2@3 bb1@3 ~ bb1@2, ~@21 bb2@2 ~",
  J: "c2@3 c3@3 c2@3 c3@3 c1@3 c2@3 c1@2 ~@2 f1@2, ~@21 c2@2 ~",
  K: "g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 ~ bb1 ~, ~@21 bb2@2 ~", // Bmaj7
  L: "c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 ~ f1@2, ~@21 c3@2 ~",
  M: "g1@3 g2@3 g1@3 g2@3 bb1@3 bb2@3 bb1@3 ~ bb1@2, ~@21 bb2@2 ~",
  N: "[f1@3 f2@3 f1@2 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@3 eb2@2 ~ f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 ~, ~@23 eb1 ~@12]/3",
  O: "[~@23 g1@3 g2@3 g1@3 g2@3 bb1@3 bb2@3 bb1@2 ~ bb2@2 bb1 c2]/2",
  P: "[~@2 c3@3 c2@3 c3@3 c2@3 c3@2 ~ c2@3 c3@3 g1@3 g2@3 g1@2 ~ g2@3 bb1@2 ~ bb2@3 bb1@3 bb2@2 ~ c2@3 c3@3 c2@3 c3@3 c1@3 c2@3 c1@2 ~ c2@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@3 bb1@3 bb2@3 bb1@3 bb2@2 ~ c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@2 ~ g2@3 eb1@3 eb2@3 eb1@3 eb2@2 eb1 f1, ~@23 bb1 ~@11 f1 ~@23 f1 ~@11 bb1 ~@11 f1 ~@12]/8", // Bmaj7
  Q: "[~@2 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@3 eb2@2 ~ f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@2 ~ g2@3 eb1@3 eb2@3 eb1@3 eb2@2 eb1 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@3 eb2@2 ~ f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 ~, ~@23 eb1 ~@47 eb1 ~@12]/7",
  R: "[~@23 g1@3 g2@3 g1@2 ~ g2@3 eb1@3 eb2@3 eb1@3 eb2@2 eb1 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@3 eb2@2 ~ f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@2 ~ g2@3 eb1@3 eb2@3 eb1@3 eb2@2 eb1 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 g1@3 g2@3 g1@3 g2@3 eb1@3 eb2@3 eb1@3 eb2@2 ~ f1, ~@47 eb1 ~@47 eb1]/8",
  S: "~@2 f2@3 f1@3 f2@3 f1@3 f2@3 f1@3 f2@3 ~",
  T: "[~@23 g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2, ~@35 f1 ~@23 f1 ~@23 f1 ~@12]/8", // Bmaj7
  U: "[~@2 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2, ~@11 f1 ~@23 f1 ~@23 f1 ~@23 f1 ~@12]/8", // Bmaj7
  V: "[~@2 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 ~ g1@3 g2@3 g1@3 g2@2 ~ [bb1,b1]@2 ~ bb2@3 bb1@3 bb2@2 bb1 c2@3 c3@3 c2@3 c3@3 c2@3 c3@3 c2@3 c3@2 f1@2, ~@11 f1 ~@23 f1 ~@24]/5", // Bmaj7
})).s("gm_synth_bass_2").gain(0.32)

// other · piano
const piano = note("<~@41 [bb2 ~@23] ~@97>").s("gm_piano").gain(0.26)

// drums · kick
const kick = s("bd").struct("<~@4 A@24 ~ A@12 ~ A@35 B C D E C@56 D ~>".pickRestart({
  A: "x!4", B: "x ~@5 x ~@4 x ~@5 x ~@5 x", C: "~@5 x ~@5 x ~@5 x ~@5 x", D: "~@5 x ~@5 x ~@5 x ~@6", E: "~@23 x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A B@3 C B@3 C ~ D B@3 C ~@3 E B@3 ~ B@3 C B@3 C ~ F B@3 C ~@7 G ~@3 A B@3 A B@3 A B H I J ~ K L@3 M L@2 I J L@3 M
  L@3 M ~@2 N J L@3 M L@3 M ~@29
>`.pickRestart({
  A: "x!2 ~@2 x ~@2 x ~ x ~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~", B: "~ x ~ x", C: "~@6 x ~@8 x!2 ~ x!2 ~ x!2 ~",
  D: "~ x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~ x!2 ~ x!2 ~", E: "x!2 ~@2 x ~@2 x ~ x ~@2 x!2 ~ x!2 ~@2 x ~ x!2 ~",
  F: "x!2 ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~ x!2 ~ x!2 ~", G: "x!2 ~ x!2 ~ x!2 ~ x ~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  H: "~@6 x ~@10 x ~@6", I: "~@5 x ~@11 x ~@5 x", J: "~ x ~@2 x ~@2 x!2 ~@2 x ~ x!2 ~ x!2 ~ x!2 ~ x ~",
  K: "~ x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~ x!2 ~ x!2 ~ x ~", L: "~@5 x ~@11 x ~@6", M: "~@5 x ~@8 x ~ x!2 ~ x!2 ~ x ~",
  N: "~@23 x",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A@20 B ~ A@4 C@7 ~ C@8 B@2 C@12 A@13 D E@2 ~ F E@16 ~@3 F E@7 G ~@23 F ~@5
>`.pickRestart({
  A: "x!4", B: "x", C: "x!2 ~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4", D: "x ~@5 x ~@4 x ~@5 x ~@5 x", E: "~@5 x ~@5 x ~@5 x ~@5 x",
  F: "~@23 x", G: "~@5 x ~@5 x ~@5 x ~@6",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@20 ~@2 A@11 ~ A@8 ~@2 A@25 B C@2 ~@2 C@16 ~@4 C@8 ~@29>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~@4 x ~@5 x ~@5 x ~@3", C: "~ x ~@2 x ~@2 x ~@2 x ~",
})).gain(0.4)

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

// drums · bongos
const bongos = s("bongo:4").struct("<~@8 A@20 ~@36 A@13 B C D ~@5 E C@11 D ~@3 E C@31 D ~@5>".pickRestart({
  A: "x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~@2 x ~ x ~@2", B: "x ~@2 x!2 ~ x ~ x ~ x!2 ~@2 x ~ x ~@2 x!2 ~@2 x",
  C: "~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x ~@2 x!2 ~@2 x", D: "~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x ~@2 x!2 ~@3", E: "~@23 x",
})).gain(0.52)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct("<~@8 A@20 ~@36 A@13 B@3 ~@6 B@12 ~@4 B@32 ~@5>".pickRestart({
  A: "~ x ~@5 x ~@5 x ~@4 x ~@3 x ~", B: "~ x ~@5 x ~@5 x ~@3 x ~@4 x ~",
})).gain(0.13)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@8 A@20 ~@36 A@13 B C@2 ~@6 C@12 ~@4 C@32 ~@5>".pickRestart({
  A: "~ x ~ x ~@3 x ~ x ~@3 x ~ x!2 ~ x!2 ~@2 x ~", B: "~ x ~ x ~@3 x!2 ~@4 x!2 ~ x!2 ~ x ~@2 x ~",
  C: "~ x!2 ~@4 x!2 ~@4 x!2 ~ x!2 ~ x ~@2 x ~",
})).gain(0.52)

// drums · shaker
const shaker = s("sh").struct("<~@117 [~@23 x] [~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2]!16 ~@5>").gain(0.25)

stack(
  synth_brass_1, synth_brass_1_soft, lead_8_bass_lead, bass, piano, kick, snare, hihat, open_hat, crash, bongos,
  bongos_soft, bongos_2, shaker
)