Strudelify

Questione di feeling (feat. Mina)

Cocciante

KeyB♭ majorTempo75 bpm
0:00/0:00
// Questione di feeling (feat. Mina) — Cocciante
// 75 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 76 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.

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  A@2 B C D E B C F G H I F J K L M N O P Q R S T U V W X Y Z F AA AB AC AD AE R S T U V W X Q R S T U V W X AF AG AH AI
  AJ AK AL AM AF AG AH AI AJ AK AL AM AF AG AH AI AJ AK AL AM ~
>`.pickRestart({
  A: "[~@5 [d5,f5] [bb4,d5] [f4,bb4,d5], ~@15 g5@17, ~@15 bb4@9 f5@8, ~@15 d5@5 bb5@12, ~ g4]/2", // Dm Bb
  B: "[c2,c3,c4,eb4,g4] [f2,f3,c4,g4,a4]", C: "[bb1,bb2,c4,d4,f4] [eb2,eb3,bb3,f4,g4]",
  D: "[c2,c3,c4,eb4,g4]@2 [c4,g4,a4] [c4,gb4,a4], ~ [d2,d3]", E: "[g2,g3,d4,g4,bb4]",
  F: "[c2,c3,c4,eb4,g4]@2 [a3,d4,g4] [a3,d4,gb4], ~ [d2,d3]", G: "[g2,g3,bb3,d4,g4]@7 ~",
  H: "[c2,c3,c4,eb4,g4] [f2,f3,c4,f4,a4]", I: "[bb2,c4,d4,f4,a4] [eb2,eb3,bb3,f4,g4]",
  J: "[g2,g3,c4,d4,g4] [c2,c3,c4,eb4,g4]", K: "[f2,f3,c4,f4,a4] [bb2,c4,d4,f4,a4]",
  L: "[eb2,eb3,bb3,f4,g4]@4 c3@3 c3, ~ [c2,c4,eb4,g4]", M: "[a3,d4,g4] [a3,d4,gb4] [c2,c3,d4,eb4,g4,bb4]@2, [d2,d3] ~",
  N: "~ f3 [bb2,bb3,f4,a4,d5]@2, [f2,f4,a4,c5]@9 ~@7", O: "[eb2,eb3,bb4,d5,g5] [c3,eb4,g4,c5]",
  P: "d3@2 ~ [d2,a3] d3 ~@2 d3, g4, d4 ~, [d2,a3]@3 ~ [d2,a3,d4,gb4]@2 [d2,a3,d4,gb4]@2, ~@2 d3@2 ~ d3@2 ~", // D5 D
  Q: "g2@6 ~ d4, g4, [bb3,d4]@13 bb3@3, ~@3 g2", R: "c3@3 c3, [c4,eb4,g4]",
  S: "[f3,c4,g4,bb4]@7 f3@5 f3@4, f2, ~@7 [c4,f4,a4]@9", // Fsus4 F
  T: "c4@8 c4@3 ~@3 [c4,f4]@2, f4@13 d4@3, [bb2,d4]@11 [bb2,a3]@5, ~ g3, ~@11 d4 c4@2 ~@2", U: "[g2,bb3,d4,g4]",
  V: "[c3,c4,eb4,g4]", W: "[c4,g4,bb4]@7 [c4,f4,a4]@9, [f2,f3]", X: "[c4,d4,f4]@8 [c4,f4]@3 [d4,g4]@3 [f4,bb4]@2, bb2",
  Y: "[c2,c3,d4,eb4,g4,bb4] [f2,f3,c4,g4,a4]", Z: "[bb2,c4,d4,f4] [eb2,eb3,bb3,f4,g4]",
  AA: "g2@8 [g1,g2]@7 ~, [g3,bb3,d4,g4]@11 ~@5", AB: "[c3,c4,eb4,g4,bb4,c5] [f3,f4,g4,c5]",
  AC: "[bb2,c4,d4,g4]@2 [bb4,d5] [f4,bb4,d5], ~ [eb2,eb3,g4,f5]", // Gm Bb Eb
  AD: "[c3,d4,eb4,g4,bb4]@2 [c4,g4,a4] [c4,gb4,a4], ~ [d2,d3]", // Cm7 Am7 Gbdim D
  AE: "[g2,g3]@8 [g1,g2]@4 ~ bb3 d4 ~, [bb3,d4,g4]@12 g2@3 ~", AF: "bb2@6 ~ f4, bb4, [db4,f4]@13 db4@3, ~@3 bb2",
  AG: "eb3@3 eb3, [eb4,gb4,bb4]", AH: "[ab3,eb4,bb4,db5]@7 ab3@5 ab3@4, ab2, ~@7 [eb4,ab4,c5]@9",
  AI: "eb4@8 eb4@3 ~@3 [eb4,ab4]@2, ab4@13 f4@3, [db3,f4]@11 [db3,c4]@5, ~ bb3, ~@11 f4 eb4@2 ~@2", // Ab5 Db Dbmaj7
  AJ: "[bb2,db4,f4,bb4]", AK: "[eb3,eb4,gb4,bb4]", AL: "[eb4,bb4,db5]@7 [eb4,ab4,c5]@9, [ab2,ab3]",
  AM: "[eb4,f4,ab4]@8 [eb4,ab4]@3 [f4,bb4]@3 [ab4,db5]@2, db3", // Fm7 Ab5 Bb5 Db5
})).s("gm_epiano1").gain(0.4)

// bass · electric bass finger · "BASSO"
const bass = note(`<
  ~@10 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z L M N O P Q R K L M N O P Q R AA AB AC AD AE AF AG AH AI AB
  AC AD AE AF AG AH AI AB AC AD AE AF AG AH ~
