Strudelify

Vita

Dalla

KeyE minorTempo96 bpm
0:00/0:00
// Vita — Dalla
// 96 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · synth bass 2
const bass = note(`<
  ~@5 A B A C D E A F D G D H I J K L D M D N I J K O P Q R S T U V W P Q R S T X Y Z D G D AA I AB K AC D AD D AE I J K
  AF P Q R S T AG V AH P Q R S T X Y AI A AJ AK AL AM AN AK AO AP AQ A AR AS AT A AU AS AT A AV AS AW A AV AS AW A AV AS
  AW A AV AS AX
>`.pickRestart({
  A: "e1@2 ~@4 e1 e1@2 ~@7", B: "e1@2 ~@4 e1!2 ~@2 e1@2 ~@4", C: "e1@2 ~@5 e1 ~ e1 e1@2 b1@2 d2@2",
  D: "e1@2 ~@4 e1!2 ~@8", E: "e1 ~@4 e1 ~@2", F: "e1@2 ~@5 e1 ~ e1 e1@2 ~@4", G: "e1@3 ~@4 e1 ~@2 e1@3 ~@3",
  H: "e1@2 ~@5 e1 ~@2 e1@3 ~ g1@2", I: "a1 ~@5 a1!2 ~@8", J: "a1@2 ~@5 a1 ~@2 a1@4 ~@2", K: "b1 ~@5 b1 a1 ~@8",
  L: "g1@2 ~@4 g1 f#1 ~ f#1 ~ f#1 d1@2 d#1 ~", M: "e1 ~@5 e1!2 ~ e1 e1@3 ~@3", N: "e1@2 ~@5 e1 ~ e1 e1@4 g1@2",
  O: "g1 ~@5 g1 f#1 ~@2 f#1 ~ d1@2 ~@2", P: "e1 ~@5 e1!2 ~@8", Q: "e1@2 ~@5 e1 ~@2 e1@2 g1@3 ~", R: "c2 ~@5 c2!2 ~@8",
  S: "c2 ~@6 c2 ~@2 c2@2 b1@2 ~@2", T: "a1@2 ~@4 a1!2 ~@8", U: "a1@2 ~@5 a1 ~ a1 a1@5 ~", V: "d2 ~@5 d2 c2@2 ~@7",
  W: "b1@2 ~@4 b1!2 ~ b1!2 ~ g1 ~ f#1 ~", X: "a1@2 ~@5 a1 ~@2 a1@3 ~@3", Y: "b1 ~@5 b1 a1@2 ~@7",
  Z: "g1@2 ~@5 f#1 ~@2 f#1 ~ d1 ~ d#1 ~", AA: "e1@2 ~@4 e1!2 ~ e1 e1@3 ~ g1@2", AB: "a1@2 ~@4 a1!2 ~@2 a1@4 ~@2",
  AC: "g1 ~@5 g1 f#1 ~ f#1!2 ~ d1@2 d#1 ~", AD: "e1@3 ~@4 e1 ~ e1 e1@3 ~@3", AE: "e1@2 ~@5 e1 ~ e1 e1@3 ~ g1@2",
  AF: "g1 ~@5 g1 f#1 ~@2 f#1 ~ d1@2 d#1 ~", AG: "a1@2 ~@5 a1 ~@2 a1@5 ~", AH: "b1@2 ~@5 b1 ~@2 b1 ~ g1 ~ f#1 ~",
  AI: "g1@2 ~@4 g1 f#1 ~@2 f#1 ~ d1 ~ d#1 ~", AJ: "e1@2 ~@4 e1!2 ~@2 e1 ~ d1@2 d#1 ~", AK: "e1@2 ~@4 e1 e1@2 ~@5 e1 ~",
  AL: "f#1@3 ~@4 f#1 ~ f#1 f#1@2 ~@4", AM: "g1@2 ~@4 g1 g1@2 ~@6 g1", AN: "a1@2 ~@5 b1 ~@2 b1 ~ d1 ~ d#1@2",
  AO: "f#1@2 ~@5 f#1 ~ f#1 f#1@2 ~@4", AP: "g1@2 ~@4 g1 g1@2 ~@5 g1 g#1", AQ: "a1@2 ~@5 b1 ~@2 b1 ~ g1@2 f#1 ~",
  AR: "f#1@3 ~@4 f#1 ~@2 f#1@2 ~@4", AS: "g1@2 ~@4 g1 g1@2 ~@5 a1@2", AT: "b1@2 ~@5 b1 ~@2 b1 ~ d1 ~ d#1@2",
  AU: "f#1@3 ~@3 f#1!2 ~@2 f#1@2 ~@4", AV: "f#1@2 ~@5 f#1 ~@2 f#1@2 ~@4", AW: "b1@2 ~@5 b1 ~@2 b1 ~ d1@2 d#1 ~",
  AX: "b1@2 ~@5 b1 ~@2 b1 ~ b1!2 ~@2",
})).s("gm_synth_bass_2").gain(0.48)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  A@4 ~@2 B C ~ D E F G H ~@2 I J ~@3 K L M N O P ~@2 Q@2 ~@2 R@2 ~ S F ~ T@2 ~@3 U V W ~@7 X Y Z AA ~ AB AC AD ~ AE@2
  AF@2 AG AH@2 ~@41
