Strudelify

Dromen zijn bedrog

Marco Borsato

KeyC minorTempo130 bpm
0:00/0:00
// Dromen zijn bedrog — Marco Borsato
// 130 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): +GTFEEDBCK.
setcpm(130/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 · piano · "A.PIANO 3"
const piano = note(`<
  ~@5 A B C D ~ A B C E A B C D ~@17 F G H I F G J K L M N O P A B C D ~@16 F G H I F G J K L M N O P A B C ~@8 F G H I
  F G J K L M N O P F G H I F G J K L M N O P ~@14
>`.pickRestart({
  A: "[eb4,c5,eb5,g5]@2 ~ [eb4,c5,eb5]@2 ~ [eb4,c5,eb5]@2 ~@2 [eb4,c5,eb5]@2 ~ [eb4,c5,eb5,bb5]@2 ~, ~@3 g5 ~@2 g5 ~@3 ab5 ~@5", // Cm Cm7
  B: "[f4,c5,f5,ab5]@2 ~ [f4,c5,f5]@2 ~ [f4,c5,f5]@2 ~@2 [f4,c5,g5,ab5]@2 ~ [f4,c5,eb5,ab5]@2 ~, ~@3 ab5 ~@2 ab5 ~@9", // Fm F5 Fm Fm7
  C: "[eb4,bb4,eb5,f5]@2 ~ [eb4,bb4,eb5]@2 ~ [d4,bb4,d5]@2 ~@2 [d4,bb4,d5]@2 ~ [d4,bb4,d5,ab5]@2 ~, ~@3 f5 ~@2 f5 ~@3 g5 ~@5", // Ebsus2 Eb5 Gm Bb7
  D: "[d4,c5,d5,g5]@2 ~ [d4,c5,d5]@2 ~ [d4,c5,d5]@2 ~@2 [d4,c5,g5]@2 ~ [d4,c5,d5,g5]@2 ~, ~@3 g5 ~@2 g5 ~@3 d5 ~@5", // Csus2 D7 Csus2
  E: "[d4,c5,d5,g5]@2 ~ [d4,c5,d5]@2 ~ [d4,b4,d5]@2 ~@2 [d4,b4,g5]@2 ~ [d4,b4,d5,g5]@2 ~, ~@3 g5 ~@2 g5 ~@3 d5 ~@5", // Csus2 D7 G
  F: "[eb4,ab4,c5,eb5]@2 ~ [eb4,ab4,eb5]@2 ~ [eb4,g4,eb5]@2 ~@2 [eb4,g4,eb5]@2 ~ [eb4,g4,c5,eb5]@2 ~, ~@3 c5 ~@2 c5 ~@3 c5 ~@5", // Ab Ab5 Eb Cm
  G: "[f4,bb4,c5,eb5]@2 ~ [f4,bb4,eb5]@2 ~ [f4,ab4,eb5]@2 ~@2 [f4,ab4,c5,eb5]@2 ~ [f4,ab4,c5,eb5]@2 ~, ~@3 c5 ~@2 c5 ~@9", // Fsus4 Ebsus2 Fm7
  H: "[f4,bb4,d5,f5]@2 ~ [f4,bb4,f5]@2 ~ [f4,bb4,f5]@2 ~@2 [f4,bb4,f5]@2 ~ [f4,bb4,d5,f5]@2 ~, ~@3 d5 ~@2 d5 ~@3 d5 ~@5", // Bb Bb5 Bb
  I: "[eb4,ab4,bb4,eb5]@2 ~ [eb4,ab4,bb4]@2 ~ [eb4,g4,bb4]@2 ~@2 [eb4,g4,eb5]@2 ~ [eb4,g4,bb4,eb5]@2 ~, ~@3 eb5 ~@2 eb5 ~@3 bb4 ~@5", // Ebsus4 Eb
  J: "[g4,c5,d5,g5]@2 ~ [g4,c5,g5]@2 ~ [f4,a4,c5,f5]@3 ~ [f4,a4,c5,f5]@2 ~ [f4,a4,c5,f5]@2 ~, ~@3 d5 ~@12", // Gsus4 C5 F
  K: "[g4,b4,d5,g5]@2 ~ [g4,b4,g5]@2 ~ [g4,b4,eb5,g5]@3 ~ [g4,b4,eb5,g5]@2 ~ [g4,b4,eb5,g5]@2 ~, ~@3 d5 ~@12", // G Gaug
  L: "[f4,g4,c5,f5]@2 ~ [f4,g4,c5]@2 ~ [eb4,g4,c5,eb5]@3 ~ [eb4,g4,c5,eb5]@2 ~ [eb4,g4,c5,eb5]@2 ~, ~@3 f5 ~@12", // Fsus2 Cm
  M: "[f4,c5,d5,f5]@2 ~ [f4,c5,d5]@2 ~ [f4,bb4,d5,f5]@3 ~ [f4,bb4,d5,f5]@2 ~ [f4,bb4,d5,f5]@2 ~, ~@3 f5 ~@12", // Dm7 Bb
  N: "[ab4,c5,f5,ab5]@2 ~ [ab4,c5,f5]@2 ~ [ab4,c5,f5,ab5]@3 ~ [ab4,c5,f5,ab5]@2 ~ [ab4,c5,f5,ab5]@2 ~, ~@3 ab5 ~@12", // Fm
  O: "[g4,c5,eb5,g5]@2 ~ [g4,eb5,g5]@2 ~ [g4,c5,eb5,g5]@3 ~ [g4,c5,eb5,g5]@2 ~ [g4,c5,eb5,g5]@2 ~, ~@3 c5 ~@12", // Cm
  P: "[g4,b4,d5,g5]@2 ~ [g4,d5,g5]@2 ~ [g4,b4,d5,g5]@3 ~ [g4,b4,d5,g5]@2 ~ [g4,b4,d5,g5]@2 ~, ~@3 b4 ~@12", // G G5 G
})).s("gm_piano").gain(0.27)

// bass · synth bass 2 · "+SYNBASS 4"
const bass = note(`<
  ~@9 A B C D E B C D E B F B C G H I J K B C G L B C M N B C D H B C M N B O C E@2 B C D E A B C G H I J K B C G L B C
  M N B C D H B C M N B O C E@2 B C D ~ C G L B C M N B C D H B C M N B O C E@2 B C D H B C M N B O C E@2 ~@14
>`.pickRestart({
  A: "e1 e2 f1 f2 gb1 gb2 g1 g2 ab1 ab2 a1 a2 bb1 bb2 b1 b2", B: "c1!2 c2!2 c1!2 c2!2 c1!2 c2!2 c1!2 c2!2",
  C: "f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2", D: "bb1!2 bb2!2 bb1!2 bb2!2 bb1!2 bb2!2 bb1!2 bb2!2",
  E: "g1!2 g2!2 g1!2 g2!2 g1!2 g2!2 g1!2 g2!2", F: "c1!2 c2!2 c1!2 c2!2 c1!2 c2!2 ~@4",
  G: "bb0!2 bb1!2 bb0!2 bb1!2 bb0!2 bb1!2 bb0!2 bb1!2", H: "eb1!2 eb2!2 eb1!2 eb2!2 eb1!2 eb2!2 eb1!2 eb2!2",
  I: "ab0!2 ab1!2 ab0!2 ab1!2 ab0!2 ab1!2 ab0!2 ab1!2", J: "db1!2 db2!2 db1!2 db2!2 d1!2 d2!2 d1!2 d2!2",
  K: "g0!2 g1!2 g0!2 g1!2 g0!2 g1!2 g0!2 g1!2", L: "eb1!2 eb2!2 eb1!2 eb2!2 d1!2 d2!2 d1!2 d2!2",
  M: "g0!2 g1!2 g0!2 g1!2 a0!2 a1!2 a0!2 a1!2", N: "b0!2 b1!2 b0!2 b1!2 g0!2 g1!2 g0!2 g1!2",
  O: "d1!2 d2!2 d1!2 d2!2 d1!2 d2!2 d1!2 d2!2",
})).s("gm_synth_bass_2").gain(0.4)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  A@5 B@4 ~ C@4 D@4 ~@2 E@4 F G@3 H@4 I J@2 K@2 L M K@2 N O P@2 Q@3 R@2 S@2 ~ E@4 F G@3 H@4 I J@2 K@2 L M K@2 N O P@2
  Q@3 R@2 T@2 H@4 I J@2 K@2 L M K@2 N O P@2 Q@3 K@2 L M K@2 N O P@2 Q@3 ~@14
>`.pickRestart({
  A: "[~@16 [g3,eb4]@15 f4@10 g4@3 ~@13 g4@3 ~ ab4@2 [g2,c4,g4]@16 ~, ~@15 c3@16 [f3,ab3]@16 bb2@16 ~@17, ~ c4@2 bb3 ~, ~@45 eb4@11 d4@24, ~@48 f4@11 ~@21]/5", // Cm C5 Fm
  B: "[g4@9 ab4@4 bb4@2 f4@10 g4@3 ~@13 g4@3 ~ ab4@2 ~ g2@16, c4@31 bb2@16 ~@17, [c3,eb4]@15 [f3,ab3]@17 bb3@16 ~@16, ~@29 eb4@11 d4@24, ~@32 f4@11 ~@4 [c4,g4]@17]/4", // Cm Fm C5
  C: "[g4@10 ab4@3 bb4@2 [f4,ab4]@10 g4@3 ~@13 g4@3 ~ ab4@2 c4@6 ~ b3@10, c4@2 bb3 ~, eb4@16 ~@13 eb4@11 d4@24, ~@32 f4@11 ~@4 g4@16 ~]/4", // Fm
  D: "[g4@9 ab4@4 bb4@2 [f4,ab4]@10 g4@3 ~@13 g4@3 ~ ab4@2 [c4,g4]@17, c4@2 bb3 ~, eb4@16 ~@13 eb4@11 d4@24, ~@32 f4@11 ~@21]/4", // Fm C5
  E: "[[g3,c4,eb4]@15 [ab3,eb4,f4]@16 ~@9 d4@7 f4@6 ~ eb4@10, ~@31 eb4@8 ~@25, ~@32 [bb3,f4]@15 [bb3,g4]@16 ~]/4", // Cm Fm7 Bb5 Eb
  F: "[ab3,c4,eb4]", G: "[db4@8 d4@7 ~ b3@15 ~ [c4,eb4]@16, [f3,ab3]@15 g4@32 ~, ~@15 d4@17 ~@16]/3",
  H: "[[eb4,ab4,c5]@15 [f4,bb4,d5]@16 ~@9 [f4,d5]@15 [g4,eb5]@8 ~, ~@31 [g4,eb5]@8 ~@25, ~ bb4]/4", I: "[c4,eb4,ab4]",
  J: "[[d4,g4,b4]@8 [f4,a4,c5]@7 ~ d5@8 eb5@8, ~@15 [g4,b4]@16 ~]/2", // G F G
  K: "[ab4@6 g4@9 bb4@7 ab4@9 ~, [c4,eb4]@15 [c4,f4]@16 ~]/2", L: "[d4,f4,bb4]", M: "ab4@6 g4@9 ~, [eb4,bb4]",
  N: "[d4,g4,b4]@3 [f4,a4,c5]@5", O: "d5@6 eb5@9 ~, [g4,b4]", P: "[f4@6 eb4@9 c5@7 bb4@9 ~, [g4,c5]@15 [f4,d5]@16 ~]/2",
  Q: "[[ab4,c5,f5]@15 [c5,eb5]@16 [b4,d5]@16 ~, ~@15 g4@32 ~]/3", // Fm Cm Bm
  R: "[g4@10 ab4@3 bb4@2 [f4,ab4]@10 g4@3 ~ eb4@3, c5, eb4 ~]/2", // Fm
  S: "[eb4@8 ~@2 g4@3 ab4@2 [c4,g4]@16 ~, bb4 ~, f4@5 ~@11, ~ d4@3]/2", // C5
  T: "[eb4@8 ~@2 g4@3 ab4@2 b4@9 eb4@4 d4@4, bb4 ~, f4@10 ~@5 g4@16 ~, ~@8 d4@16 b3@7 ~]/2",
})).s("gm_string_ensemble_2").gain(0.16)

// other · harpsichord · "+COUPLDHPS"
const harpsichord = note(`<
  ~ A B C D A B C D ~@18 E F G H I J K L M N O H N J P Q R O S N T ~@12 E F G H I J K L M N O H N J P Q R O S N T ~@3 U
  ~ G H I J K L M N O H N J P Q R O S N T M N O H N J P Q R O S N T ~@14
>`.pickRestart({
  A: "g4@10 ab4@3 bb4@3", B: "ab4@10 g4@3 eb4@3", C: "f4@10 g4@3 ab4@3", D: "g4@15 ~", E: "~@2 eb5 d5", F: "c5@15 ~",
  G: "~ f5", H: "bb4@15 ~", I: "f5 eb5", J: "ab4@15 ~", K: "g4 a4", L: "b4@15 ~", M: "eb5@3 eb5", N: "eb5@15 ~",
  O: "f5@15 ~", P: "d5 f5", Q: "g5 g6", R: "g5@15 ~", S: "ab5@15 ~", T: "d5@15 ~", U: "g5@7 ~ eb5@4 d5@4",
})).s("gm_harpsichord").gain(0.43)

// other · harpsichord · "+COUPLDHPS" · soft notes
const harpsichord_soft = note(`<
  ~ A B C D A B C D ~@18 E F G H I J K L M N O H N J P Q R O S N T ~@12 E F G H I J K L M N O H N J P Q R O S N T ~@3 U
  ~ G H I J K L M N O H N J P Q R O S N T M N O H N J P Q R O S N T ~@14
>`.pickRestart({
  A: "g3@10 ab3@3 bb3@3", B: "ab3@10 g3@3 eb3@3", C: "f3@10 g3@3 ab3@3", D: "g3@15 ~", E: "~@2 eb4 db4", F: "c4@15 ~",
  G: "~ f4", H: "bb3@15 ~", I: "f4 eb4", J: "ab3@15 ~", K: "g3 a3", L: "b3@15 ~", M: "eb4@3 eb4", N: "eb4@15 ~",
  O: "f4@15 ~", P: "d4 f4", Q: "g4 g5", R: "g4@15 ~", S: "ab4@15 ~", T: "d4@15 ~", U: "g4@7 ~ eb4@4 d4@4",
})).s("gm_harpsichord").gain(0.29)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@10 A B C D A B C E ~@30 A B C F ~@29 A B C G ~@20 H@2 I J K L M N@2 ~@18
>`.pickRestart({
  A: "g4@10 ab4@3 bb4@3", B: "ab4@10 g4@3 eb4@3", C: "f4@10 g4@3 ab4@3", D: "g4@14 ~ d4", E: "g4", F: "g4@13 ~@3",
  G: "g4@12 ~@2 [e3,f3,g3,a3] [c3,d3]", H: "[c5@28 bb4 [g4,a4] ~ f4]/2",
  I: "bb4@2 c5@3 d5@2 ~@2 bb4 c5 ~ d5 eb5 ~ f5, g4 ~@7 eb5@2 ~@6", J: "g5@6 g5 g5@6 ~@2 [g4,c5], ~@7 c4",
  K: "g5@3 f5@3 eb5 d5 eb5@6 [a4,b4,d5] [e4,g4]", L: "g5@3 g5@2 ~ f5 eb5 d5@5 ~ [g3,g4,a4,b4] d4",
  M: "d5@3 g5@3 b5@2 c6@3 b5@2 ~ c6@2, g4 ~@15", N: "d6/2",
})).s("gm_overdriven_guitar").gain(0.44).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@13 A ~@37 B ~@32 C D ~@20 E ~@2 F G ~@21>".pickRestart({
  A: "~@14 [e4,f4,gb4] eb4", B: "~@13 [f4,gb4] [eb4,e4] d4", C: "~@12 [e4,f4,gb4] [b3,c4,d4] ~ [a2,b2]",
  D: "[f2,g2] ~@15", E: "~@12 b4 f4 [c4,d4,e4] e4", F: "~@14 c5 [d4,f4]", G: "~@13 c5 f4 ~",
})).s("gm_overdriven_guitar").gain(0.25).pan(0.4)

