Strudelify

Silvia lo sai

Carboni

KeyE majorTempo70 bpm
0:00/0:00
// Silvia lo sai — Carboni
// 70 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 91 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.

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  A@2 B C D E F G H I J K L M L N O@2 P Q R@2 S T L M L M U V W X Y Z AA AB@2 AC@2 B C O@2 P Q R@2 S T L M L M O@2 P Q
  R@2 S T L M L M U V W X Y Z AA AD U V W X Y Z AA AD U V W X Y Z AA AD AE@2
>`.pickRestart({
  A: "[~@8 c#4@7 ~ c5@3 b4@12 ~, [d2,e4,f#4,a4]@15 ~@17, c#4@8 ~@7 b3@15 ~@2, ~@3 a2@12 ~ b2@13 ~@3, ~@6 f#3@9 ~ [d#4,f#4]@15 ~]/2", // D D#m
  B: "~@7 d6@8 ~, [e2,e3,b3,e4,f#4,g4], ~@5 f#5@10 ~, ~@6 g5@9 ~", // Em
  C: "b3@3 [b3,b4]@3 [a2,a3,b3,c#4,e4]@9 ~, a1@15 ~, [a2,a3,d4,a4]@3 ~@5", // B A D5
  D: "~@6 d3@9 ~, [d2,c#4,e4,f#4,a4]@15 ~, ~@3 a2@12 ~", E: "c5@3 ~@9 [a3,a4]@4, [b2,d#4,f#4], ~@3 b4@13",
  F: "[e2,e3,f#4,g4,b4]@15 ~", G: "[e4,g4]@3 [e4,g4,b4]@3 ~@8 b4@2, [a1,a2,a4]@3 [a1,a2,a3,b3,c#4,e4]@5, ~@3 a4",
  H: "~@6 f#3@9 ~, [d2,c#4,e4,f#4,a4,c#5]", I: "c5@3 b4@9 ~@2 f#4@2, [b2,d#4], f#4@7 ~, ~@3 b4",
  J: "[e2,e3,b3,e4,f#4,g4]@15 ~", K: "[e4,g4,a4]@3 [e4,g4,b4]@3 [a3,b3,c#4,e4]@10, [a1,a2]@6 [a1,a2] ~@9",
  L: "[f#2,f#3,a3,c#4,e4] ~ [f#2,f#3,a3,c#4,e4]@12 ~@2", M: "b4@3 c#5@3 f#4@9 ~, [b2,b3,d#4], f#4@3 ~@5",
  N: "b4@3 c#5@3 ~@6 a4@2 b4@2, [b2,b3,d#4], f#4@6 f#4@9 ~", // B
  O: "[~@6 f#3@9 ~ c5@3 b4@9 a4@2 g4@2, [d2,a3,c#4,e4,f#4]@15 ~ [b1,b2,d#4,f#4]@16, ~@3 a2@12 b3@16 ~]/2", // Dmaj7 B
  P: "~@11 d6@5, [e2,b3,e4,f#4,g4,b4], ~@9 f#5@7, ~@5 g5@3", // Em
  Q: "[b3,d4]@3 [b3,d4,b4]@3 ~@8 b4@2, [a2,a4]@3 [a2,a3,b3,c#4,e4]@5, ~@3 a4", // Bm A
  R: "[c#5@2 ~@6 f#3@6 ~@5 b4@12 ~, [d2,c#4,d4,f#4,a4]@15 ~ [b2,d#4,f#4,c5]@15 ~, ~ e5@6 ~@9, ~@3 c#5@11 ~ b3@15 ~@2]/2", // Dmaj7 B
  S: "[e2,e3,b3,e4,f#4,g4,b4]", T: "[b3,d4]@3 [b3,d4,b4]@3 [a2,a3,b3,c#4,e4]@10, [a2,a4]@3 ~@5",
  U: "~@2 b5 ~@4 [b3,c#4,e4,a4]@2 [b3,c#4,e4,a4] [b3,c#4,e4,a4]@6, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2", // A
  V: "~@2 b5 ~@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@6, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2", // B
  W: "~@2 b5 ~@4 [b3,c#4,e4]@2 [b3,c#4,e4,a4] [b3,c#4,e4,a4]@6, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2, ~@7 a4 ~@8", // C#m7 A
  X: "~@2 b5 ~@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] [d#4,f#4]@5 ~, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2", // B D#m
  Y: "~@2 b5 ~@4 [c#4,e4,a4]@2 [b3,c#4,e4,a4] [b3,c#4,e4,a4]@6, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2, ~@7 b3 ~@8", // A
  Z: "~@2 b5 ~@4 [d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@5 ~, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2, ~@7 b3 ~@8", // D#m B
  AA: "~@2 b5 ~@4 [b3,c#4,e4,a4] ~ [b3,c#4,e4,a4] [b3,c#4,e4,a4]@5 ~, d#5@2 ~ d#5@11 ~@2, ~ e5@2 ~ e5@10 ~@2, ~@5 b5@9 ~@2", // A
  AB: "[~@5 b4@18 ~@6 b4@3, d#4@2 b4@2 e4@19 ~@2 e4@2 d#4@5, ~ e4@2 d#4@20 ~ d#4@2 b4@2 e4@3 ~]/2",
  AC: "[~@8 c#4@7 ~ c5@2 ~ b4@12 ~, [d2,e4,f#4,a4]@15 ~@17, c#4@8 ~@7 b3@15 ~@2, ~@3 a2@12 ~ b2@13 ~@3, ~@6 f#3@9 ~ [d#4,f#4]@15 ~]/2", // D D#m
  AD: "~@5 b4@3 ~@2 [b3,d#4,g#4] ~ [b3,d#4,g#4] [b3,d#4,f#4]@3, d#4 b4 e4@2 ~@4, ~ e4@2 d#4@5 ~@8", // G#m B
  AE: "[~@7 [f#3,g#3,b3,e4]@13 ~@12]/2", // E
})).s("gm_epiano1").gain(0.26).pan(0.3)

// bass · electric bass finger · "BASSO"
const bass = note(`<
  ~@3 A@2 ~@7 B C D C E F G H I J K L D M N O P Q P R P Q P S@2 ~@3 T E F G H I J K L D M N C ~@8 D M N O P Q P R P Q P
  U P Q P R P Q P U P Q P R P Q P V@3