>`.pickRestart({
  A: "[~@15 b4@2 d5@7 ~@6 a#4 ~ d5@4 ~@7 [a#3,b3]@2 d4@6 ~@13, ~@31 b4@2 ~@31]/4", B: "~@12 [a#3,b3] d4@3",
  C: "e4@3 g4 ~@12", D: "~@14 e4 ~", E: "d4@3 b3 ~@9 b3@3", F: "e3 ~@3", G: "~@9 [b4,d5] ~ b4 a4@2 g4@2, ~@11 d5@4 ~",
  H: "e4 ~@3", I: "~@14 g3 ~", J: "a3@3 b3 ~@12", K: "e3 g3 ~@2 g3!2 ~@10", L: "e4@2 d4 g3 ~@8 [a#3,b3] d4 ~@2",
  M: "d4@3 e4 ~@12", N: "g3@3 a3 ~@12", O: "a3@3 b3 ~@12, e5@5 ~@11", P: "e5@6 d5 g4 ~@8",
  Q: "[~@4 f#5@6 d5 b4 d5 b4 g4 e4]/2", R: "[~@10 g4 f#4 d4 b3 e4@4 ~@14]/2", S: "~@5 d3 e3 g3", T: "e4@5 e4@3",
  U: "~@12 [e4,a4] [b3,e4]@3", V: "~@10 [b3,e4] ~ g4@4, ~@6 e4 ~", W: "[b3,e4]!2 ~@14", X: "~@15 b4", Y: "d5@3 e5 ~@12",
  Z: "~@12 d5@3 g4", AA: "a4 ~@3", AB: "~@2 [b2,f#3] ~@5 [b2,f#3]!2 ~@6", AC: "~@6 [b2,f#3] ~@9",
  AD: "~@4 [c#4,d4] e4@2 g4 e4@6 ~@2", AE: "[~@3 a4 f#4@8 g4@16 e4@2 f#4@2]/2", AF: "[g4 a4@13 ~ a4]/2", AG: "f#4 d4",
  AH: "[g4@9 [b4,e5]!6 [b4,e5]@5 ~@12]/2", // E5
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.4)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@6 A B C ~ A B C ~@33 A B C ~@2 D ~@28 A B E F A B E F A B C F A B C F A B C F A B C F A B C F A B G
>`.pickRestart({
  A: "d3@3 b2 ~@12", B: "~@14 g2 ~", C: "a2@3 b2 ~@12", D: "a2@3 ~@13", E: "a2@2 ~ b2 ~@12", F: "~@14 e3 ~",
  G: "a2@3 b2 ~@8 [e4,a4,d5,f#5,b5]!2 ~@2", // Bm7
})).s("gm_synth_brass_1").gain(0.45).pan(0.3)

