Strudelify
Madre dolcissima cover art

Latin Masters: Con Le Mani

Madre dolcissima

Zucchero

KeyB♭ majorTempo69 bpm
0:00/0:00
// Madre dolcissima — Zucchero
// 69 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/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 · "Midi C1, T1"
const piano = note("<~@13 A B ~@2 A C ~@2 D E F G ~@8 A H I ~ A H I ~ D E F J ~@63>".pickRestart({
  A: "~@14 bb4 c5", B: "db5 c5 bb4@6 ab4 g4 f4@3 ~@3", C: "db5 c5 bb4@4 f4 g4 ab4 g4 f4@3 ~@3", D: "bb4@6 ~ ab4",
  E: "gb4@13 ~ ab4@2", F: "bb4@15 ~", G: "db5@7 ~", H: "db5 c5 bb4@6 ab4 g4 f4@2 ab4 g4 f4 db4", I: "bb3 ~@7",
  J: "db5@3 ~",
})).s("gm_piano").gain(0.21).pan(0.7)

// chords · harpsichord · "Midi C1, T1"
const harpsichord = note(`<
  ~@9 A B A C ~@12 D ~ D ~ D ~ D ~@31 D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~@10
>`.pickRestart({
  A: "[bb3,d4,f4]@3 [bb3,d4,f4]", B: "[gb3,bb3,eb4]", C: "[eb3,bb3,db4,f4]", D: "~@10 eb4 f4 eb4@4, ~@5 [ab3,c4]@3",
})).s("gm_harpsichord").gain(0.21).pan(0.7)

// other · piano · "Midi C1, T1"
const piano_2 = note("<~@101 A@7>".pickRestart({
  A: "[~@8 db5@3 c5@3 bb4@10 db5@3 c5@3 bb4@10 db5@3 c5@3 bb4@9 ~ db5@3 c5@3 bb4@10 db5@3 c5@3 bb4@24 ~@10]/7",
})).s("gm_piano").gain(0.15).pan(0.7)

// bass · synth bass 2 · "Midi C1, T2"
const bass = note(`<
  ~ A B A B A B A B C D E F A B A B A B A B G H I J K L M N K L M N A B A B A B A B G H I J K L M N K L M N A B A B A B
  A B O P K L M N K L Q R S T M U M V W@2 M V W@2 M V W@2 M V W@2 M V W@2 M V M X Y Z AA AB AC AD@2 AE AF
>`.pickRestart({
  A: "bb1@2 ~ bb1 ab1@2 ~ ab1", B: "eb1@2 ~ eb1 db1@2 ~ db1", C: "bb1@5 ~ bb1 ~ bb1@4 ab1@4",
  D: "gb1@5 ~ gb1 ~ gb1@6 ab1@2", E: "bb1@5 ~ bb1 ~ bb1@6 db2 d2", F: "eb2@6 db2 bb1 eb1@6 g1 ab1",
  G: "bb1@11 ~ bb1@2 ab1@2", H: "gb1@15 ~", I: "bb1@13 c2 db2@2", J: "eb2@7 ~ db2 bb1 eb1@2 bb1 g1 eb1@2",
  K: "bb1@5 ~ bb1@2 ab1@4 ~ ab1 f1@2", L: "eb1@5 ~ eb1@2 db1@4 ~ db1 f1@2", M: "bb1@5 ~ bb1@2 ab1@5 ~ ab1@2",
  N: "eb1@5 ~ eb1@2 db1@4 ~ db1 eb1 ~", O: "bb1@2 ~ bb1@3 bb1@2 ab1@2 ~ ab1@3 ab1@2",
  P: "eb1@2 ~ eb1@3 eb1@2 db2@2 eb2 db2 eb2 db2@3", Q: "bb1@5 ~ bb1@2 ab1@5 ~ bb1 c2",
  R: "db2 c2 bb1 bb1@2 ~ bb1 c2 db2 c2 bb1@2 db2 c2 bb1@2", S: "bb1@5 ~ bb1@2 ab1@5 ~ bb1 db2",
  T: "eb2@5 ~ eb2@2 db2@5 ~ ab1@2", U: "bb1@5 ~ bb1@2 db2 eb2@2 db2 eb2@2 bb1@2", V: "eb1@5 ~ eb1@2 db1@6 f1@2",
  W: "[bb1@5 ~ bb1@2 ab1@5 bb1 db2 eb2@3 db2 eb2@2 db2 ab1 bb1 db2@2 bb1 db2@2 db2 bb1@2]/2", X: "eb1@13 ~ eb1@2",
  Y: "eb1@12 ~@2 bb1 eb2", Z: "eb1@14 ~ eb1", AA: "eb1@7 bb1 f2@3 eb2@3 bb1@2", AB: "eb1@5 f1 bb1 eb2 bb2 c3@5 bb2@2",
  AC: "eb1@8 db2@3 c3@3 bb2@2", AD: "[eb1@8 f3@3 eb3@3 bb2@10 f2@8]/2", AE: "eb2@3 bb1", AF: "eb1 ~",
})).s("gm_synth_bass_2").gain(0.49)

