Strudelify
Non abbiam bisogno di parole cover art

1996 · Vorrei incontrarti fra cent'anni

Non abbiam bisogno di parole

Ron

KeyA majorTempo85 bpm
0:00/0:00
// Non abbiam bisogno di parole — Ron
// 85 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 30, 4/4 at bar 31, 2/4 at bar 64, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 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 · acoustic guitar nylon
const acoustic_guitar_nylon = note("<A B A B C D E F A B ~@79>".pickRestart({
  A: "[a3,c4,e4]@2 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4] [a3,e4]@2 [a3,d4,e4]@2 [a3,d4,e4] [a3,d4,e4]@2 [a3,d4,e4] [a3,d4,e4]@2, ~@3 c4@5", // Am A5 Asus4
  B: "[a3,c4,e4]@2 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4] [a3,e4]@2 [a3,b3,e4]@2 [a3,b3,e4] [a3,b3,e4]@2 [a3,b3,e4] [a3,b3,e4]@2, ~@3 c4@5", // Am A5 Asus2
  C: "[f3,a3,c4]@2 [f3,a3,c4] [f3,a3,c4]@2 [f3,a3,c4] [f3,c4]@2 [f3,g3,c4]@2 [f3,g3,c4] [f3,g3,c4]@2 [f3,g3,c4] [f3,g3,c4]@2, ~@3 a3@5", // F F5 Fsus2
  D: "[f3,a3,c4]@2 [f3,a3,c4] [f3,a3,c4]@2 [f3,a3,c4] [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4] [f3,a3,c4]@2 [f3,a3,c4] [f3,a3,c4]@2", // F
  E: "[a3,d4,f4]@2 [a3,d4,f4] [a3,d4,f4]@2 [a3,d4,f4] [a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4,f4]@2 [a3,d4,f4] [a3,d4,f4]@2", // Dm
  F: "[b3,d4,g4]@2 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4] b3@2 [e3,b3,e4]@2 [e3,b3,e4] [e3,b3,e4]@2 [e3,b3,e4] [e3,b3,e4]@2, ~@3 [d4,g4]@5", // G E5 G5
})).s("gm_acoustic_guitar_nylon").gain(0.09).pan(0.3)

