Strudelify

Back 2 U

Zucchero

KeyG majorTempo84 bpm
0:00/0:00
// Back 2 U — Zucchero
// 84 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 16 piano (copy of ch 5 choir aahs)
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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(`<
  ~@18 A B C D E F G H I@3 J I@3 J K L M N K L M O P Q R S P Q R T P U V W P U X Y I@3 Z I@3 AA AB ~@3 AC AD AE ~ AF P
  AG AH AI AJ AK AL AI P AH AM ~@8
>`.pickRestart({
  A: "f2", B: "c2", C: "d2", D: "d2@15 ~", E: "f1 g1@3 g1@3 g1!3 g1@2 g1@2 g1@2",
  F: "f1 g1@2 g1 g1@3 g1!3 g1@2 g1@2 g1@2", G: "f1 g1!3 g1@3 g1!3 g1@2 g1@2 g1@2",
  H: "f1 g1!3 g1@3 g1!3 g1@2 g1 ~ d2 ~", I: "g1!3 g1@2 g1@2 g1!4 g1@2 g1@2 g1", J: "g1!3 g1@2 g1@2 g1!4 g1@2 g1!3",
  K: "f1!2 f1@2 f1@2 f1 f1@2 f1 f1@2 f1@2 f1@2", L: "c2!2 c2@2 c2@2 c2 c2@2 c2 c2@2 c2@2 c2@2",
  M: "d2@2 d2!2 d2@2 d2 d2@2 d2 d2@2 d2@2 d2@2", N: "d2!2 d2@2 d2@2 d2 d2@2 d2 d2@2 [d1,d2]@3 ~",
  O: "d2!2 d2@2 d2@2 d2 d2@2 d2 d2@2 d2@2 a2@2", P: "c2@2 c2@2 c2@2 c2 c2@2 c2 c2@2 c2@2 c2@2",
  Q: "c2@2 c2@2 c2@2 c2 c2@2 c2 c2@2 c2@3 ~", R: "g1@2 g1@2 g1@2 g1 g1@2 g1 g1@4 g1@2",
  S: "g1@2 g1@2 g1@2 g1 g1@2 g1 g1@2 a1@2 b1@2", T: "g1@2 g1@2 g1@3 d2 g2 d2 g2 a2 g2@2 d2@2",
  U: "c2@2 c2@2 c2@2 c2 c2@2 c2 c2@2 c2@4", V: "g1@2 g1@2 g1@2 g1 g1@2 g1 g1@2 g1@2 g1 d2",
  W: "g2!2 d2@2 g2@3 d2 g1@2 g1@2 a1@2 b1@2", X: "d2!8", Y: "d2!2 d2@2 d3!12",
  Z: "g1@2 g1@2 g1@3 g1 d2!2 d2@2 d2@2 d2@2", AA: "g1@2 g1!2 g1@2 g1 g1@2 g1 g1@2 g1@4", AB: "[f1,f2]@15 ~",
  AC: "~@7 f3", AD: "e3@6 ~ e3", AE: "d3@9 ~@7", AF: "f1!4 f1@2 f1 f1@2 f1 f1@2 f1@2 f1@2",
  AG: "d2@2 d2@2 d2@3 d2@2 d2 d2@2 d2@2 d2@2", AH: "d2@2 d2@2 d2@2 d2 d2@2 d2 d2@2 d2@2 d2@2",
  AI: "f1@2 f1@2 f1@2 f1 f1@2 f1 f1@2 f1@2 f1@2", AJ: "c2@2 c2@2 c2@2 c2 c2@2 c2 c2@2 c2@2 d2 e2",
  AK: "d2@2 d2@2 d2@2 d2 d2@2 d2 d2@2 d2@2 d2!2", AL: "d2@2 d2@2 d2@2 d2 d2@2 d2@2 a2 d3 a2 d2 d1",
  AM: "d2@2 d2@2 d3!9 a2 d2@2",
})).s("gm_electric_bass_finger").gain(0.49)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@2 A B C D A B C D A B C E A B C A C B A F A B C D A B C E A B C A C B A F C B A F G H I@2 G H J@2 G H I@2 G K J@2 A
  B C E A B C A ~@8 C B A F C B A F C B A L ~@8