// chords · drawbar organ · "Midi C1, T3"
const drawbar_organ = note("<~ A@8 B@2 C D E@2 F@6 G@2 C D ~@8 E@2 F@6 G@2 C D ~@8 E@2 F@8 ~@45>".pickRestart({
  A: "[[bb3,d4] [ab3,c4] [bb3,eb4] [ab3,db4], f4]/2", B: "[[d4,f4] [gb4,db5], bb4]/2", C: "[d4,f4,bb4]",
  D: "[eb4,g4,db5]", E: "[[d4,f4] ab4 g4 [db4,f4], bb4, ~ eb4@2 ~]/2", F: "[d4 ab4 g4 [db4,f4], bb4, ~ eb4@2 ~]/2",
  G: "[d4 [gb4,db5], bb4]/2", // Gb5
})).s("gm_drawbar_organ").gain(0.32).pan(0.3)

// chords · synth strings 1 · "Midi C1, T5"
const synth_strings_1 = note("<~@25 A@8 ~@12 B@8 ~@12 A@32 C@8 ~@3>".pickRestart({
  A: "[[d4,f4,bb4] [c4,ab4] [g3,bb3] [f3,ab3,db4], ~ eb4@2 ~]/2", // Bb Fm Gm Db
  B: "[[d4,f4] [c4,ab4] [g3,bb3] [f3,ab3,db4] [d4,f4] [c4,ab4] [g3,bb3] [f3,ab3,db4] [d4,f4] [c4,ab4] [g3,bb3] [f3,ab3,db4] [d4,f4] [c4,ab4] [g3,bb3] [f3,ab3,db4], bb4, ~ eb4@2 ~@2 eb4@2 ~@2 eb4@2 ~@2 eb4@2 ~]/8", // Dm Fm Gm Db Dm Fm Gm Db …
  C: "[[d4,f4,bb4] [c4,ab4] [bb3,bb4]@14, ~ eb4@15]/8", // Bb Fm Bb
})).s("gm_synth_strings_1").gain(0.36)

