Strudelify
Le ragazze serie cover art

1990 · Marco Masini

Le ragazze serie

Masini

KeyE majorTempo112 bpm
0:00/0:00
// Le ragazze serie — Masini
// 112 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B C D E F G H I J K L M F N H I O P Q R S@3 T U@2 V W X Y Z AA@2 AB AC AD AE@4 AF@3 AG@5 AH@3 AI AJ AK AL@2 AM
  AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BD BE BF BG BD BE BF BH BI BJ BK BL BM@2 ~@2
>`.pickRestart({
  A: "e2@4 e1@3 ~@5 e1 ~@3 e1@7 ~ e2 ~@7", B: "e2@3 ~ e1@2 ~@10 e1@8 e2 ~@7",
  C: "~ e2@3 e1@4 ~@4 e1 ~@3 e1 ~@7 e2 ~@5 e1 ~", D: "~ e2@3 e1@4 ~@4 e1@3 ~@2 f2 ~@2 d#2@4 b1@4 e1@4, ~@16 e2@5 ~@11",
  E: "~ e2@4 e1@3 ~@5 e1 ~@2 e2@9 ~@7", F: "~ e2@3 ~ e1@2 ~@6 e1 ~@3 e2@8 ~@4 e2 ~@2",
  G: "~ c#2@8 ~@4 c#2 ~@3 c#2@8 ~@7", H: "~ c#2@8 ~@4 c#2 ~@3 c#2@9 ~@3 c#2@3", I: "~ a1@9 ~@3 a1 ~@3 a1@9 ~@3 a1@3",
  J: "~ c2@8 ~@4 c2@4 d2@8 ~@4 d2 ~@2", K: "~ e2@4 e1@4 ~@4 e1@4 e2@11 ~@4", L: "~ e2@4 ~@8 e1@4 e2@8 d#2@3 ~ b1@2 ~",
  M: "~ e2@4 e1@3 ~@5 e1 ~@3 e2@9 ~@6", N: "~ c#2@7 ~@5 c#2 ~@3 c#2@8 ~@7", O: "~ c2@9 ~@3 c2@4 d2@8 ~@4 d2 ~@2",
  P: "~@2 e2@3 e1@4 ~@4 e1@4 e2@11 ~@4", Q: "~@2 e2@4 ~@7 e1@4 e2@8 d#2@3 ~ b1@2 ~",
  R: "~ a1@7 ~@5 a1 ~@3 a1@11 ~ a2@3",
  S: "[~@2 a1@7 ~@4 a1 ~@3 a1@8 ~@5 a1@4 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@4 g#1@4 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@4 c#2@2]/3",
  T: "~@2 g#1@9 ~@3 g#2 ~@3 g#2@7 ~ g#1@5 ~",
  U: "[~@2 g#1@7 ~@5 g#1 ~@3 g#1@8 g#2@4 g#1@4 f#1@8 ~@4 f#2@7 ~ f#1@3 ~ f#2@4 f#1@2]/2",
  V: "~@2 b1@8 ~@4 b1 ~@3 b1@8 ~@4 b1 ~", W: "~@2 e2@4 e1@3 ~@5 e1 ~@3 e2@9 ~@5",
  X: "~@2 e2@3 ~ e1@2 ~@6 e1 ~@3 e2@8 ~@4 e2 ~", Y: "~@2 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@6",
  Z: "~@2 c#2@8 ~@4 c#2 ~@3 c#2@9 ~@3 c#2@2", AA: "[~@2 a1@9 ~@3 a1 ~@3 a1@9 ~@3 a1@4 c2@9 ~@3 c2@4 d2@8 ~@4 d2 ~]/2",
  AB: "~@2 e2@4 e1@4 ~@4 e1@4 e2@11 ~@3", AC: "~@3 e2@4 ~@7 e1@4 e2@8 d#2@3 ~ b1@2",
  AD: "~@3 c2@7 ~@4 c2 ~@3 c2@8 ~@4 c2@2",
  AE: "[~@3 a1@7 ~@4 a1 ~@3 a1@9 ~@3 a1@4 ~ e2@11 e1@8 ~ e2@3 ~@5 e2@3 ~ c#2@7 ~@5 c#2 ~@7 c#2@4 ~@4 c#2@3 ~ c2@7 ~@5 c2 ~@7 c2@4 ~@4 c2]/4",
  AF: "[~@3 a1@8 ~@4 a1@12 ~@4 a1@4 e2@11 ~ e1@8 e2@12 e1@4 e2@4 ~@4 e1@4 e2@8 e1@5]/3",
  AG: "[~@3 c2@7 ~@5 c2 ~@3 c2@8 ~@4 c2@2 ~@2 a1@7 ~@5 a1 ~@3 a1@9 ~@3 a1@4 e2@11 ~ e1@8 e2@3 ~@5 e2@3 ~ c#2@7 ~@5 c#2 ~@7 c#2@4 ~@4 c#2@4 c2@7 ~@5 c2 ~@7 c2@4 ~@4 c2]/5",
  AH: "[~@3 a1@8 ~@4 a1@12 ~@4 a1@4 e2@11 ~ e1@8 e2@12 e1@5 ~@24]/3", AI: "~@3 e2@4 e1@3 ~@5 e1 ~@3 e2@9 ~@4",
  AJ: "~@4 e2@3 e1@2 ~@6 e1 ~@3 e2@8 ~@4 e2", AK: "~@4 c#2@7 ~@4 c#2 ~@3 c#2@9 ~@4",
  AL: "[~@4 c#2@8 ~@3 c#2 ~@3 c#2@9 ~@3 c#2@4 ~ a1@9 ~@3 a1 ~@3 a1@9 ~@3]/2", AM: "a1 c2@2 ~ c2 d2@2 ~",
  AN: "d2 ~@3 e2@4 e1@4 ~@4 e1@4 e2@11 ~", AO: "~@4 e2@4 ~@8 e1@4 e2@8 d#2@3 ~", AP: "b1@2 ~@2 a1@7 ~@5 a1 ~@3 a1@12",
  AQ: "a2@4 a1@7 ~@5 a1 ~@3 a1@8 ~@4", AR: "a1@4 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@4", AS: "g#1@4 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@4",
  AT: "c#2@2 ~@2 g#1@8 ~@4 g#2 ~@3 g#2@7 ~ g#1@4", AU: "~@4 g#1@7 ~@5 g#1 ~@3 g#1@8 g#2@4",
  AV: "g#1@4 f#1@8 ~@4 f#2@7 ~ f#1@3 ~ f#2@4", AW: "f#1@3 ~ b1@8 ~@4 b1 ~@3 b1@8 ~@4",
  AX: "b1 ~@3 e2@4 e1@4 ~@4 e1 ~@3 e2@9 ~@3", AY: "~@4 e2@3 ~ e1@2 ~@6 e1 ~@3 e2@8 ~@4",
  AZ: "e2 ~@4 c#2@7 ~@4 c#2 ~@3 c#2@9 ~@3", BA: "~@5 c#2@8 ~@3 c#2 ~@3 c#2@9 ~@3",
  BB: "c#2@3 ~@2 a1@8 ~@4 a1 ~@2 a1@8 ~@4", BC: "a1@4 ~ c2@9 ~@3 c2@4 d2@8 ~@3",
  BD: "~ d2 ~@3 e1@4 e2@6 ~@2 e1@3 ~ e2@8 ~@3", BE: "~ e2 ~@3 c#2@7 ~@9 c#2 ~@3 c#2@5 ~@2",
  BF: "~ c#2@3 ~ c2@7 ~@5 c2 ~@3 c2@8 ~@3", BG: "~ c2@2 ~@2 d2@8 ~@4 d2 ~@3 d2@9 ~@2",
  BH: "~ c2@2 ~@2 d2@7 ~@5 d2 ~@3 d2@9 ~@2", BI: "~ d2 ~@4 e1@3 e2@6 ~@2 e1@3 ~ e2@8 ~@3",
  BJ: "~ e2 ~@4 c#2@7 ~@8 c#2 ~@3 c#2@5 ~@2", BK: "~ c#2@3 ~@2 c2@7 ~@4 c2 ~@3 c2@8 ~@3",
  BL: "~ c2@2 ~@2 d2@8 ~@5 d2 ~@2 d2@10 ~", BM: "[~@3 d2@2 ~@3 e1@45 ~@11]/2",
})).s("gm_fretless_bass").gain(0.56)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note(`<
  ~@4 A B C ~@3 D ~@3 E F ~@2 D ~@3 E F ~@6 G ~@3 H ~@3 I@2 ~@18 J ~@4 K ~@6 L ~@4 M ~@18 N@2 ~@2