>`.pickRestart({
  A: "[b3,b4]", B: "[c4,c5]", C: "[d4,d5]", D: "[e3,e4]", E: "[b3,b4] [a3,a4]", F: "[a3,a4]",
  G: "~@8 [g4,g5]@3 [f#4,f#5]@3 [e4,e5]@2", H: "[c4,c5]@8 [g4,g5]@3 [f#4,f#5]@3 [e4,e5]@2",
  I: "[[b3,b4]@9 ~ [b3,b4]@2 [a3,a4]@2 [g3,g4]@10 ~@8]/2", J: "[[b3,b4]@9 ~ [b3,b4]@2 [a3,a4]@2 [g3,g4]@15 ~@3]/2",
  K: "[c4,c5]@8 [g4,g5]@4 [a4,a5] [g4,g5]@3", L: "[a3,a4]@15 ~",
})).s("gm_string_ensemble_2").gain(0.22)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@6 A@2 B C D A B C E A B F ~@3 G H@2 I J K A L@2 E M N O P Q R S T U R S V W X Y V W Z Y V W AA@2 AB W Z AC A@2 AD@2
  A@2 AE@2 ~@8 T Q AF AG P Q R S T Q AF AH ~@8
>`.pickRestart({
  A: "g4@2 d4@2 g4@3 d4@3 d4@2 g4@2 d4@2", B: "g4@2 d4@2 ~@3 d4@2 ~ d4@2 g4@2 d4@2, ~@2 g4@3 ~@3",
  C: "g4@2 ~@2 g4@3 ~@2 g4@2 ~ g4@2 d4@2, ~@2 d4@4 ~ d4@6 ~@3", D: "g4@2 d4@2 g4@3 d4@2 ~ d4@2 g4@2 d4@2",
  E: "g4@2 d4@2 g4@3 d4@2 ~ d4@2 g4@2 d4@2, ~@9 g4@2 ~@5", F: "g4@2 ~@2 g4@3 ~@2 g4@2 ~ g4@2 d4 ~, ~@2 d4@4 ~ d4@6 ~@3",
  G: "~@15 [g2,d3,g3,d4,g4]", // G5
  H: "~@2 [g2,d3]@2 [d4,g4]@2 g3!2 [g2,d3] ~ [g2,d3]@2 [g2,d3,d4,g4]@2 g3@2, [g3,d4,g4]@4 [g2,d3]@3 d4@2 [g3,d4]@3 g3 ~@3, ~@4 g3 ~@2 g4@5 ~@4", // G5
  I: "g3@2 g3@2 [g3,d4,g4]@2 g3 ~ [g2,d3] ~@3 g3 ~ g3@2, [g2,d3]@7 ~@3 [g2,d3]@6, [d4,g4]@4 ~@3 [g3,d4,g4]@2 [g3,d4,g4]@3 [d4,g4]@4", // G5
  J: "g3@2 g3 ~ [g3,d4,g4]@2 ~@2 [g2,d3] ~ [g2,d3]@2 ~@2 [g2,d3]@2, [g2,d3,d4,g4]@5 ~ [g2,d3]@2 ~@8, ~@7 g4@5 ~@4, ~@7 [g3,d4]@2 [g3,d4]@2 ~ [g3,d4,g4]@4", // G5
  K: "g4@2 ~@2 g4@3 ~@2 g4@2 ~@3 d4@2, ~@2 d4@4 ~ d4@5 g4@4",
  L: "[g4@2 d4@2 ~@3 d4@2 ~ d4@2 g4@2 ~@2 g4@2 ~@2 g4@3 ~@2 g4@2 ~@3 d4@2, ~@4 g4@6 ~@4 d4@4 d4@4 ~ d4@5 g4@4]/2",
  M: "g4@3 ~ g4@2 ~ g4@3 ~@2 g4 f#4@3, ~@3 d4@3 d4@3 ~ d4@6",
  N: "d4@3 ~ d4@2 ~ d4@2 ~ d4@2 ~@2 d4@2, ~@3 g3@3 g3@2 ~ g3@3 g3@4",
  O: "~ g4@2 ~ g4@2 ~ g4@2 ~ g4@2 ~@2 d4@2, d4@2 ~ d4@2 ~ d4@3 d4@2 ~ d4@2 ~@2, ~@13 g4@2 ~",
  P: "[f2,c3,f3,c4]@6 ~@4 f3 ~@3 [f2,c3]@2, ~@6 [f2,c3]@3 [f2,c3]@3 ~@4, ~@7 [f3,c4]@4 ~ [f3,c4]@4", // F5
  Q: "[g3,c4]@3 ~ [g3,c4]@2 ~ g3@2 ~ g3@2 ~@2 c3@2, c3@4 ~@2 c3@2 ~ c3@4 ~@3, ~@7 c4@5 [g3,c4]@4", // C5
  R: "d4 ~@6 a4, d3, a3@4 a4@3 d4@6 d4@3, ~@2 d4@4 a3@5 a3@5, ~@9 a4@5 ~@2",
  S: "a3@2 a4 ~@4 a3, d3, d4@9 ~ d4@6, ~@6 a3@2 ~ a3@4 ~@3, ~@7 a4@4 ~ a4@4",
  T: "[f2,c3,f3,c4]@3 ~@2 f3 ~ [f2,c3], ~@6 [f2,c3]@3 [f2,c3]@3 ~@4, ~@7 [f3,c4]@4 ~ [f3,c4]@4", // F5
  U: "[g3,c4]@3 ~ [g3,c4]@2 ~ g3@2 ~ g3@2 ~@2 c3 ~, c3@4 ~@2 c3@2 ~ c3@4 ~@3, ~@7 c4@5 [g3,c4]@4", // C5
  V: "c3@2 c3 ~ [c3,g3,c4]@2 ~@4 c3@2 c3 ~ c3@2, [g3,c4]@2 ~ c3@2 ~@3, ~@7 [g3,c4]@5 [g3,c4]@4", // C5
  W: "c3@2 c3@2 [c3,g3,c4]@2 c3 [g3,c4]@3 ~@4 c3@2, [g3,c4]@4 ~@3 c3@2 ~ c3@4 ~@2, ~@3 [g3,c4]", // C5
  X: "d3@2 d3 ~ g3@2 d3 [d3,g3]@2 ~@5 d3@2, [g2,g3]@4 g2@4 ~ g2@3 [g2,g3]@4, ~@4 d3 ~@5 d3@4 ~@2", // G5 G
  Y: "[g2,d3,g3,d4]@4 [g3,d4]@2 d3 [d3,g3]@2 ~ [d3,g3]@2 ~@2 g2@2, ~@4 g2@4 ~ g2@4 ~@3, ~@4 d3 ~@2 d4@5 [d3,g3,d4]@4", // G5
  Z: "d3@2 d3 ~ g3@2 d3 [d3,g3]@2 ~@3 [g2,g3]@2 d3@2, [g2,g3]@4 g2@4 ~ g2@3 ~@4, ~@4 d3 ~@5 d3@4 ~@2", // G5 G
  AA: "[g3@2 g3 ~ [g3,d4,g4]@2 g2 ~ g2 ~ g2@2 g3@2 ~@4 g3@2 [g3,d4]@2 g2 ~ g2 ~@5 g3@2, [g2,d4,g4]@5 ~@2 g4@5 [d4,g4]@7 ~ g4@4 ~@4 g4@4, ~@7 [g3,d4]@2 [g3,d4]@3 ~@2 g2@2 g2@4 ~@6 g2@2 ~ g2@3, ~@15 g3@2 ~@6 [g3,d4]@2 [g3,d4,g4]@2 g3@3 ~@2]/2", // G5
  AB: "c3@2 c3 ~ [c3,g3,c4]@2 ~@4 c3@2 c3 ~ c3@2, [g3,c4]@4 ~@2 c3@3 ~@7, ~@7 [g3,c4]@5 [g3,c4]@4", // C5
  AC: "[g2,d3,a3,d4]@4 [a3,d4]@2 d3 [d3,a3]@2 ~ [d3,a3]@2 ~@2 g2@2, ~@4 g2@4 ~ g2@4 ~@3, ~@4 d3 ~@2 d4@5 [d3,a3,d4]@4", // Gsus2 D5
  AD: "[g4@2 d4@2 ~@3 d4@2 ~ d4@2 g4@2 ~@2 g4@2 ~@2 g4@3 ~@2 g4@2 ~ g4@2 d4@2, ~@4 g4@6 ~@4 d4@4 d4@4 ~ d4@6 ~@3]/2",
  AE: "[g4@2 d4@2 ~@3 d4@2 ~ d4@2 g4@2 ~@2 g4@2 ~@2 g4@3 ~@2 g4@2 ~ g4@2 d4 ~, ~@4 g4@6 ~@4 d4@4 d4@4 ~ d4@6 ~@3]/2",
  AF: "d4 ~@6 a4, d3@15 ~, a3@4 a4@3 d4@6 d4@2 ~, ~@2 d4@4 a3@5 a3@5, ~@9 a4@5 ~@2",
  AG: "a3@2 a4 ~@3 a4 a3, d3, d4@9 ~ d4@6, ~@6 a3@2 ~ a3@4 ~@3, ~@7 a4@4 ~@5",
  AH: "a3@4 a4@2 ~@6 a4@2 a3 ~, d3@15 ~, d4@9 ~ d4@5 ~, ~@6 a3@2 ~ a3@4 ~@3, ~@7 a4@4 ~@5",
})).s("gm_distortion_guitar").gain(0.22).pan(0.4)