// chords · percussive organ · "+DET ORG 2"
const percussive_organ = note(`<
  ~@18 A B A C D E F G H A C I J K C L H ~@18 A C D E F G H A C I J K C L H ~@17 C I J K C L H ~@40
>`.pickRestart({
  A: "~@2 [g4,c5,g5] ~ [g4,c5,g5]!2 ~ [g4,c5,g5] ~@2 [g4,c5,g5]@2 ~@2 [g4,c5,g5]@2", // C5
  B: "~@2 [g4,c5,g5] ~ [g4,c5,g5]!2 ~ [g4,c5,g5] ~@2 [g4,c5,g5]@2 ~@4", // C5
  C: "~@2 [ab4,eb5,ab5] ~ [ab4,eb5,ab5]!2 ~ [ab4,eb5,ab5] ~@2 [ab4,eb5,ab5]@2 ~@2 [ab4,eb5,ab5]@2", // Ab5
  D: "~@2 [f4,bb4,f5] ~ [f4,bb4,f5]!2 ~ [f4,bb4,f5] ~@2 [f4,bb4,f5]@2 ~@2 [f4,bb4,f5]@2", // Bb5
  E: "~@2 [bb4,eb5,bb5] ~ [bb4,eb5,bb5]!2 ~ [bb4,eb5,bb5] ~@2 [bb4,eb5,bb5]@2 ~@2 [bb4,eb5,bb5]@2", // Eb5
  F: "~@2 [eb4,ab4,eb5] ~ [eb4,ab4,eb5]!2 ~ [eb4,ab4,eb5] ~@2 [eb4,ab4,eb5]@2 ~@2 [eb4,ab4,eb5]@2", // Ab5
  G: "~@2 [ab4,db5,ab5] ~ [ab4,db5,ab5]!2 ~ [ab4,db5,ab5] ~@2 [ab4,d5,ab5]@2 ~@2 [ab4,d5,ab5]@2", // Db5 Abdim
  H: "~@2 [g4,d5,g5] ~ [g4,d5,g5]!2 ~ [g4,d5,g5] ~@2 [g4,d5,g5]@2 ~@2 [g4,d5,g5]@2", // G5
  I: "~@2 [bb4,f5,bb5] ~ [bb4,f5,bb5]!2 ~ [bb4,f5,bb5] ~@2 [bb4,f5,bb5]@2 ~@2 [bb4,f5,bb5]@2", // Bb5
  J: "~@2 [bb4,g5,bb5] ~ [bb4,g5,bb5]!2 ~ [bb4,g5,bb5] ~@2 [bb4,f5,bb5]@2 ~@2 [bb4,f5,bb5]@2", // Eb Bb5
  K: "~@2 [bb4,f5,bb5] ~ [bb4,f5,bb5]!2 ~ [bb4,f5,bb5] ~@2 [bb4,eb5,bb5]@2 ~@2 [bb4,eb5,bb5]@2", // Bb5 Eb5
  L: "~@2 [g4,d5,g5] ~ [g4,d5,g5]!2 ~ [g4,d5,g5] ~@2 [a4,f5,a5]@2 ~@2 [a4,f5,a5]@2", // G5 Dm
})).s("gm_percussive_organ").gain(0.2)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@9 A B ~@17 C D E F C G H ~@6 G I B ~@3 I B ~@3 I B ~@7 C D E F C G H ~@6 G I B ~@3 I B ~@16 G I B ~@3 I B ~@5 G I B
  ~@3 I ~@14
