Strudelify

Aver paura d'innamorarsi troppo

Battisti

KeyG majorTempo123 bpm
0:00/0:00
// Aver paura d'innamorarsi troppo — Battisti
// 123 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 177 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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(`<
  ~@5 A@12 B@2 C D E F G H I J K L M@2 N O P B Q R E S G T U I K V M@2 W X A Y A@3 Y A Z AA AB AC AD AE@2 AF AG AH AI AJ
  AK AL@2 AM AN AO AP AQ AR AS AT AU AV AW AA M@2 W X B@2 C D E F G AX I J K AY M@2 N AZ B@2 Q BA E S G AT J I K BB M@2
  BC BD A Y A@3 Y A Z AA AB AC AD AE@2 AF AG AH AI AJ AK BE@2 AM AN AO AP AQ AR AS AT AU AV AW AA M@2 W AZ AM AN AO AP
  AQ AR AS AT AU AV AW AA M@2 W BF@4 ~
>`.pickRestart({
  A: "g1 ~@2 g1 ~@4", B: "g1@3 g1 g1@4", C: "f#1@3 f#1 f#1@2 f#1@2", D: "b1@3 f#2 b2 b1 d#2 f#2", E: "e2@3 e2 e2@4",
  F: "e2@3 e2 e2@2 e2@2", G: "d2@3 d2 d2@3 d2", H: "g2@3 d2 g2 d2 b1@2", I: "c2@3 c2 c2@4", J: "c2@3 c2 c2@3 c2",
  K: "b1@3 b1 b1@4", L: "e2@3 e2 e2@2 e1@2", M: "a1@3 a1 a1@4", N: "a1@3 a1 a1@3 a1", O: "d2@3 d2 d2@2 e2 f#2",
  P: "g2@3 g2 g2@4", Q: "f#1@3 f#1 f#1@3 f#1", R: "b1@3 f#2 b2 c#2 d#2@2", S: "e2@3 e2 e2@2 e2 d#2",
  T: "g2@3 d2 g2 g1 b1@2", U: "c2@3 c2 c2@3 g1", V: "e1@3 e1 e1@4", W: "d2@3 d2 d2@4", X: "d2@6 d2@2 d2@7 ~",
  Y: "g1@2 ~@4 g1@2 ~@2 g2@5 ~", Z: "g2@5 ~ g1@2 ~@8", AA: "e1@2 ~ e1 e1@4", AB: "e1 e1@2 e1 e1@2 e1 f#1",
  AC: "g1 g1@2 g1 g1@2 g1 d2", AD: "d2 d2@2 d2 d2@2 d2 f#1", AE: "[a#1@3 f2@3 a#2@3 f2@3 a#1@2 a#1@2]/2",
  AF: "g1 g1@2 g1 g1@4", AG: "g1@2 g1@4 g1@2 g1@7 ~", AH: "e1 e1@2 e1 e1@4", AI: "e1 e1@2 e1 e1@2 e1@2",
  AJ: "g1!2 ~ g1 g1@2 ~@2", AK: "d2 d2@2 d2 d2@2 ~@2", AL: "[c2@3 g2@3 e3@3 g2@3 e2@2 c2@2]/2",
  AM: "g1@2 ~ g2 g2@2 ~@2", AN: "g1@2 ~ g1 g1@2 ~@2", AO: "f#1@2 ~ f#1 f#1@2 f#1@2", AP: "b1@2 ~ f#2 b2 b1 d#2 f#2",
  AQ: "e2@2 ~ e2 e2@2 ~@2", AR: "e2@2 ~ e2 e2@2 ~ e2", AS: "d2@2 ~ d2 d2@2 ~ d2", AT: "g2@2 ~ d2 g2 d2 b1 g1",
  AU: "c2@2 ~ c2 c2@3 ~", AV: "c2@2 ~ c2 c2@3 c2", AW: "b1@2 ~ b1 b1@3 b1", AX: "g2@3 d2 g2 d2 g1 b1", AY: "e2 e1",
  AZ: "d2@3 d2 e2@2 f#2@2", BA: "b1@3 f#2 b2 b1 c#2 d#2", BB: "e2@3 e1 e1@4", BC: "d2@3 d2 d2@2 ~ a1",
  BD: "d2@3 d2!3 ~ d2", BE: "[c2@3 g2@3 e2@3 g2@3 e2 ~ e2 ~]/2", BF: "[d2@6 d2@2 e2@4 ~ f#2@5 g1@44 ~@2]/4",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@49 A@8 ~@22 B C D E F@3 G@2 ~@31 A@8 H@2 I J K@2 L M N@2 O P Q@4 ~@6 B C D E R@3 S T@3 ~@17
>`.pickRestart({
  A: "[d6@119 ~@9]/8", B: "~ e5", C: "f#5 g5", D: "a5 b5", E: "c6 d6", F: "e6/3", G: "[d6@5 ~@3]/2",
  H: "[~@6 [e3,g#3] [f#3,a3], e4]/2", I: "[g3,b3,d4,g4]", J: "[a3,d4,f#4,a4]",
  K: "[[g3,c4,e4,g4]@3 [a3,d4,f#4]@3 [g3,c4,e4]@3 [g3,c4,e4]@3 [g3,c4,d4,e4]@2 [g3,c4,e4]@2]/2", // C D C
  L: "[g3,b3,d4]@5 [e3,g3,c4]@3", M: "[d3,g3,b3]", N: "[~@5 a3 ~ e4, ~ g#3@4 ~ [g#3,b3]@2, ~@3 e4@4 ~]/2",
  O: "b3@2 b4 [a4,c5], [g3,d4], g4@3 ~", P: "[d4,d5]@2 [e4,e5] [f#4,f#5], [f#3,a4]",
  Q: "[[g4,e5,g5]@6 [f#4,d5,f#5]@6 [e4,c5,e5]@6 [e4,c5,e5]@5 ~ [d4,b4,d5]@4 [c4,a4,c5]@4 [b3,g4,b4]@32, g3]/4", // C D C G F Em
  R: "[e6@5 c6]/3", S: "b5 a5", T: "[d6@3 ~]/3",
})).s("gm_string_ensemble_1").gain(0.35).pan(0.4)

