Strudelify
Tra palco e realta cover art

Giro d'Italia (semi acustico)

Tra palco e realta

LIGABUE

KeyG majorTempo138 bpm
0:00/0:00
// Tra palco e realta — LIGABUE
// 138 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 156 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(138/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
const bass = note(`<
  ~@4 A B C D E A F G E H F G I J K L I J K M I J K N I J K O P Q R S P Q T U V W X Y E A F Z E H F AA I J K L I J K M I
  J K N I J K O P Q R S P Q T U V W X Y E A F Z E H F AB AC AD AE AF AG AD AH AF AC AD AH AF AI AJ@3 P Q R S P Q T U V W
  X AK AL AM I J K N I J K O AN AO R S AN AO R U V W X AP E A F Z E H F AQ AN AO X S AN AR AS AT@2 ~
>`.pickRestart({
  A: "a1 ~ a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1@2", B: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1 ~ b1@2",
  C: "c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", D: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  E: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1@2", F: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1 ~ e1@2",
  G: "c2@2 e1@2 c2@2 e1@2 d2@2 d2 ~ d2 ~ d2@2", H: "a1 ~ a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ e1@2", I: "g1@4 ~@2 g1 ~ g1@8",
  J: "a1@4 ~@2 a1 ~ a1@5 ~ a1 ~", K: "b1@4 ~@2 b1 ~ b1@5 ~ e1 ~", L: "c2@6 e1@2 d2@2 d2 ~ d2 ~ d2@2",
  M: "c2@5 ~ c3@2 b2@2 g2 ~ d3@2 g2@2", N: "c2@6 e1@2 c2@2 d2 ~ c2 ~ d2@2", O: "c2@5 ~ c2 ~ c2@4 e1@4",
  P: "c2@2 ~ c2@4 ~", Q: "b1@2 ~ b1@4 e1", R: "a1@2 a1 ~ a1 ~ a1@2 a1@2 a1 ~ a1 ~ e1@2",
  S: "g1@2 g1 ~ g1 ~ a1@2 a1@2 a1 ~ b1 ~ g1@2", T: "a1@2 ~ a1@4 e1", U: "g1@2 ~ a1@3 e2@2", V: "d2@6 a2@5 ~ e3@4",
  W: "d3@3 c3@3 b2@2", X: "a1@2 a1 ~ a1 ~ a1@2 a1@2 a1 ~ a1 ~ a1@2", Y: "c2@2 c2 ~ c2@2 c2 ~ d2@2 d2 ~ d2 ~ d2@2",
  Z: "c2@2 e1@2 c2@2 e1@2 d2@2 e1 ~ d2 ~ e1@2", AA: "c2@2 c2@2 c2@2 e1@2 d2@2 ~ d2@2 d2@2 ~",
  AB: "b1@2 ~ d2@2 b1@2 ~ a1@2 ~ g1@2 e1@2 ~", AC: "e1 ~@3 e1@4 e2@6 e1@2", AD: "f#1 ~@3 f#1@9 ~ b1 ~",
  AE: "c2@2 ~@2 c2@9 ~ c2 ~", AF: "g1 f#1", AG: "e1 ~ e1@2 e2@3 e1", AH: "c2 ~@3 c2@9 ~ c2 ~", AI: "c2@13 ~ e1 ~",
  AJ: "[g1@8 f#1@6 a2@27 ~@3 a1@4]/3", AK: "b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1 ~ b1@2",
  AL: "c2@2 c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2 ~ c2@2", AM: "c2@2 c2 ~ c2@2 a1 ~ c2@2 ~ c2@2 c2@2 ~",
  AN: "c2 ~ c2 ~ c2 ~ c2 ~", AO: "b1 ~ b1 ~ b1 ~ b1 e1", AP: "c2@2 c2 ~ c2@2 c2 ~ d2@2 ~ d2@2 d2@2 ~",
  AQ: "c2!3 e1 e2 g2 e2 d2", AR: "b1 ~ b1 ~ b1 ~ b1 ~", AS: "a1 ~ a1 ~ a1 ~ d2@2", AT: "g1/2",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B C B D B C B E@2 F@2 G H I@2 J ~@6 K L M N O L M N P Q@4 R@4 S@2 T U V@2 W@2 X@2 Y@2 J ~@6 Z L M N AA L M N P Q@4
  R@4 S@2 T U V@2 W@2 X@2 AB@2 AC AD AE AF AC AD AE AG AC AD AE AF AE AF AH@2 Q@4 R@4 AI@2 AJ AK AL AM L M N AA L M N P
  AN AO AP@2 AN AO AQ@2 S@2 T AR AS@2 W@2 X@2 AT@2 AN AO AP@2 AN AO AU@3 ~
>`.pickRestart({
  A: "~ e5@2 g5 [e5,g5] e5!2 a4 ~@2 e5 ~ g5 e5!2 a4, ~@8 a4@7 ~, ~@11 g5@2 ~@3", // Em
  B: "~@2 e5 ~ f#5 e5!2 a4 ~@2 e5 ~ f#5 e5 f#5 a4, a4@7 ~ a4@7 ~, ~@3 f#5@2 ~@6 f#5@2 ~@3",
  C: "e5 ~ e5 ~ g5 e5!2 a4 ~@2 e5 ~ g5 e5!2 a4, ~@3 g5@2 ~@3 a4@7 ~, ~@11 g5@2 ~@3",
  D: "e5 ~ e5 g5 [e5,g5] e5!2 a4 ~@2 e5 ~ g5 e5!2 a4, ~@8 a4@7 ~, ~@11 g5@2 ~@3", // Em
  E: "[d4@4 d4@2 g4 ~@3 d4@4 ~@12 d4@2 ~@2 g4@2, [g2,g3] [a2,a3], [g4,d5]@7 ~@7 d4@4 ~@2 d4@4 ~@4 c4@4, ~@11 g4@4 ~]/2", // G A G5
  F: "[~@3 g4@2 ~@3 c3@3 d3 e3 g3@3, [b2,b3] ~, ~@2 d4@2 ~ g4@2 g4@5 ~@4, ~@3 d4 c4@2 d4@2]/2", // B
  G: "d4@2 d4 ~@3 b3@2, [g2,g3], g4@3 g4@4 ~", H: "~@5 d4 ~ g4, [a2,a3], ~ d4 ~ c4, ~@3 g4@4 ~",
  I: "[~@6 g4@4 ~@6 c3@6 d3@2 e3@2 g3@5 g3, [b2,b3] ~, ~@2 d4@2 ~ g4@2 g4@5 ~@4, ~@3 d4 c4@2 d4@2]/2", // B
  J: "[d4,g4]@15 ~", K: "~@14 d4 [d4,g4]", L: "[g3,d4,g4]@4 ~@2 [g3,d4,g4]@3 ~ [g3,d4,g4]@3 ~ [d4,g4] d4",
  M: "[a3,d4,g4]@4 ~@2 [a3,d4,g4]@2 ~@2 [a3,d4,g4]@2 ~@2 d4 [d4,g4]", // Dsus4 G5
  N: "[b3,d4,g4]@4 ~@2 [b3,d4,g4]@2 ~@2 [b3,d4,g4]@2 ~@2 d4 [d4,g4]", // G G5
  O: "~@2 g4@4 ~@2 c4@2 ~@2 a4@2 d4 [d4,g4], c4@4 ~ d4@2 ~, ~@3 g4@3 ~@2", // G5
  P: "~ g4@2 ~ c4 ~ a4@2, c4@4 ~ d4@3, ~@3 g4@3 ~@2",
  Q: "[c4@5 ~ c4@9 ~ b3@6 b3@9 ~ a3@6 g3@6 a3@3 ~ g3@4 d4@2 ~@4 d4@2 [b2,g3]@4, [c3,g3]@15 b2@16 a2@16 g2@9 ~@8, ~@16 g3@13 ~@3 e3@15 ~ d3@16, ~@27 [a2,g3]@3 ~@2]/4", // Em C5 A7
  R: "[~@6 e4@9 ~@7 d4@9 ~ a3@6 g3@6 a3@3 ~ g3@4 d4@2 ~@4 d4@2 g3@4, [c3,g3]@16 g3@13 ~@3 e3@15 ~ d3@16, c4@9 ~@6 b2@16 a2@16 g2@16 ~, ~@8 b3@5 ~@14 g3@3 ~@2]/4", // C5
  S: "[~@10 g4@5 f#4@15 [e3,a3] a3, [a3,d4]@15 ~]/2", T: "[e3,a3] a3!7 [e3,a3]@6 [e3,a3] a3, a2",
  U: "[e3,a3] a3!7 [d3,a3]@8, c3 ~", // A5 D5
  V: "[d4@2 d4 ~@2 d4@2 ~@6 d4 ~ g4, [g2,g3] [a2,a3], g4@3 g4@4 d4@2 ~ d4@2 ~@2 c4@2, ~@11 g4@4 ~]/2", // G A
  W: "[~@3 g4@2 d4 ~@2 c3@3 d3 e3 g3@3, [b2,b3] ~, ~@2 d4@2 ~ g4@2 g4@5 ~@4, ~@3 d4 c4@2 d4@2]/2", // B
  X: "[d4@2 d4 ~@2 d4 ~@7 d4 ~ g4, [g2,g3] [a2,a3], g4@3 g4@4 d4@2 ~ d4@2 ~@2 c4@2, ~@6 b3@2 ~@3 g4@4 ~]/2", // G A
  Y: "[~@6 g4@4 d4@2 ~@4 c3@6 d3@2 e3@3 g3@4 g3, [b2,b3] ~, ~@2 d4@2 ~ g4@2 g4@5 ~@4, ~@3 d4 c4@2 d4@2]/2", // B
  Z: "~@14 [g3,d4] [d4,g4]", AA: "~@2 g4@4 ~@2 c4@2 ~@2 a4@2 [g3,d4] [d4,g4], c4@4 ~ d4@2 ~, ~@3 g4@3 ~@2",
  AB: "[~@6 g4@4 d4@2 ~@4 [b2,b3]@3 d3@2 ~ b2@2 a2@2 ~ g2@2 e2@3, [b2,b3] ~, ~@2 d4@2 ~ g4@2 g4@5 ~@4, ~@3 d4 ~@4]/2", // B
  AC: "[b2,e3]", AD: "d3", AE: "[c3,g3]", AF: "[d3,g3]@7 ~ [d3,a3]@7 ~", AG: "[d3,g3]@7 ~ d3@7 ~",
  AH: "[[e3,a3,b4]@31 ~]/2", AI: "[~@10 g4@5 f#4@16 ~, [a3,d4]@31 ~]/2",
  AJ: "~@2 e5 g5 [e5,g5] e5!2 a4 ~@2 e5 ~ g5 e5!2 a4, a2, ~@8 a4@7 ~, ~@11 g5@2 ~@3", // Em
  AK: "~@2 e5 ~ f#5 e5!2 a4 ~@2 e5 ~ f#5 e5 f#5 a4, b2, a4@7 ~ a4@7 ~, ~@3 f#5@2 ~@6 f#5@2 ~@3",
  AL: "e5 ~ e5 ~ g5 e5!2 a4 ~@2 e5 ~ g5 e5!2 a4, c3, ~@3 g5@2 ~@3 a4@7 ~, ~@11 g5@2 ~@3",
  AM: "~@2 e5 ~ g5 e5!2 a4 [c3,g3,d4]@2 ~ [c3,g3,d4]@2 ~ [c3,g3,d4]@2, [c3,a4] ~, ~@3 g5@2 ~@11", // Csus2 F
  AN: "[g3,c4,g4]@2 ~@2 [g3,c4,g4]@2 [c4,g4] c4 [g3,c4,g4]@2 ~@2 [g3,c4,g4]@2 [c4,g4] c4", // C5
  AO: "[g3,d4,g4]@2 ~@2 [g3,d4,g4]@2 [d4,g4] d4 [g3,d4,g4]@2 ~@2 [g3,d4,g4]@2 [d4,g4] d4", // G5
  AP: "[a3@6 g3@6 a3@3 ~ g3@4 d4@2 ~@4 d4@2 [b2,g3]@4, e3@15 g2@9 ~@8, ~ d3, ~@11 [a2,g3]@3 ~@2]/2", // Em A7
  AQ: "[a3@6 g3@6 a3@3 ~ g3@4 d4@2 ~@4 d4@2 g3@4, e3@15 g2@16 ~, ~ d3, ~@11 g3@3 ~@2]/2",
  AR: "[e3,a3] a3!7 [d3,a3]@2 ~ [d3,a3]@2 [d3,a3]@2 ~, c3 ~", // A5 D5
  AS: "[d4@2 d4 ~@10 d4 ~ g4, [g2,g3] [a2,a3], g4@3 g4@4 ~@4 g4@4 ~, ~@5 d4@2 d4@2 ~ d4@2 ~@4, ~@3 b3 ~@3 c4]/2", // G A
  AT: "[~@6 g4@4 d4@2 ~@4 c3@6 d3@2 e3@3 g3@5, [b2,b3] ~, ~@2 d4@2 ~ g4@2 g4@5 ~@4, ~@3 d4 c4@2 d4@2]/2", // B
  AU: "[a3@6 a3@6 a3@3 ~ g3@32, d3@5 [g2,d3]@11]/3", // G5
})).s("gm_overdriven_guitar").gain(0.29).pan(0.3)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  A B C B D B C B E ~ F ~ G@2 F ~@8 H ~@3 H ~@16 E ~@35 E ~@8 I ~@3 I ~ J ~ I ~@16 D B C K ~@38
>`.pickRestart({
  A: "~ a4@6 ~@2 e5 ~ e5@2 ~@3", B: "~ e5 ~ e5@2 ~@4 e5 ~ e5@2 ~@2 e5", C: "~ e5 ~ e5@2 ~@4 e5 ~ e5@2 ~@3, a4@7 ~@9",
  D: "~ e5 ~@7 e5 ~ e5@2 ~@3, a4@7 ~@9", E: "~@3 b3", F: "~@5 d4 ~@2", G: "[~@5 d4 ~ d4@2 ~@7]/2", H: "~@14 g3 ~",
  I: "a2", J: "~@8 a2@7 ~", K: "~ e5 ~ e5@2 ~@11",
})).s("gm_overdriven_guitar").gain(0.17).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@88 A B C D A B C D A B C D C E@3 ~@52>".pickRestart({
  A: "e3@2 ~@2 b3 g3 e3 g3, ~@2 g3@3 ~@3, ~@3 d4@5", B: "d3@2 ~@2 a3 f#3 d3 f#3, ~ a3 ~@2, ~@3 d4@5",
  C: "c3@2 ~@2 g3 e3 c3 e3, ~ g3 ~@2, ~@3 d4@5", D: "~@3 b3 ~@3 a3, g2 d3, ~ d4@2 d4, ~@5 a3@2 ~",
  E: "[~@6 b3@2 ~@9 a3@30 ~, g2@8 d3@7 a2@32 ~, ~ d4@2 d4 ~@8, ~@10 a3@4 a3@2 e3@31 ~]/3",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.8)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@3 A@2 B@3 C D@2 E F D@2 E G H I J K H I L M N O P M N O P Q@2 R@2 Q@2 R@2 S@2 T@2 C D@2 E F D@2 E G H I J K H I L M
  N O P M N O P Q@2 R@2 Q@2 R@2 S@2 T@2 C D@2 E F D@2 U V W X Y V Z AA AB V W X AC AD AC AE@2 AF AG AH AI AJ AK AL AM AN
  A@2 AO@3 M N O P M N O P AP AQ R@2 AP AQ R@2 S@2 AR@2 C D@2 E F D@2 E AP AQ R@2 AP AQ AS AT@2 ~
>`.pickRestart({
  A: "[~@15 a2, ~@7 a2@8 ~, ~ [e3,a3]]/2", // A5
  B: "[~@6 a3@6 ~@2 b2 ~@7 [g3,d4]@8 g3@6 g3@2 [g3,d4]@6 [g3,d4]@4, b2@7 ~ c3@7 c3@8 ~, ~@6 d4@11 ~@13 d4@8 ~@10, ~@6 g3@5 ~@13]/3", // G5
  C: "~@2 d4@2 c4 b3 a3 g3", D: "[d3@2 d4@2 c4 b3 a3 b3@3 d4@2 c4 b3 a3 g3]/2", E: "b3@3 g4@2 b3@3 c4@3 g4@2 c4@3",
  F: "b3@2 d4@2 c4 b3 a3 g3", G: "b3, g3 ~", H: "c4@15 ~", I: "d4", J: "a3, a4@3 ~", K: "b3", L: "a3",
  M: "b3@3 g4@3 b3 g4", N: "c4@3 g4@3 c4 g4", O: "d4@3 b4@3 d4 b4", P: "b3@3 ~@2 b3@3 c4@3 g4@2 c4@2 g4, ~@3 g4@4 ~@9",
  Q: "[[e4,g4]@3 g4@2 f#4@2 ~ d4@3 g4@2 f#4@2 [d4,g4], ~@3 e4@4 g4@4 d4@4 ~]/2", // Em G5
  R: "[[c4,g4]@6 g4@4 ~@6 b3@4 g4@2 b3@3 ~@5 g4@2, ~@3 c4@3 c4@2 ~@5 b3@2 ~, ~@5 f#4@2 g4@3 ~ g4@4 ~, ~@7 d4]/2", // C5
  S: "[~@3 d3 ~ d4@2 ~ f#3 g3 f#3 g3 [a3,d4]@4, [a3,d4]@5 ~@3 d4@4 ~@4, ~@4 e3@2 ~ e3@2 ~@7]/2", // D5
  T: "[~@3 [d3,c4], a2@2 c3 ~, ~@4 e3@13 ~@15, ~@8 g3@9 ~@3 g3@12, ~@6 b3@3 ~@7]/2", U: "b3@3 d4@2 b3@3 a3@3 g3@2 e3@3",
  V: "e3", W: "f#3", X: "g3", Y: "b2 a2", Z: "f#3@15 ~", AA: "g3@15 ~", AB: "b2 g3", AC: "b2@8 a2@7 ~", AD: "c3",
  AE: "[e3@31 ~]/2", AF: "c3@2 c3 ~ c3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", AG: "b2@2 b2 ~ b2 ~ b2@2 b2 ~ b2 ~ b2 ~ b2@2",
  AH: "a2 ~ a2@3 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", AI: "g2 ~ g2 ~ g2 ~ g2@2 g2@2 a2 ~ b2@3 ~",
  AJ: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", AK: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2@2",
  AL: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", AM: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", AN: "[d3,d4]@13 ~@3",
  AO: "[~@6 a3@6 ~@2 b2 ~@7 [g3,d4]@8 g3@6 g3@2 [g3,d4]@2 [g3,d4]@2 ~ [g3,d4]@2 [g3,d4]@2 ~, b2@7 ~ c3@7 c3@8 ~, ~@6 d4@11 ~@13 d4@8 ~@10, ~@6 g3@5 ~@13]/3", // G5
  AP: "[g3,c4,c5] ~ [g3,c4,c5] ~ [g3,c4,c5] ~ [g3,c4,c5] ~", AQ: "[g3,d4,d5] ~ [g3,d4,d5] ~ [g3,d4,d5] ~ [g3,d4,d5] ~",
  AR: "[~@24 [d3,c4]@2 ~ [d3,c4]@2 ~ [d3,c4]@2, a2@2 c3 ~, ~@4 e3@13 ~@15, ~@8 g3@9 ~@3 g3@12, ~@6 b3@3 ~@7]/2", // D7
  AS: "[d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@2", AT: "[d3,g3,d4]/2",
})).s("gm_distortion_guitar").gain(0.31).pan(0.7)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@104 A@2 B C D@2 E@2 ~@44>".pickRestart({
  A: "g3@5 e3 g3 e3", B: "g3@3 f#3 f#3@3 e3", C: "e3 d3 g2 a2", D: "[c3@2 d3 e3 ~ g3 ~ b3@2 g3@7]/2",
  E: "[e3@2 g3 g3@2 d3 e3 c4@2 b3@2 [d3,g3]@5]/2", // G5
})).s("gm_overdriven_guitar").gain(0.62).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@4 B C D@5 E F@3 G F@3 G F@3 G F@3 G H@2 D@2 H@2 D@2 I@2 A@2 J@2 K@2 J K@2 L F@3 G F@3 G F@3 G F@3 G H@2 D@2 H@2
  D@2 I@2 A M J@2 K@2 J K N O P@3 F P@3 F P@3 F P H Q R G@3 S G@3 F I@2 A@3 T F@3 G F@3 G F@2 U D F V D U I@2 A T J@2
  K@2 J K@2 W F@2 G F@3 U Q ~@2
>`.pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~@2 x", C: "x!2 ~ x!2 ~@3", D: "x ~@2 x!2 ~@3", E: "x ~@2 x!3 ~ x", F: "x!2",
  G: "x ~@3 x!2 ~@2", H: "x ~@2 x ~@4", I: "x ~@2 x ~ x ~@2", J: "x ~@2 x ~@3 x!2 ~ x ~@5", K: "x ~@2 x ~@4 x ~ x ~@5",
  L: "x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2", M: "x ~ x ~ x ~ x!2", N: "x ~@2 x ~@4 x ~ x ~@3 x ~",
  O: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", P: "x!2 ~@2", Q: "x", R: "~@5 x ~@2", S: "x ~@3 x!2 ~ x",
  T: "x ~@3 x ~@3 x ~@2 x ~ x ~@2", U: "x ~@2 x!3 ~@2", V: "x ~@3 x ~@2 x", W: "x!2 ~@2 x!2 ~@2",
})).gain(0.79)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B C D E@7 F E@15 G E@7 G E@2 H D E@2 I@2 E I@2 J E@15 G E@7 G E@2 K L E@2 I@2 E I@2 M N@7 O N@6 ~ P E@7 Q E@2
  D@3 R E@7 G E@3 S E@6 D R E@2 I@2 E I@2 G E@3 T E@2 U ~@3
