Strudelify

Tu non mi basti mai

Dalla

KeyC majorTempo85 bpm
0:00/0:00
// Tu non mi basti mai — Dalla
// 85 bpm, 4/4, key C 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 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · piano
const piano = note(`<
  A@8 B@8 C@5 D E D F D G H I J K L M N K O K P@8 B@8 C@5 D E D F D G H I Q R S T@3 U V W X Y V Z V U V W X Y V Z V U V
  W X Y V Z AA
>`.pickRestart({
  A: "[c4@4 ~ d4 ~@7 b3 ~@7 d4 ~@7 b3 ~@7 d4 ~@7 b3 ~@7 d4 ~@7 b3 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~ c4, [c3,e3,g3]@7 c4@6 ~@2 c4@6 ~@2 c4@6 ~@2 c4@6 ~@2 c4@6 ~@2 c4@5 ~@3 c4@5 ~@3 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@5, ~@8 [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~]/8", // C F C F C F C F …
  B: "[~@5 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@7 d4 ~@7 d4 ~@7 b3 ~@7 d4 ~@7 b3 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~ c4, [c3,e3,g3]@7 d4@4 ~@4 c4@6 ~@2 d4@4 ~@4 c4@5 ~@3 c4@5 ~@3 c4@5 ~@3 c4@6 ~@2 c4@5 ~@3 c4@5 ~@3 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@5, ~@8 [b1,b2]@7 ~ [a1,a2]@8 [g1,g2]@8 [f1,f2]@8 [g1,g2]@8 [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~]/8", // C B A G F G C F …
  C: "[~@5 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@7 d4 ~ g3@9 [g3,c4]@7 ~, [c3,e3,g3]@7 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 [a3,c4]@7 ~ [g3,b3]@8 [a3,c4]@7 ~ [a3,c4]@8 ~@17, ~@8 [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [b1,b2]@7 ~ [a1,a2]@7 d4@4 ~@20 c4 ~@16, ~@5 [g1,g2] [f1,f2] [g1,g2] ~@2]/5", // C5 C Am G Am F C B …
  D: "[a2,a3,c4,e4] [g2,g3,b3,d4]", E: "[f2,f3,a3,c4]@2 ~ c3, ~ [c2,e3,g3,c4]",
  F: "[f3,g3,a3,c4]@5 [f3,g3,a3,c4] ~@2 [f3,g3,a3,c4]@8, f2", G: "[f2,f3,a3,c4] [c2,c3,e3,g3,c4]",
  H: "[d2,d3,f3,g3,c4] [e2,d3,g3,c4]", I: "c4 b3, [g2,f3,g3]", J: "[c2,g3,c4,e4] [g#1,g#2,g3,c4,d#4,g4]",
  K: "[d#2,g3,a#3,d#4] [a#1,a#2,a#3,c4,d4,f4]", L: "[c2,g3,c4,e4] [f2,g3,a3,c4]",
  M: "[d#2,g3,a#3,d#4]@8 [a#1,a#2,a#3,c4,d4,f4]@7 ~", N: "[c2,g3,c4,e4] [g#2,g3,c4,d#4,g4]",
  O: "[c2,g3,c4,e4] [f2,g3,a3,c4,e4]", // C Fmaj7
  P: "[c4@4 ~ d4 ~@7 b3 ~@7 d4 ~@7 b3 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~@7 e4 ~@5 c4 d4 e4 ~ c4, [c3,e3,g3]@7 c4@6 ~@2 c4@6 ~@2 c4@6 ~@2 c4@6 ~@2 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@4 c4@5 ~@3 d4@4 ~@5, ~@8 [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~ [c3,e3,g3]@7 ~ [c3,f3,a3]@7 ~]/8", // C F C F C F C F …
  Q: "[d3,a3,c4] [e3,g3,c4]", R: "[g3,a3,c4] [f3,g3,c4]", S: "[d3,g3,c4] [e3,g3,c4]",
  T: "[[g3,a3,c4] [f3,g3,c4]@4 [c2,g3,c4,e4]]/3", U: "[g#1,g#2,g3,c4,d#4,g4] [d#2,g3,a#3,d#4]",
  V: "[a#1,a#2,a#3,c4,d4,f4] [c2,g3,c4,e4]", W: "[f2,g3,a3,c4] [d#2,g3,a#3,d#4]",
  X: "[a#1,a#2,a#3,c4,d4,f4]@7 ~ [c2,g3,c4,e4]@8", Y: "[g#2,g3,c4,d#4,g4] [d#2,g3,a#3,d#4]",
  Z: "[f2,g3,a3,c4,e4] [d#2,g3,a#3,d#4]", AA: "[a#1,a#2,a#3,c4,d4,f4] ~",
})).s("gm_piano").gain(0.36).pan(0.4)

