Strudelify

Chi sei

Zero

KeyF majorTempo133 bpm
0:00/0:00
// Chi sei — Zero
// 133 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 140 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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 · fretless bass
const bass = note(`<
  ~@4 A B C D E F G H I F G J I F G K L B G M E F G H I F G J I F N O P Q R S T U V W X Y Z AA AB AC AD AE P Q R AF T U
  V W X Y AG AH AI AJ AK AL L B AM M E F G H I F G J I F N O P Q R S T U V W X Y Z AA AB AC AD AE P Q R AF T U V W X Y
  AG AH AI AJ AI AJ AI AN AO@2 A B C D E F AM H I F G J I F AP@6
>`.pickRestart({
  A: "f1", B: "d2@23 ~", C: "b1", D: "c2@11 ~", E: "f1@17 ~ e2@5 ~", F: "d2", G: "bb1", H: "c2@23 ~", I: "db2",
  J: "c2@7 ~", K: "c2@12 c3@6 c2@5 ~", L: "f2@3 e2", M: "c2@20 ~@2 c2 ~", N: "bb1@23 ~",
  O: "c2@12 ~@4 c2@7 ~, ~@6 c1@5 ~", P: "f1@20 ~@2 f1 ~", Q: "~ d1, d2", R: "g1@20 g2@2 g1 ~", S: "g1@18 ~@2 g1 ~ c1 ~",
  T: "c2@21 ~ g1 ~", U: "c1@12 c2@8 c1 ~ g1@2", V: "~ f2, f1@11 ~", W: "f1@11 ~ e2@9 ~@3", X: "d2@19 ~ d1 ~ d2@2",
  Y: "d1@12 d2@8 d1 ~ d2@2", Z: "bb1@19 ~@3 bb1 ~", AA: "bb1@12 gb1@11 ~", AB: "g1@3 f1", AC: "e1@12 e2@9 ~ e1 ~",
  AD: "d2@12 d1@7 ~ d2@2 d1 ~", AE: "c2@12 c1@4 g1@3 ~ c2@2 ~@2", AF: "g1@3 ~@2 g1@3 ~ g1@2 ~", AG: "g1@19 ~@3 g1 ~",
  AH: "g1@16 g2@2 d2@3 ~ g1 ~", AI: "c2", AJ: "c3@11 ~", AK: "c2@8 f1@13 ~@3", AL: "f1@11 ~ c2@6 ~@6",
  AM: "bb1@11 ~ b1@11 ~", AN: "c3@6 c2@5 ~", AO: "[~@14 f1 ~, f1@41 ~@7, ~@6 f2@5 ~]/2",
  AP: "[bb1@29 c2@30 ~@2 f1@64 ~@19]/6",
})).s("gm_fretless_bass").gain(0.49)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@4 B@3 C D E F@2 G H I@2 G H J@2 K@3 L M@2 N O P H I@2 P Q R@2 S@2 ~@2 T U V ~ W@2 X@2 Y Z ~ AA S@2 ~@2 T U V ~ W@2
  AB@2 ~@4 K@3 L M@2 N AC P H I@2 P Q R@2 S@2 ~@2 T U V ~ W@2 X@2 Y Z ~ AA S@2 ~@2 T U V ~ W@2 AB@2 ~@8 B@3 C D E AD AE
  G H I@2 G H AF@6