>`.pickRestart({
  A: "c2@6 ~ c2 f2@8", B: "bb1@6 ~ bb1 eb2@5 ~ eb2 bb1", C: "c2@6 ~ c2 d2@5 d2@3", D: "g1@5 ~@2 g1 c2@7 ~",
  E: "f1@6 ~ f1 bb1@8", F: "eb2@5 bb1@3 c2@8", G: "~@5 d1@3 c2@7 c2, d2@7 ~@9", H: "f1@7 ~ bb1@6 ~ bb1",
  I: "eb2@3 bb1@2 eb1@3 c2@6 ~ c2", J: "d2@6 ~ d2 d2@3 d2@2 d1@2 ~", K: "g1!2 f1 g1 ~@9 g1 bb1 g1",
  L: "c2 g1 bb1 c2 ~@10 c2 g1", M: "f1!2 eb1 f1 ~@3 f1 ~@6 f1 g1", N: "bb1!3 ~@5 bb2@3 bb1@2 ~ bb1@2",
  O: "g1 d1 f1 g1 ~@3 g1!2 ~@5 g1 bb1", P: "c2 g1 bb1 c2 ~@3 c2!2 ~@5 c2 g1", Q: "f1!2 eb1 f1 ~@3 f1!2 ~@5 f1 g1",
  R: "bb1 g1 bb1 ~@5 bb1@3 f1@3 bb1@2", S: "c2@6 ~ c2 f1@8", T: "bb1@8 eb1 bb3 eb3 bb2 ~ g3@3, ~@6 eb1 ~",
  U: "c1@6 ~ c1 d1@8", V: "g1@5 g1@3 g1@7 ~", W: "c2 f1", X: "bb1@8 eb2@4 ~ d2@3", Y: "c2@2 d2 d1",
  Z: "g1@2 g1 ~@2 g1 ~@2 g1@4 ~ g1 bb1 g1", AA: "bb1!2 ab1 bb1 ~@2 bb1@5 ~@2 bb1 db2 bb1",
  AB: "eb2 bb1 db2 eb2 ~@10 eb2 bb1", AC: "ab1!2 gb1 ab1 ~@3 ab1 ~@6 ab1 bb1", AD: "db2!3 ~@5 db3@3 db2@2 ~ db2@2",
  AE: "bb1 f1 ab1 bb1 ~@3 bb1!2 ~@5 bb1 db2", AF: "eb2 bb1 db2 eb2 ~@3 eb2!2 ~@5 eb2 bb1",
  AG: "ab1!2 gb1 ab1 ~@3 ab1!2 ~@5 ab1 bb1", AH: "db2 bb1 db2 ~@5 db2@3 ab1@3 db2@2",
  AI: "bb1!2 ab1 bb1 ~@9 bb1 db2 bb1",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · piano
const piano = note("<~ A B C@2 D E F G H ~@66>".pickRestart({
  A: "d4@2 d4 [bb3,d4], [g1,g2,f3], bb3@3 ~, ~ g4", B: "[c2,c3,c4,eb4,g4] [f3,c4,f4]",
  C: "[d5 ~ bb4@2 g4@4 ~@3 g4 [a3,d4]@2 [a3,d4,gb4]@2, bb2 eb3@2 ~, ~ f4@3 ~@4 c3@4 [d2,g4]@4, ~@4 g4 eb4 ~@2, ~@9 c4@3 ~@4]/2", // D5 D G5
  D: "~@8 bb3@7 ~, g2@15 ~, g4@6 g4@9 ~, ~@2 [d3,bb3]@7 ~@7, ~@4 d4@5 ~@7", // Gm
  E: "~@3 g5 ~@3 f5, c3 f2, g5@3 ~ f5@3 ~, ~ bb4@3 ~ a4@3, ~ eb5 ~ c5",
  F: "~@3 d5 [eb3,bb3,g4]@2 [d3,bb3,f4]@2, bb2 ~, d5@3 ~@5, ~ f4@3 ~@4, ~ bb4 ~@2", // Eb Bb
  G: "c4 ~@2 g4 [a3,d4,g4]@2 [a3,d4,gb4]@2, c3 d2, g4@3 ~@5, eb4!2 ~@2, ~ c4@3 ~@4", // Dsus4 D
  H: "~@8 g3@7 ~, g2@15 ~, g4@4 d4@11 ~, d4@2 g3@4 g4@9 ~, ~@2 bb3@13 ~",
})).s("gm_piano").gain(0.24)

// chords · piano · soft notes
const piano_soft = note("<~@2 A ~ B C ~@2 B D ~@66>".pickRestart({
  A: "~ f2", B: "~@5 d3@3", C: "~@8 g3@7 ~", D: "bb3 ~@15",
})).s("gm_piano").gain(0.12)

// chords · synth strings 1 · "SYN.STRING"
const synth_strings_1 = note("<A@2 ~@11 B@3 C D@2 E ~@39 F G H I F G J K L G M N@3 O P ~>".pickRestart({
  A: "[g4@31 ~]/2", B: "[d4 eb4 ~@2 eb4@2, c4@23 ~ bb3@15 ~@9, g4 f4 ~]/3", C: "d4@5 ~@3 [eb4,g4]@8",
  D: "[~ d4 bb3 [c4,eb4], f4@3 ~]/2", E: "~ d5, [d4,a4]", F: "[bb3,db4,f4]", G: "[bb3,eb4,gb4]",
  H: "db4@7 c4@9, [ab3,eb4,gb4]", I: "[ab3,eb4,f4]", J: "db4@7 c4@9, [ab3,eb4]", K: "[ab3,eb4,f4]@15 ~",
  L: "[bb3,db4,f4], e4 ~@15", M: "db4@7 c4@8 ~, [ab3,eb4]", N: "[eb4 db4 gb4, f4@2 ~, ~@16 bb3@31 ~]/3",
  O: "db4@7 c4@7 ~@2, ab3@15 ~", P: "[ab3,f4]@15 ~",
})).s("gm_synth_strings_1").gain(0.25)

// chords · synth strings 1 · "SYN.STRING" · soft notes
const synth_strings_1_soft = note("<~@14 A@4 B@2 ~@50 C ~ D@3 ~>".pickRestart({
  A: "[~@24 c4@7 ~@5 gb4@4 c4@23 ~, ~@7 g4@28 ~@29, ~@4 a4 ~@3]/4", B: "g4/2", C: "ab3@15 ~", D: "[eb4@47 ~]/3",
})).s("gm_synth_strings_1").gain(0.13)

// chords · pad halo · "HALO PAD"
const pad_halo = note("<~@13 A@7 B@3 ~ C@3 ~@5 D@2 E F@3 ~ G@3 ~@9 H@3 ~ I@3 ~@18>".pickRestart({
  A: "[bb3@2 ~@2 f4@2 ~@4 d5@3 ~@7 f5@2 ~@4 d6@2, ~@2 c4@11 ~ [c4,f4]@8 [d4,d5,g5]@6, ~@6 g4@7 ~@5 g4@10, ~@32 bb4@20 ~@12 c5@23 ~@25]/7", // F5 G5
  B: "[[d4,g4,bb4]@8 [g4,bb4,d5] ~@2 [f4,a4,c5] ~@2 [c4,eb4,g4,bb4]@9 ~ [g4,bb4,d5] ~@2 [f4,a4,c5] ~@2 [eb4,g4,bb4]@9 [f4,a4]@9, ~@5 c4@3]/3", // Gm F Cm7 Gm F Eb F
  C: "[[d4,g4,bb4]@7 ~ [g4,bb4,d5] ~@2 [f4,a4,c5] ~@2 [c4,eb4,g4,bb4]@9 ~ [g4,bb4,d5] ~@2 [f4,a4,c5] ~@2 [eb4,g4,bb4]@9 [f4,a4]@9, ~@5 c4@3]/3", // Gm F Cm7 Gm F Eb F
  D: "[[eb5,bb5] a5@2 d5, ~ f5@3]/2", E: "[f4,bb4] ~",
  F: "[~@8 [d4,g4,bb4] ~@2 [c4,f4,a4] ~@2 [bb3,eb4,g4]@9 ~ [d4,g4,bb4] ~@2 [c4,f4,a4] ~@2 [bb3,eb4,g4]@9 [a3,c4,f4]@9]/3", // Gm F Eb Gm F Eb F
  G: "[[bb3,d4,g4]@7 ~ [d4,g4,bb4] ~@2 [c4,f4,a4] ~@2 [bb3,eb4,g4]@8 ~@2 [d4,g4,bb4] ~@2 [c4,f4,a4] ~@2 [bb3,eb4,g4]@9 [a3,c4,f4]@9]/3", // Gm F Eb Gm F Eb F
  H: "[[f4,bb4,db5]@7 ~ [f4,bb4,db5,f5] ~@2 [f4,bb4,eb5] ~@2 [gb4,bb4,db5]@9 ~ [gb4,bb4,db5,f5] ~@2 [gb4,bb4,eb5] ~@2 [eb4,bb4,db5]@9 [eb4,ab4,c5]@9]/3", // Bbm Ebsus2 Gb Gbmaj7 Ebm Eb7 Ab
  I: "[[db4,f4,bb4,db5]@8 [f4,bb4,db5,f5] ~@2 [db4,f4,c5,eb5] ~@2 [eb4,gb4,bb4,db5]@9 ~ [eb4,gb4,db5,f5] ~@2 [eb4,gb4,c5,eb5] ~@2 [db4,gb4,bb4,db5]@9 [c4,eb4,ab4,c5]@9]/3", // Bbm Dbmaj7 Ebm7 Cdim Gb Ab
})).s("gm_pad_halo").gain(0.25)

// other · electric guitar muted · "MUTE GT"
const electric_guitar_muted = note(`<
  ~@10 A B C D E F@2 G H I ~@3 J ~@4 K L M N O P Q ~@3 J ~@7 J ~@7 R ~@7 R ~@7 R ~@5
