Strudelify

4 marzo 1943

Dalla Lucio

KeyF minorTempo62 bpm
0:00/0:00
// 4 marzo 1943 — Dalla Lucio
// 62.2 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(62.2/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 · acoustic bass · "ACOU BASS"
const bass = note("<~@25 A B C D E F G H I J F K L M N O P Q R O S T R U P V N O W V X Y Z AA AB AC ~>".pickRestart({
  A: "~@10 g1 ~ a1 ~ b1 ~", B: "c2@2 ~@2 g2 ~ g1@2 c2@2 ~@2 g2 ~ g1 ~", C: "d2@2 ~ d2 g2@2 g1 ~ d2@2 ~ d2 g2 ~ g1 ~",
  D: "d2@3 d2 g2@2 g1 ~ d2@2 ~ d2 g2 ~ g1 ~", E: "c2@2 ~ c2 g2@2 g1@2 c2@2 ~ c2 g2 ~ g1 ~",
  F: "c2@2 ~@2 g2 ~ g1 ~ c2@2 ~ c2 g2 ~ g1 ~", G: "d2@2 ~ d2 g2 ~ g1@2 d2@2 ~@2 g2 ~ g1 ~",
  H: "d2@3 d2 g2 ~ g1@2 d2@2 ~ d2 g2 ~ g1 ~", I: "c2@2 ~@2 g2 ~ g1 ~ c2@2 ~@2 g2 ~ c2 ~",
  J: "a1@2 ~@2 e2 ~ e1 ~ a1@2 ~ a1 e2 ~ a1 ~", K: "c2@3 ~ g2 ~ g1 ~ c2 ~ ab1 ~ bb1 ~ c2 ~",
  L: "db2@2 ~@2 ab2 ~ ab1 ~ db2@2 ~ db2 ab2 ~ ab1 ~", M: "eb2@2 ~ eb2 ab2@2 ab1@2 eb2@2 ~@2 ab2 ~ ab1 ~",
  N: "eb2@3 eb2 ab2 ~ ab1@2 eb2@2 ~ eb2 ab2 ~ ab1 ~", O: "db2@2 ~@2 ab2 ~ ab1 ~ db2@2 ~@2 ab2 ~ ab1 ~",
  P: "db2@2 ~@2 ab2 ~ ab1 ~ db2@2 ~ db2 ab2 ~ db2 ~", Q: "eb2@2 ~ eb2 ab2 ~ ab1@2 eb2@3 ~ ab2 ~ ab1 ~",
  R: "eb2@3 eb2 ab2 ~ ab1 ~ eb2@2 ~ eb2 ab2 ~ ab1 ~", S: "db2@2 ~@2 ab2 ~ ab1 ~ db2@3 db2 ab2 ~ db2 d2",
  T: "eb2@3 eb2 ab2 ~ ab1@2 eb2@2 ~@2 ab2 ~ ab1 ~", U: "db2@2 ~@2 ab2 ~ ab1 ~ db2@3 ~ ab2 ~ ab1 ~",
  V: "eb2@2 ~ eb2 ab2 ~ ab1@2 eb2@2 ~@2 ab2 ~ ab1 ~", W: "db2@2 ~@2 ab2@2 ab1 ~ db2@2 ~ db2 ab2@2 ab1 ~",
  X: "eb2@3 eb2 ab2 ~ ab1@2 eb2@3 ~@5", Y: "~@2 db2@2 ~@2 ab2 ~ ab1@2 db2@2 ~@2 ab2 ~",
  Z: "db2 ~ bb1@2 ~@2 f2 ~ f1 ~ bb1@2 ~ bb1 f2 ~", AA: "bb1 ~ db2@2 ~@2 ab2 ~ ab1 ~ db2@3 ~ ab2 ~",
  AB: "db2 ~ bb1@3 ~ f2 ~ f1 ~ bb1@2 ~ bb1 f2 ~", AC: "bb1 ~@2 db2@10 ~@3",
})).s("gm_acoustic_bass").gain(0.37)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note("<~@26 A ~@3 B C ~ A D B ~ E F ~ G E F ~ G E F ~ G E F ~ G E F ~ H I H I ~@2>".pickRestart({
  A: "~@3 c2 ~@7 c2 ~@4", B: "~@3 c2 ~@12", C: "~@11 d2 ~@4", D: "~@3 a1 ~@12", E: "~@3 db2 ~@12", F: "~@11 eb2 ~@4",
  G: "~@3 db2 ~@7 db2 ~@4", H: "~@5 db2 ~@7 db2 ~@2", I: "~@5 bb1 ~@10",
})).s("gm_acoustic_bass").gain(0.19)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C@2 D E F D@2 F@2 G H I@2 J K E J@2 F@2 A B L@2 M F@2 N@2 F@2 A H O@2 P Q@2 R@2 Q@2 R S Q T@3 Q@2 U@2 V W X@2 Y@4
>`.pickRestart({
  A: "~@2 c4 ~ g3 ~ [g2,c4] e4 ~@2 c4 ~ g3 ~ [c3,c4] b3, c3@7 ~ c3@5 g3@2 ~, ~ g3@2 c4@2 g3@2 ~@2 g3@2 c4@3 ~@2, ~@2 e4@5 ~@3 e4@5 ~", // C5 C
  B: "~@2 c4 ~@7 c4 ~@3 [a2,c4] e4, a2@6 c4@2 a2@4 e3@3 ~, ~ a3@3 e3@6 e4@5 ~, ~@2 e4@4 e2@9 ~, ~@3 c4@2 a3@2 e4@2 a3@2 c4@2 a3@2 ~", // Am
  C: "[~@2 c4 ~ g3 ~@5 c4 ~ g3 ~@5 c4 ~ g3 ~@2 e4 [c3,e4] ~ [g2,g3] ~ [a2,a3] ~ [b2,b3] ~, c3@7 e4@2 g3@2 c4@2 g3@3 c3@8 ~@8, ~ g3@2 c4@2 g3@3 c3@7 e4@2 g3@2 c4@2 g3@4 ~@7, ~@2 e4@4 g2@8 g2@8 [g2,c4]@3 ~@7, ~@6 c4@4 e4@4 c4@4 e4@5 ~@9]/2", // C G A B C5
  D: "~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4] ~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4], c3@7 ~ c3@7 ~, ~ g3@3 ~ [g3,c4,e4]@2 ~@2 g3@3 ~ [g3,c4,e4]@2 ~", // C
  E: "~@2 [b3,d4,f4]!3 ~ g2 [b3,d4,f4] ~@2 [b3,d4,f4]!3 ~ g2 [b3,d4,f4], d3@7 ~ d3@7 ~, ~ g3@3 g3@3 ~@2 g3@2 ~ g3@3 ~, ~@5 [b3,d4,f4]@2 ~@6 [b3,d4,f4]@2 ~", // Bdim
  F: "~@2 [b3,d4,f4]!3 ~ g2 [b3,d4,f4] ~@2 [b3,d4,f4]!3 ~ g2 [b3,d4,f4], d3@7 ~ d3@7 ~, ~ g3@3 g3@3 ~@2 g3@3 g3@3 ~, ~@5 [b3,d4,f4]@2 ~@6 [b3,d4,f4]@2 ~", // Bdim
  G: "~@2 c4 ~ g3 ~ [g2,c4] e4 ~@2 c4 ~ g3 ~ [g2,c4] e4, c3@7 ~ c3@7 ~, ~ g3@2 c4@2 g3@2 ~@2 g3@2 c4@2 g3@2 ~, ~@2 e4@5 ~@3 e4@5 ~", // C5
  H: "~@2 c4 ~@7 c4 ~@3 [a2,c4] e4, a2@6 c4@2 a2@4 e3@3 ~, ~ a3@2 c4@2 a3@2 e4@2 a3 e4@5 ~, ~@2 e4@4 e2@9 ~, ~@4 e3@7 c4@2 a3@2 ~", // Am
  I: "[~@2 c4 ~ g3 ~@5 c4 ~ g3 ~@5 c4 ~ g3 ~@2 e4 [c3,e4] ~ [g2,b3] ~ [a2,c4] ~ [b2,d4] ~, c3@7 e4@2 g3@2 c4@2 g3@3 c3@8 ~@8, ~ g3@2 c4@2 g3@3 c3@7 e4@2 g3@2 c4@2 g3@4 ~@7, ~@2 e4@4 g2@8 g2@8 [g2,c4]@3 ~@7, ~@6 c4@4 e4@4 c4@4 e4@5 ~@9]/2", // C G Am Bm C5
  J: "~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4] ~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4], c3@7 ~ c3@7 ~, ~ g3@2 ~@2 [g3,c4,e4]@2 ~@2 g3@2 ~@2 [g3,c4,e4]@2 ~", // C
  K: "~@2 [b3,d4,f4]!3 ~ g2 [b3,d4,f4] ~@2 [b3,d4,f4]!3 ~ g2 [b3,d4,f4], d3@7 ~ d3@7 ~, ~ g3@2 ~ g3@3 ~@2 g3@3 g3@3 ~, ~@5 [b3,d4,f4]@2 ~@6 [b3,d4,f4]@2 ~", // Bdim
  L: "[~@2 c4 ~ g3 ~@5 c4 ~ g3 ~@5 c4 ~ g3 ~@2 e4 [c3,e4] ~@7, c3@7 e4@2 g3@2 c4@2 g3@3 c3@8 ~@8, ~ g3@2 c4@2 g3@3 c3@7 e4@2 g3@2 c4@2 g3@3 ~@8, ~ e4@2 g2@4 g2@4 [g2,c4] ~@4, ~@6 c4@4 e4@4 c4@4 e4@5 ~@9]/2", // C C5
  M: "~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4] ~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4], c3@7 ~ c3@7 ~, ~ g3@3 ~ [g3,c4,e4]@2 e4@2 g3@3 ~ [g3,c4,e4]@2 ~", // C C5 C
  N: "[~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4] ~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4] ~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4] ~@2 [c4,e4]!2 [g3,c4,e4] ~ g2 [g3,c4,e4], c3@7 ~ c3@7 ~ c3@7 ~ c3@7 ~, ~ g3@3 ~ [g3,c4,e4]@2 e4@2 g3@3 ~ [g3,c4,e4]@2 e4@2 g3@3 ~ [g3,c4,e4]@2 ~@2 g3@2 ~@2 [g3,c4,e4]@2 ~]/2", // C C5 C C5 C
  O: "[~@2 c4 ~ g3 ~@5 c4 ~ g3 ~@5 c4 ~ g3 ~@2 e4 [c3,e4] ~@7, c3@7 e4@2 g3@2 c4@2 g3@3 c3@8 ~@8, ~ g3@2 c4@2 g3@3 c3@7 e4@2 g3@2 c4@2 g3@4 ~@7, ~@2 e4@4 g2@8 g2@8 [g2,c4]@3 ~@7, ~@6 c4@4 e4@4 c4@4 e4@5 ~@9]/2", // C C5
  P: "~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4], db3@7 ~ db3@7 ~, ~ ab3@2 ~@2 [ab3,db4,f4]@2 ~@2 ab3@3 ~ [ab3,db4,f4]@2 ~", // Db
  Q: "~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4,gb4] ~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4,gb4], eb3@7 ~ eb3@7 ~, ~ ab3@3 ab3@3 ~@2 ab3@3 ab3@3 ~, ~@5 [c4,eb4,gb4]@2 ~@6 [c4,eb4,gb4]@2 ~", // Cdim
  R: "~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4], db3@7 ~ db3@7 ~, ~ ab3@3 ~ [ab3,db4,f4]@2 ~@2 ab3@3 ~ [ab3,db4,f4]@2 ~", // Db
  S: "~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4], db3@7 ~ db3@7 ~, ~ ab3@3 ~ [ab3,db4,f4]@2 f4@2 ab3@3 ~ [ab3,db4,f4]@2 ~", // Db Db5 Db
  T: "[~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4,gb4] ~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4], eb3@7 ~ eb3@7 ~ db3@7 ~ db3@7 ~ db3@7 ~ db3@7 ~, ~ ab3@3 ab3@3 ~@2 ab3@3 ab3@3 ~@2 ab3@3 ~ [ab3,db4,f4]@2 ~@2 ab3@3 ~ [ab3,db4,f4]@2 ~@2 ab3@3 ~ [ab3,db4,f4]@2 ~@2 ab3@2 ~@2 [ab3,db4,f4]@2 ~, ~@5 [c4,eb4,gb4]@2 ~@6 [c4,eb4,gb4]@2 gb4@8 ~@8 f4@3 ~@14]/3", // Cdim Cm Db Db5 Db Cdim
  U: "~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4] ~@2 [db4,f4]!2 [ab3,db4,f4] ~ ab2 [ab3,db4,f4], db3@7 ~ db3@7 ~, ~ ab3@3 ~ [ab3,db4,f4]@2 ~@2 ab3@2 ~@2 [ab3,db4,f4]@2 ~", // Db
  V: "~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4,gb4] ~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4,gb4], eb3@7 ~ eb3@7 ~, ~ ab3@3 ab3@3 ~@2 ab3@2 ~ ab3@3 ~, ~@5 [c4,eb4,gb4]@2 ~@6 [c4,eb4,gb4]@2 ~", // Cdim
  W: "~@2 [c4,eb4,gb4]!3 ~ ab2 [c4,eb4,gb4] eb3@8, eb3@7 ~@9, ~ ab3@3 ab3@3 ~@9, ~@5 [c4,eb4,gb4]@2 ~@9", // Cdim
  X: "[~@4 db4 ~ ab3 ~ [ab2,db4] f4 ~@2 db4 ~ ab3 ~ [db3,db4] c4 ~@2 db4 ~@7 db4 ~@2 bb3, ~@2 db3@7 ~ db3@6 ~@2 bb2@6 db4@2 bb2@4 f3@2, ~@4 f4@5 ~@3 f4@5 ~@3 f4@4 f2@8, ~@4 ab3@2 ~ ab3@2 ~@2 ab3@3 ~ ab3@2 ~@2 bb3@3 f3@6 f4@4, ~@5 db4@3 ~@5 db4@3 ~@5 db4@2 bb3@2 f4@2 bb3@2 db4@3]/2", // Db5 Db
  Y: "[[bb2,bb3] c4 ~@2 db4 ~ ab3 ~ [ab2,db4] f4 ~@2 db4 ~ ab3 ~ [db3,db4] c4 ~@2 db4 ~@7 db4 ~@3 [f2,db4]@2 f4 [db4,f4]@19 ~@10, ~@2 db3@7 ~ db3@5 ab3@2 ~ bb2@6 db4 f4 bb2@8 [db3,ab3]@20 ~@10, ~@3 ab3@2 db4@2 ab3@2 ~@2 ab3@2 db4@3 ~@3 bb3@2 db4@2 bb3@5 f4@5 ~@31, ~@4 f4@5 ~@3 f4@5 ~@3 f4@4 f2@6 f3@4 ~@30, ~@22 f3@6 bb3 db4@2 bb3@3 ~@30]/4", // Bb Db5 Db Db5
})).s("gm_acoustic_guitar_nylon").gain(0.23)

// chords · string ensemble 1 · "STRING/GTR"
const string_ensemble_1 = note("<A@2 B C ~@7 A@2 D C ~ E ~ F G ~@2 H I J@2 ~@36>".pickRestart({
  A: "~@2 e5 ~ c5@3 ~ g5 e5 ~ c6@5", B: "~@2 e5 ~ c5@3 ~ e5 ~ c5@3 ~ e4 ~", C: "c4 ~",
  D: "~@2 e5 ~ c5@3 ~ e5 ~ c5@2 ~@2 e4 ~", E: "~@3 [b4,c5,g5,a5]!11 [c5,g5,a5] ~",
  F: "~@2 e4 ~ c4@3 ~ g4 ~ e4@3 ~ c5 ~", G: "g4 ~", H: "~@2 e5 ~ c5@4 g5 e5 ~@4 c5 b4, c5@4 ~@7 c6@5",
  I: "~@2 e5 ~ c5@3 ~ g5 e5 ~@4 a4 b4, a4@7 ~, ~@11 c6@5", J: "[~@2 e5 ~@5 e5 ~@5 e4 ~ c4@8 ~@8, c5@2 c5@3 c5@7 ~@4]/2",
})).s("gm_string_ensemble_1").gain(0.08)

// chords · string ensemble 1 · "STRING/GTR" · soft notes · Cmaj7
const string_ensemble_1_soft = note("<~@14 [c5 ~] ~ [[b4,c5,g5,a5]!3 ~@11 b4 [b4,c5,g5,a5]] ~@45>")
  .s("gm_string_ensemble_1").gain(0.03)

// chords · violin · "STRING/GTR"
const violin = note("<~@33 A@2 B@2 ~@11 C D E F G D E H I@6>".pickRestart({
  A: "~@2 e5 ~ c5@3 ~ g5 e5 ~ c6@5", B: "[~@2 e5 ~@5 e5 ~@5 e4 ~ c4@8 ~@8, c5@2 c5@3 c5@7 ~@4]/2",
  C: "~@12 ab5 f5 db6 ab5", D: "f6@6 e6 f6", E: "gb6", F: "c6@2 f6 eb6", G: "db6@10 ~@3 ab5 db6!2", H: "c6@9 ~@7",
  I: "[~@4 f5 ~ db5@3 ~ ab5 f5 ~@8 f5 ~ db5@3 ~ ab5 f5 ~@8 f5 ~ db5@3 ~ ab5 f5 ~@8 f5 ~ db5@3 ~ ab5 ~@2 db6@21 ~@14, ~@2 db6@11 db6@16 db6@16 db6@16 ~@35]/6",
})).s("gm_violin").gain(0.16)

// chords · violin · "STRING/GTR" · soft notes
const violin_soft = note("<~@33 A B ~@13 C ~@3 D ~@6 E F ~>".pickRestart({
  A: "~@14 c5 b4", B: "a4@13 ~ a4 b4", C: "~@10 f5 db5 ~@4", D: "~@10 f5!2 ab5 ~@3", E: "~@11 f5 ~@4",
  F: "~@3 [f3,ab3,db4]@11 ~@2", // Db
})).s("gm_violin").gain(0.11)

// other · vibraphone · "VIBE/MTGTR" · B C Db D G A Bb B …
const vibraphone = note(`<
  ~@27
  [~@5 [b4,b5] [c5,c6] [db5,db6] [d5,d6] [g4,g5] [a4,a5] [bb4,bb5] [b4,b5] [d4,d5] [eb4,eb5] [e4,e5]]
  [[f4,f5] ~@15]
  [~@5 [g4,g5] [a4,a5] [b4,b5] [c5,c6] [e4,e5] [f4,f5] [gb4,gb5] [g4,g5] [c4,c5] [d4,d5] [eb4,eb5]]
  [[e4,e5] ~@15]
  [~@5 [d4,d5] [eb4,eb5] [e4,e5] [f4,f5] [b3,b4] [c4,c5] [db4,db5] [d4,d5] [g3,g4] [a3,a4] [bb3,bb4]]
  [[b3,b4] ~@15]
  ~@29