// chords · electric guitar clean · "Midi C1, T7"
const electric_guitar_clean = note(`<
  A B C D E F G B H I J K L M N B H O P Q R S T U V W X W X W Y W Z D AA AB AC AD AE AF AG S T U V W X W X W Y W Z W X W
  X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W AH ~ AI AJ AK AL ~@4
>`.pickRestart({
  A: "~@9 bb2 ~ bb2 [a3,bb3,db4,d4,eb4] [ab3,a3,db4] eb3@2, ~@5 [ab3,db4] ~@2", // Amaj7 Db5
  B: "~@4 [d4,f4]@4 ~@2 [ab3,c4,db4] db4 ab3 ~ eb3@2, bb2@7 ~@5 c4@4, ~@13 ab3@3", // Dm Dbmaj7
  C: "gb3 eb4@2 ~ eb4@4 ~@4 [db4,d4,eb4] db4 bb3 ab3, g3@3 g3@5 ~ f3@2 f3@3 ~@2, ~@5 db4 ~@2",
  D: "~@4 [bb3,d4]@4 ~@3 db4 ab3 ~ eb3@2, bb2@7 ~ ab2@7 ~, ~@10 [ab3,c4]@2 c4@3 ~, ~@13 ab3@2 ~", // Bb Ab
  E: "[e3,f3,g3] ~@4 g4@4 ~@2 db4 [db4,d4,eb4] db4 bb3 ab3, ~ eb4@2 f4@2 ~@11, ~ g3!2 ~@5", // Em
  F: "~@4 [d4,f4]@4 ~@2 [ab3,c4,db4] db4 ab3 ~ eb3@2, bb2@7 ~ ab2@4 c4@4, ~@13 ab3@3", // Dm Dbmaj7
  G: "gb3 eb4@2 ~ eb4@4 ~@2 [ab3,db4]@2 [ab3,db4] [ab3,db4]@3, g3@3 g3@5 ~ f3@2 ~@5", // Db5
  H: "gb3 eb4@2 ~ eb4@4 ~ [ab3,db4] ~@2 [ab3,db4]@3 ~, g3@3 g3@5 ~@8", // Db5
  I: "[bb2,bb3,d4]@4 [bb3,d4,f4]@4 ~ bb3 ~@2 d4 ~ f3 bb3", J: "~@5 [gb3,bb3,eb4]@4 [gb3,bb3] ~@6",
  K: "[bb2,bb3]@4 [bb3,d4,f4]@4 ~ [bb3,d4] ~@2 [bb3,d4]@2 ~@2", // Bb
  L: "[bb3,db4,f4]@6 ~@3 [f3,bb3] g3 [ab3,db4] [f3,bb3] [ab3,db4]@3", // Bbm Bb5 Db5 Bb5 Db5
  M: "~@4 [bb3,d4,f4]@3 ~@3 [ab3,c4] [db4,f4] ~@2 eb3 f3, bb2@7 ~@5 [c4,eb4]@3 ~, ~@13 ab3@2 ~", // Bb Ab Db Cm
  N: "g3@4 [g3,eb4,g4]@4 ~ f3 [ab3,db4] ~ [ab3,db4] ~ eb4 [ab3,db4], ~@13 f3@2 ~", // Cm Db5
  O: "~@4 [bb3,d4,f4]@2 bb2 a2 ~@2 [ab3,c4] db4 ~@2 eb3 ~, bb2@6 ~@2 ab2@7 ~, ~@12 [c4,eb4]@3 ~, ~@13 ab3@2 ~", // Bb Ab Cm
  P: "~ eb4@3 eb4 ~ eb4 d4 ab3@6 ab3@2, [gb3,g3] ~@3 [db4,f4]@4", // Gmaj7 Db
  Q: "bb3@3 ~ [bb3,d4,f4]@2 bb2 a2 ~@2 c4 db4 ~@2 eb3@2, a3 ~@7 ab2@7 ~, ~@12 [c4,eb4]@3 ~, ~@13 ab3@3", // Bb Cm
  R: "[f3,gb3,g3] eb4@2 ~ eb4@3 ~@2 [ab3,db4] ~@3 f3 [bb3,eb4] [ab3,db4], ~@3 g3@4 ~@4 f3@2 ~@3, ~@6 [ab3,db4] ~", // Db5 Eb5 Db5
  S: "~ [bb3,d4,f4] ~ [bb3,d4,f4]", T: "~ [gb3,bb3,eb4] ~ [gb3,bb3,eb4]",
  U: "~@4 [bb3,d4,f4]@4 [db4,d4] eb4 ~@2 f3@4, ~@5 d4@3", // Bb Dmaj7
  V: "[bb3,db4,f4]@4 ~@2 [ab3,db4]!2 bb3 ~ [ab3,db4]@2 [ab3,db4] [f3,bb3] [eb3,ab3]@2, ~@5 f3@2 ~@9", // Bbm Db5 Bb5 Ab5
  W: "~@4 [bb3,d4,f4]@3 ~@3 [ab3,c4,eb4] [db4,f4] ~@2 eb3@2, bb2@7 ~@5 c4@4, ~@13 ab3@3", // Bb Ab Db
  X: "~ eb4@2 ~ eb4@3 ~@2 [ab3,db4] ~@2 [ab3,db4]@3 ~, ~@3 g3@5 ~@3 f3@3 ~@2", // Db5
  Y: "~ eb4@3 eb4@3 ~@3 [ab3,db4] ~ [ab3,db4] f3 [bb3,eb4] [ab3,db4], g3@3 ~@13", // Db5 Eb5 Db5
  Z: "~ eb4@3 eb4@3 ~@3 [ab3,db4] ~ [ab3,db4] eb3 f3@2, g3@3 ~@13", // Db5
  AA: "[e3,f3,g3] ~@4 g4@3 ~@2 [ab3,db4]@2 [bb3,d4,eb4] [ab3,db4] [f3,bb3] [eb3,ab3], ~ eb4@2 f4@2 ~@11, ~ g3!2 ~@5", // Em Db5 Ebmaj7 Db5 Bb5 Ab5
  AB: "~@4 [bb3,d4,f4]@3 ~ eb4 f4 ~@3 ab3@3, bb2@7 ~@3 eb4@2 c4@2 ~@2, ~@11 db4@2 ~@3", // Bb
  AC: "gb3 eb4@2 ~ eb4@3 ~@2 [ab3,db4] ~@2 [ab3,db4]@2 db3@2, g3@3 g3@4 ~ f3@2 ~ f3@3 ~@2", // Db5
  AD: "~@4 [bb3,d4,f4]@4 ~@2 c4 db4 eb4@2 eb3@2, bb2@7 ~ ab2@7 ~, ~@12 c4 ~@3", // Bb
  AE: "[gb3,g3] eb4 [db4,f4] [d4,gb4] [eb4,g4]@3 ~@2 [ab3,db4] ~@2 [ab3,db4]@2 db3@2, ~@8 f3@2 ~ f3@3 ~@2", // Gmaj7 Db D Eb Db5
  AF: "~@4 [d4,eb4] ~ bb3@2 ~@2 [ab3,c4] [g3,ab3,db4] ~@2 eb3@2, bb2@7 ~ ab2@7 ~, ~@5 d4@3 ~@4 c4@3 ~, ~@13 ab3@3", // Ebmaj7 Ab Db
  AG: "~ eb4@3 eb4@3 ~ f3 [ab3,db4] ~@4 f3@2, [gb3,g3]@2 ~@9 f3@3 ~@2, ~@3 [ab3,db4]", // Db5 Gmaj7 Db5
  AH: "~ eb4@2 ~ eb4@3 ~@9, ~@3 g3@5 ~@8", AI: "~@10 bb3 c4 eb4 c4 eb4 f4", AJ: "bb4@8 ~@2 c5 eb5 [bb4,eb5] ab4 g4 eb4",
  AK: "bb3@8 ~@2 g4 bb4 eb4 f4 [eb4,f4] [c4,eb4]", AL: "eb4@5 ~@3",
})).s("gm_electric_guitar_clean").gain(0.18).pan(0.2)