>`.pickRestart({
  A: "~ g3 f3 g3 ~@3 f3!2 ~ c3 d3 ~ f3!2 ~", B: "~ g3 f3!2 ~@3 eb3!2 c3 ~ c3 ~ eb3!2 ~", C: "~ g3 f3 g3 ~@3 d3!2 ~@7",
  D: "~ g3 f3 g3 ~@3 c3!2 ~@4 g3 ~@2", E: "~ g3 f3 g3 ~@7 d3 f3 g3 ~@2", F: "~ g3 f3 g3 ~@7 g3 f3 g3 ~@2",
  G: "~ d3 f3 g3 ~@7 g3 [f3,g3] g3 ~@2", H: "~ d3 f3 g3 ~ f3 d3 bb2 ~@3 g3 f3 g3 ~@2",
  I: "~@2 g3!2 ~@4 g3!2 ~ g3!3 ~@2", J: "~@9 [g3,c4] [f3,bb3] [c4,eb4] [bb3,d4] ~@3", K: "~@2 f3 g3 ~@7 d3 f3 g3 ~@2",
  L: "~ g3 f3!2 ~@12", M: "~ g3 f3 g3 ~@5 a3 g3 a3 ~@4", N: "~ f3 g3!2 ~@12", O: "~ g3 f3 g3 ~@6 d3 ~@2 f3 ~@2",
  P: "~ g3 f3 g3 ~@5 g3 f3 g3 ~@4", Q: "~ c3 ~@7 c3 d3!2 ~@4", R: "~@9 [bb3,eb4] [ab3,db4] [eb4,gb4] [db4,f4] ~@3",
})).s("gm_electric_guitar_muted").gain(0.27)

// chords · acoustic guitar steel · "STEEL GT"
const acoustic_guitar_steel = note(`<
  ~@20 A B C D E F C G ~@8 B C D E F C G A B C D E F C G H I J K L M J N H I J K L M J N H I J K L M J N ~