// other · percussive organ
const percussive_organ = note(`<
  ~@29 A B C D E ~@3 F ~@3 F G H I J G H I J G H I J G H I ~ K L M N B C D E O P@3 O P@3 ~@3 F ~@3 F ~@3 F Q R@3 ~@4
>`.pickRestart({
  A: "~@9 f5!7", B: "~ e5 d5!2 ~@12", C: "~@2 a5!4 ~@3 a5 ~ a5!3 ~@2", D: "~ d6!4 g5 ~@3 d6!4 g5 ~@2",
  E: "~ g5 ~ g5!3 ~@3 g5!5 ~@2", F: "~@3 a5 a5@2 ~ a5!8 ~", G: "~ [c6,e6] c6!10 ~@4", H: "~ e6 c6!10 ~ c6 ~@2",
  I: "~ b5!11 ~@4", J: "~ b5!7 a5!3 b5 ~@4", K: "~ [d5,g5] ~ d5 [d5,g5] ~ d5 [d5,g5] g5 d5 ~ [d5,g5]@2 d5 [d5,g5] ~",
  L: "~ [d5,g5]!2 d5 [d5,g5] ~ d5 [d5,g5] ~ d5!2 [d5,g5] ~ d5 [d5,g5] ~", // G5
  M: "~ [d5,g5]!2 ~ [d5,g5] ~ d5 [d5,g5]!2 ~ d5 g5@2 d5 [d5,g5] ~, ~@11 d5 ~@4", // G5
  N: "~ [d5,g5]!2 d5 [d5,g5] ~ d5 [d5,g5]@2 ~ d5 [d5,g5] ~ d5 [d5,g5] ~", O: "[f4,f5,a5,d6]",
  P: "[[e4,e5,c6] b5 [f#5,a5], g5@2 ~, ~ [d4,d5]@2]/3", Q: "[f3,f4,a4,d5]",
  R: "[[e3,e4,c5] b4 [f#4,a4], g4@2 ~, ~ [d3,d4]@2]/3", // C F#m D
})).s("gm_percussive_organ").gain(0.14).pan(0.6)