// chords · epiano1
const epiano1 = note(`<
  A B C B C B C B C B C B C B C B D@3 E@2 F@2 G H@3 I J@4 K L@2 M N O@2 P Q R@2 S T U V W X B C B C B C B C Y@2 Z AA
  AB@2 AC@2 Y@2 AD AE AF@2 AG@2 AH@2 AI@2 AJ AK AL@2 AM AN AO@2 AP AQ AR@2 AS@2 AT@2 AU AV AW@2 AX J@4 K AY@2 AZ BA BB@2
  BC BD BE@2 BF BG BH V W X B C B C B C B C Y@2 Z AA AB@2 BI@2 Y@2 AD AE AF@2 BJ@2 BK BL BM@2 BN BO BP@2 BQ BR@5 BJ@2 BK
  BL BS@2 BN BO BP@2 BQ BT@5 BU@4
>`.pickRestart({
  A: "~@6 d2 e2", B: "[d3,g3] ~@5 [g2,d3]@2 ~@2 d2 ~ d2@2 e2@2, g2@2 ~@4 g3 ~@9",
  C: "[d3,g3] ~@5 [d3,g3] ~@3 d2 ~ d2@2 e2@2, g2 ~@2 g2 ~@4", // G5
  D: "[[d3,g3] ~@5 [d3,g3] ~@3 d2 ~ d2@2 ~@30 d4@4, g2 ~@2 g2 ~@3 e2 g2@12 b4 g4@3, ~@5 d5@11, ~@5 b4@7 d3@4, ~@8 [d4,g4,a4]@11 g3@5]/3", // G5 Dsus4
  E: "[[f#2,e4]@8 d#4@5 ~ [d#4,a4]@2, [f#4,b4]@7 ~, ~ b2, ~@13 a3@3]/2", // F#7 D#dim B5
  F: "[[b3,e4,g4]@23 ~@5 b3@4, e3, ~@3 [g4,b4], ~@13 e4@3]/2", G: "[c4,f4,a4] [f4,a4,c5], d3",
  H: "[g4@11 ~ g4@3 ~ [c5,e5]@22 ~@6 e5@3 ~, [g3,d4,b4]@15 g4@23 g4@4 f#5@5 ~, ~ c3@2, ~@39 c5@8 ~, ~@40 g5@7 ~]/3", // C G
  I: "[a4,d5,f#5]@3 [f#4,d5], b2", // D
  J: "[~@16 [e4,a4]@14 ~@2 [e4,g#4]@14 ~@3 e4@15, [e3,d4,g#4,b4]@15 [b4,c5]@15 ~ [b4,c5]@15 ~ [b4,c5]@17, ~@14 e5@15 ~ e5@15 ~ e5@17 ~, ~@16 a3@47 ~, ~@3 g4]/4", // A5 E E7 Cmaj7
  K: "[f#4,d5]@10 [e4,g4,c5]@5 ~, d3@15 ~", // D C
  L: "[g4@15 ~@5 b3@5 ~@3 a4@3 ~, g2@31 ~, b3@20 ~@6 b3@5 ~, d4@18 d4@13 ~, ~@16 g4@11 ~@5]/2", M: "[f#2,e4,a4,b4]",
  N: "~@2 [b4,d5] [a4,c5], [b2,d#4], ~ b3@3", O: "[b4@7 ~ [b4,g5]@7 ~ [a4,f#5]@8 [g4,e5]@8, e3, g4@15 ~@17]/2",
  P: "a4 [a4,f5], [d3,c4,f4]", Q: "[g4,e5] [f4,d5], g3@15 ~", R: "[e4@6 ~ g4, c3, g4@26 e4@5 ~, d4@23 ~ d4@7 ~]/2",
  S: "~@12 a4@3 ~, [b2,a3,d4,f#4]", T: "[e3,d4,g#4,b4]",
  U: "~@2 [a4,c5]@2 a4@2 ~@2 e4@7 ~, [a2,e5,a5]@15 ~, c6 ~, ~@4 c5@11 ~, ~@6 a4@9 ~", // Am A5
  V: "~@2 [g#4,c5]@2 g#4@2 ~@2 e4@7 ~, [a2,e5,g#5], c6 ~, ~@4 c5@11 ~, ~@6 g#4@9 ~", // G# Amaj7
  W: "[e5,g5] [c5,e5] g4 ~ e4@4, [d3,c6], ~@2 g5 ~ [c5,e5]@11 ~, ~@3 g4@5", // Em C D7 C
  X: "[d3,d5,f#5] ~@2 d4 [b3,d4]@2 [a3,c4]@2, a5 ~, ~ d3@7, ~ [a4,d5,f#5]@3 ~@4, ~ f#4 ~@2", // D Bm Am D
  Y: "[~@7 e5, e3, g#3@7 ~ g#3@16 e4@8, ~@2 b3@7 ~ b3@22, ~@4 e4@7 ~ e4@2 b4@12 g#4@6]/2",
  Z: "b4 ~@5 [d4,g4,b4]@2, [g2,d5], g4@3 ~, ~ b4@5 ~@2, ~@5 g3@3", AA: "a4@2 ~ [f#4,d5], [d3,d4], f#4@3 ~, ~ [a4,f#5]",
  AB: "[[g4,e5]@3 [f#4,d5]@3 [e4,c5]@3 ~@2 c4 ~ c4 ~ g3, c3, ~@9 [e4,g4]@3 [d4,f#4]@2 [c4,e4]@2, ~@20 g3@9 ~@3, ~@11 d3@5]/2", // C D C Em D C
  AC: "[g2 ~@5 [e3,g3,c4]@2 ~ g2@7, [g3,b3,d4]@3 ~ [d3,g3,b3]@4, ~ g2@8 ~@7]/2", // C G
  AD: "g4 ~@4 d5 [d5,g5,b5]@2, g3, [b4,d5] b4, ~ g4@7, ~ d4@3", AE: "[d3,d5,f#5,a5]",
  AF: "[~@2 g4 ~@2 f#4 ~@2 e4 ~@2 g3 ~ a3 ~ g3, c3, [e5,g5]@3 [d5,f#5]@3 [c5,e5]@3 ~ c4@2 [d4,f#4]@2 [c4,e4]@2, ~ c5@2 ~ a4@2 ~ g4@2 [e4,g4]@3 ~@4]/2", // Em D C D C Em
  AG: "[d4@6 b4 c5, [g2,g3,b3], ~@3 [g4,d5]]/2", // G G5
  AH: "[[f#2,e4]@16 d#4@8 ~@2 b3@2 ~@2 b3 ~, [a4,b4]@7 ~, ~@16 b2@15 ~, ~@6 [e4,g4] [f#4,a4]]/2", // F#7 Asus2 Em F#m
  AI: "[[b3,e4,g4] [d4,f#4,a4] [e4,g4,b4] [g4,b4,e5], e3]/2", AJ: "[f4,a4,d5] [g4,c5,e5], d3",
  AK: "[g4,b4,d5,f5] [b4,d5,f5,a5], g2", // G7 Bm7b5
  AL: "[~@6 c4 d4 ~@4 [g4,c5]@4, [c3,e5,g5], ~ c5@3 c5@8 ~@4, ~@4 g4@19 ~@9, ~ e4]/2", AM: "~@3 a4, [b2,a3,d4,f#4]",
  AN: "[e3,g#3,e4]", // E
  AO: "[c6 ~@3 e4@4 c6 ~@3 e4@4, a2, a5@3 a4@5 ~@2 c5@6, ~@2 e5@13 ~ g#5@6 g#4@10, ~@4 c5@12 ~@2 e5@13 ~]/2",
  AP: "c6 ~@3 e4@4, [d3,g5], ~@2 e5@13 ~, ~ c5@3, ~@6 g4@9 ~", // G5
  AQ: "~@2 d4 [d3,e3,g3,c4], [d3,a3]@3 ~, d4 ~, f#4@3 f#4@3 ~@2, ~ a4@2 ~", // C D5
  AR: "[[g3,b3]@2 [g3,b3,d4]@2 [d4,g4]@2 ~ b3, g2, ~@8 b3@5 d4@3, ~@3 a4]/2", // G G5
  AS: "[[f#3,e4]@4 ~@2 [g4,b4] [f#4,a4], [a4,b4]@3 ~, ~ [b2,d#4]]/2", // F#7 G F#m Asus2 B
  AT: "[~@12 b3 ~ g3@2, [e2,g4], [b3,e4]@3 e4, ~@11 b2@5, ~@12 g3 b3@3]/2", AU: "[a3,c4,f4] [c4,f4,a4], d3@15 ~",
  AV: "[b3,e4,g4] [a3,d4,f4], g2", AW: "[[g3,c4,e4]@23 ~ c4 ~@3 g3@4, c3@31 ~, ~@24 [e4,g4]@7 ~, ~@26 c4@5 ~]/2",
  AX: "~ d5, [b2,a3,d4,f#4]", AY: "[[g4,b4]@11 ~@3 b5@2, [g3,d4], ~@11 [d5,g5]@5, ~@23 b5@4 ~@5, ~@3 d6]/2",
  AZ: "~@3 g5, [f#3,a4,e5,a5]", BA: "[a4,d#5,a5] [b4,d#5,b5], b3",
  BB: "[[a4,f#5] [b4,g5] [a4,f#5] [g4,e5] [d4,b4] [b3,g4] [a3,f#4] [g3,e4], e3]/2", BC: "[a3,c4,f4] [c4,f4,a4], d3",
  BD: "[g2,b3,d4,g4]", BE: "[~@7 e4, c3@12 e4 g4@3, g5@5 d4@3, ~ d5@2 c5 g4 d4 e4 c5@9, ~ e5@7]/2",
  BF: "~@7 d5, f#3@3 f#4, a5@3 d5@2 e4@3, ~ e5@7, ~ f#5 a4@2", BG: "~@3 b3@5, [e3,b4], ~ g#4@7, ~ e4@3",
  BH: "~@2 [a4,c5]@2 a4@2 ~@2 e4@7 ~, [a2,e5,a5]@15 ~, c6 ~, ~ c5@3, ~@6 a4@9 ~", // Am A5
  BI: "[g2 ~@4 [e3,g3,c4]@3 ~ g2@7, [g3,b3,d4]@5 ~@3 [d3,g3,b3]@8, ~ g2@8 ~@7]/2", // C G
  BJ: "[[g3,b3]@4 b3 ~@3 d4 ~@3 [d4,g4,b4]@4, g2, ~@4 d4@3 d3 b3 d4@2 g3@5, ~@2 g3 g3@2 b3@3, ~@5 b3@3 g4@4 ~@4]/2", // G
  BK: "~@3 e5, [f#3,e4,a4,c#5]", BL: "[a4,d#5,f5] [a4,d#5,f#5], b3",
  BM: "[[d5,f#5,a5] [b4,d5,g5] [a4,d5,f#5] [g4,b4,e5], e3]/2", BN: "[c5,e5,g5] [a4,c5,f5], d3",
  BO: "[a4,c5,e5] [f4,b4,d5], g2", BP: "[[g3,d4,e4]@3 [g3,d4,e4], c3]/2", BQ: "~@3 d5, [b2,a3,d4,f#4]",
  BR: "[~@16 [e4,a4]@15 ~ [e4,g#4,c5]@16 [e4,g4,c5]@15 ~ [f#4,d5]@10 [e4,g4,c5]@5 ~, [e3,d4,g#4,b4]@15 [b4,c5]@15 ~@34 d3@15 ~, ~@14 e5@15 ~@51, ~@16 a3@63 ~]/5", // A5 Eaug C D C E7 Cmaj7
  BS: "[[b4,d5,a5] [b4,d5,g5] [a4,d5,f#5] [g4,b4,e5], e3]/2", // Bm7 G D Em
  BT: "[~@16 [e4,a4]@15 ~ [e4,g#4,c5]@16 [e4,g4,c5]@15 ~ [f#4,d5]@10 ~ [e4,g4,c5]@5, [e3,d4,g#4,b4]@15 [b4,c5]@15 ~@34 d3@16, ~@14 e5@15 ~@51, ~ a3@4]/5", // A5 Eaug C D C E7 Cmaj7
  BU: "[~@2 [g2,d4,a4,b4]@55 ~@7]/4", // G
})).s("gm_epiano1").gain(0.54).pan(0.6)