>`.pickRestart({
  A: "[~@12 f#2 ~ a2 f#2@15 ~@2]/2", B: "~@2 f#1@13 ~", C: "b1@2 ~ b1 ~@2 b1@10", D: "f#1 ~ f#1@13 ~",
  E: "d2@3 a2@3 f#3@10", F: "b1@2 ~ b1@2 b1 f#2!2 ~@8", G: "e1@2 ~ e1 ~@2 e1!2 ~@6 f#1 g1",
  H: "a1@3 a1 ~@2 a1 a1@2 ~@2 c#2 c#2@3 ~", I: "d2@3 a2@3 f#3@5 ~ f#3 e3 d3 d2", J: "b1@2 ~ b1 ~ b1!2 b1@2 ~@6 g1",
  K: "e1@3 f#1@3 g1 g1@4 ~@3 f#1 g1", L: "a1@3 a1@2 ~ a1 a1@4 ~ a1@4", M: "b1@2 ~ b1 ~@2 b1@7 f#2!2 a1",
  N: "c#2 f#2 f#1 ~ f#1@10 a1@2", O: "b1@2 ~ b1 ~@2 b1@6 d#2@4", P: "e2 e1@2 ~ e1 ~ g#1 a1@2 ~@6 b1",
  Q: "c#2 ~ d#2 ~ e2 ~ g#1 ~ b1!2 ~@4 g#2 f#2", R: "c#2 ~ d#2 ~ e2 ~ g#2 ~ b1!2 ~@2 b1@2 g#2 f#2",
  S: "[c#2@4 b1@6 a2@2 b2@17 ~@3]/2", T: "~@9 [a1,a2] [b1,b2] [d2,d3] [f#2,f#3]@3 ~",
  U: "c#2@4 b1@6 ~ b1 f#2 b1 f#2 b1", V: "[c#2@4 b1@6 ~ b1 f#2 b1 f#2 b1@3 ~ g#2 f#2 e2 c#2 e1@13 ~@12]/3",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · synth strings 1 · "SYN STRIN"
const synth_strings_1 = note(`<
  ~@4 A B C D E B C D F G F G H I J K H I L M F N F O P@6 Q@3 ~@4 H I J K H I L M F N F O H I J K H I L M F N F O P@6
  R@2 P@6 R@2 P@6 S@2 ~@2
