Strudelify

Non e mai stato subito

Biagio Antonacci

KeyE minorTempo160 bpm
0:00/0:00
// Non e mai stato subito — Biagio Antonacci
// 160 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 180 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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(`<
  ~@12 A B A B A C@3 ~@7 D A@2 E@2 F G H@2 I@2 J@2 E@4 A@2 E@2 F G H@2 A@2 E@2 F K@2 H@2 L M N H O M N P Q A R E S T U
  V@2 ~ W E S T N X Y A R E S T N H Z I AA J AB E@2 AC AD A R E S T AE H O E S AF@2 G H@2 E G AG@2 A AH E AI F G H@2 E@4
  F@3 AJ AK@4 E@3 AL@2 ~@3 H AK G AM G@5 AN G AO AP G H@2 E G AG@2 A AH E AI F G H AQ@2 AR@2
>`.pickRestart({
  A: "e1!8", B: "e1!4 a1 b1 g1 f#1",
  C: "[e1@2 e1@2 e1@2 e1@2 a1@2 b1@2 a1@2 d2@6 e2@4 ~@6 c#2@6 ~@2 d2@4 ~@2 d#2@3 ~]/3",
  D: "~@12 e2 [c#2,d#2] [a#1,b1] [f#1,g#1]", E: "c2!8", F: "a1!8", G: "d2!8", H: "e2!8", I: "g1!8", J: "f1!8",
  K: "[d2!7 d2@3 e2!6]/2", L: "a1!3 c2@2 c2!3", M: "c2!4 d2!4", N: "d2!4 e2!4", O: "e2!4 c2!4", P: "e2!3 g2@3 e2 b1",
  Q: "d2 e2 d2 e2 e1!4", R: "e1!4 c2!4", S: "c2!4 a1!4", T: "a1!4 d2!4", U: "d2!3 d2@3 e2@2",
  V: "[~@6 c#2@6 ~@2 d2@4 ~@2 d#2@3 ~@9]/2", W: "~@4 c2!4", X: "e2!3 d2@2 e2!2 d2", Y: "e2 b1 d2 e2 e1!4",
  Z: "e2!4 g1!4", AA: "g1!4 f1!4", AB: "f1!4 c2!4",
  AC: "c2@2 c2@2 c2@2 c2@2 [d2,e2] [f2,g2] c3@2 c3@2 c3@2, ~@10 a2 ~@5", // Dsus2 Fsus2
  AD: "[d2,e2] [f2,g2] c3@2 c3@2 c3@2 e1@2 e1@2 e1@2 e1@2, ~@2 a2 ~@13", AE: "d2!3 d2@3 e2!2", AF: "[a1!7 c2@2 c2!7]/2",
  AG: "[e2!7 g2@3 e2 b1 d2 e2 d2 e2]/2", AH: "e2!4 d2!4", AI: "c2!4 b1!4",
  AJ: "[b1,c#2] [d2,e2] a2@2 a2@2 a2@2 [b1,c#2] [d2,e2] a2@2 a2@2 a2@2, ~@2 f#2 ~@7 f#2 ~@5", AK: "d#2!8",
  AL: "[c2!6 d2 d2@3 ~@6]/2", AM: "c#2!8",
  AN: "[f2,f#2] [g2,a2] d3@2 d3@2 d3@2 d3@2 d3@2 d3@2 d3 [g2,b2,c3], ~@2 b2 ~@13", // F#maj7 Gsus2 Cmaj7
  AO: "[f2,f#2] [g2,a2] d3@2 d3@2 d3@2 d3@2 d3@2 d3@2 d3@2, ~@2 b2 ~@13", AP: "~ c2!7", AQ: "[e2!5 d2 e2 c2@2 c2!7]/2",
  AR: "[d2!7 d2@3 e2@2 ~@4]/2",
})).s("gm_fretless_bass").gain(0.59)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@12 A@5 B ~@2 A@2 C D E F G H I@2 C D E F G H ~@4 J C@3 A@2 C D E F K L I@2 C D E M N@4 ~@2 O P ~@2 O Q I R C S T U
  ~@3 V W@2 T X Y@2 I R C S T Z A AA ~@3 AB C@3 AC I R C S T AD@3 C AE AF ~@2 AG@2 AH ~ AG@2 AI AJ C AK E AL A@2 AM@3 AN
  AO@3 AP AQ@3 AR AM@3 AS@2 ~ AT ~ AU@3 AV AW AX AY@2 AZ BA BB@2 ~@2 AG@2 AH ~ AG@2 AI AJ C AK E AL A BC@2 ~ BD
>`.pickRestart({
  A: "e3!8", B: "e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3 ~@3", C: "c3!8", D: "c3!6 ~ c3", E: "~ a2!7", F: "~ d3!5 ~ d3",
  G: "~ e3!7", H: "e3!5 ~@3", I: "[e2,e3]!8", J: "~ c3!7", K: "~ e3!6 ~", L: "~@7 e3", M: "~ d3!6 ~",
  N: "[~@3 e3!5 e3!8 e3!8 a2!3 c3 ~@4, ~@3 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 ~@7]/4",
  O: "~@2 e3 g3@3 e3 b2", P: "d3@2 e3@2 d3@2 [b2,c3,c#3] [g#2,a2,a#2] g2 ~@7",
  Q: "d3@2 e3@2 d3@2 [b2,c3,c#3] [g#2,a2,a#2] [e2,g2,e3]@2 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2", R: "[e2,e3]!4 c3!4",
  S: "c3!2 ~ c3 ~ a2!3", T: "a2!4 ~ d3!3", U: "d3!3 ~@5", V: "~@4 c3!2 [c3,e4] c3",
  W: "[[c3,d4] [c3,e4] c3 [c3,d4] [c3,e4] c3 [c3,d4] c3 c3!2 ~ c3 ~ a2!3, ~@14 e4@13 ~@5]/2", // Csus2 C Csus2 C Csus2
  X: "d3!2 ~ d3 ~ e3 [e3,e4] e3", // E
  Y: "[[e3,d4]@2 [e3,e4]@2 e3@2 d4@2 e4@3 ~ d4@2 ~@10 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2, ~@14 e4@13 ~@5]/2", // E7 E
  Z: "d3!2 ~ d3 ~ e3!3", AA: "e3 ~@7", AB: "~@5 c3!3", AC: "c3!4 [e2,e3]!4",
  AD: "[d3!3 ~@4 e3 e3!8 e3!4 c3!4, ~@7 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 ~@3]/3", AE: "c3!4 a2!4", AF: "a2!7 c3",
  AG: "[~@12 e3@2 g3@6 e3@2 b2@2 d3@2 e3@2 d3@2 [b2,c3,c#3] [g#2,a2,a#2]]/2", AH: "g2 ~@15", AI: "[e2,g2,e3] [e2,e3]!7",
  AJ: "[e2,e3]!4 d3!4", AK: "c3!4 b2!2 ~ b2", AL: "~ d3!7", AM: "c3!8, g4!4", AN: "c3!6 [c3,g4] c3, g4!3 ~",
  AO: "a2!8, g4!4", AP: "a2!6 [a2,g4] a2, g4!3 ~", AQ: "d#3!8, g4!4", AR: "d#3!6 [d#3,g4] d#3, g4!3 ~",
  AS: "[c3!6 d3@4 e3 ~@5, g4@2 g4@2 g4@2 c3 ~@9]/2", AT: "~@4 e3@2 e3@2 g3@2 e3@5 ~",
  AU: "[e4 ~ e4 ~ g4@2 ~@2 f#4@2 e4@3 ~ e4@4 e4@2 g4@2 ~@2 f#4@2 e4@3 ~ e4@4 e4@2 g4@2 ~@2 f#4@2 e4@3 ~ e4@2]/3",
  AV: "~@2 e4@2 g4@2 ~@2 f#4@2 e4@3 ~@3", AW: "~@2 a#4 ~ a4 f4 ~ f4", AX: "~@2 f4 ~ b4@2 f4 ~ c5@2 b4@3 ~ b4@2",
  AY: "[~@2 b4 ~ d5@2 ~@2 c5@2 b4@2 g4 ~ c#5@15 ~@3]/2", AZ: "~@2 f4 ~ a#4@3 ~ a4@2 f4@2 ~@2 f4@2",
  BA: "~@2 f4 ~ b4@2 f4 ~ c5@2 b4 ~@3 c5 ~", BB: "[~@2 d5 ~ f5@2 ~@2 e5@2 ~@2 f5@2 g5@15 ~@3]/2",
  BC: "[e3!5 d3 e3 c3@2 ~@7]/2", BD: "~@2 e3 ~@5",
})).s("gm_distortion_guitar").gain(0.24)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@4 A B C D A B C D E@2 F@2 G@4 ~@7 H I ~@23 J@5 K@2 ~@2 L@5 M@8 N@2 O@2 ~@6 P Q ~@15 R@6 S@6 T U V@2 W@2 X@2 J@5 Y
  Z@2 AA AB@2 AC@5 AD@3 AE@6 ~@11 AF AG AH AI T U V@2 W@2 X@2 J@5 Y AJ@5