// other · pad metallic
const pad_metallic = note("<~@53 A@2 B@2 C@2 D E ~@19 F ~@3 G@2 ~@2 H@2 ~@2 I@2 ~@2 J@2 ~@2 K@2 ~@9>".pickRestart({
  A: "[~@12 [b4,b5]@6 ~@4 [e4,e5]@7 ~@3]/2", B: "[~@14 [b4,b5]@7 ~ d5@6 ~@4]/2",
  C: "[[b4,b5]@5 ~@2 [d5,d6]@5 ~@3 [a4,a5]@5 ~@12]/2", D: "[b4,b5]@5 ~@3 [d5,d6]@6 ~@2", E: "[a4,a5]@7 ~@9",
  F: "~@6 [f#4,f#5]@9 ~", G: "[~@8 [f#4,f#5]@10 [g4,g5]@3 ~@11]/2", H: "[~@3 [f#5,f#6]@8 [g5,g6] ~@4]/2",
  I: "[~@2 [f#5,f#6]@18 [g5,g6]@3 ~@9]/2", J: "[~@2 [f#5,f#6]@20 [g5,g6]@3 ~@7]/2",
  K: "[~@2 [f#5,f#6]@24 [g5,g6]@3 ~@3]/2", // F# G
})).s("gm_pad_metallic").gain(0.31).pan(0.4)

