Strudelify

I Owe You Nothing

Bros

KeyF majorTempo129 bpm
0:00/0:00
// I Owe You Nothing — Bros
// 129 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(129/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 · piano
const piano = note(`<
  ~@18 A@2 B@2 C@2 D@2 E@2 F@2 ~@13 A@2 B@2 C@2 D@2 E@2 F@2 ~@12 G H I J G H I K@2 J ~@42
>`.pickRestart({
  A: "[f1,f2]/2", B: "[d1,d2]/2", C: "[g1,g2]/2", D: "[c2,c3]/2", E: "[bb1,bb2]/2", F: "[c2, c3@9 ~@7]/2", G: "[g2,g3]",
  H: "[a2,a3]", I: "[bb2,bb3]", J: "[c3,c4]", K: "[c3,c4]/2",
})).s("gm_piano").gain(0.4).pan(0.3)

// bass · synth bass 2
const bass = note(`<
  ~@10 A B C D E F G H I@2 J@2 K@2 L@2 M@2 N@2 A O P Q A O C R A S A T A I@2 J@2 K@2 U@2 M@2 N@2 A O P Q A O C V ~@4 W X
  Y Z W X Y U@2 AA A O C AB A O C AB A O C AB A O C AB A O C AB A O C AB A O C AB A O C AB A O C AB A O C AB AC ~
>`.pickRestart({
  A: "eb2 f2!2 ~@3 c2 ~ eb2 ~ bb1 c2 ~ eb2 ~ eb2", B: "eb2 f2!2 ~@3 c2 ~ eb2 bb1 ~ c2 ~@2 eb2!2",
  C: "c2 d2!2 ~@3 a1 ~ c2 ~ g1 a1 ~ c2 ~ c2", D: "c2 d2!2 ~@3 a1 ~ c2 g1 ~ a1 ~@2 c2 ~",
  E: "g1!3 ~@3 d2 ~ f2 ~ c2 d2 ~ d2 ~ d2", F: "g1!3 ~@3 d2 ~ f2 c2 ~ d2 ~@2 d2!2",
  G: "c2!3 ~@3 g1 ~ bb1 ~ f1 g1 ~ bb1 ~ bb1", H: "c2!3 ~@3 g1 ~ bb1 f1 ~ g1@2 ~ bb1 ~", I: "f1/2", J: "d1/2", K: "g1/2",
  L: "[c2@24 c2!2 d2 c2 eb2 d2 c2@2]/2", M: "bb1/2", N: "[c2@9 ~@7]/2", O: "a1!3 ~@3 d2 ~ g1!2 ~ a1 ~@2 c2!2",
  P: "c2 d2!2 ~@3 a1 ~ c2 ~ g1 ~ a1 c2 ~ c2", Q: "eb2!3 ~@3 eb2 ~@2 ab1 ~ a1 bb1 ~ c2!2",
  R: "eb2!3 ~@3 eb2 ~@2 c2 ~ c2!2 ~ bb1 c2", S: "bb1!2 ~@2 bb1!2 ~@2 c2@2 ~@2 bb1!2 c2 ~",
  T: "eb2 f2!2 ~@3 f2 ~ a1 ~ bb1 b1 c2 ~ eb2 c2", U: "c2/2", V: "bb1 ~@3 bb1 ~@3 c2@3 ~@5", W: "g1", X: "a1", Y: "bb1",
  Z: "c2", AA: "c2@15 c2", AB: "eb2!3 ~@3 eb2 ~@2 a1 ~@2 bb1 ~ c2 ~",
  AC: "f2 eb2 d2 eb2 ~ d2 c2 d2 ~ c2 bb1 c2 ~ bb1 c2 ~",
})).s("gm_synth_bass_2").gain(0.45)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@10 A B C@2 D@4 E F G@2 H@4 I@2 H J K@2 C L K@2 C L M N A B K O@2 P@2 Q@4 I@2 H J K@2 C L K@2 C N R@13 S K@2 C L K@2
  C L K@2 C L K@2 C L K@2 C L K@2 C L K@2 C L K@2 C L K@2 C L K@2 C L ~@2