>`.pickRestart({
  A: "[g4,b4]@15 ~", B: "[g4,c5]", C: "[a4,c#5]", D: "[g4,d5]@15 ~", E: "[[g4,b4]@7 [g4,c5]@9]/2",
  F: "[[a4,c#5]@7 [g4,d5]@9]/2", // A G5
  G: "[[g4,b4]@14 [g4,c5]@16 [d4,a4,d5]@6 [e4,b4,e5]@3 ~@7 [e4,a4,c#5]@7 ~ [f#4,a4,d5]@5 ~ [f#4,a4,d#5]@2 ~@2]/4", // G C5 D5 E5 A D D#dim
  H: "~ e3 g3 [e3,a3] g3 [a3,d4] [g3,e4] [d4,g4]", I: "e4@2 g4@2 e4@3 ~@9", J: "[e4,g4]/5",
  K: "[[d4,a4]@12 ~@2 [d4,a4]@6 [e4,b4]@5 ~@7]/2", // D5 E5
  L: "[~@12 [c4,e4,g4]@12 [f#4,a4]@16 [e4,g4,b4]@31 ~ [c4,e4,g4]@8, ~@12 d4@7 ~@21]/5", // C F#m Em C
  M: "[~@3 [d4,f#4,a4]@9 [e4,g4,b4]@16 [e4,g4]@36]/8", N: "[~@8 [d4,a4]@12 ~@2 [d4,a4]@6 [e4,b4,e5]@3 ~]/2",
  O: "[~@6 [e4,a4,c#5]@7 ~ [f#4,a4,d5]@5 ~ [f#4,a4,d#5]@2 ~@10]/2", P: "~@5 e3 g3 [e3,a3]",
  Q: "g3@2 [a3,d4]@2 [g3,e4]@2 [d4,g4]@2 e4@2 g4@2 e4@3 ~", R: "[~ [e4,g4]@10 [d4,a4]]/6",
  S: "[~@3 [a3,d4]@3 [b3,e4]@14 [e4,g4,b4]@24 ~@4]/6", T: "~ [c4,e4,g4]@3", U: "[f#4,a4], d4@7 ~",
  V: "[[e4,g4,b4]@31 ~]/2", W: "[[e4,g4]@7 [d4,f#4,a4]@9, c4@13 ~@19]/2", X: "[e4,g4,b4]/2", Y: "[d4,a4]",
  Z: "[b3,e4,g4]/2", AA: "[c4,g4], e4 ~@15", AB: "[b4 a4 g4@2, [c4,e4]@31 ~]/2",
  AC: "[b4@4 a4@4 g4@8 b4@4 a4@4 g4@15 ~, c4@77 ~@3, e4@16 e4@61 ~@3]/5", AD: "[a#4@2 d5 c5 a#4@2, [d#4,g4]@47 ~]/3",
  AE: "[d5@7 ~ c5@8 a#4@16 d5@8 c5@8 a#4@30 [d4,a4]@6 [e4,b4]@5 ~@7, [d#4,g4]@77 ~@19]/6", AF: "[f4,a#4,d5]@15 ~",
  AG: "[g4,c5,e5]", AH: "[a#4,d5,f5]", AI: "[c5,g5]@13 ~@3",
  AJ: "[[b3,e4,g4]@15 [c4,e4,g4]@8 [d4,f#4,a4]@8 [d4,a4]@3 [e4,b4]@2 ~@4]/5", // Em C D D5 E5
})).s("gm_synth_strings_1").gain(0.14)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@3 A B C D E F C D G H@4 I@3 ~@31 J@2 ~@12 K L ~@2 K L ~@5 M N ~@24 O@3 P Q ~@9 R@2 S ~ R@2 S ~@23 T U V W X ~@13 R@2
  S ~ R@2 S ~@10
>`.pickRestart({
  A: "~@7 b4", B: "e5", C: "f#5@7 e5", D: "b5", E: "a5@7 b4", F: "e5@7 b4", G: "e6",
  H: "[~@4 g4@6 e4@4 a4@4 f#4@4 d4@8 e4@12 a3@2 b3@2 d4@6 b3@2 a3@2 b3@2 a3@2 g3@2 f#3 [e3,f3]]/4", // Fmaj7
  I: "[d#3 ~@3 g4@6 e4@4 a4@4 f#4@4 d4@12 c#4 [b3,c4] [a3,a#3] [g3,g#3] [f3,f#3] [d#3,e3] d3 ~@7]/3", // Cmaj7 A#maj7 G#maj7 F#maj7 Emaj7
  J: "[~@7 d3@2 e3!2 d3 e3 b2 d3 e3]/2", K: "~@3 g3@3 e3 b2", L: "d3@2 e3@2 d3@2 [b2,c3,c#3] [g#2,a2,a#2] g2 ~@7",
  M: "~@10 c#4 [b3,c4] [a3,a#3] [g3,g#3] [f3,f#3] [d#3,e3]", N: "d3 ~@15", O: "[~@4 e4@11 e4@5 ~@4, ~ b4@4 ~]/3",
  P: "d4 ~ e4@2 ~@2 d4 ~ e4@2 ~@2 d4 ~ e4@2", Q: "~ g4@2 e4@3 ~@2",
  R: "[~@14 g3@6 e3@2 b2@2 d3@2 e3@2 d3@2 [b2,c3,c#3] [g#2,a2,a#2]]/2", S: "g2 ~@15", T: "~@9 b5@4 a5@3",
  U: "[b4,f#5] e5 g5 b5 g5 e5 g5 b5 e6@8", V: "e3 ~@3 e3@2 e3@2 g3@2 e3@5 e3", W: "f#4@13 [e4,f4] [a#3,c4,d4] [f3,g3]",
  X: "[c#3,d#3] ~@15", // C#sus2
})).s("gm_overdriven_guitar").gain(0.21)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@17 A@3 B C D E F G H I ~ C D E F G H J K@2 L@2 M ~@2 N ~ C D E F G O@2 ~ C D E F P@2 ~@2 Q@4 R@4 ~@2 S ~ T U V W@2 ~
  X ~ T U Y Z AA ~ S ~ T U Y AB AC@5 ~@2 AD AE ~ S ~ T U AF ~@4 AG AH@2 AI ~ AJ@2 AI ~@2 AK D AL F AM AN AO AP ~@14 AQ@2
  AR ~ AS AT ~@5 AU@2 ~@2 AV@2 AH@2 AI ~ AJ@2 AI ~@2 AK D AL F AW AN AX@4
