Strudelify

Kon Ik Maar Even Bij Je Zijn

Gordon

KeyA♭ majorTempo70 bpm
0:00/0:00
// Kon Ik Maar Even Bij Je Zijn — Gordon
// 70 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@29 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AC AD AE AF AK AL ~@8
>`.pickRestart({
  A: "ab1@3 ab1 a1@4", B: "bb1@7 bb1", C: "c2@7 ab1", D: "db2@7 db2", E: "f2 a1", F: "bb1", G: "eb2@5 ~ eb2@2 eb2@8",
  H: "ab1", I: "ab1@6 ab1@2 a1@5 ~ a1@2", J: "bb1@3 f2 bb2@4", K: "c2@6 ab1@2 c2@5 ~ c2@2",
  L: "db2@6 ab1@2 db2@5 ~ db2 eb2", M: "f2@6 ab1@2 a1@5 ~ a1@2", N: "bb1@7 f2 bb2@6 f2@2", O: "eb2@5 ~ f2@2 g2@8",
  P: "f2@15 ~", Q: "db2@5 ab1 db2 f2 ab2@5 ~ f2 db2", R: "gb2@5 ~ gb2 f2 ab2@7 ~", S: "db2@6 db2 eb2 f2@6 ~ db2",
  T: "gb2@4 bb2@4 ab2@3 eb2 ab2 f2 ab1@2", U: "db2@5 ~ db2 eb2 f2@3 f1 a1@4", V: "bb1@7 f2 bb2@8", W: "eb2@13 ~ eb2@2",
  X: "ab1@12 ~@3 ab1", Y: "bb1@7 bb1 c2@3 ab1 ab1@2 ~ ab1", Z: "db2@6 ~ ab1 db2@3 db2 db2@3 f2", AA: "gb2@2 c2 ab1",
  AB: "bb1@3 f2 bb2@3 f2 bb2@6 ~ d2", AC: "eb2@5 bb1 eb2 g2 bb2@5 ~ g2 eb2", AD: "ab2@5 ~ ab2 g2 bb2@7 ~",
  AE: "eb2@6 eb2 f2 g2@6 ~ eb2", AF: "ab2@4 c3@4 bb2@3 f2 bb2 g2 bb1@2", AG: "eb2@5 ~ eb2 f2 g2@3 g1 b1@4",
  AH: "c2@7 g1 c2 ~ c2@5 c2", AI: "f2@5 f1 f2 c2 f1@6 ~ f1", AJ: "bb1@7 bb1 f2@7 f1", AK: "eb2@2 g2 g1", AL: "c2@7 ~@9",
})).s("gm_electric_bass_finger").gain(0.36)

// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note("<~@70 A B C D E F C G ~>".pickRestart({
  A: "~ c2", B: "f2 f1", C: "bb1 bb2", D: "ab1 g1", E: "f2@15 ~", F: "f1@15 ~", G: "eb1@15 ~",
})).s("gm_electric_bass_finger").gain(0.16)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A B@2 C D E F G H I J K L M N@2 O@2 P Q R S T U V W X Y Z@2 AA AB AC@2 AD@2 AE AF AG AH@2 AI AJ AK AL ~@28 AM ~ AN ~
  AO ~
>`.pickRestart({
  A: "~@3 eb5 gb5@2 f5@2, ~ db4",
  B: "[db5@3 ab4 ~@2 ab4 ~ [ab3,gb4,db5]@8, [f3,f4] gb3 ~@2, ~@4 bb4@3 bb4@9, ~@10 db4@7 ~@15]/2", // Dbsus4 F
  C: "ab4@2 ~@2 ab4@2 c5 ~ a4@2 ~@2 a4@2 c5 ~, ab3@7 ~ a3@7 ~, ~@2 eb4@5 ~ c5@5 ~@3, ~@10 eb4@5 ~",
  D: "[c5,eb5]@4 ~@2 f4 ~ [bb4,db5]@3 ~@3 f4 ~, bb3@8 bb3@7 ~, ~ [c5,eb5] ~ [bb4,db5]", // Cm Bbm Cm Bbm
  E: "~@3 eb5 ~@2 eb5 ab5, c4@7 ~ c4@7 ~, eb5@4 ab4@4 ab5@5 ~@3, ~@2 eb4@5 ~@3 ab4@6",
  F: "~@7 db5, db4, gb5@3 db5@3 ab4@2, ~@2 f4@6 f5@7 ~, ~@2 ab4@3 f4@3",
  G: "~@3 bb4 ~ f4 f5 eb5, [f3,f5]@7 ~@9, ~ c4@3 a3@4, ~ f4 a4 ~", // F
  H: "~@4 bb4@2 [c5,eb5]@2 [bb4,db5]@3 ~ [bb4,db5]@2 f4@2, bb3!2, [c5,eb5]@3 ~@5, ~ f4@3 ~@4", // Cm Bbm Cm
  I: "~@6 bb4 ~ bb4@2 ~@2 ab4@2 bb4@2, eb3 ~, [bb4,eb5]@4 bb3@4 g3@7 ~, ~ eb4@2 ~@2 eb4@2 ~", // Eb5
  J: "db5 ~ ab4 db5 [ab3,ab4,c5]@4, ab3@7 ~@9, ~ eb4@2 ~@5", // Ab
  K: "[c4,eb4]@2 ab3@2 ~@8 c4@2 eb4 ~, ab2 a2, ~ [c4,eb4] [c4,f4] ~, ~@6 ab3@4 a3@5 ~", // Cm F5
  L: "c4@4 ~@2 c4 ~ db4@3 ~ [db4,f4]@3 ab4, bb2@7 ~ [bb2,bb3]@7 ~, eb4@3 ~ [eb4,f4]@4 ~@8", // Db Bb Ebsus2
  M: "~@2 ab3@2 [c4,eb4]@2 ab3@2 c4@2 ~@2 eb4@2 f4 ~, c3!2, [c4,eb4,ab4]@4 ~@6 ab3@5 ~", // Cm Ab
  N: "[~@4 db4@2 gb4 ~ [ab3,db4,f4]@3 ~ ab3@2 ~@4 f3 ~ [a3,c4,f4]@4 ~@2 f3@2 [a3,c4,eb4]@2 eb3 ~, db3@7 ~ db3@7 ~ f2@8 a2@8, [db4,gb4]@4 ~@8 [db4,f4]@7 ~@13, ~@2 ab3@5 ~@7 ab3@5 ~@13]/2", // Db F Adim Gb5 Db
  O: "[[bb3,eb4]@4 ~@4 [db4,f4]@3 ~ bb3 ~@3 ab4 ~@3 ab4@4 ~@4 [bb3,eb4]@4, [bb2,db4]@8 bb2@8 eb2@8 [g2,g4]@7 ~, ~ [eb4,f4] ~ [db4,f4]@2 ~@3, ~@6 bb3@5 ~@3 bb3@5 ~ [bb3,eb4]@7 ~@5]/2", // Eb5 Db Eb5 Bbm G Ebsus2 Db Eb5
  P: "f4@4 c5 a4 f4 ~ bb4@2 gb4@2 [c3,ab3,c4,ab4]@4, [f2,a3,c4]@8 [gb3,bb3,eb4]@4 eb4 ~@3, ~@8 ab2 ~@7", // Fm F Ebm
  Q: "[db4,gb4] ~ [db4,f4] [db4,f4,ab4], [db2,ab3]@6 ab3@7 ~@3, ~@4 [db4,f4]@4 f2@7 ~", // Gb5 Db Db5 Db
  R: "[db4,gb4]@2 [db4,gb4,bb4] [gb4,bb4,db5] [eb4,ab4,db5]@2 [ab4,c5,eb5]@2, [gb2,bb3]@7 ~ ab2@7 ~", // Gb5 Gb Dbsus2 Ab Gb
  S: "[ab4,db5,gb5]@4 [ab4,db5,f5]@4 db5 ~ db5 ~ [ab4,db5,f5]@4, db3 f3, ~@2 [f5,ab5] ~", // Dbsus4 Db Fm
  T: "[gb2,gb4,bb4,db5]@2 [bb2,bb4,db5,f5]@2 [ab4,c5,eb5]@2 ~ eb4, ~ ab2, ~@3 c5", // Gb Bbm Ab
  U: "ab4@2 ab4@2 ab4@2 ab4 ~ [f4,a4,c5]@4 [c4,f4,a4]@4, db2 f2, [f4,db5]!2 ~@2", V: "bb2!2, [f4,bb4,db5]",
  W: "[bb3,eb4,ab4]!2 [bb3,eb4,g4]!2", X: "[eb4,ab4,db5] [eb4,ab4,c5] [eb4,ab4,bb4]@2, ab2@11 ~@5",
  Y: "~@6 f4@2 [db4,gb4]@2 f4@2 ~@2 eb4 ~, db3@7 ~, ~ ab3@7, ~ db4 ~ [db4,gb4]", // Gb5
  Z: "[~@2 ab3@2 [f4,ab4]@2 [db4,f4]@2 [ab3,db4]@8 [c4,eb4]@2 ab3@2 bb3@2 c4@2 ~@4 c4@2 eb4 ~, db3 ab2@2 a2, ~@6 [c4,f4] ~, ~@26 a3@5 ~]/2", // Fm Db Db5 Cm F5
  AA: "c4@4 ~@2 c4 ~ db4@3 ~ db4@2 eb4@2, bb2@7 ~ [bb2,bb3]@7 ~, eb4@3 ~ eb4@4 ~@8", // Bb
  AB: "~@2 ab3@2 [ab3,ab4]@4 [eb4,eb5]@4 ~@2 f4 ~, c3!2, [c4,eb4] ~@2 [ab3,ab4]", // Ab Eb Cm Ab
  AC: "[~@4 db4@2 [gb4,eb5]@2 [ab3,db4,f4]@3 ~ ab3@2 ~@4 f3 ~@3 f3@2 ~@2 f3@2 [a3,c4,eb4]@2 eb3 ~, db3@7 ~ [db3,db5]@7 ~ f2@8 ~@8, [db4,gb4,eb5]@4 ~@8 [db4,f4]@7 ~ c4@4 a4@5 ~@3, ~@2 ab3@5 ~@7 ab3@5 ~@3 f4@5 ~@5]/2", // Ebm Db Adim Db Ebm7 Db
  AD: "[[bb3,c5,eb5]@4 ~@4 [db4,bb4,db5]@3 ~ bb4@2 ~@2 ab4 ~@5 bb4@2 g4@2 ~@4 bb4@2, [bb2,db4] bb2 eb2@2, ~@4 [eb4,c5,eb5]@4 ~@4 [db4,f4]@8 bb3@7 ~ [bb3,g4]@4, ~@6 bb3@5 ~ bb3 ~ bb3@4 eb4@5 ~@3 eb4@6, ~@4 eb5 ab4 ~@2]/2", // Cm7 Gb Bbm Cm Db Eb
  AE: "db5@5 ~ db5@2 ~@2 ab3@2 bb3@2 c4@2, ab3@5 ~@3, ~@8 c5@7 ~",
  AF: "[c4,eb4] ab3 c4 ~ f4 ~ c4 f5, ab2 a2, ~@6 [ab3,eb4]@4 a3@4 eb4 ~", // Cm Ab5
  AG: "eb4@2 ~@4 [c4,f5] ~ db4@3 ~ [db4,f4]@3 ab4, [bb2,eb5]@7 ~ [bb2,bb3,db5]@7 ~, c4 eb4 ~@2, ~ f4@2 ~@5", // F5 Db Eb5 Bbm
  AH: "[~@2 ab3@2 c4@2 [ab3,eb4]@2 c4@2 ~@10 db4@2 gb4 ~ [ab3,db4,f4]@3 ~ ab3@2 ab3@2, c3@8 c3@8 db3@7 ~ db3@7 ~, [c4,eb4,ab4]@2 ~ eb5@2 ab3@2 f4 [db4,gb4]@2 ~@4 [db4,f4]@2, ~@12 [eb4,c5]@3 eb4@3 ab3@5 ~@9, ~@13 ab4@2 ~@17]/2", // Ab5 Db Ab Gb5 Db Cm
  AI: "[ab3,f4]@2 f3 ~@3 f3@2 ~@2 f3@2 [a3,c4,eb4]@2 eb3 ~, f2 a2, ~@4 [a3,c4,f4]@5 ~@7", // Db Adim F
  AJ: "[bb3,eb4]@4 ~@4 [db4,f4]@3 ~ bb3 ~ bb3@2, [bb2,db4] bb2, ~ [eb4,f4] ~ [db4,f4], ~@6 bb3@5 ~@5", // Eb5 Db Bbm Ebsus2 Db
  AK: "[bb3,f4] ab4 ~ [bb3,eb4], eb2@8 [g2,g4]@7 ~, ab4 ~@3 [bb3,eb4]@7 ~@5", // Bb5 Eb5 G Eb5
  AL: "[f2,c4,c5]@8 [eb4,gb4,bb4]@2 ab4@3 ~@3, f4 ~@7 ab2@4 ~@4", AM: "[ab4,c5]@2 [g4,bb4] ~@3 [g4,bb4] [c4,eb4]",
  AN: "~ f4 ~@6", AO: "eb4@2 f4@3 g4@3 ~@8",
})).s("gm_epiano1").gain(0.48)