>`.pickRestart({
  A: "x", B: "~@11 x ~ x ~ x", C: "x!3 ~ x!12", D: "x!16", E: "~ x ~ x", F: "~@4 x ~@7 x!2 ~@2", G: "~@4 x ~@7 x!4",
  H: "x ~ x ~ x!12", I: "~@4 x ~@2 x ~@4 x ~@3", J: "~@4 x ~@3 x ~@2 x ~ x ~@2", K: "x!8", L: "x!7 ~",
  M: "~@2 x!2 ~@12", N: "~ x", O: "~@7 x!2 ~@7", P: "~@3 x", Q: "~@4 x ~@5 x!2 ~@4", R: "x!9 ~@2 x ~ x ~@2",
  S: "~@4 x ~@7 x!3 ~", T: "~@2 x ~@2 x!2 ~", U: "~ x!3",
})).gain(0.79)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@4 [~ x!15] [x!11 ~ x ~ x ~] [~@3 x ~@12] ~@35 [~ x ~ x ~@12] ~@113>").gain(0.47)

// drums · low tom
const low_tom = s("lt").struct("<~@87 [~@11 x ~ x ~@2] ~@7 [~@3 x] ~@5 x ~@54>").gain(0.79)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@25 A ~@61 B ~@3 C ~@3 D ~@4 E ~@10 E ~@13 D ~ F ~ D ~@17 F ~ F ~@6>".pickRestart({
  A: "x", B: "~@8 x ~@2 x ~@4", C: "~@6 x!2", D: "~@5 x ~@2", E: "~@14 x!2", F: "~@7 x",
})).gain(0.79)

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

// drums · high tom
const high_tom = s("ht").struct("<~@24 A ~@62 B ~@23 C ~@15 D ~@19 D ~@8>".pickRestart({
  A: "~@14 x!2", B: "~@5 x ~@2 x ~@7", C: "~@12 x!2 ~@2", D: "~@5 x ~@2",
})).gain(0.79)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A B ~@2 A ~@3 A@2 ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@2 A ~@3
  A ~@3 A ~@3 A ~@2 A@2 ~@2 C A ~@2 D A ~@2 C A C A E A ~@2 F A ~@2 C A ~@4 G A ~@3 A ~@3 A F A ~ A F A ~ A ~@3 A ~@3 A
  ~@3 A F A F A F A@2 ~@2
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x", D: "x!2", E: "~@3 x", F: "~@7 x", G: "~@8 x ~@2 x ~ x ~@2",
})).gain(0.71)

// drums · ride
const ride = s("rd").struct("<~@8 A@7 B ~@28 C@4 A@3 D ~@28 C@4 A@3 ~@12 E ~@4 C@8 ~@25 F C@4 A@3 B ~@10>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!4", D: "x ~ x ~ x ~ x ~ x!2 ~@3 x ~@2", E: "x", F: "~@8 x ~@2 x ~ x ~@2",
})).gain(0.71)

stack(
  bass, overdriven_guitar, overdriven_guitar_soft, electric_guitar_clean, distortion_guitar, overdriven_guitar_2, kick,
  snare, snare_soft, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by LIGABUE