Strudelify
Il volo cover art

1995 · Spirito DiVino

Il volo

Zucchero

KeyF♯ majorTempo75 bpm
0:00/0:00
// Il volo — Zucchero
// 75 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 17, 4/4 at bar 17, 2/4 at bar 36, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "#Converge" pad sweep (copy of ch 8 "#Shwimmer" pad sweep)
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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.

// other · piano · "#A.Piano"
const piano = note("<A@8 B@4 ~@12 C D C E C D F ~@48>".pickRestart({
  A: "[f#4@11 ~ b4@2 a#4@10 ~@4 d#5@2 c#5@10 ~@4 b4@2 a#4@10 ~@4 d#5@2 c#5@10 ~@4 b4@2 a#4@10 ~@4 d#5@2 c#5@10 ~@4 b4@2 a#4@10 ~@4 g#4@2 f#4@2]/8",
  B: "[~@6 b4 a#4@5 ~@2 d#5 c#5@5 ~@2 b4 f#5@5 ~@4]/4", C: "~@2 b4 a#4@5", D: "~@2 d#5 c#5@5", E: "~@2 g#4 f#4@5",
  F: "~@2 b4 f#5@5",
})).s("gm_piano").gain(0.21)

// bass · synth bass 2 · "#SH101 Ba"
const bass = note(`<
  ~@4 A B A B A B A C D C E@2 F G H I J G K L M N M N M N O P Q P R S T U V S T U W S T U X@2 W ~@30
>`.pickRestart({
  A: "f#2@5 ~ f#2@2 e2@6 c#2@2", B: "f#2@5 ~ f#2@2 e2@4 c#2@4", C: "f#1@5 ~ b1 c#2 d2@5 ~ d2@2", D: "e2@5 ~ e2@2 b1@8",
  E: "[e2@5 ~ e2@2 b1@15 ~ f#1@5 ~ f#1@2]/2", F: "e1@7 ~ b1@5 ~ b1@2", G: "a#1@5 ~ a#1@2 c#2@5 ~ c#2@2",
  H: "g#1@5 ~ g#1@2 a#1@3 ~ a#1@2 ~ g#1", I: "a#1 g#1 a#1@2 c#2@3 ~ f#1@5 ~ f#1@2", J: "e1@5 ~ e1@2 b1@5 ~ b1@2",
  K: "g#1@5 ~ g#1@2 d#2@3 ~ d#2@2 ~ c#2", L: "d#2 c#2 d#2@2 f#2@3 ~ f#2@5 ~ f#2@2", M: "e2@6 c#2@2 f#2@5 ~ f#2@2",
  N: "e2@4 c#2@4 f#2@5 ~ f#2@2", O: "e2@6 c#2@2 f#1@5 ~ b1 c#2", P: "d2@5 ~ d2@2 e2@5 ~ e2@2",
  Q: "b1@5 ~ a1@2 f#1@5 ~ b1 c#2", R: "b1@15 ~", S: "f#1@5 ~ f#1@2 e1@5 ~ e1@2", T: "b1@5 ~ b1@2 a#1@5 ~ a#1@2",
  U: "c#2@5 ~ c#2@2 g#1@5 ~ g#1@2", V: "a#1@3 ~ a#1@2 ~ g#1 a#1 g#1 a#1@2 c#2@3 ~",
  W: "d#2@3 ~ d#2@2 ~ c#2 d#2 c#2 d#2@2 f#2@3 ~", X: "d#2@3 ~ d#2@2 ~ c#2 d#2 c#2 d#2@2 c#2@3 ~",
})).s("gm_synth_bass_2").gain(0.3)