// drums · rim
const rim = s("rim").struct("<[x!3 ~] ~@176>").gain(0.34)

// drums · kick
const kick = s("bd").struct("<~@4 A B@12 C@15 D C@16 B@20 D E B F C@13 D C@30 B@22 D A C@31 G H ~@3>".pickRestart({
  A: "~@7 x", B: "x ~@2 x!2 ~@3", C: "x ~@6 x", D: "x", E: "~@3 x", F: "~@3 x!2 ~@2 x", G: "x ~@14 x", H: "~ x ~@6",
})).gain(0.68)

// drums · snare
const snare = s("sd").struct("<~@4 A@13 ~@31 A@21 B ~@46 A@23 C ~@37>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~@6",
})).gain(0.68)

// drums · low tom
const low_tom = s("lt").struct("<~@69 [~@3 x] ~@69 [~@5 x ~@2] [x!2 ~@3 x ~@2] ~@31 [~@11 x ~@4] ~@4>").gain(0.61)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A B ~@2 A C@2 D E F ~@2 A B ~@2 A C@2 D E F ~@2 E F ~@2 A B ~@2 A C@2 D E F ~@2 E F ~@2 A B ~@2 A C@2 D C D A C@2
  D C D A C@2 D ~@18 A B ~@2 A C@2 D E F ~@2 E C A B ~@2 A C@2 D E F ~@2 E F ~@2 A B ~@2 A C@2 D C G A C A C@2 D C D A
  C@3 ~@38
