Strudelify
Ancora in piedi cover art

1993 · Sopravvissuti e Sopravviventi

Ancora in piedi

LIGABUE

KeyA majorTempo118 bpm
0:00/0:00
// Ancora in piedi — LIGABUE
// 118 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): ChitHeav.
// note: The whole transcription plays 13 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(118/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note("<~@46 A B C D ~@37 A B E F ~@32>".pickRestart({
  A: "[e3,d4,e4,g#4,b4]@3 [e3,d4,e4,g#4,b4] [e3,d4,e4,g#4,b4]@2 ~@4 [e3,d4,e4,g#4,b4]@5 ~", // E7
  B: "[a2,c#4,e4,g4,a4]@3 [a2,c#4,e4,g4,b4] [a2,c#4,e4,g4,b4]@3 ~@3 [a2,c#4,e4,g4,b4]@3 ~ d3@2", // A7
  C: "[d2,d3,d4,e4,a4,b4]@3 [d2,d3,d4,e4,a4,b4] [d2,d3,d4,e4,a4,b4]@2 ~@2 [e3,d4,g4,b4]@3 [a2,e3,a3,c#4,g4,b4]@4 ~, ~@4 [a2,a3] ~@3", // Dsus2 Em7 A7 A
  D: "[e2,d4,e4,g#4,b4]@2 ~ [e2,e3,d4,e4,g#4,b4] [e2,e3,d4,e4,g#4,b4]@2 ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] [d5,e5]@2 [g4,d5,e5,g#5]@2 g#4 ~, ~@10 [a4,g#5] ~@5", // E7 Dsus2 E7 Amaj7
  E: "[d2,d3,d4,e4,a4,b4]@3 [d2,d3,d4,e4,a4,b4] [d2,d3,d4,e4,a4,b4]@2 ~@2 [e3,d4,e4,g4,a4]@3 [a2,e3,a3,c#4,g4,b4]@4 ~, ~@4 [a2,a3] ~@3", // Dsus2 Em7 A7 A
  F: "[e2,d4,e4,g#4,b4]@2 ~ [e2,e3,d4,e4,g#4,b4] [e2,e3,d4,e4,g#4,b4]@2 ~ [d#5,g#5] ~ [d5,g#5] ~ [b4,d5]@2 [a4,d5]@2 ~, ~@7 e5@2 ~@2 a#4 ~ e5 ~@2", // E7 G#5 Ddim Bm D5
})).s("gm_piano").gain(0.35).pan(0.3)