>`.pickRestart({
  A: "~@28 e2 ~@3", B: "~@12 e1 ~@19", C: "~ e1 ~@16 e1@5 ~@9", D: "~@29 g#1 ~@2", E: "~@29 e1@3", F: "~@5 e1@3 ~@24",
  G: "~@10 f#2 ~@21", H: "~@30 g#1 ~", I: "[~@30 e1@4 ~@4 e1@3 ~@23]/2", J: "~@31 g#1", K: "e1@4 ~@4 e1@3 ~@21",
  L: "~@12 f#2 ~@19", M: "g#1 ~@31", N: "[~@20 e2@35 ~@9]/2",
})).s("gm_fretless_bass").gain(0.32)

// chords · electric guitar muted · "RITM GTR"
const electric_guitar_muted = note(`<
  ~@4 A B C D E F G H I J K L M F G H I J N@2 O@2 P Q R S T U V W X Y Z AA AB@2 ~@14 AC@2 ~@8 AD AE AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT ~@13 AU@2 ~@2
>`.pickRestart({
  A: "~@4 [g#3,c#4,e4] ~@11 [g#3,c#4,e4]@5 ~@7 [c#4,e4] ~@3", // C#m
  B: "~@4 [g#3,c#4,e4] ~@11 [g#3,c#4,e4]@7 ~ [g#3,c#4,e4] ~@7", // C#m
  C: "~ [g#3,c#4]@5 ~@6 [g#3,c#4,e4] ~@15 [g#3,c#4,e4]@4, e4@5 ~@27", D: "~@4 [c#4,e4] ~@7 c#4 ~@4 [g#3,c#4,e4]@3 ~@12",
  E: "~ [g#3,b3,e4]@4 ~@3 e4 [g#3,b3] ~@11 [g#3,b3,e4] ~@10", // E G#m E
  F: "~@5 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@8 [g#3,b3,e4] ~@2", G: "~@9 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@10",
  H: "~ [g#3,c#4,e4]@6 ~@6 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@6", // C#m
  I: "~ [a3,b3,c#4,e4]@5 ~@7 [a3,b3,c#4] ~@7 [a3,b3,c#4,e4]@4 ~@7", // A
  J: "~ [g3,c4,e4]@6 ~@6 [g3,c4,e4] ~@7 [a3,d4,f#4]@4 ~@4 [a3,d4,f#4] ~@2", // C D
  K: "~@9 [g#3,b3,e4]@6 ~@6 [g#3,b3,e4] ~@7 [g#3,b3,e4]@3", L: "~@9 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@4 [g#3,b3,e4] ~@2",
  M: "~ [g#3,b3,e4]@4 ~@4 [g#3,b3,e4] ~@11 [g#3,b3,e4] ~@10", // E
  N: "[~@9 [g#3,b3,e4]@5 ~@7 [g#3,b3,e4] ~@7 [g#3,b3,e4]@5 ~@7 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@4 [g#3,b3,e4] ~@2]/2", // E
  O: "[~@9 [b3,c#4] [a3,e4] ~@10 [b3,c#4,e4] a3 ~@7 [a3,b3]@4 ~@7 [c#4,e4] [a3,b3] ~@11 [a3,b3]@5 ~@5, ~@29 [c#4,e4]@4 ~@20 [c#4,e4]@5 ~@6]/2", // Bsus2 A5 C#m7 Asus2 C#m Asus2 C#m
  P: "~@10 [g#3,b3,c#4,e4]@2 ~@10 [g#3,b3,c#4,e4] ~@9", Q: "~@6 [g#3,b3,c#4,e4] ~@15 [g#3,b3,c#4,e4]@2 ~@8",
  R: "~@10 [g#3,b3,d#4,f#4]@2 ~@10 [g#3,b3,d#4,f#4] ~@7 g#3 ~", S: "~@6 [g#3,b3,d#4,f#4] ~@15 [g#3,b3,d#4,f#4]@4 ~@6",
  T: "~@2 [f#3,a3,c#4,e4] ~@7 [f#3,a3,c#4,e4]@8 ~@4 [f#3,a3,c#4,e4] ~@9", // F#m7
  U: "~@6 [a3,b3,c#4,e4]@5 ~@11 [a3,b3,c#4,e4]@3 ~@7", V: "~@2 [g#3,b3,e4]@4 ~@4 [g#3,b3,e4] ~@11 [g#3,b3,e4] ~@9",
  W: "~@6 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@8 [g#3,b3,e4] ~", X: "~@10 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@9",
  Y: "~@2 [g#3,c#4,e4]@6 ~@6 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@5", // C#m
  Z: "~@2 [a3,b3,c#4,e4]@5 ~@7 [a3,b3,c#4] ~@7 [a3,b3,c#4,e4]@4 ~@6", // A
  AA: "~@2 [g3,c4,e4]@6 ~@6 [g3,c4,e4] ~@7 [a3,d4,f#4]@4 ~@4 [a3,d4,f#4] ~", // C D
  AB: "[~@10 [g#3,b3,e4]@5 ~@7 [g#3,b3,e4] ~@7 [g#3,b3,e4]@5 ~@7 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@4 e4 [g#3,b3]]/2", // E G#m
  AC: "[~@3 e3@4 e4@7 ~ [g#3,b3]@2 ~@2 f#4@7 ~ b3@4 [e4,g#4]@5 ~@28, ~@19 b3@3 ~@42]/2", // G#m E
  AD: "~@12 [a3,b3,c#4,e4] ~@11 [a3,b3,c#4,e4] ~@7", // A
  AE: "[a3,b3,c#4,e4]@4 ~@8 [a3,b3,c#4,e4] ~@11 [a3,b3,c#4,e4]@5 ~@3", // A
  AF: "~@12 [g#3,b3,c#4,e4]@2 ~@10 [g#3,b3,c#4,e4] ~@7", AG: "~@8 [g#3,b3,c#4,e4] ~@15 [g#3,b3,c#4,e4]@2 ~@6",
  AH: "~@12 [g#3,b3,d#4,f#4]@2 ~@10 [g#3,b3,d#4,f#4] ~@7", AI: "g#3 ~@7 [g#3,b3,d#4,f#4] ~@15 [g#3,b3,d#4,f#4]@4 ~@4",
  AJ: "~@4 [f#3,a3,c#4,e4] ~@7 [f#3,a3,c#4,e4]@8 ~@4 [f#3,a3,c#4,e4] ~@7", // F#m7
  AK: "~@8 [a3,b3,c#4,e4]@5 ~@11 [a3,b3,c#4,e4]@4 ~@4", // A
  AL: "~@5 g#3@4 ~@3 [g#3,b3,e4] ~@11 [g#3,b3,e4] ~@7, ~ [b3,e4] ~@6", AM: "~@8 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@8",
  AN: "[g#3,b3,e4] ~@11 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@7", // E C#m
  AO: "~@5 [g#3,c#4,e4]@6 ~@5 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@3", // C#m
  AP: "~@5 [a3,b3,c#4,e4]@5 ~@6 [a3,b3,c#4] ~@7 [a3,b3,c#4,e4]@4 ~@4", // A
  AQ: "~@5 [g3,c4,e4]@6 ~@6 [g3,c4,e4] ~@7 [a3,f#4]@4 ~@3, ~@6 d4 ~", // C D
  AR: "~ [a3,d4,f#4] ~@11 [g#3,b3,e4]@5 ~@7 [g#3,b3,e4] ~@6", // D E
  AS: "~ [g#3,b3,e4]@4 ~@8 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@3", AT: "~ [g#3,b3,e4] ~@30",
  AU: "[~@11 f#4@40 ~@13, ~@7 e2@43 ~@14, ~@8 e3@43 ~@13, ~@9 b3@42 ~@13, ~@5 e4@21 ~@6]/2",
})).s("gm_electric_guitar_muted").gain(0.3).pan(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@24 A@4 B@2 C D ~@7 E@5 F@4 G@4 F@4 ~@8 H@4 I@5 ~@5 J@7 K@4 L@6 ~@3>".pickRestart({
  A: "[~@2 [a3,b3,e4]@63 ~ g#3@41 ~@7 g#3@10 ~@4, ~@66 [c#4,e4]@59 ~@3]/4", // Asus2 C#m
  B: "[~@2 [b3,d#4,f#4]@61 ~, ~ g#3@13 ~@18]/2", C: "~ [a3,c#4,e4]@15", D: "~ [a3,b3,c#4,e4]@15",
  E: "[~@14 g#4@4 a4@3 ~@5 f#5@4 g5@4 ~ [b3,g4]@27 ~@2 a3@28 ~@39 c#4@28 ~, ~@18 b4@14 ~@3 e4@122 ~@3, ~@22 e5@8 ~@32 c4@31 ~@3 g#3@59 ~@5]/5", // Em
  F: "[~@3 g4@29 ~ a3@29 ~@5 g#3@59 ~@2, ~@3 e4@123 ~@2, ~@3 c4@57 ~@68]/4",
  G: "[~@3 [b3,g4]@28 ~@2 a3@28 ~@38 c#4@28 ~, ~@3 e4@122 ~@3, ~@31 c4@31 ~@3 g#3@59 ~@4]/4", // Em
  H: "[~@4 [a3,b3,e4]@63 ~ g#3@41 ~@7 g#3@10 ~@2, ~@68 [c#4,e4]@59 ~]/4", // Asus2 C#m
  I: "[~@4 [b3,d#4,f#4]@61 ~@3 [a3,e4]@31 ~ [a3,b3,c#4,e4]@31 ~@29, ~@2 g#3@13 ~@19 c#4@14 ~@32]/5", // B A5 A
  J: "[~@5 e4@23 ~@5 [c#4,e4]@33 ~@3 [e4,g4]@28 ~@4 f#4@30 ~@2 e4@23 ~@5 [c#4,e4]@33 ~@3 [c4,e4,g4]@27, ~@5 b3@93 ~@35 b3@91, ~@5 g#4@60 ~@4 c4@25 ~@3 d4@35 ~ g#4@60 ~@31]/7", // C#m Em C#m C
  K: "[~@5 f#4@31 ~ e4@23 ~@5 [c#4,e4]@33 ~@3 [c4,e4,g4]@27, ~ d4@35 ~ b3@91, ~@37 g#4@60 ~@31]/4", // C#m C
  L: "[~@5 f#4@30 ~@30 [c#4,e4]@33 ~@4 [e4,g4]@27 ~@4 f#4@32 ~@27, ~ d4@35 ~ b3@93 ~@62, ~@37 e4@23 ~@42 c4@25 ~@2 d4@36 ~@27, ~@19 g#4@30 ~@47]/6", // C#m Em
})).s("gm_string_ensemble_1").gain(0.16)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@26 A@2 ~@14 B@2 C ~ D@2 ~@2 B@2 C ~ D@2 ~@10 E@2 ~@13 F@2 ~@2 G@2 ~@2 G@2 ~@2 H@2 ~@3
>`.pickRestart({
  A: "[~@18 b3@43 ~@3]/2", B: "[~@3 b3@33 ~@3 b3@24 ~]/2", C: "~ b3@31", D: "[~ b3@61 ~@2]/2", E: "[~@20 b3@43 ~]/2",
  F: "[~@5 a3@31 ~@28]/2", G: "[~@5 a3@30 ~@29]/2", H: "[~@3 a3@16 ~@13]/2",
})).s("gm_string_ensemble_1").gain(0.06)