// bass · electric bass finger · "Fing.Bass"
const bass_2 = note("<~@59 A B C D A B C E A B C E A B C E F ~@3>".pickRestart({
  A: "f#1@5 ~ f#1@2 e1@5 ~ e1@2", B: "b1@5 ~ b1@2 a#1@5 ~ a#1@2", C: "c#2@5 ~ c#2@2 g#1@5 ~ g#1@2",
  D: "a#1@3 ~ a#1@2 ~ g#1 a#1 g#1 a#1@2 c#2@3 ~", E: "d#2@3 ~ d#2@2 ~ c#2 d#2 c#2 d#2@2 f#2@3 ~", F: "f#1",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · acoustic guitar steel · "St.Str.Gt"
const acoustic_guitar_steel = note(`<
  ~@15 A B C D E B C D F ~@11 G H I J G H I J G H I J@3 ~@10 G H I J G H I J G H I J G H I J ~@4
>`.pickRestart({
  A: "~@8 [f#3,a#3]@2 [f#3,a#3]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4] [a#3,c#4,f#4], ~@2 [c#3,c#4,f#4] [c#3,f#4]", // F# F#5
  B: "[e3,g#3,b3,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [b3,e4] [f#3,b3]@2 [f#3,b3]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] [b3,d#4,f#4], ~ b2 [b2,d#4,f#4] [b2,f#4]", // E E5 B5 B B5
  C: "[f3,a#3,c#4,f4]!2 [f3,a#3,c#4,f4]@2 [f3,a#3,c#4,f4]@2 [f3,a#3,c#4,f4] [c#4,f4] [g#3,c#4]@2 [g#3,c#4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4] [c#4,f4,g#4], ~ a#2 [c#3,f4,g#4] [c#3,g#4]", // A#m C# C#5 C# C#5
  D: "[g#3,c4,d#4] [g#3,c4,d#4,g#4] [g#3,c4,d#4,g#4]@2 [g#3,c4,d#4,g#4]@2 [g#3,c4,d#4,g#4] [d#4,g#4] [d#3,a#3]@2 [d#3,a#3]@2 [d#3,a#3,d#4]@2 [d#3,a#3,d#4] [c#3,g#3,c#4,g4], ~ d#3 [a#2,d#4,g4] [a#2,g4]", // G# G#5 D#5 C# D#
  E: "[d#3,a#3,d#4,g4] [c#3,g#3,c#4,g4] [d#3,a#3,d#4,g4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [f#3,a#3]@2 [f#3,a#3]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4] [a#3,c#4,f#4], ~ c#3 [c#3,c#4,f#4] [c#3,f#4]", // D# C# D# C# F# F#5
  F: "[d#3,a#3,d#4,g4] [c#3,g#3,c#4,g4] [d#3,a#3,d#4,g4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 ~@8, ~ c#3 ~@2", // D# C# D# C#
  G: "[f#3,a#3]@2 [f#3,a#3]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4] [a#3,c#4,f#4] [e3,g#3,b3,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [b3,e4], [c#3,c#4,f#4] [c#3,f#4] ~ b2", // F# E E5 F#5
  H: "[f#3,b3]@2 [f#3,b3]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4] [b3,d#4,f#4] [f3,a#3,c#4,f4]!2 [f3,a#3,c#4,f4]@2 [f3,a#3,c#4,f4]@2 [f3,a#3,c#4,f4] [c#4,f4], [b2,d#4,f#4] [b2,f#4] ~ a#2", // B5 B A#m C# B B5
  I: "[g#3,c#4]@2 [g#3,c#4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4] [c#4,f4,g#4] [g#3,c4,d#4] [g#3,c4,d#4,g#4] [g#3,c4,d#4,g#4]@2 [g#3,c4,d#4,g#4]@2 [g#3,c4,d#4,g#4] [d#4,g#4], [c#3,f4,g#4] [c#3,g#4] ~ d#3", // C#5 C# G# G#5 C# C#5
  J: "[d#3,a#3]@2 [d#3,a#3]@2 [d#3,a#3,d#4]@2 [d#3,a#3,d#4] [c#3,g#3,c#4,f4] [d#3,a#3,d#4,g4] [c#3,g#3,c#4,f4] [d#3,a#3,d#4,g4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2, [a#2,d#4,g4] [a#2,g4] ~ c#3", // D#5 C# D# C# D# C# D#
})).s("gm_acoustic_guitar_steel").gain(0.14).pan(0.7)

// chords · pad warm · "#Soft Pad"
const pad_warm = note("<~@4 A B A B A B A C@5 ~@7 D E F E F E F G@5 ~@13 H I@8 J@2 ~@20>".pickRestart({
  A: "[f#3,a#3,c#4] [e3,g#3,b3]", B: "[f#3,a#3,c#4]@2 e3 d#4, ~ [g#3,b3]",
  C: "[a#3 a3 g#3 e3 a#3 a3 g#3 [e3,f#3]@2 ~, c#4@3 f#3@3 b3@3 ~, f#3@2 b3@2 c#4@3 ~@3]/5", D: "~ [f#3,a#3,c#4]",
  E: "[e3,g#3,b3] [f#3,a#3,c#4]", F: "e3 d#4 [f#3,a#3,c#4]@2, [g#3,b3] ~",
  G: "[[e3,g#3,b3] a#3 a3 g#3 e3 a#3 a3 g#3 [e3,f#3]@2, ~ c#4@3 f#3@3 b3@3, ~ f#3@2 b3@2 c#4@3 ~@2]/5", H: "~@15 b3",
  I: "[d#4@15 ~ a#3@15 ~ d#4@15 ~ a#3@15 ~ d#4@15 ~ a#3@15 ~ d#4@15 ~ a#3@15 b3, f#2, ~@15 d#4@16 b3@16 d#4@16 b3@16 d#4@16 b3@16 d#4@16 ~]/8",
  J: "[~ b3, ~@15 c#4@16 ~]/2",
})).s("gm_pad_warm").gain(0.2)

// chords · pad warm · "#Soft Pad" · soft notes
const pad_warm_soft = note("<~@48 A@2 B@6 C@2 D ~@20>".pickRestart({
  A: "[~@15 f#3@16 ~]/2", B: "[f#3@15 f#3@16 ~]/2", C: "[f#3@15 ~ d#4@16, ~@15 f#3@16 ~]/2", D: "f#4",
})).s("gm_pad_warm").gain(0.1)

// chords · rock organ · "#Rtr.Orga"
const rock_organ = note("<~@11 A B C D@2 ~@14 E@5 ~@44>".pickRestart({
  A: "a#4 a4, [c#5,f#5]", B: "[e5,g#5] [f#4,e5], b4", C: "[a#4,f#5] [a4,f#5], c#5",
  D: "[[e5,g#5] [f#4,e5]@2 ~, b4@3 ~]/2", // E F#7
  E: "[~ a#4 a4 [e5,g#5] [f#4,e5] [a#4,f#5] [a4,f#5] [e5,g#5] [f#4,e5]@2, ~ [c#5,f#5]@2 b4@2 c#5@2 b4@3]/5", // E F#7 D#m D E F#7 F#5
})).s("gm_rock_organ").gain(0.11)

// other · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note("<~@43 A@2 B@4 ~@18 A@2 C@2 A@2 C@2 ~@4>".pickRestart({
  A: "[[a#3,a#4]@2 [b3,b4] [f#4,f#5]@3 [f4,f5]@2]/2", B: "[[g#4,g#5]@3 [a#4,a#5]@13]/4",
  C: "[[g#4,g#5]@3 [a#4,a#5]@5]/2", // G# A#
})).s("gm_string_ensemble_1").gain(0.35)