>`.pickRestart({
  A: "~@8 [g4,g5]!8", B: "~ [gb4,gb5] [e4,f4,eb5,e5,f5] [db5,d5] ~@12, [g4,g5] ~@7",
  C: "[c4,eb4,ab4] [c4,eb4]!2 [c4,eb4,ab4]!2 [c4,eb4] [c4,eb4,ab4]@2 [c4,eb4,ab4] [c4,eb4]!2 [c4,eb4,ab4]!2 [c4,eb4] [c4,eb4,ab4]@2", // Ab Cm Ab Cm Ab Cm Ab Cm …
  D: "[eb4,f4,bb4] [eb4,f4]!2 [eb4,f4,bb4]!2 [eb4,f4] [eb4,f4,bb4]@2 [d4,f4,bb4] [d4,f4]!2 [d4,f4,bb4]!2 [d4,f4] [d4,f4,bb4]@2", // Ebsus2 Bb Dm Bb Dm Bb
  E: "[g4,bb4,eb5] [g4,bb4]!2 [g4,bb4,eb5]!2 [g4,bb4] [g4,bb4,eb5] [f4,bb4] [f4,bb4,d5] [f4,bb4]!2 [f4,bb4,d5]!2 [f4,bb4] [f4,bb4,d5]@2", // Eb Gm Eb Gm Eb Bb5 Bb Bb5 …
  F: "[f4,bb4,d5] [f4,bb4]!2 [f4,bb4,d5]!2 [f4,bb4] [f4,bb4,d5]@2 [g4,bb4,eb5] [g4,bb4]!2 [g4,bb4,eb5]!2 [g4,bb4] [g4,bb4,eb5]@2", // Bb Bb5 Bb Bb5 Bb Eb Gm Eb …
  G: "~ g4!2 [g4,g5]!2 g4 [g4,g5]@2 ~ g4!2 [g4,g5]!2 g4 [g4,g5]@2, [g4,g5] ~@3 [g4,g5] ~@3", // G
  H: "~ g4!2 [g4,g5]!2 g4 [g4,g5]@2 ~ g4 [g4,g5]!4 [g4,g5]@2, [g4,g5] ~@3 [g4,g5] ~@3", // G
  I: "~ g4!2 [g4,g5]!2 g4 [g4,g5]@2 [g4,g5]!8, [g4,g5] ~@7", // G
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.3)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@10 A B C D A B C D E@3 ~@14 A B C F A B G H A I B J D A B C D K@2 ~@14 A B C F A B G H A I B J D A B C ~@8 A B C F A
  B G H A I B J D A B C F A B G H A I B J D ~@14
>`.pickRestart({
  A: "c3", B: "f3", C: "bb2", D: "g2", E: "[f4@5 ~, bb2@29 ~@19]/3", F: "eb3", G: "g2 a2", H: "b2 g2", I: "d3", J: "g3",
  K: "[f4@3 ~]/2",
})).s("gm_distortion_guitar").gain(0.48).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@10 A@7 ~ A B A@64 ~ A@33 ~@14>".pickRestart({
  A: "x!4", B: "x!3 ~",
})).gain(0.56)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@9 A ~@10 B C B C B C B C ~@25 B C B C B C B C ~@71>".pickRestart({
  A: "~@8 x!8", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@4 x ~@4 x ~ x!2 ~ x!2",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B C B D B C B D B E B F B F B F B F B F B F B F G B C B H B C B H B C B C G B C B D I B F B F B F B F B F B F B
  F G B C B H B C B H B C B C G B C B J B F B F B F G B C K G B C K G B C B C G B C K L B C K G B C B C G ~@14