// chords · electric guitar clean · "Midi C1, T7" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A ~ B C ~ D E F G H I J K L A F M N O P Q R S T U V U V U W U X ~@4 Y ~ Z AA Q R S T U V U V U W U X U V U V U V U V
  U V U V U V U V U V U V U V U V U V U V U V U V U V U V U V U V U V U V U AB ~@9
>`.pickRestart({
  A: "~@8 [e2,eb3,db4] ~@3 eb4 ~@3, ~@2 ab2 ~", B: "~@8 eb3@5 ~@3, ~@4 c4 ~@3", C: "~@13 d4 ~@2",
  D: "~@11 f3@5, ~@11 db4 ~@4", E: "~@8 [e2,eb3,db4] ~@7, ~@2 ab2 ~", F: "~@8 f3@2 ~ f3@4 ~",
  G: "f4@4 ~ bb2@3 d4 [d4,f4] ~ bb2 [bb3,f4] d4 [gb1,g1] g3, ~@11 f3@3 ~@2", // Dm Bb5 Gmaj7
  H: "~@9 [g3,eb4,gb4] ~ a2 [gb3,bb3,eb4]@2 [gb3,bb3,eb4] ~", // Cm Ebm
  I: "[d4,f4]@4 ~ f3@3 [f3,f4] f4 ~@2 f4@2 ~@2, f3 ~@3 bb4@4 ~@8", J: "eb2 eb3@4 ~@5 c4 ~@5, ~ eb2 ~@14",
  K: "~@4 ab2@3 ~", L: "~@11 f3 ~@2 bb3 ~", M: "~@11 [ab3,f4] ~@4", N: "~@3 g3@3 [gb3,g4] [a3,gb4] ~@8",
  O: "~@6 [b3,d4,e4] ~@3 [ab3,eb4] [ab3,f4] ~@4", P: "~@4 f3 ~@3", Q: "~@6 bb4 ~ [a2,bb3] ~@3 bb2@4, ~@5 bb2@3 ~@8",
  R: "[g3,a4] ~@15", S: "~@10 e4!2 ~@4, ~@2 f3@3 ~@3, ~@5 bb2@7 ~@4", T: "~@8 eb4 f3@2 ~@5", U: "~@3 eb4, ~@8 ab2@7 ~",
  V: "g3@3 ~@5 f3@2 ~@6", W: "~@3 g3@4 ~@2 f3@2 ~@2 [ab3,db4] ~@2", X: "~@3 g3@4 ~@2 f3@2 ~@5",
  Y: "~@10 [ab3,eb4] [ab3,f4] [ab3,ab4] [ab3,c4]@3", Z: "~@5 f4@2 f4 ~@8", AA: "~@3 g3@5 ~@8", AB: "g3@3 ~@13",
})).s("gm_electric_guitar_clean").gain(0.09).pan(0.2)

// other · electric guitar clean · "Midi C1, T8"
const electric_guitar_clean_3 = note(`<
  ~@2 A@2 ~ B C D@2 E F G H I@3 J K L M N G O G P Q R Q R Q S Q T ~@2 U V W ~ X Y G O G P Q R Q R Q S Q T ~@50 Z AA AB@2
  ~