>`.pickRestart({
  A: "[g2,g3] [g2,g3]@2 ~ [d4,g4] [d4,g4]@11, ~@3 [g2,g3]@13", // G G5 G
  B: "[c2,c3] [c2,c3]@2 ~ [g4,c5] [g4,c5]@11, ~@3 [c2,c3]@13", // C C5 C
  C: "[f2,f3] [f2,f3]@2 ~ [c4,f4] [c4,f4]@11, ~@3 [f2,f3]@13", // F F5 F
  D: "[bb1,bb2] bb2@2 ~ [f4,bb4,f5] [f4,bb4,f5]@9 ~@2, ~ bb1@13 ~@2, ~@3 bb2@11 ~@2", // Bb Bb5
  E: "[g2,g3] g3@2 ~ [d4,g4] [d4,g4]@11, ~ g2@15, ~@3 g3@13", F: "[c2,c3]!3 ~ [g4,c5] [g4,c5]@10 ~, ~@3 [c2,c3]@12 ~",
  G: "[bb1,bb2] bb2@2 ~ [f4,bb4] [f4,bb4]@10 ~, ~ bb1@14 ~, ~@3 [bb2,ab3,bb3]@12 ~", // Bb Bb5 Bb7
  H: "[bb2,bb3] [bb2,bb3]@2 ~ [f4,bb4] [f4,bb4]@11, ~@3 [bb2,bb3]@13", // Bb Bb5 Bb
  I: "[eb2,eb3] [eb2,eb3]@2 ~ [bb4,eb5] [bb4,eb5]@11, ~@3 [eb2,eb3]@13", // Eb Eb5 Eb
  J: "[ab2,ab3] [ab2,ab3]@2 ~ [eb4,ab4] [eb4,ab4]@11, ~@3 [ab2,ab3]@13", // Ab Ab5 Ab
  K: "[db2,db3] db3@2 ~ [ab4,db5,ab5] [ab4,db5,ab5]@9 ~@2, ~ db2@13 ~@2, ~@3 db3@11 ~@2", // Db Db5
  L: "[bb2,bb3] bb3@2 ~ [f4,bb4] [f4,bb4]@11, ~ bb2@15, ~@3 bb3@13", // Bb Bb5
  M: "[eb2,eb3]!3 ~ [bb4,eb5] [bb4,eb5]@10 ~, ~@3 [eb2,eb3]@12 ~", // Eb Eb5 Eb
  N: "[db2,db3] db3@2 ~ [ab4,db5] [ab4,db5]@10 ~, ~ db2@14 ~, ~@3 [db3,b3,db4]@12 ~", // Db Db5 Db7
})).s("gm_acoustic_guitar_steel").gain(0.3)

// other · vibraphone · "CANTO 1"
const vibraphone = note(`<
  ~@2 A@2 B ~@5 C@3 ~@3 D E F G H@3 I J@3 K L ~ M@2 ~@2 N O@3 P Q@3 ~ R S T I U@3 V ~@2 W X ~@21