// chords · electric guitar clean · "#Chrs.Gtr"
const electric_guitar_clean = note("<A B C D@2 E F E F E F G H G I ~@8 J K L K L K L M N O N P ~@44>".pickRestart({
  A: "~@2 c#4@4 b3 ~, f#3@3 ~", B: "f#3@5 ~@2 f#4 d#4@4 c#4@2 f#3@2, ~@3 c#4 ~@4",
  C: "f#2@5 ~@2 f#4 d#4@4 b3@2 a#3@2, ~@3 c#4 ~@4",
  D: "[f#3@5 ~@2 f#4 d#4@4 c#4@2 f#3@4 a#3@2 c#4@2 ~ f#4 ~@2 g#3@2 b3@2 a#3@2, ~@3 c#4 ~@7 c#4 e3@2 ~@2]/2",
  E: "~@2 a#3@2 c#4@2 ~ f#4 ~@3 c#4 f#3 g3 [f#3,g#3]@2, f#3@5 ~ c#4@2 e3@4 ~@4, ~@5 a#3 ~@2", // F#sus2
  F: "~@2 a#3@2 c#4@2 ~ f#4 ~@2 g#3@2 b3@2 a#3@2, f#3@5 ~ c#4@2 e3@4 ~@4",
  G: "~@2 a#3@2 c#4@2 ~ f#4 ~@2 a3@2 f#4@2 c#4@2, f#3@2 ~ a#3 d3@2 ~@2", H: "~ b3 g#4 e4 ~ e3 ~ f#4, e3 ~ b3!2",
  I: "~ b3 g#4 e4 b3@2 ~@2, e3 ~@3", J: "~@10 a#3@2 c#4@2 ~ f#4, ~@8 f#3@5 ~ c#4@2",
  K: "~@2 g#3@2 b3@2 a#3@2 ~@2 a#3@2 c#4@2 ~ f#4, e3@4 ~@4 f#3@5 ~ c#4@2",
  L: "~@3 c#4 f#3 g3 [f#3,g#3]@2 ~@2 a#3@2 c#4@2 ~ f#4, e3@4 ~@4 f#3@5 ~@3, ~ a#3 ~@5 c#4", // F#sus2
  M: "~@2 g#3@2 b3@2 a#3@2 ~@2 a#3@2 c#4@2 ~ f#4, e3@2 ~@2 f#3@2 ~ a#3", N: "~ a3 f#4 c#4 ~ b3 g#4 e4, d3 ~ e3 ~",
  O: "~@2 e3@2 ~@2 f#4@2 ~@2 a#3@2 c#4@2 ~ f#4, b3@2 b3@2 f#3@2 ~ a#3", P: "b3 ~@3",
})).s("gm_electric_guitar_clean").gain(0.25)

