Strudelify
Le ragazze serie cover art

L'uomo volante

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, A@4 for four bars: 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 G H I J K L N O@3 P Q@2 R S T U V W@2 X Y Z AA@4 AB@3 AC@5 AD@3 AE AF AG AH@2 AI AJ AK
  AL AM AN AO AP AQ AR AS AT AU AV AW AX AI AY AZ BA BB AY AZ BA BB AY AZ BA BB AY AZ BC BB BD@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: "~ a1@7 ~@5 a1 ~@3 a1@11 ~ a2@3",
  O: "[~@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",
  P: "~@2 g#1@9 ~@3 g#2 ~@3 g#2@7 ~ g#1@5 ~",
  Q: "[~@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",
  R: "~@2 b1@8 ~@4 b1 ~@3 b1@8 ~@4 b1 ~", S: "~@2 e2@4 e1@3 ~@5 e1 ~@3 e2@9 ~@5",
  T: "~@2 e2@3 ~ e1@2 ~@6 e1 ~@3 e2@8 ~@4 e2 ~", U: "~@2 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@6",
  V: "~@2 c#2@8 ~@4 c#2 ~@3 c#2@9 ~@3 c#2@2", W: "[~@2 a1@9 ~@3 a1 ~@3 a1@9 ~@3 a1@4 c2@9 ~@3 c2@4 d2@8 ~@4 d2 ~]/2",
  X: "~@2 e2@4 e1@4 ~@4 e1@4 e2@11 ~@3", Y: "~@3 e2@4 ~@7 e1@4 e2@8 d#2@3 ~ b1@2",
  Z: "~@3 c2@7 ~@4 c2 ~@3 c2@8 ~@4 c2@2",
  AA: "[~@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",
  AB: "[~@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",
  AC: "[~@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@3 ~ c2@7 ~@5 c2 ~@7 c2@4 ~@4 c2]/5",
  AD: "[~@3 a1@8 ~@4 a1@12 ~@4 a1@4 e2@11 ~ e1@8 e2@12 e1@5 ~@24]/3", AE: "~@3 e2@4 e1@3 ~@5 e1 ~@3 e2@9 ~@4",
  AF: "~@4 e2@3 e1@2 ~@6 e1 ~@3 e2@8 ~@4 e2", AG: "~@4 c#2@7 ~@4 c#2 ~@3 c#2@9 ~@4",
  AH: "[~@4 c#2@8 ~@3 c#2 ~@3 c#2@9 ~@3 c#2@4 ~ a1@9 ~@3 a1 ~@3 a1@9 ~@3]/2", AI: "a1 c2@2 ~ c2 d2@2 ~",
  AJ: "d2 ~@3 e2@4 e1@4 ~@4 e1@4 e2@11 ~", AK: "~@4 e2@4 ~@8 e1@4 e2@8 d#2@3 ~", AL: "b1@2 ~@2 a1@7 ~@5 a1 ~@3 a1@12",
  AM: "a2@4 a1@7 ~@5 a1 ~@3 a1@8 ~@4", AN: "a1@4 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@4", AO: "g#1@4 c#2@7 ~@5 c#2 ~@3 c#2@8 ~@4",
  AP: "c#2@2 ~@2 g#1@8 ~@4 g#2 ~@3 g#2@7 ~ g#1@4", AQ: "~@4 g#1@7 ~@5 g#1 ~@3 g#1@8 g#2@4",
  AR: "g#1@4 f#1@8 ~@4 f#2@7 ~ f#1@3 ~ f#2@4", AS: "f#1@3 ~ b1@8 ~@4 b1 ~@3 b1@8 ~@4",
  AT: "b1 ~@3 e2@4 e1@4 ~@4 e1 ~@3 e2@9 ~@3", AU: "~@4 e2@3 ~ e1@2 ~@6 e1 ~@3 e2@8 ~@4",
  AV: "e2 ~@4 c#2@7 ~@4 c#2 ~@3 c#2@9 ~@3", AW: "~@5 c#2@8 ~@3 c#2 ~@3 c#2@9 ~@3",
  AX: "c#2@3 ~@2 a1@8 ~@4 a1 ~@2 a1@8 ~@4", AY: "~ d2 ~@3 e1@4 e2@6 ~@2 e1@3 ~ e2@8 ~@3",
  AZ: "~ e2 ~@3 c#2@7 ~@9 c#2 ~@3 c#2@5 ~@2", BA: "~ c#2@3 ~ c2@7 ~@5 c2 ~@3 c2@8 ~@3",
  BB: "~ c2@2 ~@2 d2@8 ~@4 d2 ~@3 d2@9 ~@2", BC: "~ c#2@3 ~@2 c2@7 ~@4 c2 ~@3 c2@8 ~@3",
  BD: "[~@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 K L N@2 O P Q R S T U V W X Y Z AA@2 ~@14 AB@2 ~@8 AC AD AE AF AG AH AI AJ AK
  AL AM AN AO AP AQ AR AS ~@13 AT@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 [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
  O: "~@10 [g#3,b3,c#4,e4]@2 ~@10 [g#3,b3,c#4,e4] ~@9", P: "~@6 [g#3,b3,c#4,e4] ~@15 [g#3,b3,c#4,e4]@2 ~@8",
  Q: "~@10 [g#3,b3,d#4,f#4]@2 ~@10 [g#3,b3,d#4,f#4] ~@7 g#3 ~", R: "~@6 [g#3,b3,d#4,f#4] ~@15 [g#3,b3,d#4,f#4]@4 ~@6",
  S: "~@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
  T: "~@6 [a3,b3,c#4,e4]@5 ~@11 [a3,b3,c#4,e4]@3 ~@7", U: "~@2 [g#3,b3,e4]@4 ~@4 [g#3,b3,e4] ~@11 [g#3,b3,e4] ~@9",
  V: "~@6 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@8 [g#3,b3,e4] ~", W: "~@10 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@9",
  X: "~@2 [g#3,c#4,e4]@6 ~@6 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@5", // C#m
  Y: "~@2 [a3,b3,c#4,e4]@5 ~@7 [a3,b3,c#4] ~@7 [a3,b3,c#4,e4]@4 ~@6", // A
  Z: "~@2 [g3,c4,e4]@6 ~@6 [g3,c4,e4] ~@7 [a3,d4,f#4]@4 ~@4 [a3,d4,f#4] ~", // C D
  AA: "[~@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
  AB: "[~@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
  AC: "~@12 [a3,b3,c#4,e4] ~@11 [a3,b3,c#4,e4] ~@7", // A
  AD: "[a3,b3,c#4,e4]@4 ~@8 [a3,b3,c#4,e4] ~@11 [a3,b3,c#4,e4]@5 ~@3", // A
  AE: "~@12 [g#3,b3,c#4,e4]@2 ~@10 [g#3,b3,c#4,e4] ~@7", AF: "~@8 [g#3,b3,c#4,e4] ~@15 [g#3,b3,c#4,e4]@2 ~@6",
  AG: "~@12 [g#3,b3,d#4,f#4]@2 ~@10 [g#3,b3,d#4,f#4] ~@7", AH: "g#3 ~@7 [g#3,b3,d#4,f#4] ~@15 [g#3,b3,d#4,f#4]@4 ~@4",
  AI: "~@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
  AJ: "~@8 [a3,b3,c#4,e4]@5 ~@11 [a3,b3,c#4,e4]@4 ~@4", // A
  AK: "~@5 g#3@4 ~@3 [g#3,b3,e4] ~@11 [g#3,b3,e4] ~@7, ~ [b3,e4] ~@6", AL: "~@8 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@8",
  AM: "[g#3,b3,e4] ~@11 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@7", // E C#m
  AN: "~@5 [g#3,c#4,e4]@6 ~@5 [g#3,c#4,e4] ~@11 [g#3,c#4,e4] ~@3", // C#m
  AO: "~@5 [a3,b3,c#4,e4]@5 ~@6 [a3,b3,c#4] ~@7 [a3,b3,c#4,e4]@4 ~@4", // A
  AP: "~@5 [g3,c4,e4]@6 ~@6 [g3,c4,e4] ~@7 [a3,f#4]@4 ~@3, ~@6 d4 ~", // C D
  AQ: "~ [a3,d4,f#4] ~@11 [g#3,b3,e4]@5 ~@7 [g#3,b3,e4] ~@6", // D E
  AR: "~ [g#3,b3,e4]@4 ~@8 [g#3,b3,e4] ~@11 [g#3,b3,e4]@4 ~@3", AS: "~ [g#3,b3,e4] ~@30",
  AT: "[~@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 ~@3 a3@29 ~@37 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@29 ~@37 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@30 ~@2 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 ~@2 e4@23 ~@5 [c#4,e4]@33 ~@4 [e4,g4]@27 ~@4 f#4@31 ~@28, ~ d4@35 ~ b3@93 ~@62, ~@37 g#4@60 ~@5 c4@25 ~@2 d4@35 ~@28]/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 F@2 ~@2 F@2 ~@2 G@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@30 ~@29]/2", G: "[~@5 a3@31 ~@28]/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 F@6 G@2 ~@8 H@8 ~@16 I@8 ~@8 J@8 ~@14 K@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: "[~@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
  I: "[~@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
  J: "[~@5 [g#3,b3]@63 g#3@59 ~@6 [a3,b3]@29 [g3,c4]@16 ~@3 [d4,f#4]@16 ~@16 g#3@43, ~@4 e4@175 ~@77, ~@68 c#4@92 ~@18 a3@16 ~@3 [b3,e4]@59]/8", // G#m Asus2 C5 D E5
  K: "[~@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 C B C@16 D C@2 D@18 E@11 F E@5 G@16 H I H@15 J ~@3>".pickRestart({
  A: "~@14 x!2", B: "x ~@2 x!2 ~@3", C: "~ x ~@11 x ~@3 x ~@14", D: "~ x ~@5 x ~ x ~@6", E: "~@3 x ~@11 x ~@3 x ~@12",
  F: "~@3 x ~@28", G: "~ x ~@2 x!2 ~@2", H: "~@5 x ~@11 x ~@3 x ~@10", I: "x ~@4 x ~@11 x ~@3 x ~@10", J: "~@7 x ~@24",
})).gain(0.42)

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

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@4 A B@22 C@17 D@11 ~ D@6 E@15 F G@16 H I ~@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: "~@22 x ~@2 x ~@2 x ~@3", I: "x ~@2 x ~@5 x ~@22",
})).gain(0.24)

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

// drums · shaker
const shaker = s("sh").struct("<~@3 [~@4 x!2 ~@2] ~@94>").gain(0.54)

stack(
  bass, bass_soft, electric_guitar_muted, string_ensemble_1, string_ensemble_1_soft, pad_warm, kick, snare, low_tom,
  pedal_hat, mid_tom, open_hat, open_hat_soft, crash, ride, shaker
)

More by Masini