// chords · pad warm · "TAPPETO"
const pad_warm = note("<A B C D E@4 F@6 G@2 H@6 I@2 ~@8 J@8 ~@16 K@8 ~@8 L@8 ~@14 M@2 ~@2>".pickRestart({
  A: "[d3,d4,f#4]@31 ~, a4@27 ~@5", B: "[e4,g#4,b4]@7 ~, e3", C: "[c3,c4,d4,g4]@29 ~@3", D: "[d3,d4,e4,a4]@29 ~@3",
  E: "[[c#4,e4,g#4]@31 ~]/4", // C#m
  F: "[~ [g#3,b3]@63 ~ g#3@59 ~@5 [a3,b3]@30 [g3,c4]@16 ~@2 [d4,f#4]@15, ~ e4@175 ~@16, ~@65 c#4@92 ~@18 a3@16 ~]/6", // G#m Asus2 C5 D
  G: "[~@17 g#3@43 ~@4, ~ [b3,e4]@59 ~@4]/2", // E5
  H: "[~ [g#3,b3]@63 ~ g#3@59 ~@5 [a3,b3]@30 [g3,c4]@16 ~@3 f#4@14, ~ e4@175 ~ d4@15, ~@65 c#4@92 ~@18 a3@16 ~]/6", // G#m Asus2 C5
  I: "[~@17 g#3@43 ~@4, ~@2 [b3,e4]@59 ~@3]/2", // E5
  J: "[~@2 [g#3,b3]@63 ~ g#3@59 ~@5 [a3,b3]@30 [g3,c4]@16 ~@2 [d4,f#4]@16 ~@16 g#3@43 ~@3, ~@2 e4@175 ~@79, ~@66 c#4@92 ~@18 a3@16 ~@2 [b3,e4]@59 ~@3]/8", // G#m Asus2 C5 D E5
  K: "[~@3 [g#3,b3]@63 ~@2 g#3@59 ~@5 [a3,b3]@30 [g3,c4]@16 ~@2 [d4,f#4]@16 ~@16 g#3@43 ~, ~@3 e4@175 ~@78, ~@68 c#4@92 ~@18 a3@16 ~@2 [b3,e4]@59 ~]/8", // G#m Asus2 C5 D E5
  L: "[~@5 [g#3,b3]@63 ~ g#3@59 ~@5 [a3,b3]@29 [g3,c4]@16 ~@3 [d4,f#4]@16 ~@16 g#3@43, ~@4 e4@175 ~@77, ~@69 c#4@92 ~@17 a3@16 ~@3 [b3,e4]@59]/8", // G#m Asus2 C5 D E5
  M: "[~@7 [e3,f#3,g#3,b3]@41 ~@16]/2", // E
})).s("gm_pad_warm").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@3 A B@3 C D@15 E@2 F G@13 H G@2 I J@12 K J@3 L M N@15 O P Q P@14 R S ~@3>".pickRestart({
  A: "~@14 x!2", B: "x ~@2 x!2 ~@3", C: "~ x ~@10 x ~@3 x ~@15", D: "~ x ~@11 x ~@3 x ~@14",
  E: "~@2 x ~@10 x ~@3 x ~@14", F: "~ x ~@11 x ~@4 x ~@13", G: "~ x ~@5 x ~ x ~@6", H: "~@3 x ~@10 x ~@3 x ~@13",
  I: "~@2 x ~@12 x ~@3 x ~@12", J: "~@3 x ~@11 x ~@3 x ~@12", K: "~@3 x ~@28", L: "~@3 x ~@12 x ~@2 x ~@12",
  M: "~@3 x ~@12 x ~@3 x ~@11", N: "~ x ~@2 x!2 ~@2", O: "~@4 x ~@12 x ~@2 x ~@11", P: "~@5 x ~@11 x ~@3 x ~@10",
  Q: "x ~@4 x ~@11 x ~@3 x ~@10", R: "~@6 x ~@10 x ~@3 x ~@10", S: "~@7 x ~@24",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@3 C D@7 E D@7 E D F G@6 H G@10 I@5 J I@6 ~ I@4 K@4 L K@7 L K@4 M N@8 O N@6 P Q ~@3