// chords · electric guitar clean · "#Chrs.Gtr" · soft notes
const electric_guitar_clean_2 = note("<A B@3 C B C B C B C D E D E ~@8 F G F G F G F H I J I ~@45>".pickRestart({
  A: "~@7 a#3", B: "~@5 a#3@2 ~@9", C: "~@5 a#3@2 ~@4 c#4 ~@4", D: "~@5 f#3@2 ~@6 a3@2 ~", E: "~@5 b3@2 ~@9",
  F: "~@13 a#3@2 ~", G: "~@3 c#4 ~@9 a#3@2 ~", H: "~@3 c#4 ~@9 f#3@2 ~", I: "~@5 a3@2 ~@6 b3@2 ~", J: "~@13 f#3@2 ~",
})).s("gm_electric_guitar_clean").gain(0.15)

// chords · pad metallic · "#Pnnr.Pad"
const pad_metallic = note("<~@50 A@2 B@7 ~@20>".pickRestart({
  A: "[~@3 c#4, ~@15 f#4@17]/2",
  B: "[~@16 d#4@8 c#4@4 d#4@19 ~@12 f#5@20 [f#4,b4]@16 [b3,c#4,f#4,a#4]@17, ~@15 g#4@32 c#5@34 ~@31]/7", // B5 F#
})).s("gm_pad_metallic").gain(0.15)

