Strudelify

E l'uomo per me

Mina

KeyB♭ majorTempo123 bpm
0:00/0:00
// E l'uomo per me — Mina
// 123 bpm, 4/4, key A# 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 73 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.

// chords · piano
const piano = note(`<
  A B A B A B C D ~@5 E@2 F@2 G B A B C D ~@5 E@2 F@2 H I J@2 K@2 L M N O A B C D ~@5 P@2 F@2 G B Q R@2 S R@2 Q R@2 T F
  A U V@3
>`.pickRestart({
  A: "[bb2,f3,d4] ~@3 [bb2,f3,d4] ~ [f2,f3,c4] ~ [bb2,f3,d4] ~@3 [bb2,f3,d4] ~ [f2,f3,c4] ~", // Bb F5 Bb F5
  B: "[bb2,f3,d4] ~@3 [bb2,f3,d4] ~ [f2,f3,c4] ~ [bb2,f3,d4]@2 ~@2 [f2,f3,c4]@2 ~@2", // Bb F5 Bb F5
  C: "[g3,bb3] ~@3 [g3,bb3] ~ [f3,a3] ~ [g3,bb3] ~@3 [g3,bb3] ~ [f3,a3] ~", // Gm F Gm F
  D: "[g3,bb3] ~@3 [g3,bb3] ~ [f3,a3] ~ [g3,bb3] ~@3 [f3,a3]@2 ~@2", // Gm F Gm F
  E: "[[bb2,f3]@3 ~ f3@2 ~@4 bb2@2 f3@2 bb2 ~ [f3,bb3]@3 ~@7 bb2@2 [f3,bb3,d4]@2 bb2@2, [bb3,d4]@5 ~ d4@14 ~@2 [bb3,d4]@6 ~@4, ~@3 bb2@6 ~@7 bb2@2 ~ bb2@5 ~@8, ~@6 [f3,bb3]@6 ~@8 f3@7 ~@5]/2", // Bb5 Bb Bb5
  F: "~@4 c4 ~ [ab3,c4,eb4]@4 f2@2 [ab3,c4,eb4]@2 f2@2, f2@7 ~@9, ~@3 ab3@2 ~@11", // Ab
  G: "[bb3,d4]@3 ~ f3@2 f3@2 ~@2 f3@2 [f3,bb3,d4]@2 bb2 ~, [bb2,f3]@2 ~ bb2@3 [bb3,d4]@5 ~@5, ~@8 bb2@5 ~@3", // Bb Bb5 Bb
  H: "[bb2,f3,bb3,d4]@4 ~@2 [bb2,f3,bb3,d4] ~ [f2,ab3,c4,eb4]@3 ~ [f2,ab3,c4,eb4]@3 ~", // Bb Fm7
  I: "[f3,bb3,d4]@4 f3 ~ f3@2 ~@4 bb3@2 d4 ~, bb2@3 ~@3 [bb3,d4]@6 ~@4, ~@8 bb2@7 ~, ~@10 f3@5 ~", // Bb
  J: "[[g3,bb3,eb4]@3 ~ g3@2 [bb3,eb4]@6 ~@8 g3@2 [g3,bb3,eb4]@4 [eb2,eb3]@2 [g3,bb3,eb4]@2 [eb2,eb3] ~, eb2@3 eb2@4 ~ eb2@4 ~@4, eb3 ~@2 eb3@11 g3@4 ~ eb3@5 ~@8, ~@6 g3@4 ~@2 [bb3,eb4]@7 ~@13]/2", // Eb Eb5 Eb Eb5
  K: "[[c4,f4]@4 a3 ~ [a3,c4,f4]@6 ~@8 a3 ~ [a3,c4,f4]@5 ~ [a3,c4,f4]@2 ~@2, d2@12 [c4,f4]@9 ~@11, a3@3 ~ d3@10 ~@2 d2@14 ~@2, ~@12 a3@7 d3@12 ~]/2", // F5 F F5
  L: "eb3@3 ~@3 [g3,bb3,eb4]@4 eb3@2 [g3,bb3,eb4]@2 eb3@2, eb2@13 ~@3, [g3,bb3,eb4]@5 ~@11, ~@3 eb3@5 ~@8", // Eb
  M: "[g3,bb3,eb4]@5 ~ [g3,bb3,eb4]@4 c3@2 [g3,bb3,eb4]@2 c3@2, c3@3 ~@5", // Eb
  N: "[a3,c4]@3 ~ a3 ~ [a3,c4]@2 ~@2 a3@2 [a3,c4,gb4]@3 ~, d2@7 ~ [d2,d3]@7 ~, gb4@5 ~ gb4@5 ~@5, ~@3 d3@4 ~@9", // Am Gbdim D
  O: "[f2,a3]@3 ~ a3@2 [a3,c4,eb4]@4 f2 ~ [a3,c4,eb4] ~@3, [c4,eb4]@5 ~@11, ~@3 f2@5 ~@4 f2@2 ~@2", // F Adim Cm
  P: "[[bb2,f3]@3 ~ f3 ~@5 bb2@2 f3@2 bb2 ~ [f3,bb3]@3 ~@7 bb2@2 [f3,bb3,d4]@2 bb2@2, [bb3,d4]@5 ~ d4@14 ~@2 [bb3,d4]@6 ~@4, ~@3 bb2@6 ~@7 bb2@2 ~ bb2@5 ~@8, ~@6 [f3,bb3]@6 ~@8 f3@7 ~@5]/2", // Bb5 Bb Bb5
  Q: "[f3,bb3] ~@3 [f3,bb3] ~ [f3,a3] ~ f3@2 ~@6, ~@8 bb3 ~@7", // Bb5 F
  R: "[[f3,bb3]@9 ~@6 bb2 ~@12 f3@2 ~@2, bb2@10 bb3@13 ~ bb3@6 ~@2, ~@13 f3@8 ~ f3@5 ~@5, ~@16 bb2@9 ~ bb2@4 ~@2]/2", // Bb5
  S: "[f3,bb3] ~@3 [f3,bb3] ~ [f3,a3] ~ [f3,bb3]@2 ~@6", // Bb5 F Bb5
  T: "[ab3,c4,eb4]@4 ~@2 [ab3,c4,eb4]@4 f2@2 [ab3,c4,eb4]@2 f2 ~, ~@4 f2@5 ~@7", // Ab
  U: "~ [bb2,f3,d4] ~@3 [bb2,f3,d4] ~ [f2,f3,c4] ~@2 [bb2,f3,d4] ~@3 [bb2,f3,d4] ~", // Bb F5 Bb
  V: "[[f2,f3,c4] ~@2 [bb2,f3,d4]@2 ~@3 [f2,f3,c4]@2 ~@4 [bb2,f3,d4]@26 ~@8]/3", // F5 Bb F5 Bb
})).s("gm_piano").gain(0.4).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A C A B D E F G H I J ~@5 C A B D E F G H K J ~@13 L A C D E F G H I J ~@5 A M N O M N O M N O ~@2 P Q R@3
>`.pickRestart({
  A: "[bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,c4,f4,a4] ~ [bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,c4,f4,a4] ~", // Bb F Bb F
  B: "[bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,c4,f4,a4] ~ [bb2,d4,f4,bb4] ~@3 [f2,c4,f4,a4]@2 ~@2", // Bb F Bb F
  C: "[bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,c4,f4,a4] ~ [bb2,d4,f4,bb4] ~@3 [f2,c4,f4,a4] ~@3", // Bb F Bb F
  D: "[g2,bb3,d4,g4] ~@3 [g2,bb3,d4,g4] ~ [d2,a3,c4] ~ [g2,bb3,d4,g4] ~@3 [g2,bb3,d4,g4] ~ [d2,a3,c4] ~", // Gm D7 Gm D7
  E: "[g2,bb3,d4,g4] ~@3 [g2,bb3,d4,g4] ~ [d2,a3,c4,f4] ~ [g2,bb3,d4,g4] ~@3 [d2,a3,d4] ~@3", // Gm Dm7 Gm D5
  F: "[eb3,eb4,g4] ~@3 [eb3,eb4,g4] ~ [bb2,d4,f4] ~ [eb3,eb4,g4] ~@3 [eb3,eb4,g4] ~ [bb2,d4,f4] ~", // Eb Bb Eb Bb
  G: "[f4,a4] ~@3 [f4,a4] ~ [eb4,g4] ~ [f4,a4] ~@3 [f4,a4] ~ [eb4,g4] ~", // F Eb F Eb
  H: "[eb4,g4]@2 ~@2 [eb4,g4]@2 [d4,f4] ~ [eb4,g4]@2 ~@2 [eb4,g4]@2 [d4,f4] ~", // Eb Dm Eb Dm
  I: "[eb4,g4]@2 ~@2 [eb4,g4]@2 [d4,f4] ~ [eb4,g4]@2 ~@2 [d4,f4] ~@3", J: "[g4,bb4] ~@15",
  K: "[eb4,g4]@2 ~@2 [eb4,g4]@2 [d4,f4,g4] ~ [eb4,g4]@2 ~@2 [d4,f4] ~@3", // Eb G7 Eb Dm
  L: "[f3,f4,a4] ~@3 [c4,f4,a4] ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4] ~@3", // F
  M: "[bb3,d4] ~@3 [bb3,d4] ~ [a3,c4] ~ [bb3,d4] ~@7", // Bb Am Bb
  N: "[bb2,f3,bb3,d4,f4]@3 ~ bb3@2 [bb3,d4,f4]@4 [bb2,f3]@2 [bb3,d4,f4]@2 [bb2,f3] ~, ~@3 [bb2,f3]@6 ~@7", // Bb Bb5 Bb Bb5
  O: "[bb3,d4,f4]@3 ~ [bb3,f4] ~ [bb3,d4,f4]@4 [bb2,f3]@2 [bb3,d4,f4]@2 [bb2,f3] ~, ~@3 [bb2,f3]@6 ~@7", // Bb Bb5 Bb Bb5 Bb Bb5
  P: "[bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,c4,f4,a4] ~ [bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,f4,a4] c4", // Bb F Bb F
  Q: "~ [bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~ [f2,c4,f4,a4] ~@2 [bb2,d4,f4,bb4] ~@3 [bb2,d4,f4,bb4] ~", // Bb F Bb
  R: "[[f2,c4,f4] a4 ~ [bb2,d4,f4,bb4] ~@4 [f2,c4,f4,a4]@2 ~@4 [d4,f4,bb4]@26 ~@8]/3", // F5 Bb F Bb
})).s("gm_acoustic_guitar_steel").gain(0.23).pan(0.6)

// bass · acoustic bass
const bass = note(`<
  A B A B A B C D E F E G H I J K L M B A B C D E F E G H I J K L N O P Q R S T U V W A B C D E F E G H I J K L M A X J
  Y X J Y X J Y K L A Z AA@3