>`.pickRestart({
  A: "~ x ~@6", B: "~@3 x ~@3 x", C: "~ x ~ x ~@4", D: "~ x ~@3 x ~@2", E: "~@7 x", F: "~ x ~ x ~ x ~@2",
  G: "~ x ~@4 x ~",
})).gain(0.34)

// drums · mid tom
const mid_tom = s("mt").struct("<~@69 A B ~@68 C D ~@31 E ~@4>".pickRestart({
  A: "~@3 x ~ x ~@2", B: "~@3 x!2 ~@3", C: "~@3 x ~ x ~ x", D: "x!2 ~ x", E: "~ x ~@6",
})).gain(0.61)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@32 A ~@23 A ~ A ~@3 A ~ A ~@3 A ~@17 A ~@13 B ~@19 A ~@3 A ~ B ~@5 A ~ A ~@37 C ~@4
>`.pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~@13 x ~@2",
})).gain(0.54)

// drums · high tom
const high_tom = s("ht").struct("<~@70 [x!2 ~@6] ~@106>").gain(0.54)

// drums · ride
const ride = s("rd").struct("<~@71 [x!8]!15 [x!6 ~@2] ~@54 [x!8]!31 [x ~ x ~ x ~ x ~ x ~@2 x ~@4] ~@4>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@173 [~ x ~@6] ~@3>").gain(0.48)