>`.pickRestart({
  A: "[d3,d4,e4,f#4,a4,c#5]@15 ~", B: "~@2 b4 f#4, [b3,d#4], f#4@11 ~@5", C: "[e2,b3,d4,e4,g4]",
  D: "d4@3 c#4@5, [a2,a3,e4]", E: "[d2,e4,f#4,a4,c#5]", F: "[a3,c#4,e4,f#4,a5]", G: "[f#3,b3,d#4,d#6]",
  H: "[d2,d4,f#4,a4,c#5]", I: "a4@2 b4 a4, [b2,b3,d#4,f#4]", J: "[e3,b3,d4,e4,g4]", K: "d4 c#4, [a2,a3,e4]",
  L: "[b3,d4,e4,g4]@15 ~", M: "d4@3 c#4@5, [a3,e4]@15 ~", N: "[b3,d#4,f#4,a4,d#6]", O: "d#6@3 b5, [b3,d#4,f#4,a4]",
  P: "[[g#4,b4] a4 g#4 [d#4,f#4,b4], e4@3 ~, ~ c#5@2 ~]/2", // G#m B
  Q: "[[g#4,b4]@8 a4@8 g#4@4 [d#4,f#4,b4]@27 ~, e4@5 ~@7, ~@2 c#5@3 ~@7]/3", // G#m B
  R: "[[g#4,b4]@2 a4@2 g#4 [d#4,f#4,b4]@3, e4@5 ~@3, ~@2 c#5@3 ~@3]/2", // G#m B
  S: "[[g#4,b4]@8 a4@8 g#4@4 [d#4,f#4,b4]@11 ~, e4@5 ~@3, ~@2 c#5@3 ~@3]/2", // G#m B
})).s("gm_synth_strings_1").gain(0.19).pan(0.6)

// chords · distortion guitar · "DISTORTIO"
const distortion_guitar = note(`<
  ~@28 A B A B A B A C@2 ~@28 A B A B A B A B A B A B A B A B A B A B A B A B D@2
>`.pickRestart({
  A: "e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4, ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~, ~@2 b3@3 b3@3 b3@3 b3@3 b3@2",
  B: "~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 d#4, d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~@2, ~ b3@3 b3@3 b3@3 b3@3 b3@3",
  C: "[~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~ b3, d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2 ~ d#4@2, ~ b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 ~]/2",
  D: "[e4 ~@2 e4 ~ b3@2 [g#3,b3,e4]@13 ~@12, ~ d#4@2 ~ d#4@2 ~@26, ~@2 b3@3 ~@27]/2", // E
})).s("gm_distortion_guitar").gain(0.23).pan(0.4)

// bass · distortion guitar · "DISTORTIO"
const bass_2 = note("<~@28 A B A B A B A C@2 ~@28 A B A B A B A D A B A B A B A D A B A B A B A E@3>".pickRestart({
  A: "e2 a1", B: "c#2 b1", C: "[c#2 b1@7]/2", D: "c#2 b1@3", E: "[c#2@4 b1@11 b1@8 e2@13 ~@12]/3",
})).s("gm_distortion_guitar").gain(0.45).pan(0.6)

// chords · piano · "HONKYTONK"
const piano = note(`<
  A@2 B C D E F G H I J K L M L N O@2 P Q R@2 S T L M L M U@2 V W V X V Y Z AA@2 AB C O@2 P Q R@2 S T L M L M O@2 P Q
  R@2 S T L M L M AC AD AE AF AG AH AI AJ AC AD AE AF AG AH AI AJ AC AD AE AF AG AH AI AJ AK@2