>`.pickRestart({
  A: "bb1 ~@3 bb1 ~ f1 ~ bb1 ~@3 bb1 ~ f1 ~", B: "bb1 ~@3 bb1 ~ f1 ~ bb1@2 ~@2 f1@2 ~@2",
  C: "g2@2 ~@2 g2 ~ d2 ~ g2 ~@3 g2 ~ d2 ~", D: "g2 ~@3 g2 ~ d2 ~ g2@2 ~@2 d2 ~@3",
  E: "eb2 ~@3 eb2 ~ bb1 ~ eb2 ~@3 eb2 ~ bb1 ~", F: "f2 ~@3 f2 ~ c2 ~ f2 ~@3 f2 ~ c2 ~",
  G: "eb2 ~@3 eb2 ~ bb1 ~ eb2@2 ~@2 bb1@2 ~@2", H: "eb2 ~@7", I: "bb1@6 f2 ~ f2@3 ~ f2@4",
  J: "bb1@4 ~@2 bb1 ~ f2@3 ~ f2@3 ~", K: "f1@6 f2 ~ c3@4 f2@2 c2 ~", L: "f1@6 f2 ~ c3@4 f2 ~ c2 ~",
  M: "bb1@5 ~ bb1 ~ d2@3 ~ f2@3 ~", N: "bb1@4 ~@2 bb1 ~ f1@3 ~ f1@3 ~", O: "bb1@5 ~ d2@4 bb1 ~ f2@2 ~@2",
  P: "eb2@5 ~ g2@6 bb2@4", Q: "eb2@6 g2@3 ~ eb2 ~ bb2@4", R: "d2@3 f2@3 a2@2", S: "d2@3 a2@2 d2 f2@2",
  T: "eb2@3 g2@3 bb2@2", U: "c2@3 eb2@3 g2@2", V: "d2@6 d1@6 d2 ~ d1@2", W: "f2@2 ~@2 f2 ~ f2 ~ f2 ~@3 f2 ~@3",
  X: "bb1 ~@3 bb1 ~ f1 ~ bb1@2 ~@6", Y: "bb1@5 ~ d2@5 ~ f2@3 ~", Z: "~ bb1 ~@3 bb1 ~ f1 ~@2 bb1 ~@3 bb1 ~",
  AA: "[f1 ~@2 bb1@2 ~@3 f1@2 ~@4 bb1@26 ~@8]/3",
})).s("gm_acoustic_bass").gain(0.39)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B A B A B C D E F G H I ~ J K L M N A B C D E F G H I ~ J K L O P Q@2 ~ R S ~ T U A B C D E F G H I ~ J K L M V W
  ~@2 W ~@2 W ~@4 A X Y@3
>`.pickRestart({
  A: "[bb3,d4] ~@3 [bb3,d4] ~ [a3,c4] ~ [bb3,d4] ~@3 [bb3,d4] ~ [a3,c4] ~", // Bb Am Bb Am
  B: "[bb3,d4] ~@3 [bb3,d4] ~ [a3,c4] ~ [bb3,d4] ~@3 [a3,c4] ~@3", // Bb Am Bb Am
  C: "[d4,g4] ~@3 [d4,g4] ~ [c4,f4] ~ [d4,g4] ~@3 [d4,g4] ~ [c4,f4] ~", // G5 F5 G5 F5
  D: "[d4,g4] ~@3 [d4,g4] ~ [c4,f4] ~ [d4,g4] ~@3 [c4,f4] ~@3", // G5 F5 G5 F5
  E: "[eb4,g4] ~@3 [eb4,g4] ~ [d4,f4] ~ [eb4,g4] ~@3 [eb4,g4] ~ [d4,f4] ~", // Eb Dm Eb Dm
  F: "[c4,f4,a4] ~@3 [c4,f4,a4] ~ [c4,eb4,g4] ~ [c4,f4,a4] ~@3 [c4,f4,a4] ~ [c4,eb4,g4] ~", // F Cm F Cm
  G: "eb4 ~@3 [eb4,g4] ~ [d4,f4] ~ [eb4,g4] ~@3 [eb4,g4] ~ [d4,f4] ~", // Eb Dm Eb Dm
  H: "g4@2 ~@2 g4@2 [d4,f4] ~ [bb3,eb4,g4,bb4] [c4,c5] [d4,d5] [eb4,eb5] [d4,f4,f5] [g4,g5] [ab4,ab5] [a4,a5], eb4 ~@3 eb4 ~@11", // Dm Eb C D Eb Dm G Ab …
  I: "[eb4,g4,bb4,bb5] ~@15", J: "~@3 f5, ~ bb4@3, ~ d5, ~@4 d4@3 ~", K: "g5@13 ~ g5@2", L: "eb5@7 ~",
  M: "~@8 f6 d6 c6 bb5 a5 g5 f5 eb5", N: "[bb3,d4,d5] ~@3 [bb3,d4] ~ [a3,c4] ~ [bb3,d4] ~@3 [a3,c4] ~@3",
  O: "bb4@5 ~ [d5,f5]@2 [eb5,ab5,c6]@4 [c5,eb5,ab5]@4", P: "d5@3 ~", Q: "[~@12 g5@4 d5@15 ~, ~ g4@3]/2",
  R: "a5@7 ~ f5@6 ~@2, d5@7 ~", S: "g5 ~", T: "a5@5 ~ [gb5,a5]@9 ~", U: "[f5,a5]@13 ~@3",
  V: "[bb3,d4,d5] ~@3 [bb3,d4] ~ [a3,c4] ~ [bb3,d4] ~@3 [bb3,d4] ~ [a3,c4] ~", // Bb Am Bb Am
  W: "[f4,d5] ~@3 [f4,d5] ~ [f4,c5] ~ [f4,d5] ~@7", X: "~ [bb3,d4] ~@3 [bb3,d4] ~ [a3,c4] ~@2 [bb3,d4] ~@3 [bb3,d4] ~",
  Y: "[[a3,c4] ~@2 bb3@2 ~@3 [a3,c4]@2 ~@4 [bb3,d4]@26 ~@8, ~@3 d4 ~@44]/3", // Am Bb
})).s("gm_string_ensemble_1").gain(0.44).pan(0.6)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@10 A ~@2 B C D E F ~@7 A ~@2 B C D E G H I@2 J K L@2 M N ~@6 A ~@2 B C D E F ~@2 O@2 ~ O@2 ~ O@2 P@2 ~@5
>`.pickRestart({
  A: "g4 ~@15", B: "[bb3,d4]@7 ~", C: "[bb3,d4]@8 bb3@5 ~@3, f4 ~@3", D: "[ab4,c5,eb5]@13 ~@3",
  E: "~@5 c5@2 ~, ab4@7 ~", F: "[d4,f4]", G: "d5@5 ~ bb4@3 ~@7", H: "[bb4,f5]@3 ~",
  I: "[d5@12 d5@3 ~ bb5@7 ~ g5@8, bb4]/2", J: "[a4,d5,f5]", K: "~@4 a4@3 ~",
  L: "[~@5 d5@2 ~@21 g5@3 ~, ~ d5@4 ~@3 d5@23 ~, ~@3 bb4@28 ~, ~@9 bb5@22 ~]/2", M: "~@2 gb5@4 d5@9 ~, d5@5 ~@11",
  N: "c5@13 ~@3", O: "[[d4,f4]@31 ~]/2", P: "[[c4,eb4,ab4]@31 ~]/2",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.6)

// chords · trombone
const trombone = note("<~@8 A B C D ~@11 A B C D ~@19 A B C D ~@23>".pickRestart({
  A: "[bb3,eb4]", B: "[c4,f4]", C: "[eb4,g4]", D: "[eb4,g4]@15 ~",
})).s("gm_trombone").gain(0.43).pan(0.3)

// chords · pizzicato strings
const pizzicato_strings = note(`<
  A B A B A B C D E F G H I ~@5 B A B C D E F G H I ~@14 A B C D E F G H I ~@5 A J ~@2 J ~@2 J ~@4 K L M ~@2