>`.pickRestart({
  A: "[bb4,c5,f5] ~ [bb4,c5,f5]!3 ~ [bb4,c5,f5]!2 [a4,c5,f5] ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!2", // Bbsus2 F
  B: "[g4,c5,f5] ~ [g4,c5,f5]!3 ~ [g4,c5,f5]!2 [a4,c5,f5] ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!2", // Csus4 F
  C: "[a4,d5,f5] ~ [a4,d5,f5]!3 ~ [a4,d5,f5]!3 ~ [a4,d5,f5]!3 ~ [a4,d5,f5]!2", // Dm
  D: "[bb4,d5,f5] ~ [bb4,d5,f5]!3 ~ [bb4,d5,f5]!3 ~ [bb4,d5,f5]!3 ~ [bb4,d5,f5]!2", // Bb
  E: "~@2 [c4,eb4] ~@2 [c4,eb4] ~@2 [c4,eb4] ~ [c4,eb4] [bb3,d4] ~ [bb3,d4] [a3,c4]!2", // Cm Bb Am
  F: "~@2 [eb4,c5] ~@2 [eb4,c5] ~@2 [eb4,c5] ~ [eb4,c5] [d4,bb4] ~ [d4,bb4] [c4,a4]!2", // Cm Gm F
  G: "~@2 [c4,a4] ~@2 [c4,a4] ~@2 [c4,a4] ~ [c4,a4] [d4,a4] ~ [d4,a4]!3", // F D5
  H: "~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~ [c4,f4] [bb3,f4] ~ [bb3,f4]!3", // F5 Bb5
  I: "~@2 [d4,g4] ~@2 [d4,g4] ~@2 [d4,g4] ~ [d4,g4] [d4,f4] ~ [d4,f4]!3", J: "[c4,f4]!2 ~ [c4,f4]!2 ~ [c4,f4] ~@9",
  K: "[a4,c5,f5] ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!2", // F
  L: "[bb4,eb5,g5] ~ [bb4,eb5,g5]!3 ~ [bb4,eb5,g5]!3 ~ [bb4,eb5,g5]!3 ~ [bb4,eb5,g5]!2", // Eb
  M: "[a4,c5,f5] ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!3 ~ [a4,c5,f5]!3 ~ [a4,c5,f5] [c5,d5,f5]", // F Dm7
  N: "[c5,d5,f5]!2 ~@2 [c5,d5,f5]!2 ~@2 [c5,d5,g5]!2 ~@2 [c5,d5,g5]!2 ~@2", // Dm7 Csus2
  O: "~@2 [f4,bb4] ~ [f4,bb4]!4 [eb4,g4] ~@2 [f4,a4] ~ [f4,a4]!3", // Bb5 Eb F
  P: "~@2 [d4,g4] ~ [c4,f4] ~ [c4,f4]!2 [d4,g4]!3 [c4,f4] ~ [c4,f4]!3", // G5 F5 G5 F5
  Q: "~@2 [c4,f4] ~ [d4,f4] ~ [d4,f4]!2 [c4,f4]!3 [d4,f4] ~ [d4,f4]!3", // F5 Dm F5 Dm
  R: "[a4,d5,g5,c6]!7 ~ [a4,d5,g5,c6] ~@2 [a4,d5,g5,c6] ~@2 [a4,d5,g5,c6]!2", // Am7
  S: "[d5,f5,bb5,c6]!4 [d5,f5,bb5,c6]@2 [d5,f5,bb5,c6] ~@9", // Bb
})).s("gm_electric_guitar_clean").gain(0.35)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@2 A@2 B@2 ~@4 C@2 D ~ E@2 F@2 ~@22 C@3 ~@20 G@2 H I J K L M J K L N@2 O P@3 Q R S T U V ~@33
>`.pickRestart({
  A: "[f4@13 [f4,c5]@2 [f4,c5]]/2", B: "[f5@3 g5@2 g5 c6@10, d4]/2", C: "eb4 f4!2 ~@13", D: "c4 d4!2 ~@13",
  E: "g3!3 ~@13", F: "c4!3 ~@13", G: "[~@15 eb5@15 f5!2]/2", H: "eb5 c5 eb5@2 eb5@2 eb5@2", I: "g5", J: "g3", K: "a3",
  L: "bb3", M: "c4", N: "[c4@3 ~]/2", O: "a5",
  P: "[f6@6 ~@5 c5 f5 ~ f5@14 ~@2 g6@6 f6 d6 c6 a5 ab5 g5 f5 eb5 f5 g5 f5 d5]/3", Q: "g4@4 f4@8 ~ c5 d5 f5",
  R: "f5@4 f5@4 a5@4 ~ c5 d5 f5", S: "f5@2 ~ d5 f5@2 ~ a5@5 ~@3 c6", T: "f6 c6 f6 ~ a6@2 ~@2 a6 g6 f6 ~ bb6@3 ~",
  U: "ab6@2 g6 f6@2 c6 eb6@2 d6 c6@3 ab5@2 ab5@2", V: "f5 ~",
})).s("gm_overdriven_guitar").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@31 A B ~@2 A B ~@19 A B ~@2 A C ~@16 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@3
>`.pickRestart({
  A: "~ a6 c7 a6", B: "g6@3 f6@5", C: "g6@3 ~@5",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@4 A@2 B@2 C@2 D@8 ~@12 E@2 F G E@2 F G H I J@3 ~@12 E@2 F G E@2 F K ~@4 L M N O L M N C@2 O E@2 F G E@2 F G E@2 F G
  E@2 F G E@2 F G E@2 F G E@2 F G E@2 F G E@2 F G E@2 F G ~@2
>`.pickRestart({
  A: "[d2,d3]/2", B: "[g2,g3]/2", C: "[c3,c4]/2", D: "[bb4 a4 g4 ~ d5@4 [bb4,d5]@8, f5, c5 ~@3, ~@3 a4@5 ~@8]/8",
  E: "[[a4,c5], f5@5 ~@3]/2", F: "[a4,d5]", G: "[bb4,eb5,g5]", H: "[a4,f5]", I: "[bb4,f5] [c5,g5]",
  J: "[bb4 a4 g4 a4@3, f5]/3", K: "[bb4,d5,f5] [c5,e5,g5]", L: "[g2,g3]", M: "[a2,a3]", N: "[bb2,bb3]", O: "[c3,c4]",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · brass section
const brass_section = note(`<
  ~@8 A B C@2 D ~ E@2 F G H@2 ~@9 I J ~@2 K L M ~ N L O C@2 ~ P ~@12 M Q R M@2 Q S ~@11 T ~@2 J ~@2 K L M ~ U V@2 W X Y
  ~@2 Z V@2 W X Y ~@2 Z V@2 W X Y ~@2 Z V@2 W X Y ~@2 Z AA@2
>`.pickRestart({
  A: "~ [g5,c6]@2 ~", B: "[g5,c6]@6 ~@2 [g5,c6]@3 ~ [g5,c6]@3 ~",
  C: "[[f5,bb5]@5 ~ [f5,bb5] ~ [f5,a5]@2 ~ [f5,a5] ~@2 [f5,g5]@6 ~@2 [f5,g5] ~ [f5,g5]@3 [f5,a5] ~@4]/2", // Bb5 F Fsus2 F
  D: "~@4 [c5,g5] ~@2 [c5,g5]@3 [d5,f5] ~@5", // C5 Dm
  E: "[[f5,c6]@5 ~ [f5,c6] ~ [f5,bb5]@2 ~ [f5,bb5] ~@2 [f5,a5]@6 ~@2 [f5,a5] ~ [f5,a5]@2 ~ [f5,bb5] ~@4]/2", // F5 Bb5 F Bb5
  F: "~@4 [f5,c6] ~@2 [f5,c6]@3 [f5,c6] ~@5", G: "~@2 [g5,c6] ~ [g5,c6] ~@3 [g5,c6]@7 ~",
  H: "[g5,c6]@4 ~@4 [g5,c6]@5 ~@3", I: "[c5,c6]!2 ~@14", J: "[eb4,eb5] [f4,f5]!2 ~@13", K: "[bb4,eb5,g5] ~",
  L: "[a4,c5,f5] ~", M: "[a4,c5,f5]", N: "[bb4,eb5,g5]@8 ~ [c5,c6] ~@2 [c5,c6] ~ [c5,c6] ~",
  O: "[f5,bb5]!2 ~@2 [f5,bb5]!2 ~@2 [g5,c6]@6 ~@2", P: "[eb5,f5,g5]", Q: "g5 f5, [a4,d5]", R: "[bb4,eb5,g5]",
  S: "[f5,bb5] ~ [f5,bb5] ~ [g5,c6]@3 ~", T: "[g5,c6] ~", U: "~@2 [c5,c6] ~ [c5,c6] ~ [c5,c6] ~",
  V: "[[f5,bb5]@5 ~ [f5,bb5] ~ [f5,a5]@2 ~ [f5,a5] ~@2 [f5,g5]@10 ~@8]/2", W: "[c5,g5]@5 ~ [d5,f5]@6 ~@4",
  X: "[eb5,g5]", Y: "[c5,f5]", Z: "~@4 [g5,c6] ~@2 [g5,c6]@3 [g5,c6] ~ [g5,c6] ~@3",
  AA: "[f5@3 [eb5,g5]@3 ~ [d5,ab5]@3 ~ [c5,bb5]@3 ~ [f4,a5,c6]@2 ~@15]/2", // Eb Ddim C7 F
})).s("gm_brass_section").gain(0.72)

// chords · synth brass 2
const synth_brass_2 = note(`<
  ~@6 A@4 B@8 ~ C D@2 E@4 F@4 G@2 H I G@2 H I J K L@3 M@2 N@2 E@4 O@4 G@2 H I G@2 H P ~@4 Q R Q S Q R Q T U V G@2 H I
  G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I G@2 H I ~@2
>`.pickRestart({
  A: "[f3@9 f3@2 f3@2 f3@2 ~ [c5,f5]@16, [g4,c5] ~, ~@15 f3@10 ~@7]/4", // F5 C5
  B: "[bb3 a3 g3 ~ d4@4 [bb3,d4]@8, f4, c4 ~@3, ~@3 a3@5 ~@8]/8", C: "~@6 c5 f5", D: "[d5@12 a4@2 bb4 a4]/2",
  E: "[bb4@3 ~]/2", F: "[~ d5 f5 bb5@13 d5 e5 g5 c6@9 ~@4, f3@7 ~, c5 ~@15]/4", G: "[f4@5 a5 c6 a5, [a3,c4]]/2",
  H: "g5@3 f5@5, [a3,d4]", I: "[bb3,eb4,g4]", J: "[c4,f4]", K: "[d4,f4] [e4,g4]", L: "[c4,f4]/3",
  M: "[[c4,eb4,f4]@6 f4 c4]/2", N: "[d4@24 a4@3 bb4@2 a4@3]/2", O: "[c5 d5 f5 bb5@13 d5 e5 g5 c6@9 ~@4, f3@7 ~]/4",
  P: "[bb3,d4,f4] [c4,e4,g4]", Q: "~ f4 bb4 d5@5", R: "~ f4 a4 c5@5", S: "~ g4 c5 e5@5", T: "[g4,c5] ~",
  U: "[g1,c2]@15 ~", V: "c5",
})).s("gm_synth_brass_2").gain(0.35)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@5 A ~@3 B ~@7 C ~@11 D ~@9 E ~@14 F ~@7 G H ~@2 I ~@9 J ~@7 G ~@7 K L ~@6 K ~@7 K ~@10
>`.pickRestart({
  A: "~@12 [c5,d5,e5] [b3,c4,d4,e4,f4,g4,a4,b4] [g3,a3,e4] ~", // C Bm7b5 A7
  B: "~@8 [d4,e4,f4,g4] [f3,g3,a3,b3,c4] [a2,b2,c3,d3,e3] ~ [f4,g4,a4] [g3,a3,b3,c4,d4,e4] [e3,f3] ~", // Em7 F Am F Cmaj7 Fmaj7
  C: "~@8 [e4,f4,g4,a4] [f3,g3,a3,b3,c4,d4] [c3,d3,e3] ~ [d2,d4,e4,f4] [e3,f3,g3,a3,b3,c4] [c3,d3] ~", // Fmaj7 Dm7 C Dm Cmaj7 Csus2
  D: "~@9 [gb2,ab2,bb2] [b2,db3,eb3,f3,gb3,ab3,bb3,b3] [db4,eb4,f4,gb4,ab4,bb4] [b4,db5,eb5,f5,gb5] [ab4,bb4,b4,db5,eb5] [ab3,bb3,b3,db4,eb4,f4,gb4] [bb2,b2,db3,eb3,f3,gb3]", // Gb Bmaj7 Ebm7 B Abm Abm7 Ebm7
  E: "~@12 [c5,d5,e5] [b3,c4,d4,e4,f4,g4,a4,b4,c5] [b2,c3,d3,e3,f3,g3,a3,e4] [d2,e2,f2,g2,a2]", // C Bm7b5 Dm
  F: "~@12 [c5,d5,e5] [b3,c4,d4,e4,f4,g4,a4,b4,c5] [b2,c3,d3,e3,f3,g3,a3,e4] [e2,f2,g2,a2]", // C Bm7b5 Fmaj7
  G: "~@12 [c5,d5,e5] [b3,c4,d4,e4,f4,g4,a4,b4,c5] [b2,c3,d3,e3,f3,g3,a3,e4] [g2,a2]", // C Bm7b5 Gsus2
  H: "~@6 [b4,c5,d5] [e4,f4,g4,a4] [c4,d4] ~@7", // Bm Fmaj7 Csus2
  I: "~@9 bb2 [b2,db3,eb3,f3,gb3,ab3,bb3,b3] [db4,eb4,f4,gb4,ab4,bb4] [b4,db5,eb5,f5,gb5] [ab4,bb4,b4,db5,eb5] [ab3,bb3,b3,db4,eb4,f4,gb4] [ab2,bb2,b2,db3,eb3,f3,gb3]", // Bmaj7 Ebm7 B Abm Abm7
  J: "~@12 [c5,d5,e5] [b3,c4,d4,e4,f4,g4,a4,b4,c5] [b2,c3,d3,e3,f3,g3,a3,e4] [f2,g2,a2]", // C Bm7b5 F
  K: "~@12 [c5,d5,e5] [b3,c4,d4,e4,f4,g4,a4,b4,c5] [b2,c3,d3,e3,f3,g3,a3,e4] [c2,d2,e2,f2,g2,a2]", L: "b1 ~@15",
})).s("gm_lead_2_sawtooth").gain(0.22)

// chords · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@5 A B ~@2 C D ~@6 E ~@11 F G ~@8 H I ~@13 J I ~@6 K L ~@2 M G ~@8 N I ~@6 K I ~@15 I ~@7 I ~@9
>`.pickRestart({
  A: "~@14 [b2,c3,d3,e3,f3] [c2,d2,e2,f2,g2,a2]", B: "[a1,b1] ~@15",
  C: "~@11 [d2,e2,f2,g2] [b1,c2] ~ [c3,d3] [f2,g2,a2,b2]", D: "[d2,e2] ~@15",
  E: "~@11 [f2,g2,a2,b2] e2 ~ [a2,b2] [f2,g2]", F: "~@8 [f1,gb1,ab1,bb1] [b1,db2,eb2,f2] ~@5 ab2",
  G: "[eb2,f2,gb2] ~@15", H: "~@15 c2", I: "b1 ~@15", J: "~@15 [c2,d2]", K: "~@15 [c2,d2,e2,f2]",
  L: "b1 ~@7 [a3,b3] [c3,d3,e3,g3] b2 ~@5", M: "~@8 [f1,gb1,ab1,bb1] [b1,db2,eb2,f2,gb2,ab2] ~@6", N: "~@15 [d2,e2]",
})).s("gm_lead_2_sawtooth").gain(0.11)

// drums · kick
const kick = s("bd").struct("<~@2 [x!4]!61 ~@4 [x ~@2 x!2 ~@2 x]!7 [x!4]!43 [x ~@2 x ~@3 x ~@3 x ~@3 x] ~>").gain(0.45)

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

// drums · clap
const clap = s("cp").struct("<A@2 B@8 A ~ A ~ A ~ A@22 C D A@22 D ~@4 E@6 A@44 ~@2>".pickRestart({
  A: "~ x ~ x", B: "x!2", C: "~@5 x ~@7 x ~@2", D: "x!4", E: "~@3 x",
})).gain(0.45)

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

// drums · low tom
const low_tom = s("lt").struct("<~@39 [~@15 x] ~@79>").gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 [~@7 x] ~@79>").gain(0.45)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@3 A ~ B C A D A D A D A E ~@8 A@3 ~ A@3 F A@3 F A G A@2 H ~@8 A@3 ~ A@3 F A@2 H G ~@14 A@3 F A@7 F A@7 F A@7 F
  A@3 I A@3 F A@4 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x!2 ~ x!4", D: "~@4 x ~@7 x ~@2 x", E: "~ x ~@2", F: "~@2 x ~@3 x!2", G: "x!4",
  H: "~@4 x ~@4 x ~@2 x ~@3", I: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
})).gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<~@39 [~@13 x ~@2] ~@79>").gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@5 A ~@10 A ~@3 A ~@3 A ~@17 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 B ~
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@3 x ~@3 x ~@3 x",
// … 28 more lines