>`.pickRestart({
  A: "[~@8 c#4@7 ~ c5@3 b4@12 ~, [d2,e4,f#4,a4]@15 ~@17, c#4@8 ~@7 b3@15 ~@2, ~@3 a2@12 ~ b2@13 ~@3, ~@6 f#3@9 ~ [d#4,f#4]@15 ~]/2", // D D#m
  B: "[e2,e3,b3,e4,f#4,g4]", C: "b3@3 [b3,b4]@3 [a2,a3,b3,c#4,e4]@9 ~, a1@15 ~, [a2,a3,d4,a4]@3 ~@5",
  D: "~@6 d3@9 ~, [d2,c#4,e4,f#4,a4]@15 ~, ~@3 a2@12 ~", E: "c5@3 ~@9 [a3,a4]@4, [b2,d#4,f#4], ~@3 b4@13",
  F: "[e2,e3,f#4,g4,b4]@15 ~", G: "[e4,g4]@3 [e4,g4,b4]@3 ~@8 b4@2, [a1,a2,a4]@3 [a1,a2,a3,b3,c#4,e4]@5, ~@3 a4",
  H: "~@6 f#3@9 ~, [d2,c#4,e4,f#4,a4,c#5]", I: "c5@3 b4@9 ~@2 f#4@2, [b2,d#4], f#4@7 ~, ~@3 b4",
  J: "[e2,e3,b3,e4,f#4,g4]@15 ~", K: "[e4,g4,a4]@3 [e4,g4,b4]@3 [a3,b3,c#4,e4]@10, [a1,a2]@6 [a1,a2] ~@9",
  L: "[f#2,f#3,a3,c#4,e4] ~ [f#2,f#3,a3,c#4,e4]@12 ~@2", M: "b4@3 c#5@3 f#4@9 ~, [b2,b3,d#4], f#4@3 ~@5",
  N: "b4@3 c#5@3 ~@6 a4@2 b4@2, [b2,b3,d#4], f#4@6 f#4@9 ~", // B
  O: "[~@6 f#3@9 ~ c5@3 b4@9 a4@2 g4@2, [d2,a3,c#4,e4,f#4]@15 ~ [b1,b2,d#4,f#4]@16, ~@3 a2@12 b3@16 ~]/2", // Dmaj7 B
  P: "~@11 d6@5, [e2,b3,e4,f#4,g4,b4], ~@9 f#5@7", // Em
  Q: "[b3,d4]@3 [b3,d4,b4]@3 ~@8 b4@2, [a2,a4]@3 [a2,a3,b3,c#4,e4]@5, ~@3 a4", // Bm A
  R: "[c#5@2 ~ c#5@11 ~@5 b4@12 ~, [d2,c#4,d4,f#4,a4]@15 ~ [b2,d#4,f#4,c5]@15 ~, ~@2 e5@12 ~ b3@15 ~@2]/2", // Dmaj7 B
  S: "[e2,e3,b3,e4,f#4,g4,b4]", T: "[b3,d4]@3 [b3,d4,b4]@3 [a2,a3,b3,c#4,e4]@10, [a2,a4]@3 ~@5",
  U: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~@2 b5 ~", V: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 ~ b5 ~",
  W: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 ~@3", X: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 ~@2",
  Y: "~@4 b5 ~@11", Z: "~@8 d#5 e5 b5 d#5 e5 b5@3",
  AA: "[~@8 c#4@7 ~ c5@2 ~ b4@12 ~, [d2,e4,f#4,a4]@15 ~@17, c#4@8 ~@7 b3@15 ~@2, ~@3 a2@12 ~ b2@13 ~@3, ~@6 f#3@9 ~ [d#4,f#4]@15 ~]/2", // D D#m
  AB: "~@7 d6@8 ~, [e2,e3,b3,e4,f#4,g4], ~@5 f#5@10 ~", AC: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~@2 b5 e5",
  AD: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~@2 b5 d#5 ~ b5 ~", AE: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~ e5 ~ e5",
  AF: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~@4", AG: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~ e5 ~@2",
  AH: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 ~", AI: "d#5 e5 b5 d#5 e5 b5 d#5 e5 b5 d#5 ~ b5 d#5 ~@3",
  AJ: "d#5 e5 b5 d#5 ~@2 e5 ~@2 b5 [b4,d#5,g#5] ~ [b4,d#5,g#5] [b4,d#5,f#5]@2 ~", // G#m B
  AK: "[~@3 [g#2,g#3] [f#2,f#3] [e2,e3] [c#2,c#3] [e1,e2]@13 ~@12]/2", // G# F# E C# E
})).s("gm_piano").gain(0.21).pan(0.7)

// chords · piano · "HONKYTONK" · soft notes
const piano_soft = note(`<
  ~@2 A ~@15 B ~ C ~@7 D@2 E F E G H I ~@3 J ~@3 B ~ C ~@9 B ~ C ~@7 K L M N M ~ O P K L M N M ~ O P K L M N M ~ O P ~@2