>`.pickRestart({
  A: "[f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,a3,c4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,a3,c4] ~", // Bb F Bb F
  B: "[f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,a3,c4] ~ [f3,bb3,d4] ~@3 [f3,a3,c4] ~@3", // Bb F Bb F
  C: "[bb3,d4,g4] ~@3 [bb3,d4,g4] ~ [a3,c4,f4] ~ [bb3,d4,g4] ~@3 [bb3,d4,g4] ~ [a3,c4,f4] ~", // Gm F Gm F
  D: "[bb3,d4,g4] ~@3 [bb3,d4,g4] ~ [a3,c4,f4] ~ [bb3,d4,g4] ~@3 [a3,c4,f4] ~@3", // Gm F Gm F
  E: "[bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [bb3,d4,f4] ~ [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [bb3,d4,f4] ~", // Eb Bb Eb Bb
  F: "[c4,f4,a4] ~@3 [c4,f4,a4] ~ [c4,eb4,g4] ~ [c4,f4,a4] ~@3 [c4,f4,a4] ~ [c4,eb4,g4] ~", // F Cm F Cm
  G: "[bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [bb3,d4,f4] ~ [bb3,eb4] ~@3 [bb3,eb4,g4] ~ [bb3,d4,f4] ~, ~@4 g4 ~@3", // Eb Bb Eb5 Eb Bb
  H: "[bb3,eb4] ~@3 [bb3,eb4,g4] ~ [bb3,d4,f4] ~ [bb3,eb4] ~@3 [bb3,d4,f4] ~@3, g4 ~@3 g4 ~@3", I: "[bb3,eb4,g4] ~@15",
  J: "[f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,a3,c4] ~ [f3,bb3,d4] ~@7", // Bb F Bb
  K: "[f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,a3,c4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ f3 [a3,c4]", // Bb F Bb Am
  L: "~ [f3,bb3,d4] ~@3 [f3,bb3,d4] ~ [f3,a3,c4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb F Bb
  M: "[f3,a3] c4 ~ [f3,bb3,d4] ~@4 [f3,a3,c4] ~@5 [f3,bb3,d4] ~", // F Bb F Bb
})).s("gm_pizzicato_strings").gain(0.41).pan(0.4)

// other · flute
const flute = note("<~@17 A B ~@36 A B ~@8 C D E ~@5>".pickRestart({
  A: "~@8 f6 d6 c6 bb5 a5 g5 f5 eb5", B: "d6 ~@15", C: "~@2 bb5 ~ e6 f6 bb6 ~@3 bb4 ~ [e5,f5] ~ bb5 ~",
  D: "ab5@3 bb5 ab5 [ab5,bb5] bb5 [ab5,bb5] ab5 [ab5,bb5] bb5 [ab5,bb5] ab5 [ab5,bb5] bb5 [ab5,bb5]", // Absus2
  E: "~@2 g5 ~ ab5 ~ bb5 ~ ab5@2 g5 ~ f5 ~@3",
})).s("gm_flute").gain(0.35).pan(0.7)

// drums · kick
const kick = s("bd").struct("<A B A B C@8 D@6 B C@8 D@14 C@9 D@6 B E D@2 E D@2 E D@4 A F G ~@2>".pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~ x!3 ~ x ~", C: "x ~@2 x ~@3 x", D: "x", E: "x!3 ~", F: "~ x ~@3 x ~ x ~@2 x ~@3 x ~",
  G: "x ~@2 x ~@4 x ~@5 x ~",
})).gain(0.4)

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

// drums · hihat
const hihat = s("hh").struct("<A B A B C@8 ~ D@5 B C@8 ~ D@13 C@9 ~ D@5 B E D@2 E D@2 E D@4 A F G ~@2>".pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~ x!3 ~ x ~", C: "x ~ x ~ x ~ x!2", D: "x!8", E: "x!3 ~", F: "~ x ~@3 x ~ x ~@2 x ~@3 x ~",
  G: "x ~@2 x ~@4 x ~@7",
})).gain(0.33)

// drums · open hat
const open_hat = s("oh").struct("<~@12 A ~@14 A ~@22 A ~@19 B C D>".pickRestart({
  A: "x", B: "~@7 x", C: "x!2 ~ x ~ x!2 ~ x!2 ~ x ~ x!2 ~", D: "x!2 ~ x ~ x!2 ~@9",
})).gain(0.27)

// drums · crash
const crash = s("cr").struct("<~@70 [~@7 x] ~@2>").gain(0.33)

// drums · ride
const ride = s("rd").struct("<~@70 [~@15 x] [x!11 ~ x!4] [x!8 ~@8]>").gain(0.2)

stack(
  piano, acoustic_guitar_steel, bass, string_ensemble_1, string_ensemble_1_soft, trombone, pizzicato_strings, flute,
  kick, snare, hihat, open_hat, crash, ride
)

More by Mina