// bass · synth bass 2 · "Basso"
const bass = note(`<
  ~@13 A B C D E@3 D F G H G H I H I J K L K M K L K M N O P Q N O P R S T U V N O P W X Y Z Y Z AA AB AC AD K L K M K L
  K M AE AF AG AH AI AF ~@2 N O P AJ N O P R S T U AK N O P AL ~ X AC Z AC Z AC Z AC AD AM@2 ~@6 K L K M K L K AN@2 AO
>`.pickRestart({
  A: "~@7 b1", B: "e2", C: "a1@13 ~ b1@2", D: "d2 a1", E: "[e1@13 ~ d2@15 ~ a1@4 d2@12 a1@2]/3", F: "e1@15 ~",
  G: "e1@2 ~@2 e1@3 ~ a1@3 ~ a1@3 ~", H: "d2@2 ~@2 d2@3 ~ d2@2 ~@2 d2@2 ~@2", I: "e1@2 ~@2 e1@2 ~@2 a1@2 ~@2 a1@3 ~",
  J: "d2@2 ~@2 d2@3 ~ a1@2 ~@2 a1@4", K: "e1@2 e1@2 e1@3 ~@3 b0@6", L: "d2@2 d2@2 d2@3 ~@2 d2@3 b1 ~ d2 e2",
  M: "d2@2 d2@2 d2@3 ~@9", N: "e1@2 e1@2 e1@3 ~@3 e1@6", O: "a1@2 a1@2 a1@3 ~@3 a1@5 ~", P: "d2@2 d2@2 d2@3 ~@3 a1@5 ~",
  Q: "e1@2 e1@2 e1@3 e2@9", R: "e1@2 e1@2 e1@3 ~@3 a1@5 ~", S: "e1@3 e1 e1@3 ~@3 e1@6", T: "a1@3 a1 a1@3 ~@3 a1@5 ~",
  U: "d2@3 d2 d2@3 ~@3 a1@5 ~", V: "e1@2 e1@7 ~ d2@6", W: "e1!4 ~@4", X: "~@3 d2", Y: "e1 ~ e1@4 ~@4 a1@5 ~",
  Z: "d2@2 d2@2 d2@2 ~ d2 ~@2 d2 ~ d2@2 e2@2", AA: "e1@2 e1@3 ~@5 a1@5 ~", AB: "d2@2 d2@2 d2@2 ~ d2 ~@2 d2@2 d2@2 d2 ~",
  AC: "e1@2 e1@3 ~@3 a1@2 a1@4 ~@2", AD: "d2@2 d2 ~ d2@2 ~ d2 a1 ~ a1 ~ a1@4", AE: "b1@5 ~ b1@9 ~",
  AF: "d2@4 ~@2 d2@9 ~", AG: "a1@4 ~@2 a1@9 ~", AH: "e1@2 b1 g#2@5", AI: "b1@4 ~@2 b1@7 ~@3",
  AJ: "e1@2 e1@2 e1@3 e2 ~ e2 e2@2 d2@3 ~", AK: "e1@2 e1@3 ~ e2@4 e2@2 d2@4", AL: "~ b1 a1 e1 ~@4", AM: "e1/2",
  AN: "d2!6 ~@2", AO: "e1 ~@3",
})).s("gm_synth_bass_2").gain(0.72)