// chords · piano
const piano = note(`<
  ~@4 A ~@3 B C D@2 E ~ F ~ G H@2 ~ I J K L M N ~ O P O Q L R@2 S@3 ~@3 T U V W X@2 Y Z ~@2 AA AB@2 AC@2 AD AE AF AG ~
  AH AI AJ AK AL AM ~@3 AN AO ~@2 AP AQ AR AS AT AU AV@2 AW@4 AX@2 ~@2
>`.pickRestart({
  A: "~@13 d6@3, ~@7 d7@9, ~@8 a6@3 a6@5, ~@9 e6@7", B: "~@13 g5@2 d5, ~@5 c5@3, ~@11 c6@5",
  C: "~@15 c4, ~@9 g4@2 c5@3 d4@2, ~@5 d5@3, ~@3 g4, ~@13 e4@3", D: "[~@15 c5@16 ~, ~@13 g4@3 ~@16, ~@7 d5 ~@8]/2",
  E: "~@7 c5, ~@9 [a5,e6]@7, ~@3 e5", F: "~@11 d5@5, ~@7 g5@9, ~@9 c5@7", G: "[f3,a3,c4] [f3,a3,d4]",
  H: "[~@15 a5@12 ~@5, ~@13 e6@14 ~@5, ~@14 b5@13 ~@5]/2", I: "~@8 g#4@3 a4@2 b4@3",
  J: "~@11 a5@5, a5@7 b5@2 e6@7, ~ a4@7, ~@3 b4@13, ~@5 e5@11", K: "a#5@12 ~ f#5@3", L: "b4 c#5",
  M: "~@13 e5@3, ~@7 e5@6 ~@3, ~@9 a5@7, ~@11 g#5@5", N: "~ e5@7, a5", O: "~@6 c#5@2 ~@3 d5@5, a5 ~, ~@3 e5@5 f#5@8",
  P: "~@3 e5@2 b4 ~@8 a5@2, g#4@3 ~@2 a5@2 ~, ~@2 b4@3 ~ c#5@10, ~@11 e5@5",
  Q: "~@3 e5@2 g#4 a4@10, g#4@5 ~@11, ~ b4@2 ~@5", R: "[d5@7 ~@8 d5@8 ~@9, ~@13 g5@10 ~@9, ~@14 a5@9 ~@9]/2",
  S: "[~ a4@3 ~@2 a4@2 ~@7 c5@9 ~@6 f5 g5@2 ~@4 c5@3 ~@8, e5@8 ~@5 e5@11 ~@5 e5@2 ~@4 d5@4 ~@9, ~@4 d5@4 ~@25 g4@7 ~@8]/3",
  T: "~@15 a5", U: "a5 ~@2 g5@5 ~@8, ~ d5@7 ~@8", V: "~@3 e4@5 ~@8, ~ a4@7 ~@8", W: "~ c6 ~@2, ~@3 g5@5 ~@8",
  X: "[~@13 g4 d5 d#5@2 f5@2 g5@2 a#5@2 g5@2 ~@7]/2", Y: "~@5 d#5 f5 g5 c5@3 ~@3 f5 g5, ~@13 g#4@2 ~",
  Z: "d#5 g5@2 g#4 f5@2 g5@2 ~@8", AA: "~ e5", AB: "[f5@2 g5@3 ~ f#5@2]/2",
  AC: "[a5@7 ~ g5@6 ~@2 b5@7 ~@9, ~@14 d5@9 ~@9]/2", AD: "~@14 e5!2", AE: "e5 e5@2 f5@2 g5@3 f5@8",
  AF: "e5@6 ~@2 d5 g4!2 ~@4 g4, ~@11 g4@2 g4@2 ~, ~@3 c5, ~@7 d5", AG: "b4@3 c5@2 d5@3 e5@8",
  AH: "~@11 g5@3 e5@2, ~ c6", AI: "a5@3 f5@5 ~@2 d5 ~@2 d5@3, ~ b4, ~@11 g5@5", AJ: "e5@7 ~@4 g5@3 e5@2, ~ c6",
  AK: "~@3 f5@5 b4@2 d4 [g4,a4]@3 [g4,a4]@2, a5 ~", AL: "c5 d5", AM: "e5 f5",
  AN: "~@7 b4!2 ~@4 d5@3, ~@9 b4@7, ~@11 c#5@5", AO: "~@2 e4 a4@2 b4 a4@4 e4 a4@2 b4 c#5@2",
  AP: "~@8 g#4 g#4@2 a4@2 b4@3", AQ: "~@3 g#5, ~ e5@3, ~ a5", AR: "~@13 f#5 g#5@2",
  AS: "~@3 e5@2 a5@3 f#5@3 d5@4 ~, c#5 ~", AT: "~@2 b4 ~@2 b4@3 c#5@8, g#4 ~, ~@3 e5@5 ~@8",
  AU: "~@3 e6@4 ~ f#5@3 d5@5, e5 ~, ~@2 a5@5 ~@9",
  AV: "[~@2 b4 ~@2 g#4@3 a4@2 ~@3 a4@3 ~@5 b4@3 c#5@2 ~@3 c#5@3, g#4@3 e5@5 ~@2 a3@6 b4@3 d4@5 ~@2 f#4@6, ~@11 d4@7 a3@6 ~@3 a4@5]/2",
  AW: "[d5@5 [a4,d5,e5]@3 b4@3 ~@4 b4 ~@7 g#4 ~@8 f#6@7 ~@9 f#6@7 ~@9, ~@11 b4@2 b4@2 ~ b4@5 a4@3 g#4@15 ~ g#4@15 ~@9, ~@12 a4@2 a4@3 g#4@2 g#4@3 b4@2 ~@40, ~@18 a4@2 g#5@4 ~@7 g#5@9 ~@7 g#5@8 ~@9]/4", // Asus4
  AX: "[~@15 f#6@7 ~@10, ~@4 g#5@7 ~@5]/2",
})).s("gm_piano").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@10 A@2 B@2 C D E F@2 G H I@2 J K L M N O N P@8 Q@6 R@6 S@5 T@7 U V W@2 X@2 Y Z AA@2 AB AC AD AE AF AG AF AH@3 AI@7
>`.pickRestart({
  A: "[[a3,c4] [b3,d4] [a3,c4]@2, e3]/2", B: "[f3 g3 f3@2, [c3,a3]]/2", C: "a3@4 c4@3 b3, [d3,f3]",
  D: "[d3,g4] [e3,g#4], b3", E: "c5@2 a4 b4 c5@2 d5@2, [c3,a3] [d3,f3]", F: "[[a2,c#4] [b2,d4] [c#3,b3]@2, [a3,e4]]/2",
  G: "~ b4, [b2,a3,d#4,f#4]", H: "e4 d4, [e2,g#3,b3]", I: "[[a2,a3] [g2,b3] [f#2,a#3]@2, [c#4,e4]]/2",
  J: "[b2,b3,d4] [a2,a3,c#4], f#3", K: "b3@8 ~@3 a3@2 b3@3, [e2,e3], g#3@11 ~@5, ~ b2",
  L: "e4@13 d4 c#4@2, [c#2,a3,b3]", M: "[d2,f#3,a3,d4]", N: "[c#2,b3,c#4] [f#2,a3,d4], e4",
  O: "[g#2,e3,b3] [a2,a3,c#4], e4", // E A
  P: "[[g#2,e3,b3,e4] [a2,a3] [b2,b3] [c#3,c#4] [d3,d4] [a3,c4] [b3,d4] ~ e4 f3 g3 f3@2 c4 e4 [d3,g3,b3], ~ f#3@4 e3@3 ~@5 [f3,a3]@2 ~, ~ d4@2 a3@2 ~@2 [a3,c4]@2 [a3,c4]@4 ~@3]/8", // E A B C# D Am Bm G …
  Q: "[[e3,b3,e4] [a3,c4] [b3,d4] ~ e4 f3 g3 f3@2 c4 e4 [d3,g3,b3], ~ e3@3 ~@5 [f3,a3]@2 ~, ~@3 [a3,c4]@2 [a3,c4]@4 ~@3]/6", // E5 Am Bm G F Am
  R: "[[e3,b3,e4] d#4 d4 [g3,c4,d#4]@2 c4 d4 d#3@3 d#4 [f3,a#3,d4], ~ [g3,c4]@2 ~@2 [g#3,d#4]@2 [g#3,c4]@4 ~]/6", // E5 Cm A# C5 G#5 G#
  S: "[g3 e4 f4 g4@2 d4 c4 ~ f4 [g3,c4,e4], ~ [g3,c4]@4 [a3,f#4]@2 [b3,d4,g4]@2 ~, ~@2 d4@3 ~@5]/5", // C C5 D G
  T: "[[a#3,d4,g4]@8 [e3,a3,c#4,g4]@16 [d4,f4]@8 [c4,e4]@8 d4@8 g2@3 [a2,c4]@2 [b2,d4]@3 [g3,c4,d4]@16 [g3,c4,f4]@16 [d4,e4]@8 [c4,f4]@8 [a3,b3,d4]@8, ~@3 a3@2 g3@2 ~@4 g3@2 ~, ~@40 b3@11 ~@61]/7", // Gm A7 Dm C Am Bm Gsus4 Csus4 …
  U: "[g3,c4,e4] [g3,d4,e4]", V: "[f3,c4,f4] [a3,b3,d4]", W: "[c4 d4 e4 f4, [f3,a3]]/2", X: "[c#4 d4 b3@2, [a3,e4]]/2",
  Y: "~ b4, [a3,d#4,f#4]", Z: "e4 d4, [g#3,b3]", AA: "[a3 b3 a#3@2, [c#4,e4]]/2", AB: "[b3,d4] [a3,c#4], f#3",
  AC: "b3@8 ~@3 a3@2 b3@3, e3, g#3@11 ~@5, ~ b2", AD: "e4@13 d4 c#4@2, [a3,b3]", AE: "[f#3,a3,d4]",
  AF: "[b3,c#4] [a3,d4], e4", AG: "[e3,b3] [a3,c#4], e4", AH: "[[e3,b3,e4] a3 b3 c#4 [a3,d4]@2, ~ f#3@5, ~ d3@3 ~@2]/3",
  AI: "[~@8 c#4@16 b3@16 c#4@16 b3@16 [a#3,c#4]@31 ~@9, ~@8 g#3@95 ~@9, ~ f#3@8 ~@5]/7", // A#m
})).s("gm_string_ensemble_1").gain(0.24)

// bass · electric bass finger
const bass = note(`<
  ~@17 A B C D E F G H I J K L K M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU@2 AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL@2 BM@2 BN@3