// chords · epiano1 · "E.PIANO 1" · soft notes
const epiano1_soft = note("<A ~@2 B ~@11 C ~@2 D ~@14 E ~@10 F ~@28 G H I J K@2>".pickRestart({
  A: "~@3 ab4@2 db5@2 ~@9", B: "c5@5 ~@11", C: "~@6 f3@3 ~@7", D: "~@7 eb4 ~@8", E: "~ a2",
  F: "~@12 eb4 ~ ab4@2, ~@3 [c3,c4,eb5]", G: "~@3 [ab4,c5] [c5,eb5] [f4,ab4] ~@2", H: "[f4,ab4]@2 [g3,bb3] [f4,ab4]",
  I: "bb4 ~ bb4 c5 a4 c4 f4 c5", J: "bb4@11 ~@5", K: "[~@7 bb4@3 eb5@4 f5@3 g5@4 ~ bb5@9 ~]/2",
})).s("gm_epiano1").gain(0.24)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C ~@8 D E F@3 E G@2 H I J K L M N O@3 D E F@3 E P Q D R S T U V W X Y Z@2 AA@3 AB AC AD AE@2 AF AG AH@2 AI@2 AJ
  AK@2 AL AM@2 AN@3 AO AP ~@6
>`.pickRestart({
  A: "~@2 gb5 f5", B: "db5@3 ab4 bb4@4", C: "db5@7 ~", D: "[ab4,eb5] [a4,f5], c5", E: "eb5 db5, [f4,bb4]",
  F: "[eb5@2 f5 gb5 gb5@2 ~@2 [a4,c5]@4, ab4@2 ~, c5 db5 ~, ~ f5]/3", // Am
  G: "[ab4@2 ~ eb4 [f4,f5]@2 [ab4,bb5] [c5,ab5], bb4@3 ~, eb5 ~, ~ g4 ~@2]/2", H: "gb5 f5 db5 ab4, ab4@3 ~, db5 ~",
  I: "[db5,gb5,bb5]@4 [eb5,ab5]@2 db5 eb5, ~@8 ab4@7 ~", J: "[db5,gb5] db6 f6 eb6, ~ f5@3, ~ ab5",
  K: "[gb5,bb5,db6] [ab5,c6,eb6]", L: "gb6 ~@2 eb5, [db4,ab4,db5,gb5] [f3,a4,c5], ~ f6@2 ~",
  M: "~ bb2, [bb3,f4,bb4,db5]", N: "f5 ~@2 db5, [eb4,bb4], [ab3,ab4] [g3,g4], ~ eb5@2 ~",
  O: "[db5@4 c5@4 bb4@6 ~@2 [db3,ab3,db4]@31 ~, ab2 ~@2, ab4@13 ~ ab4@34]/3", P: "ab4@2 ~ eb4, [bb4,eb5], ~ g4",
  Q: "db5@8 c5@7 ~, [ab4,eb5]@15 ~", R: "[a4,c5,f5] ~@7 db5@8, [f4,bb4], eb5 ~",
  S: "[f4,bb4,db5] ~@7 f5@4 gb5@4, [ab4,c5], eb5 ~", T: "gb5 f5, [ab4,db5]", U: "[a4,c5,f5], ab4 ~@15",
  V: "eb5 db5, [f4,bb4]@15 ~", W: "~@2 eb5 f5 g5@2 bb5@2, [eb4,g4,bb4]",
  X: "[f4,a4,c6]@4 [gb4,bb4,db5]@2 [ab4,eb5] ab4, eb5 ~@11 c5@4", Y: "[db3,f4,ab4,db5]",
  Z: "[[gb3,db4,gb4,bb4]@2 db5 eb5 [db3,f4,f5]@4, ~ ab4@3, ~ [ab3,eb4] ~@2]/2", // Gb Db Ab5
  AA: "[db5 f5 [ab3,eb4,c5,eb5]@2 gb5 f5!2 eb5 [bb4,db5]@4, [gb3,db4,gb4,bb4]@4 ab4@8 f4@9 ~@3, ~@4 [db3,f4,db5]@2 [f3,a4,c5]@2 bb2@3 ~, ~@32 db4@9 ~@7]/3", // Ab Bbm Gb Db F
  AB: "f5 eb5@3", AC: "db5 c5 bb4 ab4", AD: "db5@3 f5 [eb4,ab4,eb5]@4, [gb4,bb4] ~",
  AE: "[~@2 gb5@2 gb5 f5 eb5 db5 bb3@4 [c4,eb4]@4, [bb4,db5] bb4@2 ~]/2", // Cm Bbm
  AF: "[bb3,eb4,eb5]@8 ~ bb3 c4 d4 eb4 ~ g4 ab4, f4@7 ~, ~ d5", AG: "[g4,bb4,eb5]",
  AH: "[[eb4,ab4,c5] [f4,d5] [eb3,g4,eb5]@2, ~ bb4@3]/2", // Ab Dm Eb
  AI: "[[ab3,eb4,ab4,c5] [bb3,f4,d5] [eb3,g4,eb5] [g3,b4,d5], ~ bb4@2 ~]/2", AJ: "eb5 c5",
  AK: "[g5@4 c5@4 a4@4 f4@8 eb5@4 ~ bb4 c5 d5 eb5 f5 g5 ab5, ~@2 f5@4 ~@6 d5 ~ f3@2]/2", AL: "[eb3,g4,bb4,eb5]",
  AM: "[[ab3,eb4,ab4,c5] [bb3,f4,d5] [eb3,g4,eb5]@2, ~ bb4@3]/2", // Ab Bb Eb
  AN: "[[ab3,eb4,ab4,c5]@2 [bb3,f4,d5]@2 [eb3,g4,eb5]@2 [g3,b4,d5]@2 [c5,eb5]@3 c5, ~ bb4@2 g4@3]/3", AO: "f4@2 c4 a3",
  AP: "bb3@15 ~",
})).s("gm_string_ensemble_1").gain(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~@37 A B C D E F G H ~@34>".pickRestart({
  A: "[ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [a4,c5,eb5] ~@3 [a4,c5,eb5] ~@3", // Ab Adim
  B: "[bb4,c5,eb5] ~@3 [bb4,c5,eb5] ~@3 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@3", // Cm7 Bbm
  C: "[ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3", // Ab
  D: "[f4,ab4,db5] ~@3 [f4,ab4,db5] ~@3 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3", // Db
  E: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~@3", // F
  F: "[bb4,db5,f5] ~@3 [bb4,db5,f5] ~@3 [bb4,db5,f5] ~@3 [bb4,db5,f5] ~@3", // Bbm
  G: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3", H: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@11",
})).s("gm_string_ensemble_1").gain(0.24)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note("<~@44 A B C B C D E F G H I J K L M L M N O P Q L M L M N R ~@8>".pickRestart({
  A: "~@2 [db5,gb5] [c5,eb5,ab5]", B: "[db4,f5,ab5,db6]", C: "[gb4,db5,gb5,bb5] [ab4,eb5,ab5,c6]",
  D: "[db4,f5,ab5,db6] [f4,f5,a5,c6]", E: "[f5,bb5]@11 ~@5, db5@9 ~@7, bb3@7 ~@9", F: "f6 eb6@3",
  G: "db6@4 c6@4 bb5@4 c6 ~@2 eb5, ~@13 c6@3, ~@7 f5", H: "[db4,gb4,bb4] [eb4,ab4,c5]",
  I: "[bb4,db5,gb5] [gb4,bb4,db5]", J: "[f4,bb4,db5,f5] [ab4,c5,eb5]",
  K: "[f4,bb4,eb5]@8 ~ bb4 c5 d5 eb5 f5 g5 ab5, f5@3 ~, ~@4 d5 ~@3", L: "[eb4,g5,bb5,eb6]",
  M: "[ab4,eb5,ab5,c6] [bb4,f5,bb5,d6]", N: "[eb4,g5,bb5,eb6] [g4,g5,b5,d6]", O: "eb6 c6, c5", P: "[c5,f5,a5]",
  Q: "d5@9 ~@2 d5 ~ f5 g5 ab5, bb5, f5@6 eb5 ~, ~@9 bb4@2 ~@5, ~@5 c5 ~@2", R: "[c4,eb5,g5,c6]",
})).s("gm_string_ensemble_2").gain(0.28)

// drums · kick
const kick = s("bd").struct(`<
  ~@29 A@2 B A@3 C D A@2 B A@3 C D B E B@2 A@3 F A G H I B E B@2 A J B F B E B@2 A@3 K ~@6
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x ~@3 x ~@2 x", D: "x ~@2 x!2 ~ x ~", E: "x ~@3 x!2 ~@2", F: "x ~@2 x",
  G: "x ~@7 x ~@2 x ~@4", H: "x ~@2 x!2 ~@2 x", I: "x ~@7 x ~@2 x ~@3 x", J: "x ~@6 x!2 ~ x ~@5", K: "x",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<~@29 [~@3 x]!7 ~ [~@3 x]!7 ~@18 [~ x ~ x] ~@16>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@44 A B@5 C ~ D B@3 E B@5 ~ B@6 ~@10>".pickRestart({
  A: "~@4 x ~@4 x ~@2 x ~@3", B: "~ x ~ x", C: "~ x ~@2", D: "~@3 x", E: "~@2 x ~ x ~@4 x ~@2 x!2 ~@2",
})).gain(0.35)

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

// drums · low tom
const low_tom = s("lt").struct("<~@44 A ~@7 B ~ A ~ C ~@7 B ~@14>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@2 x ~@10 x ~@2",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 A ~@7 B ~ C ~ D ~@7 B ~@14>".pickRestart({
  A: "~ x ~ x ~@3 x", B: "~@13 x ~@2", C: "~@5 x!3", D: "~@5 x ~@3 x ~@2 x ~@3",
})).gain(0.4)

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

// drums · high tom
const high_tom = s("ht").struct("<~@52 [~@3 x] ~@3 [~ x ~@2] ~@7 [~@3 x] ~@14>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@45 A ~@7 A ~ A ~ A ~@7 A ~@13>".pickRestart({
  A: "x",
})).gain(0.35)

stack(
  bass, bass_soft, epiano1, epiano1_soft, string_ensemble_1, string_ensemble_1_2, string_ensemble_2, kick, rim, snare,
  hihat, low_tom, mid_tom, open_hat, high_tom, crash
)

More by Gordon