// chords · distortion guitar · "ChitHeav"
const distortion_guitar = note(`<
  A@3 B@3 ~ C@4 D@2 E F G ~ H@3 I J K L M L M L K N O P Q R S P S T U V W X Y V Z AA AB AC AD AE AF AG AH AI AJ AK AL AM
  AN AO AL AM AP O P Q R S P S T AQ AR AS@2 AT AR AU AV U V W X Y V Z AA AB AC AD AE AF AG AH AW AX@2 AK AL AM AN AO AL
  AM AP AY@8 AZ P Q R S P S BA@2 BB
>`.pickRestart({
  A: "[~@10 a2@2 d3@2 ~@2 e2@25 ~ a2@2 d3@2 e3@2, ~@14 e3@25 ~@9]/3", B: "[~ d4 f#4 a4 g#4 g#4@2 e4@17, f#3@7 ~@17]/3",
  C: "[~@10 e2@2 g2@2 e2@26 ~@2 a4@2 d5@2 e5@16 d5 c#5]/4", D: "[d5@2 c#5@4 a4@24 [g4,g#4] [f4,f#4]]/2",
  E: "[d#4,e4] d4 ~@7 [b3,c#4] [e4,a4]@2 g#4@2 e4@2", F: "b3@7 d5", G: "g5@2 e5@2 f#5@2 d5@7 [a4,b4,c5] g4 ~",
  H: "[~@14 [d3,a3]@16 [a2,a3]@4 [d3,a3]@12 b3 a3]/3", I: "e4@6 b3 a3 d4@6 b3 a3", J: "e4@2 d4@5 ~",
  K: "[e3,b3,g#4,b4] [a3,c#4,e4,a4], e4@3 ~@5", L: "[d3,a3,d4,e4,a4]@15 ~", M: "[e3,b3,e4,g#4,b4] [a3,c#4,e4,a4]",
  N: "[d3,a3,d4,e4,a4] [a2,a3,c#4,e4,a4]", O: "e4@2 b3@2 e4@2 b3 ~ f#4@2 b3 a4@2 ~ g#4@2, ~@7 b3@2 ~@4 b3@2 ~",
  P: "[d3,a3]@4 [d3,a3]@2 b2!2 g#3 d3!2 a2 b2 e3@3", // D5
  Q: "b3@2 b3 ~@3 b3 ~@4 a4@2 ~ g#4 a3, e4@3 b3@3 ~ b3@2 ~ b3@2 ~ b3@2 ~, ~@4 e4@4 f#4@5 ~@3",
  R: "[d3,a3]@4 [d3,a3]@2 a2!2 g#3 d3!2 a2 e3@4", // D5
  S: "b3@2 b3@2 ~@2 b3 ~@4 a4@2 ~ g#4 a3, e4@4 e4@3 b3@2 ~ b3@2 ~ b3@2 ~, ~@8 f#4@5 ~@3",
  T: "[d3,a3]@2 a2@2 [d3,a3]@2 a2!2 g#3 d3!2 a2 e3@4", U: "e2@6 e3@4 e2@5 ~", V: "a2@3 a3@2 a2@3", W: "d3@4 a2 a2@3",
  X: "e3@6 e4@2 e4@2 e4@3 d4 [a3,b3,c4] [f3,g3]", Y: "e2@5 ~ e3@4 e2@6, e3 ~@15", Z: "d3@5 ~ d3@2 a2@7 ~",
  AA: "g3 f#3 e3 d3 b2@3 a2 b2 e3@7", AB: "e3@2 ~ e3 [e3,e4]@2 [d4,g4]@4 e4@6, ~ e4 ~@6",
  AC: "a3@2 ~@2 e4@2 [d4,g4]@4 e4@3 [c4,d4] [g3,a3,b3] [c3,d3,e3,f3], ~ e4 ~@6, ~@3 a3@3 ~@10", AD: "a3@3 a3 a3@4 a3@8",
  AE: "d3 e3 a3 b3 d4@2 a4@4 d4@2 d4@4", AF: "e2@2 e2@2 e2@3 ~@3 e2@6", AG: "a2@2 a2@2 a2@3 ~@3 a2@6",
  AH: "d3@2 d3@2 d3@3 ~@3 a2@5 ~", AI: "e2!4 ~@4", AJ: "~@13 [c3,c4] [a2,b2,a3,b3] [e2,f2,g2,e3,f3,g3], ~@6 [d3,d4] ~",
  AK: "[d2,d3] ~ e3@2 g#3@4 ~@4 c#4@4, e2 ~ a3 ~, ~@10 a2@5 ~", AL: "~ a3 d4 a3@2 a3!2 b3, d3@3 ~",
  AM: "~@4 g#3@4 a3@4 c#4@3 ~, e2@8 a2@7 ~, ~@2 e3@5 ~@9", AN: "~ a4 f#4 d4@2 [d4,f#4] [a3,a4] b3, d3@9 ~ d3@6",
  AO: "~ e3 g#3@2 ~@2 c#4@2, e2 ~ a3 ~, ~@10 a2@5 ~", AP: "~ a3 d4 a3 c#4 a3@3, d3 a2", AQ: "a2@5 ~ a2@9 ~",
  AR: "d3@3 d3@5", AS: "[a2@3 a2@6 f#4 a4 g#4 e4@4]/2", AT: "b2@6 b2@9 ~, f#4 ~",
  AU: "a2@2 a2@2 a2 ~ a2@2 a2@2 a2@2 a2@3 ~", AV: "a2@2 a2@2 a2 ~ a2@2 a2@2 e4@2 e4@4",
  AW: "a3 g3 e3 d3 b2 a2 e2@2 ~@8", AX: "[~@10 d4@2 g4@16 [d3,d4]@2 [a2,b2,c3,a3,b3,c4] [e2,f2,g2,e3,f3,g3]]/2",
  AY: "[b3@34 b4@6 b4@3 b4@3 b4@2 b4@8 b4@3 a4 g#4@2 e4@24 g#6@6 e5@22 d6@9 ~ [a5,b5,c6] [d5,e5,f5,g5] [f4,g4,a4,b4,c5] [b3,c4,d4,e4], e2@15 ~@17, e3@3 ~@5]/8", // Am Em7 F Cmaj7
  AZ: "e4@2 b3@2 e4@2 b3 ~ f#4@2 b3 a4@2 ~ g#4@2, a3 ~@6 b3@2 ~@4 b3@2 ~",
  BA: "[a3,d4,a4]@2 [a3,d4,a4]@2 [a3,c#4,a4]@2 [a3,d4,a4]@2 [a3,d4,a4]@2 [a3,c#4,a4]@3 ~@3", BB: "[e2,b2,e3,b3,e4] ~@3",
})).s("gm_distortion_guitar").gain(0.3).pan(0.1)