>`.pickRestart({
  A: "[~@14 [a2,d3]@6 [b2,e3]@3 ~@7 [a2,c#3]@8 [a2,d3]@6 [a2,d#3]@2 d3 [c3,c#3]]/3", B: "b2 ~@15",
  C: "~@5 b3 [e3,b3]!2", D: "[c3,g3,c4] c3 ~@6", E: "~@3 g3, ~@6 c3 ~", F: "[a2,e3] ~@7", G: "[d3,a3] ~@5 [d3,a3] d3",
  H: "[e3,b3] e3 ~@6", I: "~@5 e3 [e3,b3]!2", J: "~ e3!5 [e3,b3]!2", K: "[[g2,d3]@14 ~ f3, g3@15 ~, ~@7 [g2,d3]]/2",
  L: "[[f2,c3,f3]@31 ~]/2", M: "[c3,g3] ~@3", N: "~ c3!3 [c3,g3]!4",
  O: "[[e3,b3] e3 ~@5 d3@2 e3!2 d3 e3 b2 [d3,b3] [e3,b3]]/2", // E5 G E5
  P: "[[d3,a3]@2 ~@10 [d3,a3]@2 [a2,d3,a3]@6 [b2,e3,b3]@3 ~@9]/2", // D5 E5
  Q: "[[a2,e3]!3 [c3,g3] ~@2 [c3,g3]@4 [c3,g3] [d3,a3,d4]@9 [e3,b3,e4]@7 ~@5, ~@6 c4@5 ~@21]/4", // A5 C5 D5 E5
  R: "[~@4 [c3,g3]@6 [c3,g3] [d3,a3,d4]@9 [e3,b3,e4]@7 ~@5, ~@4 c4@7 ~@21]/4", S: "~ b3 [e3,b3]!2 [c3,g3,c4] c3 ~@2",
  T: "~@2 g3@2 [a2,e3] ~@3, ~@2 c3 ~@5", U: "~@4 [d3,a3] ~@3", V: "~@4 [d3,a3]@2 [a2,d3,a3]@6 [b2,e3]@3 ~",
  W: "[~@6 [a2,c#3]@8 [a2,d3]@6 [a2,d#3]@2 d3 [c3,c#3] b2 ~@7]/2", X: "~@4 [c3,g3,c4] c3 ~@2",
  Y: "~@2 [d3,a3] d3 [e3,b3] e3 ~@2", Z: "~@3 d3@2 e3!2 d3", AA: "e3 b2 [d3,b3] [e3,b3] ~@4", AB: "~@5 e3!3",
  AC: "[e3@2 e3@2 [e3,b3]@2 [e3,b3]@2 [g2,d3]@28 ~@2 f3@2 [f2,c3,f3]@31 ~ [c3,g3]@4 ~@4, ~@4 g3@15 ~@21, ~@9 [g2,d3] ~@10]/5", // E5 G5 F5 C5 G5
  AD: "~@4 c3!4", AE: "[c3,g3]!4 ~@4", AF: "~@4 [d3,a3]@2 [a2,d3,a3]@6 [b2,e3,b3]@3 ~", AG: "~@4 [a2,e3]!3 [c3,g3]",
  AH: "[~@2 [c3,g3]@4 [c3,g3] [d3,a3,d4]@9, ~@2 c4@5 ~@9]/2", AI: "[e3,b3,e4]@7 ~",
  AJ: "[[c3,g3]@6 [c3,g3] [d3,a3,d4]@9, c4@7 ~@9]/2", AK: "~@5 a3 [d3,a3]!2", AL: "~@3 f#3, ~@6 b2 ~",
  AM: "[d3,a3] ~@5 [d3,a3] ~", AN: "~@7 e3", AO: "e3!8", AP: "g3 ~@3, c3 ~@7",
  AQ: "[d#3@2 [a#2,d#3]@2 [a#2,d#3]@2 [a#2,d#3]@2 [a#2,d#3]@2 [a#2,d#3]@2 [a#2,d#3]@2 [a2,d3,a3]@6 [b2,e3,b3]@3 ~@2 b5@4 a5@3]/2", // D#5 D5 E5
  AR: "[b4,f#5] e5 g5 b5 g5 e5 g5 b5 e6@8", AS: "f#4@13 [e4,f4] [a#3,c4,d4] [f3,g3]", AT: "[c#3,d#3] ~@15",
  AU: "[~@14 c#5@15 ~@3]/2", AV: "[~@6 f5 g5@8 ~]/2", AW: "[d3,a3] ~@7",
  AX: "[e3!5 d3 e3 [c3,g3]@7 [c3,g3] [d3,a3,d4]@8 [a2,d3]@3 [b2,e3]@2 ~@4, ~@7 c4@8 ~@17]/4", // C5 D5 E5
})).s("gm_distortion_guitar").gain(0.23)

// bass · lead 8 bass lead
const bass_2 = note("<[e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~]!12 ~@168>").s("gm_lead_8_bass_lead").gain(0.28)

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

// drums · snare
const snare = s("sd").struct("<~@12 A@5 B C D ~@15 E A@21 B A@3 F A@13 D G H ~ E A@32 I A@47 J A@18 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~ x!2 ~", D: "~ x!2 ~@3 x ~", E: "~@3 x", F: "x!3 ~@3 x ~", G: "x ~@4 x!2 ~",
  H: "~ x ~@2", I: "~@2 x ~ x!3 ~", J: "~ x!7",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@12 A ~@5 B C ~@8 B ~ B ~ B ~ B ~@41 D E ~@67 F@3 D F@3 D ~@7 G ~@17 H ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@11 x ~@4", D: "~ x ~@2", E: "~@3 x ~@12", F: "~ x ~ x", G: "~ x!6 ~", H: "~@5 x ~@2",
})).gain(0.48)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@145 A B A ~ A B A ~@28>".pickRestart({
  A: "~@5 x ~@2", B: "~@5 x ~ x",
})).gain(0.24)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@36 A B@3 A B@3 A B@3 A B@3 A B@3 A C A B@2 ~@18 D B@3 E B@3 E B@5 F B@3 E B@3 E B@3 E B D B@4 C ~@67
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4", D: "~@7 x", E: "~ x ~ x ~@3 x", F: "~ x ~@5 x",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A@2 ~@8 B ~ B ~ B ~ B ~@41 C@2 ~@100 D ~>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "~ x ~@6", D: "~@9 x ~@6",
})).gain(0.4)

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

// drums · high tom
const high_tom = s("ht").struct("<~@18 [~ x] ~@57 x ~@101 [~ x] ~>").gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A B C ~@24 D ~@12 A ~@3 E ~@7 F ~@5 G A ~@16 F ~@13 C ~@5 B ~@7 D ~@7 D ~@7 D ~@6 A ~@3 E ~@3 E ~@7 A B ~@7 D ~@6
  A ~ A H
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@2", C: "~@3 x ~@4", D: "x", E: "~@3 x", F: "~ x", G: "~@3 x ~@2 x ~", H: "~ x!2 ~",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@61 [~@7 x] [x!8]!7 [x!4 ~ x!3] [x!8]!5 x ~@104>").gain(0.32)

// … 4 more lines

More by Biagio Antonacci