>`.pickRestart({
  A: "[~ bb3@7]/2", B: "~@6 bb4@3 f5@4 ~@3", C: "~ bb4@4 f5@4 ~@7",
  D: "[~ f5@4 d5@3 f5@3 ~@3 bb4@6 ~@5 f5@2 bb4@4 ~]/2", E: "[bb3,d4,f4]@15 ~", F: "[gb3,b3,eb4]@15 ~", G: "[bb3,d4,f4]",
  H: "[g3,db4,f4]@11 ~@5", I: "[bb3@25 ~@2 f4@20 ~]/3", J: "bb4", K: "f5@13 ~@3", L: "eb5@3 ~ db5@4 ab4@4 ab4@4",
  M: "bb4@4 f4@7 ~ bb4@3 ~", N: "eb5@8 ~ bb4@7", O: "[gb3,bb3,eb4]", P: "[g3,db4,f4]", Q: "~ eb5", R: "eb5 db5 bb4@2",
  S: "~ db5 bb4@2", T: "eb5@4 db5@4 bb4@7 ~", U: "~@3 [d5,f5] [c5,eb5]@2 ~ [c5,eb5]",
  V: "[g4,bb4]@2 ~ [eb4,ab4] [f4,bb4]@2 ~ ab3", W: "bb3@5 ~@11", X: "~ bb4@7 ~@2 db5@6", Y: "~@2 bb4@13 ~",
  Z: "f5@15 ~", AA: "f5@8 ab5@7 ~", AB: "[bb5@15 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.8)

// chords · trumpet · "Midi C1, T9"
const trumpet = note(`<
  ~@21 A B@2 C@8 ~@9 A B@2 D E F E F E F E F ~@10 E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E
  G ~@9