// chords · acoustic guitar steel · "ChitAcco" · E5 D E5
const acoustic_guitar_steel = note("<~@109 [[e3,b3]@7 ~ [e3,b3]@7 ~] [[d3,f#3]] [[e3,b3]@7 ~ [e3,b3]@7 ~] d3 ~@10>")
  .s("gm_acoustic_guitar_steel").gain(0.45).pan(0)

// chords · acoustic guitar steel · "ChitAcco" · E A D5 E A Bm7
const acoustic_guitar_steel_2 = note(`<
  ~@109
  [[e4,g#4]@7 ~ [c#4,e4,a4]@7 ~]
  [~ e4@15, [a3,d4]@15 ~]
  [[e4,g#4]@7 ~ [c#4,e4,a4]@5 ~@3]
  [[a3,b3,d4,f#4]]
  ~@10
>`).s("gm_acoustic_guitar_steel").gain(0.45).pan(0.8)

// other · distortion guitar · "ChitHeav"
const distortion_guitar_2 = note("<~@45 [e2@7 ~@9] ~@28 [e3@15 ~] ~@11 [e2@7 ~@9] ~@36>")
  .s("gm_distortion_guitar").gain(0.25).pan(0.8)

// chords · rock organ · "Organo"
const rock_organ = note(`<
  ~@29 A B C B D B D B E ~@11 F G H I J K L M N O N M N P Q C R S R T R E U@2 V@2 W X Y Z B AA AB AC B AA AB AD ~@3 F AE
  H I J ~ AF AG M N O N M AH AI ~@7 AJ AK AL AM AN AM AN AO AP AQ AR
>`.pickRestart({
  A: "~@14 [g3,a3,b3,c4,d4,e4] [f4,g4,a4,b4,c5]", B: "[g#4,b4,e5]",
  C: "[e4,d5]@13 ~ [a3,b3,c4,c#4,d4] [e4,f4,f#4,g4], a4 ~", D: "[e4,a4,d5]@14 [g3,a3,b3,c4,d4] [e4,f4,g4,a4,b4]",
  E: "[e4,a4,d5]", F: "~@10 d4 ~ d4@2 d#4 [e4,f4,g4,a4]",
  G: "[b4,c5,d5] ~@3 e5@4 b4@2 e5@2 [c5,d5] [f4,g4,a4,b4] [b3,c4,d4,e4] [g3,a3], e5@3 ~@13", // Bm Csus2 G7 Cmaj7 Gsus2
  H: "[a4,e5]@3 ~ [a4,e5]@4 [e4,b4]@2 e5@2 d5 [g4,a4,b4,c5] [c4,d4,e4,f4] [a3,b3], ~@10 a4 ~@5", // A5 E5 Cmaj7 Dm7 Asus2
  I: "[f#4,a4,e5]@4 [f#4,a4,e5]@4 [a4,b4]@2 [f#4,e5]@2 d5 [g4,a4,b4,c5] [c4,d4,e4,f4] ~, g3 ~@9 a4 ~@5", // F#m7 Asus2 F#7 Cmaj7 Dm7
  J: "[b4,d5,e5]@3 [g4,a4,b4,c5] [c4,d4,e4,f4] [a3,b3] g3 ~@9", // E7 Cmaj7 Dm7 Asus2
  K: "~@10 [c4,d4,e4] [f4,g4,a4] [b4,c5,d5] [a4,b4,c5] [d4,e4,f4,g4] [f3,g3,a3,b3,c4]", // C F Bm Am Em7 F
  L: "[g#4,b4,e5] [a4,c#5,e5], [d3,e3] ~@15", // E A Dsus2
  M: "[a4,d5,f#5,a5]@4 [b4,e5,f#5,b5]@3 [a4,d5,f#5,a5] ~@2 [a4,d5,f#5,a5]@2 [a4,a5]@2 [b4,b5]@2, ~@12 [d5,f#5] ~ [e5,f#5] ~", // D Bsus4 D A B D Esus2
  N: "[g#4,b4,e5] [a4,c#5,e5]", // E A
  O: "[a4,d5,f#5]@2 [d5,e5,a5]@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5]@2 [d5,e5,a5]@2 [a4,d5,f#5] ~", // D Dsus2 D Dsus2 D
  P: "[a4,d5,f#5]@4 [b4,d5,f#5]@4 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [d6,d#6] ~@2 b5, ~@12 e6@3 ~", // D Bm A D#maj7
  Q: "[g#4,b4,e5]@15 ~, e6@5 ~@3", R: "[g#4,b4,e5]@15 ~", S: "[e4,d5]@12 ~@2 [g3,a3,b3,c4,d4] [e4,f4,g4,a4,b4], a4 ~",
  T: "[e4,d5]@13 ~ [g3,a3,b3,c4,d4] [e4,f4,g4,a4,b4], a4 ~", U: "[f#4,d5]",
  V: "[a4@11 ~ b4@4, e5, b4@3 ~, ~@11 g#4@5]/2", W: "[f#4,b4,d5]", X: "[f#4,a4,d5]@14 [b3,c4,c#4,d4] [e4,f4,g4,a4,b4]",
  Y: "[a4,b4,d5,e5]@2 [a4,b4,e5] ~ [a4,c#5,e5] ~ [a4,b4,d5,e5] ~ [a4,b4,e5] ~ [a4,c#5,e5]@4 ~@2, c5 ~ d5@2 ~@4 d5@2 ~@6", // Asus4 Asus2 A Asus4 Asus2 A
  Z: "[a4,b4,d5,e5] ~ [a4,b4,d5,e5] ~ [a4,c#5,e5] ~ [a4,b4,d5,e5] ~ [a4,b4,d5,e5] ~ [a4,c#5,e5]@4 ~@2", // Asus4 A Asus4 A
  AA: "[e4,a4,c#5]", AB: "[f#4,a4] [e4,c#5]", AC: "[e4,g#4,b4]", AD: "[e4,g#4,b4]@4 e5@2 ~ e5!2 e5@7",
  AE: "[b4,c5,d5] ~@3 e5@4 b4@2 e5@2 d5 [f4,g4,a4,b4,c5] [c4,d4,e4] [g3,a3,b3], e5@3 ~@13", // Bm F C G
  AF: "~@10 [c4,d4,e4] [f4,g4,a4] [b4,c5,d5] [a4,b4,c5] [e4,f4,g4] [g3,a3,b3,c4,d4]", // C F Bm Am Em G
  AG: "[g#4,b4,e5] [a4,c#5,e5], [d3,e3,f3] ~@15", AH: "[g#4,b4,e5]@4 [g#4,b4,e5]@3 ~ [a4,c#5,e5]@4 [a4,c#5,e5]@2 ~@2",
  AI: "[a4,d5,f#5]@4 [b4,d5,f#5]@4 [a4,c#5,e5] ~ [a4,c#5] ~ a5 ~@3, ~@5 f#5 ~@2", // D Bm A
  AJ: "~@14 [g3,a3,b3,c4,d4] [e4,f4,g4,a4,b4]", AK: "g#4@7 ~ f#4@2 ~ a4@2 ~ g#4@2, [b4,e5], c5 ~@15",
  AL: "[e4,a4,d5]@12 ~@2 [a3,b3,c4,c#4,d4] [e4,f4,f#4,g4]", AM: "~@11 a4@2 ~ g#4@2, [b4,e5], g#4@7 ~, ~@8 f#4@5 ~@3",
  AN: "[e4,a4,d5]@12 ~@2 [g3,a3,b3,c4,d4] [e4,f4,g4,a4,b4]", AO: "g#4@7 ~@4 a4@2 ~ g#4 ~, [b4,e5], ~@8 f#4@5 ~@3",
  AP: "[a4,b4,d5,e5]@2 [a4,b4,e5] ~ [a4,c#5,e5] ~ [a4,b4,d5,e5] ~ [a4,b4,e5] ~ [a4,c#5,e5]@3 ~@3, ~ d5 ~@2 d5 ~@3", // Asus4 Asus2 A Asus4 Asus2 A
  AQ: "[a4,b4,d5,e5] ~ [a4,b4,d5,e5] ~ [a4,c#5,e5] ~ [a4,b4,d5,e5] ~ [a4,b4,d5,e5] ~ [a4,c#5,e5]@3 ~ [d3,e3,f3,g3,a3] [b3,c4,d4,e4,f4,g4,a4]", // Asus4 A Asus4 A Dm Bm7b5
  AR: "[g#4,b4,e5] ~@3, [c5,d5] ~@15", // E Csus2
})).s("gm_rock_organ").gain(0.35).pan(1)