>`.pickRestart({
  A: "~@7 d6@8 ~, ~@5 f#5@10 ~, ~@6 g5@9 ~", B: "~@5 g5@3", C: "~@4 f#3@3 ~", D: "~@12 d#5 e5 ~ d#5", E: "~@13 e5 ~@2",
  F: "~@13 e5 b5 d#5", G: "~@7 b5", H: "~@13 e5 ~ d#5", I: "e5 b5 d#5 e5 ~ d#5 e5 b5 d#5 e5 b5 d#5 e5 ~@3",
  J: "~@6 g5@9 ~", K: "~@12 d#5 e5 ~@2", L: "~@9 d#5 e5 ~@2 e5 ~@2", M: "~@12 d#5 ~ b5 ~", N: "~@12 d#5 e5 b5 ~",
  O: "~@10 e5 ~@2 e5 b5 ~", P: "~@4 e5 b5 ~ d#5 e5 ~@7",
})).s("gm_piano").gain(0.14).pan(0.7)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@89 [~@2 x!2 ~@4] ~>").gain(0.41)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@12 A B A B A B A B A B A B A B A B C D E F G H ~@2 I ~@4 A B A B A B A B A B A B ~@4 A B A B ~@3 B C D E F G H ~@2 C
  D E F G H ~@2 C D E F G H ~@4
>`.pickRestart({
  A: "~@6 x!2 ~@6 x ~", B: "~@3 x", C: "~@3 x ~@9 x ~ x", D: "~ x ~@3 x ~ x ~ x ~@6", E: "~@3 x ~@5 x ~@5 x",
  F: "~@5 x ~@3 x ~ x ~@4", G: "~@3 x ~@11 x", H: "~@11 x ~@4", I: "~@13 x!3",
})).gain(0.12)

// drums · mid tom
const mid_tom = s("mt").struct("<~@89 [~@3 x ~ x ~@10] ~>").gain(0.35)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@28 A ~ A ~ A ~ A ~ B ~@28 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A C D ~
>`.pickRestart({
  A: "x", B: "~@2 x!2 ~@12", C: "~@15 x", D: "~@7 x ~@8",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@28 A B@2 C D B@2 E ~@29 A B@2 C D B@2 F A B@2 C D B@2 F A B@2 C D B@2 F ~@2
>`.pickRestart({
  A: "x!9 ~ x!6", B: "x!16", C: "x!7 ~ x ~ x!6", D: "x!7 ~ x!8", E: "x ~ x!3 ~@11", F: "x ~ x!3 ~@3 x ~ x!3 ~@3",
})).gain(0.18)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@28 A ~@2 B C ~@2 D ~@29 A ~@2 B C ~@2 E A ~@2 B C ~@2 E A ~@2 B C ~@2 F ~@2
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@7 x ~ x ~@6", C: "~@7 x ~@8", D: "~ x ~@3 x!3 ~@8", E: "~ x ~@3 x!3 ~ x ~@3 x!3",
  F: "~ x ~@3 x!3 ~ x ~@3 x!2 ~",
// … 47 more lines

More by Carboni