// chords · church organ
const church_organ = note("<~@66 A B C@2 A B D@2 ~@12 A B D@2 ~@4>".pickRestart({
  A: "[f4,d5]", B: "[e4,c5]", C: "[b4 a4, d4@31 ~]/2", D: "[b4 a4, d4]/2",
})).s("gm_church_organ").gain(0.12)

// other · overdriven guitar
const overdriven_guitar = note("<~@61 A@2 B C D ~@28>".pickRestart({
  A: "[~ f4@2 ~ d4 ~ d4@4 ~@6]/2", B: "e4@7 ~", C: "f4 e4 f4@14", D: "g4@7 ~",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.7)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@2 A@16 B@4 ~@4 A@4 C@4 B@8 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 A@8 F@8 G@12 H@4 ~@4
>`.pickRestart({
  A: "[g2@63 ~]/4", B: "[d4,g4]/4", C: "[[d4,g4] [c4,f4,a4] ~@2, g2@63 ~]/4", D: "[c4,e4]/2", E: "[b3 g4, d4]/2",
  F: "[[a3,f4] e4 b3 [f#3,a3], c4 d4, ~ g3@2 ~]/4", G: "[[d4,g4]@63 ~]/4",
  H: "[[f2,a3,f4] [e2,e4] b3 a3, c4 [d2,d4], ~ g3@2 ~]/4", // F E D
})).s("gm_synth_strings_2").gain(0.3).pan(0.4)

// other · epiano1
const epiano1 = note("<~@4 A B C@2 D E F E G C@3 D E D E H I ~@72>".pickRestart({
  A: "~@7 d4@2 g4@2 ~ g4@3 ~, ~@6 g4@2 ~@3 d4@5", B: "~@7 d4@2 g4 d4@2 g4@2 d4 ~, ~@3 g4 ~@4",
  C: "g4@2 d4@2 g4@2 ~ g4 ~ g4 d4@2 g4@2 d4@2, ~@6 d4@3 ~@7",
  D: "g4@2 d4@2 g4@2 ~ g4@2 g4 d4@2 g4@2 d4@2, ~@6 d4@3 ~@7", E: "g4@2 d4@2 g4@2 ~ g4 ~ g4 d4@2 g4@2 d4 ~, ~@3 d4 ~@4",
  F: "g4@2 d4@2 g4@2 ~ g4@2 ~ d4@2 g4@2 d4@2, ~@6 d4@3 g4@2 ~@5",
  G: "g4@2 d4@2 g4@2 ~ g4 ~ g4 d4@2 g4@2 d4@2, ~@3 d4 ~@4", H: "d4@2 g4 ~ [d4,g4]@2 d4@2 g4@2 d4@2 g4@2 d4@2",
  I: "d4@2 g4@2 [d4,g4]@2 d4@2 g4@2 d4@2 g4@2 d4 ~, ~@12 a4 ~@3", // G5
})).s("gm_epiano1").gain(0.2).pan(0.3)

// other · clavinet
const clavinet = note("<A B C@3 D B E@3 F G H@2 I J K@3 L M N@2 ~@63 A B C@3 D B O>".pickRestart({
  A: "~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1, g4@2 ~ g4@2 g1 ~@2 g1 ~@2 g4@2 ~ g4@2",
  B: "g1 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2, ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~",
  C: "[g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1, ~ g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@5 g4@2 ~ g4@2 g1 ~@2 g1 ~@2 g4@2 ~ g4@2 g1 ~@2 g1 ~@2]/3",
  D: "~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1, g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2",
  E: "[g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1, ~ g4@2 ~ g4@2 ~ g4@2 g1 ~@5 g4@2 ~ g4@2 g1 ~@2 g1 ~@2 g4@2 ~ g4@2 g1 ~@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2]/3",
  F: "~ g1!2 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1, g4@2 ~ g4@2 ~ g4@2 g1 ~@5 g4@2",
  G: "g1 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1 g4@2, ~ g4@2 g1 ~@5 g4@2 ~ g4@2 g1 ~",
  H: "[g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2, ~ g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~]/2",
  I: "~ g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1, g4@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2",
  J: "g4@2 g1 ~ g1!2 ~ g1 g4@2 g1 g4@2 g1 ~ g1, ~@3 g4@2 ~ g4@2 g1 ~@5 g4@2",
  K: "[g1 ~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 ~ g1!2, ~ g4@2 g1 ~@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~ g4@2 ~]/3",
  L: "~ g1 g4@2 g1 g4@2 g1 ~ g1!2 ~ g1 g4@2 g1, g4@2 g1 ~@5 g4@2 ~ g4@2 g1 ~@2",
  M: "g4@2 g1 ~ g1!2 ~ g1 g4@2 g1!2 ~ g1 g4@2, ~@3 g4@2 ~ g4@2 g1 ~@3 g4@2 g1 ~",
  N: "[g1 ~ g1!2 ~ g1!2 ~ g1 g4@2 g1 ~ g1!2 g4@2 ~@15, ~ g4@2 ~ g4@2 ~ g4@2 g1 ~@2 g4@2 ~@18]/2", O: "g1 ~@15",
})).s("gm_clavinet").gain(0.09)

// chords · guitar harmonics
const guitar_harmonics = note("<~@86 A@2 B ~@5>".pickRestart({
  A: "[d#3,a#3]/2", B: "g2@11 ~@5",
})).s("gm_guitar_harmonics").gain(0.17).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<~@66 [~ x ~ x]!8 ~@20>").gain(0.63)

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

// drums · low tom
const low_tom = s("lt").struct("<~@30 A ~@10 B ~@15 B A ~@3 A ~@2 A ~@15 C ~ A ~ C ~@8>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@13 x!3",
})).gain(0.63)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@26 A B@3 A B@3 A@9 B A B A B A B A B A B A B A@3 B@3 A B@7 A B@3 A@12 ~@8
>`.pickRestart({
  A: "~ x!7", B: "x!8",
})).gain(0.63)

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

// drums · open hat
const open_hat = s("oh").struct("<~@22 A B A B ~@3 C ~@3 C ~@27 C ~@3 C ~@28>".pickRestart({
  A: "~ x!7", B: "x!8", C: "~@15 x",
})).gain(0.47)

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

// drums · ride
const ride = s("rd").struct("<~@69 [~@8 x!7 ~] ~@24>").gain(0.55)
// … 21 more lines

More by Zucchero