>`.pickRestart({
  A: "[[f2,f3]@83 ~@13]/4", B: "[[c5,g5]@2 d5, f5]/3", C: "[e5,g5]", D: "[c5,f5,a5]@3 [e5,g5]", E: "[f5,a5,c6]",
  F: "[[d5,bb5] [e5,c6], g5]/2", G: "[e5,g5,bb5]", H: "[f5,a5]", I: "[[d5,bb5] [c5,e5], g5]/2",
  J: "[[d5,bb5]@24 [c5,f5]@17 ~ [g4,c5]@4 ~@2, g5]/2", K: "[c5@2 d5, f5]/3", L: "e5", M: "[c5,f5]/2", N: "[bb3,g4]",
  O: "g4, e4@11 ~@13", P: "[g3,bb3,db4]", Q: "[a3,d4]", R: "[[bb3,d4]@5 ~ [f3,bb3,d4]@17 ~]/2", S: "[[a3,f4]@47 ~]/2",
  T: "[f3,bb3,d4]", U: "[e3,c4]", V: "[bb3,db4]", W: "[a4,f5]/2", X: "[d4@35 ~ [gb4,a4]@11 ~]/2", Y: "[bb4,d5]",
  Z: "[c5,e5]", AA: "[bb3,d4]@12 [c4,e4]@11 ~", AB: "[gb4@12 [g4,bb4]@35 ~, a4 ~@47]/2", AC: "[e4,g4]",
  AD: "bb5 b5, [g5,d6]", AE: "[e5,c6]", AF: "[[d4,g4]@29 [c4,e4]@32 [a3,c4,f4]@64 ~@19]/6",
})).s("gm_string_ensemble_2").gain(0.26)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note(`<
  ~@4 A@2 B C ~@5 C ~@3 C ~@5 C ~@5 C ~@41 C ~@5 C ~@42 A@2 B C ~@5 C ~@3 C ~@2 D@4
>`.pickRestart({
  A: "c6/2", B: "a5", C: "c5", D: "[~@13 f3@64 ~@19]/4",
})).s("gm_string_ensemble_2").gain(0.05)

// chords · piano
const piano = note(`<
  A@2 B C D E F G H I J K L M J K L M J N O E P Q H I J K R M J K L M S T U V W ~ X Y Z AA AB AC AD AE AF AG AH AI U V W
  AJ X Y Z AA AB AC AK@2 AL AM AN AO O E AP Q H I J K L M J K L M S T U V W ~ X Y Z AA AB AC AD AE AQ AR AH AI U V W AJ
  X Y Z AA AB AC AS@2 AL AM AL AM AL AM AT@2 O E F G H I AU K L M J K L M AV@6