// other · pad sweep · "#Shwimmer"
const pad_sweep = note("<A B A B C ~@6 D E D F@2 ~@14 G H I H J ~@44>".pickRestart({
  A: "f#3@6 b3 a#3", B: "f#3@8 d#4@3 c#4@3 a#3@2", C: "f#3@3 ~", D: "[c#4,c#5] [b3,b4]", E: "[b3,b4] [g#3,g#4]",
  F: "[[b3,b4] [f#3,f#4]@2 ~]/2", G: "~ [c#4,c#5]", H: "[b3,b4]!2", I: "[g#3,g#4] [c#4,c#5]", J: "[f#3,f#4]",
})).s("gm_pad_sweep").gain(0.3)

// chords · pad choir · "SpaceVoic"
const pad_choir = note("<~@56 A@3 ~@20>".pickRestart({
  A: "[~@6 b4@10 ~@3 c#5@5, ~ f#4@3, ~@2 a#4]/3",
})).s("gm_pad_choir").gain(0.2)

// chords · epiano1 · "#St.Sft.E" · F#
const epiano1 = note(`<
  [~@2 c#4@2 ~@2 b3 a#3, a#4, f#2@10 ~ f#2@5, c#4 ~ e4@2, ~ c#3@7]
  [~@4 c#4@4 ~@4 f#3 g#3 f#3@2, [f#2,a#4], c#4 ~ e4@2, ~ c#3@7]
  [~@2 c#4@2 ~@2 b3 a#3, a#4, f#2@10 ~ f#2@5, c#4 ~ e4@2, ~ c#3@7]
  [~@4 c#4@4 ~@4 f#3 g#3 f#3@2, [f#2,a#4], c#4 ~ e4@2, ~ c#3@7]
  ~@75
>`).s("gm_epiano1").gain(0.28)

// chords · string ensemble 1 · "#Strings"
const string_ensemble_1_2 = note("<~@15 A@8 B ~@11 C@8 D@6 ~@10 C@16 E@4>".pickRestart({
  A: "[~@16 g#3@7 ~ b3@7 ~ [a#3,f4]@7 f4@8 ~ c4@7 ~ a#3@11 ~ g#3@4 ~@8 g#3@7 ~ b3@7 ~ [a#3,f4]@7 f4@8 ~ c4@7 ~ a#3@8, ~@8 f#4@23 f3@9 ~@7 d#4@21 ~@4 f#4@23 f3@9 ~@7 d#4@17, ~@8 [f#3,a#3,c#4]@9 ~@6 [f#3,d#4]@9 ~@7 [g#3,g#4]@17 ~@23 [e3,b3]@9 ~@7 c#4@17 ~@7 [g3,g4]@9, ~@15 [e3,b3]@9 ~@7 c#4@17 ~@7 [g3,g4]@12 [f3,c#4,f4]@5 [f#3,a#3,c#4]@9 ~@6 [f#3,d#4]@9 ~@7 [g#3,g#4]@17 ~@8]/8", // A#5 F# D#m G# E5 G E5 G …
  B: "~ g#3 ~@2, ~@3 [f3,c#4,f4]@5 ~@8", // C#
  C: "[~@8 g#3@7 ~ b3@7 ~ [a#3,f4]@7 f4@8 ~ c4@7 ~ a#3@11 ~ g#3@4, f#4@23 f3@9 ~@7 d#4@21 ~@4, [f#3,a#3,c#4]@9 ~@6 [f#3,d#4]@9 ~@7 [g#3,g#4]@17 ~@16, ~@7 [e3,b3]@9 ~@7 c#4@17 ~@7 [g3,g4]@12 [f3,c#4,f4]@5]/4", // A#5 F# D#m G# E5 G C#
  D: "[~@8 g#3@7 ~ b3@7 ~ [a#3,f4]@7 f4@8 ~ c4@7 ~ a#3@11 ~ g#3@3 ~ a#3@32, f#4@23 f3@9 ~@7 d#4@21 ~@36, [f#3,a#3,c#4]@9 ~@6 [f#3,d#4]@9 ~@7 [g#3,g#4]@17 ~@15 [g3,d#4,g4]@32 ~, ~@7 [e3,b3]@9 ~@7 c#4@17 ~@7 [g3,g4]@12 [f3,c#4,f4]@5 ~@32]/6", // A#5 F# D#m G# Cm E5 G C#
  E: "[~@8 g#3@7 ~ b3@7 ~ [a#3,f4]@7 [c#3,f4]@8 ~ c4@7 ~ a#3@11 ~ g#3@4, f#4@23 [a#2,f3]@9 ~@7 d#4@21 ~@4, [f#3,a#3,c#4]@9 ~@6 [b2,f#3,d#4]@9 ~@7 [g#3,g#4]@16 [d#3,g3,g4]@13 ~@4, ~@7 [e3,b3]@9 ~@7 c#4@16 g#2@9 ~@11 [f3,c#4,f4]@5]/4", // A#5 C# A#5 F# B G# D# E5 …
})).s("gm_string_ensemble_1").gain(0.34)