// chords · pizzicato strings
const pizzicato_strings = note(`<
  ~@9 A B C D ~@8 E@2 F@2 G@2 H I J K@2 L K M@2 N K O K L K M@2 K E@2 F@2 G@2 H P E@2 F@2 G@2 Q P J K@2 L K M@2 R K O S
  L K M@2 K T@2 E U V W E U V W E U V X E U V Y E U V Y E U V Z E U V AA E U V AA
>`.pickRestart({
  A: "[e5,g5,b5] ~ e3 ~ [e5,g5,b5] ~ b2!2 [e3,e5,g5,b5] e3 ~@2 [e5,g5,b5] ~ e3 ~", // Em
  B: "[d5,f#5,b5] ~@2 e3 [d5,f#5,b5] ~@3 [d5,f#5,b5] e3 ~@2 [d5,f#5,b5] ~@3", // Bm
  C: "[c5,e5,b5] ~ e3 ~ [c5,e5,b5] ~ b2!2 [e3,c5,e5,b5] e3 ~@2 [c5,e5,b5] ~ e3 ~", // Cmaj7
  D: "[d5,f#5,b5] ~@3 [d5,f#5,b5] e3 ~ b2 [d5,f#5,b5] ~@3 [d5,f#5,b5] ~@3", // Bm
  E: "[e5,g5,b5] ~@3 [e5,g5,b5] ~@3 [g3,e5,g5,b5] e3 ~@2 [e5,g5,b5] ~@3", // Em
  F: "[d5,f#5,b5] ~@3 [d5,f#5,b5] ~@3 [a3,d5,f#5,b5] e3 ~@2 [d5,f#5,b5] ~@3", // Bm Bm7 Bm
  G: "[c5,e5,g5,b5] ~@3 [c5,e5,g5,b5] ~@3 [g3,c5,e5,g5,b5] e3 ~@2 [c5,e5,g5,b5] ~@3", // Cmaj7
  H: "[b4,d5,f#5] ~@3 [b4,d5,f#5] ~@3 [b3,a4,c#5,f#5] b2 ~@2 [a4,c#5,f#5] ~@3", // Bm F#m
  I: "[a4,c5,f#5] ~@3 [a4,c5,f#5] ~@3 [a4,d#5,f#5,b5] ~@3 [a4,d#5,f#5,b5] ~@3", // F#dim B7
  J: "[e5,g5,b5] ~@2 [a2,a3] ~@2 [b2,b3] ~@3 [a2,a3] ~@2 [b2,b3] ~@2", // Em A B A B
  K: "~@3 [a2,a3] ~@2 [b2,b3] ~@3 [a2,a3] ~@2 [b2,b3] ~@2", L: "~@3 [a2,a3] ~@2 [b2,b3] ~@3 [e2,e3] ~ [g2,g3] ~@3",
  M: "~@3 [a2,a3] ~@2 [b2,b3] ~@3 [d3,d4] ~@2 [c3,c4] ~@2", N: "~@2 [a2,a3] ~@3 [b2,b3] d4 ~ d3 ~@6",
  O: "~@3 [a2,a3] ~@2 [b2,b3] ~@3 [a2,a3] ~@3 [b2,b3] ~", // A B A B
  P: "[a4,c5,f#5] ~@3 [a4,c5,f#5] ~@3 [b3,a4,d#5,f#5,b5] b2 ~@2 [b2,a4,d#5,f#5,b5] ~@3", // F#dim B7
  Q: "[b4,d5,f#5] ~@3 [b4,d5,f#5] ~@3 [a3,a4,c#5,f#5] f#3 ~@2 [a4,c#5,f#5] ~@3", // Bm F#m
  R: "~@2 [a2,a3] ~@3 [b2,b3] ~@2 [d3,d4] ~@6", S: "~@3 [a2,a3] ~@2 [b2,b3] ~@3 [e2,e3] ~@2 [g2,g3] ~@2",
  T: "~@8 g3 e3 ~@6", U: "[f#5,b5] ~@3 [f#5,b5] ~@3 [a3,f#5,b5] e3 ~@2 [f#5,b5] ~@3",
  V: "[g5,b5] ~@3 [g5,b5] ~@3 [g3,g5,b5] e3 ~@2 [g5,b5] ~@3", // G
  W: "[f#5,b5] ~@3 [f#5,b5] ~@3 [b3,b4,f#5,b5] e3 ~@2 [b4,f#5,b5,f#6] ~@3", // B5
  X: "[f#5,b5] ~@3 [f#5,b5] ~@3 [b3,b4,f#5,b5] e3 ~@2 [b4,f#5,b5,d6] ~@3", // B5 Bm
  Y: "[f#5,b5] ~@3 [f#5,b5] ~@3 [b3,b4,f#5,b5] e3 ~@2 [b4,f#5,b5] ~@3", // B5
  Z: "[f#5,b5] ~@3 [f#5,b5] ~@3 [b3,f#5,b5] e3 ~@2 [b4,f#5,b5,d6,f#6] ~@3", // B5 Bm
  AA: "[f#5,b5] ~@3 [f#5,b5] ~@3 [b3,f#5,b5] e3 ~@2 [b4,f#5,b5,f#6] ~@3", // B5
})).s("gm_pizzicato_strings").gain(0.38).pan(0.4)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@5 A@3 B C D E F G@6 H@2 I@8 J@6 K@2 L@6 M@2 G@6 H@2 N@8 J@6 O@2 L@6 M@2 P@2 Q R S T Q R S T Q R S T Q R S T Q R S T
  Q R S T Q R S T Q R S U