// other · overdriven guitar · "ChitDist"
const overdriven_guitar = note("<~@15 A@3 ~@105>".pickRestart({
  A: "[~@14 b4@4 f#4@4 e4@4 a4@4 g#4@4 e4@11 [c4,d4] [a3,b3] [f3,g3]]/3", // Csus2 Asus2 Fsus2
})).s("gm_overdriven_guitar").gain(0.3).pan(0.9)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@105 [x!4]!8 ~@10>").gain(0.32)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@105 [~@6 x ~@2 x!3 ~ x!3] [~@6 x!2 ~ x!3 ~@4]!6 [~@6 x!2 ~ x!2 ~@5] ~@10>")
  .gain(0.16)

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

// drums · low tom
const low_tom = s("lt").struct("<~@37 A ~@24 A ~@7 B ~@33 A ~@18>".pickRestart({
  A: "~@7 x", B: "~@14 x!2",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@21 A ~@15 B ~@7 C ~@7 D E ~@7 B ~@7 F ~@6 E@2 ~@7 C ~@7 D E@2 ~@7 B ~@11 C ~@3 E@2 ~
>`.pickRestart({
  A: "~@3 x", B: "~@12 x!2 ~@2", C: "~@7 x", D: "~@2 x!4 ~@10", E: "~@2 x ~@2 x ~@2", F: "~@10 x!4 ~@2",
})).gain(0.48)

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

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

// drums · ride
const ride = s("rd").struct("<~@55 A B C A D E F G ~@34 A H C A I J F G ~@18>".pickRestart({
  A: "~ x!7", B: "~ x!2 ~ x ~ x!2", C: "~@2 x ~ x!4", D: "~@2 x!6", E: "~ x!2 ~ x!4", F: "~ x!4 ~ x!2",
  G: "~ x ~ x!2 ~ x ~", H: "~ x!2 ~ x ~@2 x", I: "~@3 x!5", J: "~ x!2 ~ x!2 ~ x",
})).gain(0.4)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@56 A B ~ C D E ~@36 A B ~ C D E ~@19>".pickRestart({
  A: "~@3 x ~ x ~@2", B: "~ x ~ x ~@4", C: "~ x ~@6", D: "~@3 x ~@4", E: "~@5 x ~@2",
})).gain(0.24)
// … 5 more lines

More by LIGABUE