>`).s("gm_vibraphone").gain(0.24)

// chords · electric guitar muted · "VIBE/MTGTR"
const electric_guitar_muted = note("<~@37 A@2 B C D@2 B E F G H I F G H I F J K L@5 ~>".pickRestart({
  A: "[[f3,db4]@16 [c4,eb4]@15 ~, ab3@31 ~]/2", B: "c4@2 f4 eb4, [eb3,ab3]", C: "[f3,ab3,db4]@15 ~",
  D: "[f4@11 e4@3 f4@2 [c4,eb4,gb4]@15 ~, ab3@31 ~, db4 ~]/2", E: "[f3,ab3,db4]@14 ab3!2",
  F: "[f3,f4] [ab3,ab4] [f3,f4] [ab3,ab4] [f3,f4] [ab3,ab4] [f3,f4] [ab3,ab4]", G: "[c4,c5]@7 ~",
  H: "[gb3,gb4] [ab3,ab4] [gb3,gb4] [ab3,ab4] [gb3,gb4] [ab3,ab4] [gb3,gb4] [ab3,ab4]", I: "[db4,db5]@7 ~",
  J: "[c4,c5]@15 ~", K: "[gb3,gb4] [ab3,ab4] [gb3,gb4] [ab3,ab4] ~@4",
  L: "[~@3 [ab3,f4] ~ [ab3,f4]!5 ~ [ab3,f4] ~ [ab3,f4]!3 [ab3,f4]!2 ~ [bb3,f4] ~ [bb3,f4]!5 ~ [bb3,f4] ~ [bb3,f4]!3 [bb3,f4]!2 ~ [ab3,f4] ~ [ab3,f4]!5 ~ [ab3,f4] ~ [ab3,f4]!3 [ab3,f4]!2 ~ [bb3,f4] ~ [bb3,f4]!5 ~ [bb3,f4] ~ [bb3,f4]!3 [bb3,f4] ~ [bb3,f4] ~@13, ~ db4@32 ~@7]/5", // Db Bb5 Db Bb5
})).s("gm_electric_guitar_muted").gain(0.09)

// drums · kick
const kick = s("bd").struct("<~@25 A B@10 C B@18 D E@4 F ~>".pickRestart({
  A: "~@5 x!3", B: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~@3 x ~ x ~ x ~ x ~", D: "x ~@2 x!2 ~@3 x ~@7",
  E: "~@2 x ~@2 x!2 ~@3 x ~@2 x!2 ~", F: "~@3 x ~@12",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@26 A@10 B A@18 C D E@3 F ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x!3", C: "~ x ~ x!2 ~@3", D: "~ x!3", E: "x!4", F: "x",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@10 B A@10 B C@10 D C@17 E F G H I H J ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "x ~ x!14", D: "x ~ x!9 ~@5", E: "x ~ x!12 ~ x", F: "x ~ x!7 ~@7",
  G: "~@2 x ~ x!12", H: "x!3 ~ x!12", I: "~ x!2 ~ x!12", J: "~ x ~@6",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@26 [~ x ~@14]!30 [~@3 x ~@12]!4 ~@2>").gain(0.19)

// drums · open hat
const open_hat = s("oh").struct("<~@54 [~@7 x] ~@3 x ~ x ~>").gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@37 A ~@6 B ~ B ~ B ~@3 B ~@7 C ~>".pickRestart({
  A: "x", B: "~@7 x", C: "~@3 x ~@12",
})).gain(0.39)

stack(
  bass, bass_soft, acoustic_guitar_nylon, string_ensemble_1, string_ensemble_1_soft, violin, violin_soft, vibraphone,
  electric_guitar_muted, kick, rim, hihat, hihat_soft, open_hat, ride
)

More by Dalla Lucio