>`.pickRestart({
  A: "[f3@4 ~@38 f3@5 ~, f2@47 ~, [a3,c4]@11 ~ [a3,c4]@11 ~ [a3,c4]@11 ~ [a3,c4]@11 ~, ~@3 f3@5 ~ f3@5 ~ f3@4 ~@5]/2", // Am
  B: "~ f3 ~ f3, f2, [a3,c4]@11 ~ [a3,c4]@10 ~@2", // Am
  C: "f3@2 ~@4 f3@5 ~ [f3,a3,c4]@5 ~ [c2,c4]@6, f2@17 ~@7, [a3,c4]@11 ~@7 [e3,g3]@4 ~@2", // F C Am Em
  D: "[f3,a3]@12 [f3,a3,c4]@11 ~, f2, c4 ~@3", E: "[f3,a3,c4]@11 ~@7 d2@6, d2@2 ~, ~@6 [f3,a3,c4]@5 ~",
  F: "[g3,b3,d4]@12 [g3,b3,d4]@11 ~, b2", G: "[e3,g3,c4]@9 ~@3 [e3,g3,c4]@3 ~ [e3,g3,bb3,c4]@7 ~, c2@7 ~@3 c2@13 ~",
  H: "[f3,a3,c4]@6 [f3,a3,c4]@2 ~ [e2,e3,g3,c4]@3, f2@3 ~", I: "[f3,a3]@5 ~ [f3,a3,d4]@5 ~, d2@7 ~, d3 ~@2",
  J: "[g3,bb3,d4]@11 ~ [g3,bb3,d4]@10 ~@2, bb2@23 ~", K: "[c3,g3,c4,e4]@8 ~@2 [g3,e4]@2 [f3,d4]@3 ~ [e3,c4]@6 ~@2",
  L: "[db4,e4,g4]@11 ~ [db4,e4,g4]@6 a4@4 ~@2, db2@23 ~, bb4@3 ~", // Dbdim
  M: "g4@5 ~@13 d4@4 ~@2, d2@23 ~, [a3,d4]@12 a3@11 ~, ~@3 f4@8 ~", // D5
  N: "[f4,g4]@10 ~@2 [f4,a4]@5 ~ [e3,g3,bb3,d4]@6, c2@3 ~, c4@8 ~@2 c4@7 ~@7", O: "[f3,a3,c4]@12 [f3,a3,c4]@11 ~, f2",
  P: "[g3,bb3,d4]@11 ~ [g3,bb3,d4]@10 ~@2, bb2", Q: "[c3,g3,e4]@7 ~@3 [g3,e4]@2 [f3,d4]@3 ~ [e3,c4]@7 ~, c4@5 ~@19",
  R: "[db4,g4]@11 ~ [db4,e4,g4]@6 a4@4 ~@2, db2@23 ~, bb4@3 ~, e4 ~@11", // Dbdim
  S: "[g3,bb3,d4]@11 ~@7 bb2@4 c3 ~, bb2@2 ~, ~ [g3,bb3,d4]", // Gm
  T: "~@3 [g3,bb3,d4]@3 ~@2 [c4,d4,f4,bb4]@3 ~, c2@11 ~, ~@6 f3 ~@5 c3@10 ~@2", // Gm Bb
  U: "[a3,c4,f4]@11 ~@7 f2@5 ~, f2@2 ~, ~@12 [a3,c4,f4]@11 ~", V: "[a3,c4,f4]@5 ~ [a3,c4,f4]@3 d2@3, d2 ~",
  W: "[bb3,gb4]@11 ~ [bb3,g4]@11 ~, [g2,d4]@23 ~", X: "[g3,bb3,d4,f4]@11 ~@7 c3@5 ~, c2@23 ~, ~@12 [g3,bb3,d4,f4]@11 ~",
  Y: "[g3,bb3,c4,e4]@11 ~@7 c2@6, c2@7 ~@5, ~@6 [g3,bb3,c4,e4]@5 ~", // C7
  Z: "[g3,bb3,db4]@11 ~@7 f2@5 ~, f2@2 ~, ~@12 [g3,bb3,db4]@11 ~", AA: "[f2,a3,c4,f4]@12 [e2,g3,c4,e4]@11 ~",
  AB: "[a3,f4]@11 ~ [a3,d4,f4]@10 d3@2, d2@7 ~", AC: "[a3,f4]@12 [d3,a3]@11 ~, d2@23 ~, ~@4 f4@3 ~",
  AD: "[a3,d4,f4]@12 ~@6 d4@5 ~, bb2@11 ~, ~@12 [a3,f4]@11 ~", AE: "[bb2,f4]@11 ~ [gb2,d4,a4]@10 ~@2, [a3,d4]@3 ~@5",
  AF: "g2@18 f2@5 ~, [g3,bb3,d4]", AG: "[g3,c4,e4]@11 ~@7 e2@3 ~@3, e2@17 ~@7, ~@4 [g3,c4,e4]@3 ~",
  AH: "[d2,d3,e4,f4]@11 ~ [d2,d4,f4]@10 ~@2, ~@3 d3@2 ~", AI: "[g3,bb3,d4,f4]@11 ~ [c3,g3,bb3,c4,e4]@10 ~@2, c2@11 ~",
  AJ: "[gb3,d4]@4 ~ [g3,bb3]@4 g2@2 ~, g2@2 ~", // D Gm
  AK: "[[a3,gb4]@11 ~@13 g2@10 g3 ~@5 g2@7 ~, g2@7 ~@9, ~@4 [bb3,d4]@7 ~@5, ~@6 g3@8 ~@4 [g3,bb3,d4]@5 ~]/2", // D Bb Gm
  AL: "[c4,d4,f4,bb4]@5 ~ [c4,d4,f4,bb4]@5 ~ [c4,d4,f4,bb4]@5 ~ [c4,d4,f4,bb4]@4 ~@2, c2", // Bb
  AM: "[c4,g4,a4]@4 ~@2 [c4,g4,a4]@4 ~@2 [c4,f4,a4]@5 ~ [c4,f4,a4]@3 ~@3, f2@7 ~", // Am7 F
  AN: "[bb3,d4,g4]@5 ~ [bb3,d4,g4]@5 ~ [bb3,f4,g4]@5 ~ [bb3,d4,g4]@4 ~@2, c2@23 ~, ~@12 d4 ~@11", // Gm Gm7 Gm
  AO: "[a3,c4,f4]@5 ~ [a3,c4,f4]@4 ~@2 [f3,bb3,c4]@5 ~ [f3,bb3,c4]@3 ~@3, f2@4 c2@3 ~", // F Fsus4
  AP: "[bb2,bb3,d4]@12 [b2,b3,d4]@11 ~, g3@23 ~", AQ: "g2@17 ~ f2@6, [g3,bb3,d4]",
  AR: "[c4,e4]@11 ~@7 e2@3 ~@3, e2@17 ~@7, g3 ~@11 [g3,c4,e4]@9 ~@3", // C
  AS: "[[g2,a3,gb4]@10 ~@2 g2@13 ~@15 g2@7 ~, ~@12 g4@21 ~@3 [d4,g4]@10 ~@2, ~@12 bb3@19 ~@3 bb3@12 ~@2, ~@7 g2@2 ~@3]/2", // D G5
  AT: "[[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~, f2@23 ~]/2", // F
  AU: "[bb2,bb3,d4]@12 [b2,g3,b3,d4]@11 ~, g3@5 ~@7", // Bb G
  AV: "[[g3,d4]@29 [c4,e4,g4]@15 ~ [c3,c4,e4]@14 ~@2 [f2,a3,c4,f4]@64 ~@19, [bb2,bb3]@25 ~@4 c2@30 ~@85]/6", // G5 C F Bb
})).s("gm_piano").gain(0.4).pan(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B C D E ~@14 F G@2 H@2 I J K L M N O P Q R S@2 T@2 U V W X Y Z AA AB AC@2 AD AE AF AG AH AI AJ AK AL AM Y AN AO AP
  AQ@2 AR AS AT AU G@2 AV AW I J K L M N O P Q R S@2 T@2 U V W X Y Z AA AB AC@2 AD AE AF AG AH AI AJ AK AL AM Y AN AO AP
  AQ@2 AR AX AY AZ AR BA BB BC E ~@8 BD BE BF ~@2 BG@6
>`.pickRestart({
  A: "f3 g3 a3 c4 f4 g4", B: "a4 c5 f5 [c5,g5] [f5,a5] [g5,c6]", C: "[f5,a5] [c5,g5] [a4,f5] [g4,c5] [f4,a4] [c4,g4]",
  D: "[c4,f4]@4 a3@4 g3@3 ~ [f3,a3]@3 ~@3 [e3,g3]@3 ~@3", E: "[f3,a3]@5 ~@19", F: "[c4,f4,g4]@18 [e3,g3,bb3,d4]@5 ~",
  G: "[c4,f4]/2", H: "[[d4,g4]@33 ~ [g3,e4]@2 [f3,d4]@3 ~ [e3,c4]@6 ~@2]/2", I: "f4@9 c5 ~@2", J: "~@2 c4@21 ~, a4",
  K: "g4 d5", L: "[g4,c5]@11 ~ [g4,d5]@3 ~ [g4,e5]@2 ~@6", M: "db4@17 ~ e4@6", N: "a4", O: "[g4,d5]",
  P: "[g4,c5,e5]@3 [f4,d5,f5] [e4,g5]@2, ~@4 e5 ~", Q: "[bb4,db5]@17 ~ e5@2 ~@4", R: "a5@18 d5@5 ~",
  S: "[[g4,d5]@30 [g4,c5]@5 ~ [g4,c5,d5]@3 ~ [g4,c5,d5,f5]@4 ~@4]/2", // G5 C5 Gsus4
  T: "[f3@7 ~@17 [f4,a4]@24, c5@16 ~@2 g4@2 c5@27 ~, a4@7 ~ f4@4 ~@12, f4 c4 ~@2, ~@5 f3@7 ~@12]/2", // F
  U: "gb4 g4, [bb3,d4]", V: "[bb3,gb4,a4] [bb3,g4,bb4], d4", W: "g4@8 bb4 g4 bb4 f5, d4@19 ~@5, bb4@7 ~@5",
  X: "~@6 g4@5 ~, e5", Y: "[db4,g4,bb4,db5]", Z: "[c5,f5,a5]@11 ~ [e4,e5,g5,c6]@12",
  AA: "[d5,f5]@12 a4@2 d5 ~ e5@2 d5@2 e5@2 a5@2, a4@5 ~@7", AB: "[a4,f5]@12 [f4,d5]@11 ~",
  AC: "[d5@12 [d5,a5]@12 [d5,g5]@11 ~ [gb4,d5,a5]@10 ~@2, a4@3 ~]/2", AD: "[d5,bb5]@3 [g4,bb4,d5]", AE: "[c5,e5]@7 ~",
  AF: "e4 d4, [d5,f5,a5]", AG: "f4 e4, c5, g4@7 ~@5", AH: "[c5,f5]@6 f4 g4 a4 c5 f5 a5, f4@11 ~@13", AI: "[c5,f5]",
  AJ: "[g3,a4,gb5]@11 ~ [g3,bb4,g5]@12, d5", AK: "[a4,d5,gb5,a5]@3 [bb4,d5,g5,bb5]@3 [a4,d5]@2",
  AL: "[c4,f4,g4]@11 ~ c4@2 f4@2 a4@2 c5@2 f5@2 a5@2", AM: "[c4,e5,g5] [c4,g4,c5]",
  AN: "[c5,f5,a5]@11 ~ [e4,g5,c6]@12, ~@6 e5@5 ~", AO: "[a4,f5]@10 ~@2 d5 ~ f5 ~ a5@2 f5@2 a5@2 e6@2, a5 ~",
  AP: "[f5,a5,d6]", AQ: "[[a3,gb5,a5,c6]@4 [g5,bb5]@6 [bb4,d5]@5 ~, ~ [bb3,d6]@2 ~, ~@5 [g5,bb5] ~@2]/2",
  AR: "[d4,f4,bb4]@2 ~@4 [d4,f4,bb4]@3 ~@3 [d4,f4,bb4]@3 ~@3 [d4,f4,bb4]@3 ~@3", // Bb
  AS: "[c4,g4,a4]@2 ~@4 [c4,g4,a4]@3 ~@3 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@2 ~@4", // Am7 F
  AT: "[bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2", // Gm
  AU: "[a3,c4,f4]@2 ~@4 [c4,f4] ~@5 [f3,g3,c4]@2 ~@4 [f3,g3,bb3,c4]@2 ~@4, ~@6 a3@2 ~@4 bb3 ~@11", // F F5 Fsus2 Fsus4
  AV: "[bb3,g4] [b3,g4]", AW: "~@10 [g3,e4]@2 [f3,d4]@3 ~ [e3,c4]@6 ~@2",
  AX: "[c4,g4,a4]@3 ~@3 [c4,g4,a4]@3 ~@3 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@2 ~@4", // Am7 F
  AY: "[d4,f4]@2 ~@4 [d4,bb4] ~@5 [d4,f4,d5]@2 ~@4 [d4,f4,d5]@2 ~@4, bb4 ~@5 f4@2 ~@16", // Dm Gm Dm
  AZ: "[f4,a4,c5] ~@5 [f4,a4,c5]@2 ~@4 [a4,f5]@2 ~@4 [f4,a4,c5]@2 ~@4, ~@12 c5 ~@11", // F Dm F
  BA: "[c4,f4,a4] ~@5 [c4,a4]@2 ~@4 [c4,d4,g4] ~@5 [c4,d4,g4]@2 ~@4, ~@6 f4 ~@17", // F Csus2
  BB: "[a3,c4,f4] ~@5 [a3,c4,f4]@2 ~@4 [a3,c4,f4]@2 ~@4 [a3,c4,f4]@2 ~@4", // F
  BC: "[a3,c4,f4]@2 ~@4 [a3,c4,f4]@2 ~@4 [a3,c4,f4]@2 ~@4 [a3,c4] ~@5, ~@9 f4 ~@2", BD: "[d4,g4] [d4,f4]@3",
  BE: "g4 f4, d4", BF: "[c4,e4]", BG: "[[d4,g4,bb4]@29 ~@4 [c4,e4]@28 [a3,f4]@64 ~@19, bb2@2 ~@7, ~@29 c3@32 ~@83]/6",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.6)

// other · oboe
const oboe = note(`<
  ~@21 A B@2 C D E F G H I J K L M@2 N@3 O P ~ Q R S@2 ~ T ~@2 U V N@3 O P ~ Q R S@2 ~@7 A B@2 C D E F G H I J K L M@2
  N@3 O P ~ Q R S@2 ~ T ~@2 U V N@3 O P ~ Q R S@2 ~@30
>`.pickRestart({
  A: "f4", B: "[g4@11 ~]/2", C: "f4@17 ~ c5 ~@5", D: "a4@11 ~", E: "g4 d5", F: "c5@6 d5@2 e5@3 ~", G: "db5@8 ~ e5 ~@2",
  H: "a5@11 ~", I: "d5", J: "e5@12 d5@3 ~ c5@4 ~@4", K: "db5@15 ~@3 e5@2 ~@4", L: "a5@18 d5@5 ~",
  M: "[d5@36 bb4@3 ~ d5@2 f5@3 ~ bb5@2]/2", N: "[~@2 f4@46 gb4@11 ~ g4@11 ~]/3", O: "a4@12 bb4@11 ~", P: "c5@3 ~@5",
  Q: "~@9 bb4 e5 g5", R: "a5@4 g5@3 ~", S: "[f5@36 d5@11 ~]/2", T: "~@6 d5@3 ~ d5@2 ~@6 d5@3 ~ d5@2",
  U: "~@12 bb4 ~ c5@2 d5 ~ d5@2 c5@2 d5@2", V: "c5@7 ~",
})).s("gm_oboe").gain(0.28).pan(0.3)

// other · french horn
const french_horn = note("<~@3 A ~@47 B ~@14 C D ~@31 B ~@40>".pickRestart({
  A: "~@12 [f3,a3]@3 ~@3 [e3,g3]@2 ~@4", B: "d4 ~ e4@2 f4 ~ f4@6 e4@9 ~@3", C: "d4@3 ~@3 d4@2 ~@4 f4@3 ~@3 d4@2 ~@4",
  D: "c4@3 ~@3 c4@2 ~@4 a3@2 ~@4 g3@2 ~@4",
})).s("gm_french_horn").gain(0.44).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A B A B A B A B A B A B A B@2 C B A B A B A B D B A B A B A B A E A B F B A B D B A B A@2 ~@3 A B A B A B A B A B
  A B A B E C E A B A B A B D B A B A B A B A B A B F B A B A B A B A@2 ~ A ~@4 G A B A B A B A B A B A B A B A H ~@4
>`.pickRestart({
  A: "x", B: "x ~@10 x", C: "~@6 x ~@4 x", D: "x ~@4 x ~@6", E: "x ~@4 x ~@5 x", F: "x ~@4 x ~@3 x ~@2",
  G: "~@5 x ~@5 x", H: "~@5 x ~@18",
})).gain(0.47)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@20 A B A@7 B A B A@3 ~@33 A B A@7 B A@4 ~@38 A@7 B A@6 ~@6>".pickRestart({
  A: "~ x ~@2", B: "~@3 x ~ x ~@6",
})).gain(0.12)

// drums · low tom
const low_tom = s("lt").struct("<~@35 A ~@27 B ~@3 C ~@15 A ~@7 B ~@7 D ~@7 D ~@3 B ~@28>".pickRestart({
  A: "~@3 x ~@4 x ~@3", B: "~@11 x", C: "~@10 x!2", D: "~@9 x ~ x",
})).gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 A ~@15 A ~@23 B ~@7 C ~@7 C ~@32>".pickRestart({
  A: "~@2 x", B: "~@9 x!2 ~", C: "~@4 x!2",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A ~@3 B ~@31 C ~@15 B ~@31 C ~@19 B ~@10 D ~ E F G H>".pickRestart({
  A: "~ x", B: "~@2 x", C: "~@3 x", D: "~@5 x ~@2", E: "~@5 x", F: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@3",
  G: "x ~@3 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x", H: "~ x!2 ~@9",
})).gain(0.18)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@7 A ~@7 A ~@6 B A ~@7 C ~@6 B A ~@3 A ~@3 A ~@7 A ~@5 C ~ C ~@7 A ~@7 A ~@7 A ~@3 A ~ A ~@3 B A ~@8 A ~@5 A
  ~@5
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2",
})).gain(0.29)
// … 16 more lines

More by Zero