>`.pickRestart({
  A: "~@9 x ~@6", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@9 x ~@15 x ~@6", E: "~@9 x ~@15 x ~@5 x",
  F: "~@9 x ~@16 x ~@5", G: "~@5 x ~@7 x ~@2", H: "x ~@4 x ~@7 x ~@2", I: "~@11 x ~@15 x ~@4",
  J: "~ x ~@9 x ~@15 x ~@4", K: "~@3 x ~@3 x", L: "~ x ~@4 x ~@7 x ~", M: "~@12 x ~@15 x!2 ~@2", N: "~@13 x ~@15 x ~@2",
  O: "~@3 x ~@9 x ~@15 x ~@2", P: "~@13 x ~@16 x ~", Q: "~@5 x ~@26",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@35 B ~@15 C ~@21 D ~@20>".pickRestart({
  A: "~@13 x ~ x", B: "~@11 x ~@4", C: "~@25 x ~@6", D: "~@5 x ~@2",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@94 [~@16 x ~@3 x ~@2 x ~@2 x ~@3 x ~] [~ x ~@2 x ~@2 x ~@2 x ~@4 x ~@16] ~@2>")
  .gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 [~@7 x] ~@35 [~@15 x] ~@15 [~@27 x ~@4] ~@42>").gain(0.54)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A B@2 C D E@7 D E@6 F D G@2 H@5 I H@6 J I H K L@5 M L@6 N M L@2 O P Q@3 R Q@7 R Q@3 S T U V@7 W V@6 X Y Z ~@2
>`.pickRestart({
  A: "~@2 x!3 ~ x ~", B: "x ~ x!3 ~ x ~", C: "~ x ~@6 x ~@3 x ~@3 x ~@7 x ~@7", D: "~@9 x ~@3 x ~@3 x ~@7 x ~@6",
  E: "~ x ~@7 x ~@3 x ~@3 x ~@7 x ~@6", F: "~@2 x ~@6 x ~@3 x ~@3 x ~@7 x ~@6", G: "~ x ~@8 x ~@3 x ~@3 x ~@7 x ~@5",
  H: "~ x ~@3 x ~ x ~ x ~@3 x ~@2", I: "~@5 x ~ x ~ x ~@3 x ~@2", J: "~@3 x ~@6 x ~@3 x ~@3 x ~@7 x ~@5",
  K: "~@2 x ~@7 x ~@4 x ~@3 x ~@7 x ~@4", L: "~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@4", M: "~@11 x ~@3 x ~@3 x ~@7 x ~@4",
  N: "~@3 x ~@28", O: "~@3 x ~@7 x ~@4 x ~@3 x ~@6 x ~@4", P: "~@3 x ~@8 x ~@3 x ~@3 x ~@7 x ~@3", Q: "~ x ~ x!3 ~ x",
  R: "~@3 x!3 ~ x", S: "~@4 x ~@7 x ~@4 x ~@2 x ~@7 x ~@3", T: "~@5 x ~@6 x ~@4 x ~@3 x ~@7 x ~@2",
  U: "~ x ~@11 x ~@3 x ~@3 x ~@7 x ~@2", V: "~@5 x ~@7 x ~@3 x ~@3 x ~@7 x ~@2", W: "~@13 x ~@3 x ~@3 x ~@7 x ~@2",
  X: "~@6 x ~@6 x ~@4 x ~@2 x ~@8 x ~", Y: "~@9 x ~@6", Z: "~@7 x ~@8",
})).gain(0.36)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@4 A@4 B@17 C@17 D@13 ~ D@4 E@17 F G@15 H I J ~@2>".pickRestart({
  A: "~@5 x ~@2", B: "~@21 x ~@10", C: "~@11 x ~@4", D: "~@23 x ~@8", E: "~@3 x", F: "~@8 x ~@16 x ~@6",
  G: "~@25 x ~@6", H: "~@13 x ~@2", I: "~@22 x ~@2 x ~@2 x ~@3", J: "x ~@2 x ~@5 x ~@22",
})).gain(0.24)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@2 B C ~@6 D C ~@6 D E ~@6 F E ~@7 E ~@6 G H ~@7 H ~@7 I ~@7 I ~@4 J K ~@7 K ~@7 L ~@3
>`.pickRestart({
  A: "x", B: "~@7 x", C: "~ x ~@30", D: "~@29 x ~@2", E: "~ x ~@14", F: "~@15 x", G: "~@31 x", H: "~@3 x ~@28",
  I: "x!2 ~@6", J: "~@3 x", K: "~ x ~@3 x ~@26", L: "~@3 x ~@3 x ~@24",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@94 [~@15 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x] [~@2 x ~@2 x ~@2 x ~@3 x ~@19] ~@2>")
// … 9 more lines

More by Masini