// other · synth brass 1 · "#Oct.Bras"
const synth_brass_1 = note("<A B A B A B A B A B C D ~@12 E F E F E F G ~@48>".pickRestart({
  A: "~@6 b4 a#4", B: "~@6 g#4 f#4", C: "~@6 b4 ~", D: "a#4 ~@7", E: "~@2 b4 a#4 ~@4", F: "~@2 g#4 f#4 ~@4",
  G: "~@2 b4 ~ a#4 ~@3",
})).s("gm_synth_brass_1").gain(0.05)

// bass · synth bass 2 · "#Seq.Bass" · B5
const bass_3 = note(`<
  ~@14
  [~@8 [f#3,b3,f#4]@2 [f#3,b3,f#4] [f#3,b3,f#4]@2 [f#3,b3,f#4] [f#3,b3,f#4]@2]
  [[f#3,b3,f#4] [b3,f#4]@2 [f#3,b3,f#4] [f#3,b3,f#4]@2 ~@10, ~ f#3 ~@14]
  ~@18
  [[f#3,b3,f#4]@2 [f#3,b3,f#4] [f#3,b3,f#4]@2 [f#3,b3,f#4] [f#3,b3,f#4]@2 [f#3,b3,f#4] [b3,f#4]@2 [f#3,b3,f#4] [f#3,b3,f#4]@2 ~@2, ~@9 f#3 ~@6]
  ~@44
>`).s("gm_synth_bass_2").gain(0.04)

// drums · kick
const kick = s("bd").struct("<A@14 B C A@18 D A@12 D ~@10 E A@11 F A@4 D ~@3>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x!2 ~@3", C: "~@4 x ~@2 x", D: "x", E: "~@7 x", F: "x ~@2 x ~@2 x ~ x ~@5 x ~",
})).gain(0.4)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@47 [~ x ~@3 x ~@3 x ~@3 x ~@2]!12 ~@20>").gain(0.16)

// drums · rim
const rim = s("rim").struct("<~@23 [~@3 x] [~ x ~ x]!6 [~ x ~@2] ~@16 [~@2 x ~@2 x ~@10]!12 ~@20>").gain(0.32)

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

// drums · low tom
const low_tom = s("lt").struct("<~@66 [~@7 x] ~@3 [~@7 x] ~@8>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@23 [~@5 x!3] [x!8]!3 [x!4 ~ x!3] [x!8] [x!4 ~ x!3] [x ~ x!2 ~@4] ~@48>").gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@47 [~@2 x ~@2 x ~@10]!12 ~@20>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@66 [~@9 x!2 ~ x!2 ~@2] ~@7 [~@11 x!2 ~@3] ~@4>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@30 [~ x ~@3 x!3] [x!8] [x!4 ~ x!3] [x!8] ~@45>").gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@58 [~@10 x!2 ~@4] ~@7 [~@7 x ~@8] ~@3 [~@12 x!2 ~@2] ~@8>").gain(0.56)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@49 x!10 ~@20>").gain(0.24)
// … 49 more lines

More by Zucchero