>`.pickRestart({
  A: "[[e4,g4] [d4,f#4,a4] [c4,e4,g4], b4]/3", B: "[d4,f#4,a4]", C: "[e4,g4]", D: "[b3,f#4,a4]", E: "[c4,e4,g4]",
  F: "[b3,d4,f#4,a4]", G: "[[e4,g4] [f#4,a4] [e4,g4], b3]/6", H: "[d4 c#4 c4 b3, [f#4,a4]]/2",
  I: "[[e4,g4]@4 [d4,f#4,a4]@4 [c4,e4,g4]@4 d4 c#4 c4 ~, b4@63 ~, ~@3 f#4]/8", J: "[b4@5 c5@3 b4 c5@3, [e4,g4]]/6",
  K: "[[a4,f#5] [b4,e5] [a4,d5]@2, f#4]/2", L: "[b4@40 ~@24 b4@8 c5@18 d5@3 c5@3, [e4,g4], ~@20 c5@13 ~@15]/6",
  M: "[f#4,a4,b4]/2", N: "[[e4,g4]@4 [d4,f#4,a4]@4 [c4,e4,g4]@4 d4 c#4 c4 ~, b4@127 ~, ~@3 f#4]/8",
  O: "[[d#4,f#4,b4]@31 ~]/2", P: "[[e4,g4,b4]@31 ~]/2", Q: "[e4,g4,b4]", R: "[d4,f#4,a4,b4]", S: "[c4,e4,g4,b4]",
  T: "[b3,d4,f#4,a4,b4]", U: "[b3,d4,f#4,a4,b4]@13 ~@3",
})).s("gm_synth_strings_1").gain(0.23).pan(0.9)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@29 A@4 B C ~@2 D@8 ~@16 E@4 F G ~@2 H@4 I@4 ~@34>".pickRestart({
  A: "[~ b6@59 c7@4]/4", B: "a6@3 e6", C: "a6",
  D: "[~@24 a5@8 ~@24 a5@9 ~@15 g5@8 ~@8 [d#5,f#5,d#6,f#6,a6]@32, [e5,b6]@3 ~, ~@16 g5@16 ~@16 g5@17 ~@23 a5@40]/8", // D#dim E5
  E: "[b6@15 [c6,c7]]/4", F: "~ [a5,a6]@11 [e5,e6]@4", G: "[a5,a6]", H: "[~@3 a5, [e5,b6], ~ g5]/2",
  I: "[~@2 g5 ~ [d#5,f#5,d#6,f#6,a6]@4, [e5,b6] ~, ~@3 a5@5]/4", // D#dim E5
})).s("gm_string_ensemble_2").gain(0.4).pan(0.1)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@45 A ~ B C D E F G ~@16 H I ~@2 J ~@2 K L M ~ N ~ O P Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ ~@6
>`.pickRestart({
  A: "[e4,g4] [d4,f#4] ~ [e3,g3] ~ [e4,g4] [d4,f#4]@6 [b3,d4]@2 ~@2", // Em D Em D Bm
  B: "[d4,f#4]!2 ~ [b3,d4] ~ [e4,g4] [d4,f#4]@8 ~@2", C: "~@2 [b3,d4]!3 [c4,e4] ~ [b3,d4] ~ [a3,c4] [g3,b3]@3 ~@3",
  D: "[c4,e4] [b3,d4] ~@3 [c4,e4] [b3,d4]@6 [e3,g3]@3 ~", // C Bm C Bm Em
  E: "~@2 [e3,g3] [f#3,a3] [g3,b3] [a3,c4] ~ [b3,d4] ~ [c4,e4] [b3,d4]@4 ~@2", F: "[d4,d5]@3 ~ d5@4 [c#4,c#5]@4 c#5@4",
  G: "~@4 [c4,c5]@3 ~@3 [b3,b4] ~ [d#4,d#5] [f#4,f#5] ~@2", H: "~@4 b2 d3@3 e3 g3@3 b3 d4@3", I: "f#4@3 ~@13",
  J: "~@4 g4 f#4@2 d4 e4@5 ~@3", K: "~@10 d3 ~ e3 ~ [f3,f#3,g3] ~", L: "e3@3 g3 d3@2 ~@10", M: "~@4 [a#3,b3] d4@5 ~@6",
  N: "[b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4]@3 ~ [b3,f#4]@3 ~", O: "~@10 b3 ~ d4 ~ f#4 ~", P: "f#4 g4@4 ~@3 d4 e4@5 ~@2",
  Q: "~@12 [f4,f#4,g4] f#4 d4@2", R: "e4@4 ~@7 a#3 b3 d4@3", S: "a3@4 ~@5 e3 b2 ~ d3 ~ f#3 ~",
  T: "[~ d4@4 ~@9 [a4,d5]@5 ~@9 [g4,g#4,a4] g4@2 e4, [a3,a#3,b3] ~@15]/2", // D5
  U: "[f4,f#4] ~ e4 ~@5 [a#4,d5] [a4,d5]@2 ~ [a#4,d5] [a4,d5]@2 ~, g4 ~@7", // F#maj7 A# D5 A# D5
  V: "[a#4,d5] [a4,d5]@2 ~ [a#4,d5] [a4,d5]@3 ~ b2 d3 ~ e3 ~ [f3,f#3,g3] ~", W: "[a3,a#3,b3] d4@7 b3 e3 ~@6",
  X: "~@8 [e3,a3] ~ d3 [d3,a3] [e3,a3] ~ [d3,a3] ~, ~@9 [e3,a3]@2 ~@5", // A5 D5 A5 D5 A5
  Y: "~ e3 ~@2 [g3,g#3,a3] g3 e3 d3 e3@3 ~@5, [d3,a3] ~@7", Z: "~@14 e5 ~",
  AA: "d5@2 b4 g4 e4 ~@2 e4 d4 e4!2 [b3,d4] g3 e3 d3 b2", AB: "d3@3 b2 ~@8 [g4,g#4,a4] g4 e4 d4", AC: "e4@2 g4 ~@5",
  AD: "~@5 [f#5,b5] ~ [f#5,b5]@3 ~ [f#5,b5] ~@4", AE: "g3 e3@3 [a#3,b3] d4@3 g3 e3@2 ~@5", AF: "[f#3,a3]@3 e3 ~@12",
  AG: "~@2 [b3,f#4,b4] ~@2 [b3,f#4,b4] ~@4 [d4,f#4] ~@2 [d4,f#4] ~@2", AH: "~@15 d4", AI: "d5@7 d5 b4 g4 ~@5 g4",
  AJ: "f#4 d4 b3@2 ~@12",
})).s("gm_electric_guitar_clean").gain(0.44).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<~@3 A@25 B A@7 C A@7 C A@15 B A@7 B A@41 C>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@7 x!2 ~@2",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct(`<
  ~@8 A ~@4 B C ~@2 B@2 ~ A ~ A ~ A ~ A ~@2 B C B A C B ~ A@2 ~ A ~ A@2 ~ A ~@3 A C B C@3 B C@5 A C@2 B C@2 B@3 C B C
  B@2 C A@2 B@2 ~ B@9 C@18 ~ A ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~ x",
})).gain(0.56)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~@4 A ~@30 A ~@10 A ~@3 A ~@3 A ~@8 A ~@2 A@2 ~@2 A ~@2 A ~@8 A ~ A ~ A ~ A ~@22
>`.pickRestart({
  A: "~@3 x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@60 [~@3 x] ~@50>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 A ~@15 B ~@23 C ~@7 D ~@7 B ~@7 E ~@9 A ~@3 F ~@11 F ~@7 G>".pickRestart({
  A: "~@11 x ~@4", B: "~@11 x ~ x ~@2", C: "~@13 x ~@2", D: "~@9 x ~@3 x ~@2", E: "~@3 x", F: "~@11 x!2 ~@3",
  G: "~@5 x!3 ~ x!3 ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@28 A ~@23 B ~@7 C ~@15 A ~@13 A ~@7 D ~@3 A ~@3 E ~@3 F>".pickRestart({
  A: "~@9 x ~@6", B: "~@5 x!2 ~", C: "~@5 x ~@10", D: "~@11 x ~@4", E: "~@13 x ~@2", F: "~ x!3 ~@12",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@2 B ~@7 C ~@7 D A ~@15 A ~@2 C ~@4 A ~@6 E A ~ C ~@4 D A ~@3 A ~@2 B A ~@4 D A ~@2 B A ~@2 B A ~@2 E A
  ~@2 B A C ~@2 A C ~@2 A C ~@2
>`.pickRestart({
  A: "x", B: "~@13 x ~@2", C: "~@3 x", D: "~@15 x", E: "~@11 x!2 ~@2 x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@3 A@11 ~ A@13 ~ B@16 A@8 ~@3 A@5 B@16 A@6 B@27 C>".pickRestart({
  A: "~@3 x", B: "x!16", C: "x!11 ~@5",
})).gain(0.32)

// drums · cowbell
// … 15 more lines

More by Dalla