>`.pickRestart({
  A: "a1 b1", B: "c#2", C: "b1", D: "e1@15 ~", E: "a1 g1", F: "f#1@6 g#1 a#1", G: "b1 a1", H: "e1", I: "c#1", J: "f#1",
  K: "c#1 f#1", L: "g#1@8 a1@3 a2@5", M: "g#1 a1", N: "b1 c#2", O: "d2@8 a1@2 ~ a1@5",
  P: "a1@2 ~ a1@2 e1 g1@2 a1@2 ~ a1@5", Q: "a1@2 ~ a1@2 e1 a1 g1 f1@2 ~ f1@5", R: "f1@3 f1@3 c2@2 f1@2 ~ f1@5",
  S: "f1@2 ~ f1@3 f2 e2 d2@2 ~ d2@4 ~", T: "d2@3 d2@2 a1 d2@2 g1@2 ~ g1@5", U: "g#1@6 e1 g#1 a1@2 ~ a1@4 ~",
  V: "a1@3 e1@3 e1 g1 a1@2 ~ a1@4 ~", W: "a1@3 a1@2 e1 a1 g1 f1@2 ~ f1@4 ~", X: "f1@3 c2@3 c2!2 f1@3 f1@4 ~",
  Y: "f1@3 f1@5 d2@2 ~ d2@5", Z: "d2@2 ~ d2@2 d2 c2 a1 g1@2 ~ g1@5", AA: "g#1@3 g#1@4 ~ c2@3 c2@5",
  AB: "d2@6 c2 d2 d#2@2 ~ d#2@4 ~", AC: "d#2@5 ~ c2 a#1 g#1@2 ~ g#1@4 ~", AD: "g#1@3 d#2@5 g#1@2 ~ g#1@4 ~",
  AE: "g#1@4 ~ g#1 g1 f#1 f1@2 ~ f1@4 ~", AF: "f1@4 ~ f1 g#1 c2 a#1@2 ~ a#1@4 ~", AG: "b1@8 c2@2 ~ c2@5",
  AH: "d2@4 ~ d2 c2 d2 e2@2 ~ e2@5", AI: "e1@5 e2 d2 e2 d2@8", AJ: "f#1@3 f#1@5 g1@3 g1@4 ~", AK: "g1@5 g2 g1@2 c2@8",
  AL: "a#1@6 c2 a#1 a1@7 ~", AM: "a1@3 b1@2 c#2@3 d2@2 ~ d2@5", AN: "c2@6 d2 c2 g1@3 g1@4 ~", AO: "g1@5 g2 g1@2 e1@7 ~",
  AP: "e1 a1", AQ: "a1@8 e1@7 ~", AR: "a1@3 a1@5 b1@2 ~ b1@5", AS: "c2@3 c3@3 c3@2 e1@8", AT: "a1@7 a1 b1@8",
  AU: "[c2@3 c1 c2@7 c1 c2@7 c1 c2@9 b1 a1 b1]/2", AV: "a1@2 ~ a1@5 b1@6 a1 b1", AW: "c#2@3 c#2@5 c#1@5 c#2 b1 c#2",
  AX: "b1@7 ~ b1@3 b2 ~ b1 c#2 d#2", AY: "e2@8 e1@3 e2 ~ d2 b1@2", AZ: "a1@5 a2 a1@2 g1@8",
  BA: "f#1@3 f#1@6 f#2 f#1@2 g#1@2 a#1@2", BB: "b1@4 ~ b2 b1@2 a1@8", BC: "e2@8 e1@3 e1@3 g#1@2",
  BD: "c#2@2 ~ c#2@8 c#3@3 c#2@2", BE: "f#1@13 f#1@2 f#1", BF: "c#2@8 f#1@3 f#1@5", BG: "g#1@8 a1@3 a2@2 ~ a2@2",
  BH: "c#2!2 ~ c#1@3 c#2@2 f#1@8", BI: "g#1@8 a1@6 ~ a1", BJ: "a1@7 ~ a1@6 ~ a1", BK: "a1!2",
  BL: "[~ a1!5 a1@2 f#1@12 ~ f#1 d#1 c#1 f#1@8]/2", BM: "[f#2@4 f#2@4 f#1@12 ~ f#1 d#1 c#1 f#1@8]/2",
  BN: "[f#2 f#1@4 ~]/3",
})).s("gm_electric_bass_finger").gain(0.28)

// other · pizzicato strings
const pizzicato_strings = note("<~@27 A B A C ~@29 D E D F ~@12 A B A C ~@9>".pickRestart({
  A: "[a3,a4]@3 [e3,e4]@3 [c#3,c#4]@2 [f#3,f#4]@3 [d3,d4]@5", // A E C# F# D
  B: "[g#2,g#3]@2 [b2,b3] [e3,e4]@2 [b2,b3] [c#3,c#4]@2 ~@8", // G# B E B C#
  C: "[g#2,g#3]@2 [b2,b3] [e3,e4]@2 [g#2,g#3] [a2,a3]@2 ~@8", D: "~@8 [c4,c5]@3 [g3,g4]@3 [e3,e4]@2",
  E: "[a3,a4]@3 [f3,f4]@5 [b2,b3]@2 [d3,d4] [g3,g4]@2 [d3,d4] [e3,e4]@2", // A F B D G D E
  F: "[a3,a4]@3 [f3,f4]@5 [b2,b3]@2 [d3,d4] [g3,g4]@2 [b2,b3] [c3,c4]@2", // A F B D G B C
})).s("gm_pizzicato_strings").gain(0.48).pan(0.7)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@28 A ~ B C D ~@29 E ~ F G H@2 I@2 ~@7 A ~ B C J K@5 ~@2>".pickRestart({
  A: "~@10 a5 e5 ~@2 a5 ~", B: "~ a4", C: "b4 c#5", D: "d5 ~", E: "~@2 c6 g5 ~@2 c6 ~@9",
  F: "~@2 c5 ~ d5 ~ c5 ~@3 d5 ~ e5 ~ d5 ~", G: "~@2 e5 ~ f5 ~ e5 ~ f5@2 g5@2 a5 b5 a5 b5",
  H: "[a5@2 e5 a5@2 b5 a5@4 e5 a5@2 b5 a5@9 b5 c#6 b5@2 a5@2 g#5@3]/2", I: "[f#5@5 g#5 f#5@7 g#5 e5@7 ~@11]/2",
  J: "d5 e5", K: "[f#5@9 ~]/5",
})).s("gm_string_ensemble_1").gain(0.48)

// other · overdriven guitar
const overdriven_guitar = note("<~@32 A@2 B C D@2 E@3 ~@48>".pickRestart({
  A: "[~ a4!8 e5@2 a4 e5@2 a4 e5@2 g4 d5@2 g4 d5@2 g4 a4 e5@2 a4@5]/2", B: "e5@5 f5 e5 g5@6 ~ e5 ~, ~@13 f5@2 ~",
  C: "~ f5 ~ e5 d5 c5 ~ e5 d5@5 c5@2 c5, g5 ~@7",
  D: "[~@2 c5@2 ~ c5@2 g5 c5 e5 c5 ~@12 b5@2 g5 e5 d5 c5 b4!2 g4, ~ g5@2 ~ g5@2 ~@5 g5@14 ~@7]/2",
  E: "[e4 d4 c4 b3 c4 d4 c4 d4 c4@27 ~@13]/3",
})).s("gm_overdriven_guitar").gain(0.48).pan(0.8)

// chords · orchestral harp
const orchestral_harp = note("<~@50 A@2 ~@37>".pickRestart({
  A: "[~@4 g4 [c5,d5] ~ [d5,g5]@17 ~@8, ~ d4@5 ~@2, ~@3 [g4,c5]@9 ~@4]/2", // Csus2 G5 C5
})).s("gm_orchestral_harp").gain(0.4).pan(0.9)

// other · electric guitar clean
const electric_guitar_clean = note("<~@66 A@2 B@2 ~@19>".pickRestart({
  A: "[[a3,a4]@2 [e3,e4] [a3,a4]@2 [b3,b4] [a3,a4]@4 [e3,e4] [a3,a4]@2 [b3,b4] [a3,a4]@6 ~@2 [a3,a4] [b3,b4] [c#4,c#5] [b3,b4]@2 [a3,a4]@2 [g#3,g#4]@3]/2", // A E A B A E A B …
  B: "[[f#3,f#4]@3 [f#3,f#4] ~ [g#3,g#4] [f#3,f#4]@4 ~ [f#3,f#4] ~ [g#3,g#4] [e3,e4]@7 ~@11]/2", // F# G# F# G# E
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A B A B A B@2 C D C D C E D E D F G D G D H I J@17 K J@5 L J I J M J@2 N O P Q R Q S Q S R@3 T R@3 I J@2 I U V U
  W ~@2
>`.pickRestart({
  A: "x ~@14 x", B: "x", C: "x ~@7 x ~@6 x", D: "x!2", E: "x ~@7 x ~@2 x ~@4", F: "x ~@6 x!2 ~@7",
  G: "x ~@2 x ~@4 x ~@7", H: "~@7 x!2 ~@2 x ~ x ~ x", I: "x ~@4 x ~@2 x ~@7", J: "x ~@4 x ~@2 x ~@2 x ~@4",
  K: "x ~@4 x ~ x!2 ~@7", L: "x ~@2 x ~ x ~@2 x ~@2 x ~@4", M: "x ~@6 x!2 ~@2 x ~@4", N: "x ~@4 x ~@2 x ~@4 x ~@2",
  O: "x ~@2 x ~@2 x ~ x!2 ~@3 x ~@2", P: "x ~@2 x ~@2 x ~@4 x ~ x ~ x", Q: "x ~@7 x ~@4 x ~@2",
  R: "x ~@2 x ~@4 x ~@4 x ~@2", S: "x ~@2 x ~@4 x ~@2 x ~ x ~@2", T: "x ~@2 x ~@4 x ~@6 x", U: "~@2 x ~@2 x ~@2 x ~@7",
  V: "~ x ~@2 x ~@3", W: "~ x ~@6",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@32 A B@31 C D B@16 E F G F H ~@2>".pickRestart({
  A: "~ x ~ x!2 ~ x ~@3 x ~@3 x ~", B: "~ x ~ x ~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@4 x ~@4 x ~@2 x ~ x ~",
  E: "~@2 x ~@3 x ~@5 x ~@2 x", F: "~ x ~@2 x ~@2 x ~@4 x ~@2 x", G: "~ x ~@2 x ~@7 x ~@2 x", H: "~ x ~@14",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~@64 A B ~@16 C D E D F ~@2>".pickRestart({
  A: "~ x!15", B: "x!12 ~@3 x", C: "~@12 x!4", D: "x!2 ~@2 x!6 ~@2 x!4", E: "x!2 ~@2 x ~@7 x!4", F: "x!2 ~@14",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@10
  [~@5 x ~@7 x ~@2]!6
  [~@13 x ~@2]
  [~@5 x ~@7 x ~@2]!10
  ~@3
  [~@13 x ~@2]
  [~@5 x ~@7 x ~@2]!55
  ~@3
>`).gain(0.19)

// drums · open hat
const open_hat = s("oh").struct("<~@82 [~@5 x ~@2] [~ x ~@3 x ~@2]!3 [~ x ~@6] ~@2>").gain(0.16)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@17 [~ x ~ x] [~@3 x!2 ~@7 x ~@3] [~ x ~ x]!3 [~@3 x!2 ~@7 x ~@3]!5 ~@62>")
  .gain(0.29)

// drums · splash
const splash = s("cr").struct(`<
  ~@32 A ~@5 B ~@5 B ~@5 C ~@3 B ~ B ~ A ~ D ~ E F G ~ G ~ G H G F ~@3 I J ~ J K ~@2 A ~ L ~ M ~@2
>`.pickRestart({
  A: "~ x", B: "~@3 x ~@4", C: "~@7 x!2 ~@7", D: "~@7 x ~@8", E: "~@4 x!2 ~@2", F: "~@7 x", G: "x", H: "~@11 x ~@2 x ~",
  I: "~@15 x", J: "x!2 ~@6", K: "~@3 x!2 ~@3", L: "~@5 x!4 ~@7", M: "~@3 x!2 ~@11",
})).gain(0.19)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[~ x!3 ~ x!3 ~ x!3 ~ x!3]!86 [~ x!3 ~@12] ~@2>").gain(0.48)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<[x!4]!86 [x!2 ~@2] ~@2>").gain(0.16)

// … 5 more lines

More by Ron