>`.pickRestart({
  A: "~@8 x!8", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", D: "~@2 x ~ x ~@2 x ~@3 x!2 ~@2 x",
  E: "~@4 x ~@4 x ~ x ~@4", F: "~@4 x ~@4 x ~ x!2 ~@2 x", G: "~@4 x ~@2 x!9", H: "~@4 x ~@2 x ~@4 x!2 ~ x",
  I: "~@4 x ~@2 x ~ x ~ x!5", J: "~@11 x!2 ~@2 x", K: "~@4 x ~@2 x ~@4 x ~@2 x", L: "~@4 x ~@2 x!2 ~@2 x!3 ~ x",
})).gain(0.56)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@10 [x!4]!74 x [x!4]!33 x ~@13>").gain(0.08)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10
  [~ x ~ x ~ x ~ x]!9
  [~ x ~ x ~ x ~@2]
  [~ x ~ x ~ x ~ x]!64
  ~
  [~ x ~ x ~ x ~ x]!33
  ~@14
>`).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@3 A ~@3 A ~ A ~@7 A ~@6 A ~@7 A ~@4 A ~@4 A ~@7 A ~@6 A ~@7 A ~@4 A ~@3 A ~@6 A ~@7 A ~@4 A ~@7 A ~@18
>`.pickRestart({
  A: "x",
})).gain(0.48)

// drums · tambourine
// … 9 more lines

More by Marco Borsato