// drums · congas
const congas = s("conga:13").struct("<~ [~ x!2 ~ x!2 ~@2]!171 [~@2 x ~ x ~@3 x ~@2 x ~@4] ~@4>").gain(1.09)

// drums · shaker
const shaker = s("sh").struct(`<
  ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A B A@3 B A B A@3 B A B A B A B
  A B A B A B A B A B A B A@3 B A@3 B A@3 B A@5 B A@3 B A@3 B A@3 B A@3 B A@3 B A B A@5 B A B A@3 B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A C ~@4
>`.pickRestart({
  A: "x!2 ~ x ~ x ~@2", B: "x!4 ~ x ~@2", C: "x ~ x ~ x ~ x ~@4 x ~@4",
})).gain(0.61)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
  ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A ~ A@3 ~ A ~ A@3 ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A@3 ~ A@3 ~ A@5 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A ~ A@5 ~ A ~ A@3 ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5
>`.pickRestart({
  A: "~ x ~@2",
})).gain(0.34)

// drums · guiro
const guiro = s("guiro:4").struct("<~ [~@6 x!2]!16 ~@160>").gain(12.91)

// drums · claves
const claves = s("clave:2").struct(`<
  ~ A B A B A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C
  A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A
  C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A D ~@4
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "~ x ~@2", C: "~@2 x ~@2 x ~@2", D: "~@4 x ~@6 x ~@4",
})).gain(2.66)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~ [x ~@2 x ~@4]!172 ~@4>").gain(0.59)

// … 7 more lines

More by Battisti