>`.pickRestart({
  A: "[~@4 c4 d4 eb4@2 a4@3 g4@7 ~@4 d4@2 g4@7 ~, ~@21 c4@2 ~@9]/2", B: "~@2 d4 eb4 d4@2 eb4 d4@3 ~@6",
  C: "[g4@4 ~@2 g4!2 g4@2 f4!2 ~@2 g4@6 ~ g4!3 g4@2 f4!2 ~ g4 g4@5 c4 g4@2 a4 bb4@3 a4 a4@2 ~@3]/3", D: "~@13 bb4!3",
  E: "bb4@2 a4 a4@2 g4!2 a4@5 ~ a4!3", F: "a4@2 g4!2 ~ f4!2 g4@6 g4 a4!2",
  G: "bb4 a4 g4@2 ~ g4 a4 bb4@3 a4 a4@2 g4@2 ~", H: "[g4@7 ~ bb4 ~@2 a4 ~@2 g4@9 ~ bb4 ~@2 a4 ~@2 g4@9 f4@7 ~ g4]/3",
  I: "g4 f4 d4 g4@2 f4@8 ~@3", J: "[g4@8 bb4 ~@2 a4 ~@2 g4@9 ~ bb4 ~@2 a4 ~@2 g4@9 f4@7 ~@2]/3",
  K: "~@7 d5@2 c5!2 c5@2 bb4 g4@2", L: "~@4 bb4@2 bb4 bb4@3 a4 g4@2 f4 d4@2",
  M: "[~@5 c4 d4 eb4 d4 eb4 ~@5 d4@6 ~@11]/2", N: "~@6 d4 eb4 d4@2 eb4 d4@2 gb4 ~ gb4",
  O: "[g4@7 ~ bb4 ~@2 a4 ~@2 g4@10 bb4 ~@2 a4 ~@2 g4@9 f4@7 ~ g4]/3", P: "g4 f4 d4 g4@2 f4@9 ~@2",
  Q: "[g4@7 ~ bb4 ~@2 a4 ~@2 g4@9 ~ bb4 ~@2 a4 ~@2 g4@9 f4@7 ~@2]/3",
  R: "~@3 d5 d5@2 c5 c5@3 bb4 bb4@2 ~ bb4@2, ~@13 a4@2 ~", S: "~@3 d5 d5@2 c5 c5@3 bb4 bb4@2 a4 bb4@2",
  T: "~@3 d5 d5@2 c5 c5@2 bb4 a4@4 ~ f4",
  U: "[~@3 d5 d5@2 c5 c5@3 bb4 bb4@2 a4 bb4@4 ~@2 d5!2 ~ c5 c5@2 bb4 bb4@2 a4 bb4@4 ~ d5!2 ~ c5 c5@2 bb4 a4@2 ~@4]/3",
  V: "f4 ~@2 g4 ~@2 bb4 ~@2 c5 ~@2 d5 ~@3", W: "~@15 ab4", X: "bb4 ab4 f4 bb4@2 ab4 ~@10",
})).s("gm_vibraphone").gain(0.4)

// other · vibraphone · "CANTO 1" · soft notes
const vibraphone_soft = note("<~@3 A B@2 ~@4 C ~@8 D ~@8 E ~ F ~@45>".pickRestart({
  A: "~@4 bb3 ~@11", B: "[~ c4 ~@8 eb4 d4@3 eb4 d4@10 ~@7]/2", C: "~@5 g4 ~@7 g4 ~@2", D: "~@6 g4 ~@9",
  E: "~@3 bb4 ~@12", F: "~@5 d4 ~@2",
})).s("gm_vibraphone").gain(0.24)

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

// drums · snare
const snare = s("sd").struct("<~@10 A@17 B A@3 B A@3 B A@6 B A@7 B C A@6 B A@7 B A@7 B ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@7 x ~ x!2",
})).gain(0.5)

// drums · clap
const clap = s("cp").struct("<~@27 A ~@14 A ~@7 A ~@7 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@3 x",
})).gain(0.57)

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@7 A ~@7 B ~@6 A ~@7 A ~@7 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@14 x!2", B: "~@2 x ~@2 x ~@10",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B@9 C D@3 B D@3 E B@3 F B@3 F D@2 B D@3 E D@3 B D@3 E G D@2 B D@3 E D@3 B D@3 E D@3 B D@3 E ~
>`.pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "x!16", C: "x!14 ~@2", D: "x!3 ~ x!12", E: "x!3 ~ x!11 ~", F: "x!8 ~@8", G: "x!3 ~ x!3 ~@9",
})).gain(0.43)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@7 B ~@14 B ~@7 B ~@7 B ~@7 B ~@7 B ~>".pickRestart({
  A: "~@13 x ~@2", B: "~@8 x ~@2 x ~@4",
})).gain(0.57)

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~@10 B@3 ~ B@4 ~@8 B@2 ~ B@7 ~ B@7 ~ B@7 ~ B@7 ~ B@4 ~>".pickRestart({
  A: "~@10 x ~@2 x ~@2", B: "~@3 x ~@12",
})).gain(0.5)

// drums · ride bell
const ride_bell = s("rd").struct("<~@16 A ~@6 B ~@14 B ~@7 B ~@7 B ~@7 B ~@7 B ~@5>".pickRestart({
  A: "~@5 x ~@10", B: "~@8 x ~@2 x ~@2 x ~",
// … 13 more lines

More by Cocciante