>`.pickRestart({
  A: "[f3,bb3,d4]@3 [f3,bb3,d4]", B: "[[gb3,eb4]@4 [f3,d4,f4]@3 [f3,bb3,d4,f4], bb3@27 ~@5]/2",
  C: "[[bb3,eb4,db5]@3 ~@29, f4]/8", D: "[bb3,eb4,db5]@3 ~, f4", E: "[d4,f4,bb4] [eb4,ab4,bb4]",
  F: "[eb4,g4,bb4] [db4,f4,bb4]", G: "[eb4,g4,bb4]@15 ~",
})).s("gm_trumpet").gain(0.19).pan(0.8)

// other · overdriven guitar · "Midi C1, T11"
const overdriven_guitar = note("<~@53 A B C D E F G H I J@2 K ~@43>".pickRestart({
  A: "~@4 bb4@9 ~@3", B: "~@9 bb3 f4 bb3 eb4@2 db4 ~", C: "f4 [db4,eb4] bb3@3 ~@9 ab4 ~",
  D: "bb4 db5 ~@2 db5@4 c5 bb4 ab4@3 ~@3", E: "~@4 f5@5 eb5 [c5,db5] [bb4,b4] ab4 [eb4,f4,g4] db4 [db4,f4]",
  F: "eb4@2 db4@2 ~@5 [f3,bb3]@2 db4@3 bb3 ~", G: "~ bb3 f4@7 [bb3,f4] bb4 db5@3 c5@2",
  H: "bb4 f4 eb4 f4@5 ~@2 bb4 db5@2 ~ bb4 ~, ~@13 c5@2 ~",
  I: "[ab4,bb4] db5 ~ [db5,eb5] f5 ~ [eb5,f5] ab5 ~ f5 [db5,eb5] ~ f5 [db5,eb5] [f5,g5] [ab5,bb5]", // Absus2 Dbsus2 Ebsus2 Dbsus2 Fsus2 Absus2
  J: "[[bb5,c6] [g5,ab5] [eb5,f5] [c5,db5] [ab4,bb4] [f4,g4] [db4,eb4] [bb3,c4] [ab3,bb3] [c4,db4] [eb4,f4] [g4,ab4] [bb4,c5] [db5,eb5] [f5,g5] bb5@8 ~ bb5@8, ~@15 ab5 ~@16]/2", // Bbsus2 Abmaj7 Ebsus2 Dbmaj7 Absus2 Fsus2 Dbsus2 Bbsus2 …
  K: "~@8 bb5@7 ~",
})).s("gm_overdriven_guitar").gain(0.26)

// other · string ensemble 2 · "Midi C1, T12"
const string_ensemble_2 = note("<~@25 A B A C A B D E ~@12 A B A C A B D E ~@10 A B A C A B D E ~@37>".pickRestart({
  A: "bb3 ab3", B: "eb3 db3", C: "~@2 bb3 c4 db4 c4 bb3@3 ~ f3 g3 ab3 g3 f3@2", D: "bb3@8 ab3@5 ~ bb3 c4",
  E: "db4 c4 bb3@3 ~ f3 g3 ab3 g3 f3@6",
})).s("gm_string_ensemble_2").gain(0.8).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x ~@2 x!2 ~@2 x]!51 [x ~@5 x ~ x ~@4 x!2 ~] [x ~@2 x!2 ~@2 x]!45 x ~@9>").gain(0.56)

// drums · rim
const rim = s("rim").struct("<~@99 [~@4 x ~@2 x ~@4 x ~@3]!4 [~ x ~ x] ~@4>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~ A@23 B A@7 C A@11 D A@7 E A@9 F A@7 G A@3 C A@23 ~@10>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x ~ x ~ x!3 ~", C: "~ x!3", D: "x!2 ~@2 x ~@2 x ~@4 x ~@3",
  E: "~@4 x ~@2 x ~ x!2 ~ x ~@3", F: "~@2 x ~ x!3 ~", G: "~@4 x ~@2 x ~@2 x ~ x ~@3",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@32 A ~@19 B ~@8 C D ~@7 B ~@3 E ~@3 F ~@3 G ~ H ~ I ~ J ~ A ~ H ~ A ~ K ~@11
>`.pickRestart({
  A: "~@7 x", B: "~ x", C: "~@4 x ~ x!2 ~@3 x ~ x!2 ~", D: "~@3 x ~ x ~ x ~ x!3 ~ x ~ x", E: "~@9 x!2 ~@5",
  F: "~@12 x!2 ~ x", G: "~@11 x ~@2 x ~", H: "~@12 x!2 ~@2", I: "~@5 x ~@3 x ~@3 x!2 ~", J: "~@5 x ~ x",
  K: "~@12 x ~@2 x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<~ [x!3 ~ x!3 ~]!106 ~>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@44 A ~@16 B C ~@7 D ~@3 E ~@3 F ~ E ~ G ~ H ~ I ~ J ~ K ~ L ~ M ~ N ~@11
>`.pickRestart({
  A: "~@9 x!2 ~@2 x!2 ~", B: "x!2 ~ x ~@5 x!2 ~ x ~@3", C: "x!2 ~@2 x ~@9 x ~", D: "~@14 x!2", E: "~@13 x!2 ~",
  F: "~@9 x!2 ~@5", G: "~@9 x ~@5 x", H: "~@10 x!2 ~@2 x ~", I: "~@2 x ~@5 x ~ x ~@3 x!2", J: "~@9 x ~@3 x ~@2",
  K: "~@8 x ~@2 x ~@4", L: "~@9 x!2 ~@4 x", M: "~@9 x!2 ~@2 x ~@2", N: "~@10 x ~@2 x ~@2",
})).gain(0.64)

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

// … 24 more lines

More by Zucchero