// bass · fretless bass
const bass = note(`<
  A@6 B@3 C D E@7 C D F G H C I C H J K L M N M L M N M A@6 B@3 C D E@7 C D F G H C I C H J K O P O Q@3 R S T S R S T S
  R S T S R S T S R S T S R S T U
>`.pickRestart({
  A: "[~@4 c2@16 c2@16 c2@15 ~ c2@16 c2@16 c2@12]/6", B: "[~@4 c2@16 c2@16 c2@4 b1@7 ~]/3", C: "a1 g1", D: "f1 g1",
  E: "[~@4 c2@15 ~ c2@16 c2@16 c2@16 c2@16 c2@16 c2@4 b1@8]/7", F: "~@3 c2 c2@11 ~", G: "a1@7 ~ g1@8", H: "f1 c2",
  I: "f1", J: "d1 e1", K: "g1", L: "c2 g#1", M: "d#2 a#1", N: "c2 f1", O: "d2 e2", P: "f2 g2",
  Q: "[f2@8 g2@13 d2 a2 d2 g1@16 c2@8]/3", R: "g#1 d#2", S: "a#1 c2", T: "f1 d#2", U: "a#1 ~",
})).s("gm_fretless_bass").gain(0.44)

// other · piccolo · Csus2 Bm Gsus2 Dm
const piccolo = note("<~@31 [~ [c7,d7] e7 g7 f7 e7 [b6,c7,d7] [g6,a6] ~ a6 a#6 c7 a#6 [d6,e6,f6,g6,a6] c6 ~] ~@64>")
  .s("gm_piccolo").gain(0.12).pan(0.7)

// other · shanai
const shanai = note("<~@71 A B@6 C@2 D@2 E@2 F@4 B@6 G@2>".pickRestart({
  A: "~ c4",
  B: "[g4@10 d#4 ~ f4 ~ d#4 d4@5 d4 e4 d4 c4@18 ~ d#4 ~ d#4@2 f4 d4@2 c4 a#3@2 d4 e4 d4@2 c4@18 g4 ~ g4@2 a#4 f4@5 f4 g4 f4@2 g4@8]/6",
  C: "[a4@8 ~@2 d#4@2 d4@2 c4 a#3@2 f3@3 a#3 c4 d4@2 c4@7 ~]/2", D: "[g4@7 f4 g4 a#4 g4@12 f4@2 e4@8]/2",
  E: "[f4 g4@2 e4]/2", F: "[d#4@9 ~ d#4 ~ d#4@2 f4 d4@7 e4 d4 c4@17 ~ d#4 ~ d#4@2 f4 d4@2 c4 a#3@2 d4 e4 d4@2 c4@8]/4",
  G: "[a4@8 ~@2 d#4@2 d4@2 c4 a#3@2 f3@3 a#3 c4 d4@2 ~@8]/2",
})).s("gm_shanai").gain(0.33)

// other · pad new age
const pad_new_age = note("<~@79 [~ a#4] [a#4 ~] [~@3 d6@5] ~@14>").s("gm_pad_new_age").gain(0.23)

// other · shakuhachi
const shakuhachi = note("<~@29 A@4 B C@5 ~@57>".pickRestart({
  A: "[c4@8 g4@10 d#4 ~ f4 ~ d#4 d4@5 d4 d#4 d4 c4@19 d#4 ~ d#4@2 f4 d4@2 c4 a#3@2 d4 e4 d4@2]/4", B: "c4 g4",
  C: "[~@2 d#4 ~ f4 ~ d#4 d4@5 d4 d#4 d4 c4@18 ~ d#4 ~ d#4@2 f4 d4@2 c4 a#3@2 d4 e4 d4 c4@25 ~@8]/5",
})).s("gm_shakuhachi").gain(0.35).pan(0.6)

// other · whistle
const whistle = note("<~@29 A@4 B C@5 ~@31 D ~@7 E@2 ~@16>".pickRestart({
  A: "[c6@8 g6@10 d#6 ~ f6 ~ d#6 d6@5 d6 d#6 d6 c6@18 ~ d#6 ~ d#6@2 f6 d6@2 c6 a#5@2 d6 e6 d6@2]/4", B: "c6@8 f#6@7 ~",
  C: "[~@2 d#6 ~ f6 ~ d#6 d6@4 ~ d6 d#6 d6 c6@18 ~ d#6 ~ d#6@2 f6 d6@2 c6 a#5@2 d6 e6 d6 c6@25 ~@8]/5", D: "g#6@9 ~@7",
  E: "[~@10 d#7 ~ d7 ~ c7 a#6@2 f6@3 a#6 c7 d7 ~@9]/2",
})).s("gm_whistle").gain(0.24).pan(0.4)

// other · whistle · soft notes
const whistle_soft = note("<~@94 A@2>".pickRestart({
  A: "[~@10 d#7 ~ d7 ~ c7 a#6@2 f6@3 ~@12]/2",
})).s("gm_whistle").gain(0.06).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@11 A@2 ~@7 B ~@3 A@2 ~@22 A@2 ~@7 B ~@3 A@2 ~@33>".pickRestart({
  A: "[~@3 d4@2 ~@2 d4@2 ~@6 d4@2 ~@2 d4@2 ~@4 e4@2 ~@5, g3@2 g3@3 ~ g3@4 g3@3 e4@4 e4@3 ~ e4@2 d4@4 ~@5, ~ e4@3 ~ e4@4 e4@2 d4@3 g3@4 g3@4 g3@5 ~@5]/2",
  B: "~@3 d4@2 ~@2 d4@2 ~@6 d4, g3@2 g3@3 ~ g3@4 g3@3 e4@3, ~ e4@3 ~ e4@4 e4@2 d4@3 g3@2",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.8)

// other · french horn
const french_horn = note("<~@67 A ~ B@3 ~@24>".pickRestart({
  A: "f4 d4", B: "[f4 d4@4 ~]/3",
})).s("gm_french_horn").gain(0.31).pan(0.6)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@11 A B ~@22 C@2 D E F ~@26 G@3 H@2 I ~@24>".pickRestart({
  A: "~@4 g3 ~ g3 d4 ~@2 g3 d4 g3 ~ g3 d4, g3!2 ~@2 g3 ~@3, ~ e4@2 d4@2 e4@3 ~ e4@3 ~ e4@2 ~",
  B: "g3 e4 g3 d4 g3 e4 ~ d4 ~@8, ~@3 g3 ~@4",
  C: "[~@2 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 c4, g3@2 ~ c4@3 ~ c4@3 ~ c4@3 ~ c4@3 ~ c4@3 ~ c4@3 ~ c4@2 ~@3, ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3]/2",
  D: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 c4, ~ d4@2 c4@2 d4@2 c4@2 d4@2 c4@2 d4@2 ~",
  E: "g3 ~ g3 c4 g3 d4 g3 c4 g3 d4 g3 c4 g3 d4 g3 c4, ~ d4@2 ~@13", F: "g3 d4 g3 c4 g3 d4 g3 c4 ~@8",
  G: "a2 ~@5 c3@2 b2 ~@5 c3@2, ~ c3@4 ~@4 c3@4 ~@3, ~@2 d3@2 ~ d3@3 ~@2 d3@2 ~ d3@3, ~@3 g3@5 ~@3 g3@5",
  H: "b2 ~@5 c3@2 b2 ~@5 c3@2, ~ c3@4 ~@4 c3@4 ~@3, ~@2 d3@2 ~ d3@3 ~@2 d3@2 ~ d3@3, ~@3 g3@5 ~@3 g3@5",
  I: "b2 c3 d3@2 d3 c3 b2 ~@9",
})).s("gm_acoustic_guitar_nylon").gain(0.26).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@8 B@2 C D@8 C E F G@2 H@2 I@3 J@2 K L J@2 K L A@8 B@2 C D@8 C E F G@2 H@2 I@3 M ~ M ~@2 N@8 O@8 P@8 Q
>`.pickRestart({
  A: "[[e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3], c4]/8", // Em F Em F Em F Em F …
  B: "[[e3,g3] [b3,d4] [e3,c4] [b3,d4], ~ g3@3]/2", C: "[f3,a3,c4]",
  D: "[[e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [f3,a3] [e3,g3] [b3,d4] [e3,c4] [b3,d4], c4@13 g3@3]/8", // Em F Em F Em F Em F …
  E: "~@5 [g4,d5]@11, [c2,e3,g3,c4]", F: "[a3,e4,c5] [g3,b3,d4,b4], c4 ~@15",
  G: "[[f3,a3,a4] [e3,g3,e4] [a3,e4,c5] [g3,b3,d4,b4], c4@3 ~]/2", // F Em Am G
  H: "[~@3 [d4,g4]@5 [c5,g5]@4 [g3,b3,d4,b4]@4, [a3,c4,e4]@3 ~, [f3,a4] ~]/2", // G5 C5 G Am F
  I: "[[f3,a3,a4] [e3,e4] f3 ~@2 b3, c4@5 ~, ~ g3@5]/3", J: "[[e3,g3] g#3 g3 [d4,f4], c4 a#3, ~ d#4@2 ~]/2",
  K: "[e3,g3] [f3,a3], c4", L: "[g3,d#4] [d4,f4], a#3", M: "g4 c4",
  N: "[~ [e3,g3,c5] g#3 g3 [d4,f4] [e3,g3,b4] [f3,a3,c5] [g3,d#4] [d4,f4] [e3,g3,b4] [g#3,c5] g3 [d4,f4] [e3,g3] [f3,a3] [g3,a#3,d#4], ~@8 g4@23 ~@9 g4@32 g4@32 ~@24, ~ c4@2 a#3@2 c4@2 [a#3,a#4]@2 c4@2 [a#3,a#4]@2 c4@2 ~, ~ [d#4,a#4] ~@3 d#4 ~@2]/8", // C Dm Em F Cm Dm Em G# …
  O: "[[d4,f4] [e3,g3,b4] [g#3,c5] g3 [d4,f4] [e3,g3] [f3,a3] [g3,d#4] [d4,f4] [e3,g3] g#3 g3 [d4,f4] [e3,g3] [f3,a3] [g3,a#3,d#4], ~@4 g4@11 ~@49, ~ c4@2 a#3@2 c4@2 a#3@2 c4@2 a#3@2 c4@2 ~, ~ d#4 ~@3 d#4 ~@2, ~@12 a#4@3 ~@49]/8", // Dm Em G# Dm Em F Cm Dm …
  P: "[[d4,f4] [e3,g3] g#3 g3 [d4,f4] [e3,g3] [f3,a3] [g3,d#4] [d4,f4] [e3,g3] g#3 g3 [d4,f4] [e3,g3] [f3,a3] [g3,a#3,d#4], ~ c4@2 a#3@2 c4@2 a#3@2 c4@2 a#3@2 c4@2 ~, ~ d#4 ~@3 d#4 ~@2]/8", // Dm Em Dm Em F Cm Dm Em …
  Q: "[d4,f4] ~", // Dm
})).s("gm_synth_strings_1").gain(0.2)

// drums · kick
const kick = s("bd").struct("<[x ~@6 x!2 ~@7]!71 [x ~@6 x!2 ~@6 x] [x ~@7 x ~@6 x]!23 x>").gain(0.42)

// drums · low tom
const low_tom = s("lt").struct("<[~ x ~ x]!95 [~ x ~@2]>").gain(0.42)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@30 A@7 ~@30 A@5 B@7 ~ B@7 ~ B@7 ~>".pickRestart({
  A: "~ x ~@2", B: "~@3 x",
})).gain(0.21)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 A@7 ~@30 A@5 B@7 ~ B@7 ~ B@7 ~>".pickRestart({
  A: "~@3 x ~@12", B: "~@11 x ~@4",
})).gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@30 A@7 ~@30 A@4 B C D@6 E C D@6 E C D@6 E>".pickRestart({
  A: "~@2 x ~@7 x ~@2 x ~@2", B: "~ x ~@6", C: "~@5 x ~@2", D: "~@2 x ~@2 x ~@4 x ~@5", E: "~@2 x ~@2 x ~@10",
})).gain(0.21)

// drums · china
const china = s("cr").struct("<~@25 A ~@3 B ~@3 A ~@28 A ~@8 C ~@7 C ~@7 C ~@8>".pickRestart({
  A: "~ x ~@2", B: "x", C: "~ x",
})).gain(0.26)

// drums · bongos
const bongos = s("bongo:4").struct("<~@31 A ~@36 A ~@4 B ~@7 B ~@7 B ~@6>".pickRestart({
  A: "~@3 x!2 ~@11", B: "~@11 x!2 ~@3",
})).gain(0.83)

// drums · congas
const congas = s("conga:13").struct("<~@30 A@7 ~@30 A@4 ~@2 B@7 ~ B@7 ~ B@7>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@4",
})).gain(0.67)

// drums · congas
const congas_2 = s("conga:18").struct("<~@29 A B@7 ~@29 A B@5 C D@6 ~ C D@6 ~ C D@6 ~>".pickRestart({
  A: "~@6 x!2", B: "~@5 x!2 ~@9", C: "~@4 x ~ x ~@6 x!2 ~", D: "~@13 x!2 ~",
})).gain(0.67)

// drums · congas
const congas_3 = s("conga:33").struct("<~@29 A B@7 ~@29 A B@4 ~ C D@7 C D@7 C D@7>".pickRestart({
  A: "~@13 x ~@2", B: "~@11 x ~@4", C: "~@5 x ~@10", D: "~@3 x ~@12",
})).gain(0.67)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@29 A ~@36 A ~@5 B ~@7 B ~@7 B ~@7>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@8",
})).gain(2.35)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!95 [~ x ~ x ~ x ~ x ~@8]>").gain(1.07)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@30 A ~@36 A ~@5 B ~@7 B ~@7 B ~@6>".pickRestart({
  A: "~@10 x!2 ~@2 x ~", B: "~@2 x!2 ~@2 x ~@9",
})).gain(0.38)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  A B A B A B A B A B A@2 B A B A B A B A@3 B A B A B A B A B@7 A B A B A B A B A B A@2 B A B A B A B A@3 B A B A B A B
  A B@4 C D@7 E D@7 E D@7 F
>`.pickRestart({
  A: "~@3 x ~@2 x ~@2 x ~@2 x ~@2 x", B: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", C: "x ~@2 x ~@2 x ~@4 x ~@2 x ~",
  D: "~ x ~@2 x ~@2 x!2 ~@2 x ~@2 x ~", E: "~ x ~@2 x ~@2 x ~@3 x ~@2 x ~", F: "~ x ~@2 x ~@2 x ~@8",
})).gain(2.29)

// drums · triangle
const triangle_2 = s("triangles:35").struct(`<
  A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A@3 ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A@3 ~ A ~ A ~ A ~
  A ~@4 B ~@7 B ~@7 B ~@8
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(2.29)

// drums · shaker
const shaker = s("sh").struct("<[x!8]!95 [x!4 ~@4]>").gain(0.26)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@33 x ~@36 x ~@25>").gain(1.59)
// … 9 more lines

More by Dalla