Strudelify
Donna con te cover art

I Grandi Successi

Donna con te

Anna Oxa

KeyD minorTempo108 bpm
0:00/0:00
// Donna con te — Anna Oxa
// 108 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(108/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 · pad warm · "Warm pad"
const pad_warm = note(`<
  ~@2 A@2 B C@8 D@4 E@4 F@2 G@7 H@8 I@2 J@8 K@2 L@5 M@4 N@8 O@8 P@4 Q R@2 S@6 T@6 U@8 V W X Y
>`.pickRestart({
  A: "[a3@2 bb3 [g3,e4], f4@3 ~]/2", B: "[a3,f4]",
  C: "[bb3@8 [g3,e4]@6 ~@2 f3@14 ~@2 bb3@6 ~@2 [g3,c4]@6 [f3,a3]@16 [bb3,f4]@7 ~ [c4,e4]@8 a3@16 bb3@7 ~ [g3,e4]@8 a3@8 [bb3,d4]@10, ~@14 d4@24 ~@8 d4@24 ~@8 [d4,f4]@23 ~ c4@16 ~@10, ~@14 a3@15 ~ f4@8 e4@7 ~ e4 ~@63 f4@17 ~]/8", // C C5 F Bb5 C Bb Dm
  D: "[~@6 [db4,e4]@7 ~@19 bb3@8 [g3,c4,e4]@6 [f3,a3,d4]@18, g4@14 [d4,f4]@25 ~@25, ~@6 a3@24 ~@10 a3 ~@23]/4", // Dbm C Dm
  E: "[[bb3,f4]@6 [g3,c4,e4]@8 a3@15 ~ bb3@7 ~ [g3,e4]@8 a3@7 ~ [bb3,d4]@10, ~@14 [d4,f4]@23 ~ c4@15 ~@11, ~@46 f4@17 ~]/4", // Bb5 C Bb Dm
  F: "[~@6 [db4,e4]@7 ~ [f3,d4]@16 [bb3,f4]@2, g4@14 ~@16 d4 ~, ~@6 a3@23 ~@3]/2", // Dbm Dm Bb5
  G: "[~@7 g3@7 g4@9 ~@8 bb3@7 [db4,e4]@8 ~@9 [g3,bb3], ~@7 [c4,e4]@16 [d4,f4]@15 ~@9 [d4,f4]@9, ~@14 a3@16 ~@8 a3@17 ~]/7", // Dbm Gm C Dm
  H: "[~@8 [c4,e4]@6 ~@16 bb3@7 ~ [g3,c4,e4]@8 a3@17 ~ bb3@6 [g3,c4,e4]@8 a3@17 ~ bb3@6 [g3,e4]@8 a3@7 ~ [bb3,d4]@10, ~@14 d4@23 ~@9 [d4,f4]@24 ~@8 [d4,f4]@24 c4@16 ~@10, ~@7 a3@8 ~@49, ~@16 f4@23 ~@71 f4@17 ~]/8", // C Bb Dm
  I: "[g4@6 [db4,e4]@7 ~ f4@10 [f3,bb3]@4 [g3,c4,e4]@4, ~@6 a3@17 ~@9, ~@7 d4@7 ~@2]/2", // Dbm Bb5 C
  J: "[[a3,f4]@14 g3@7 ~ db4@8 f4@15 ~@11 db4@7 ~ f4@14 g3@7 ~ db4@7 ~ f4@14 ~@12 db4@8, c4@11 a3@28 ~@4 a3@21, ~@14 e4@16 d4@25 ~@9 c4@23 ~@7 d4@25 ~@9, ~@46 e4@18 ~@14 e4@15 ~@15 e4@18 ~@2]/8", // Dm
  K: "[~@14 bb3@8 ~@2 c4@7 ~, [d4,f4]@3 ~, ~@11 [g3,e4]@4 ~]/2", // Dm C
  L: "[a3@14 bb3@7 ~ [g3,c4,e4]@8 a3@15 ~ bb3@7 ~ [g3,c4,e4]@8 [a3,d4,f4]@18, [d4,f4]@23 ~@7 [d4,f4]@23 ~@27]/5", // C Dm
  M: "[bb3@6 [g3,e4]@8 a3@7 ~@9 g4@6 ~@2 [db4,e4]@7 ~ [d4,f4]@12 [c4,e4]@2 g3@3 ~, ~@6 c4@16 [bb3,d4]@16 a3@21 ~@5, ~@14 f4@17 ~@33]/4", // C Dbm Dm C Bb
  N: "[a3@13 ~ bb3@9 ~@9 a3@14 bb3@8 [c4,e4]@8 [f3,bb3,d4]@8 ~@2 g3@6 ~@16 [g3,bb3]@8 ~@2 a3@6 f4@8 ~@2 [f3,bb3,d4]@4 [g3,c4,e4]@3 ~, [d4,f4]@23 ~ [c4,e4]@8 d4@23 ~@17 [c4,e4]@14 f4@16 e4@8 a3 ~@17, ~@7 g3@8 f4@12 ~@16 d4@16 ~@5, ~@46 g3@16 ~@16 a3@15 ~@11 g3@8 ~@16]/8", // C Bb Gm Bb C Dm C
  O: "[[a3,f4]@14 g3@7 ~@3 db4@6 f4@15 ~@11 db4@4 g3@3 ~ [a3,f4]@14 g3@7 ~ db4@7 ~ f4@14 ~@12 db4@7 ~, c4@23 ~ a3@36 ~@26 a3@42, ~@14 e4@15 ~ d4@25 ~@5 c4@27 ~@7 d4@25 ~@9, ~@23 e4@9 ~@7 e4@8 ~@7 e4@9 ~]/8", // Dm
  P: "[~@14 bb3@8 ~@24 bb3@8 ~@2 [g3,c4,e4]@7 ~, [d4,f4]@3 [g3,c4] d4@3 ~, ~@11 e4@4 f4@12 ~@5, ~@2 a3 ~]/4", // C Dm C5
  Q: "[a3,d4,f4]@7 [g3,bb3], ~@14 [d4,f4] ~", R: "[~@4 c4@3 a3@7 [ab3,b3]@2, ~@6 [g3,e4]@7 ~ [d4,f4]@18]/2",
  S: "[~@6 db4@8 d4@15 ~ [bb3,d4,f4]@8 [c4,e4]@7 ~ a3@14 [ab3,b3]@8 ~@2 db4@8 [f3,d4]@16 [g3,bb3]@2, ~@6 a3@23 ~ g3@15 ~ d4@22 a3@25 ~@3, ~@6 f4 ~@39 f4@48 [d4,f4] ~]/6", // Bb C Abm Dm Gm Dm
  T: "[~@7 g3@8 g4@8 f4@7 [g3,bb3,f4]@8 [db4,f4]@8 ~ f3, ~@7 [c4,e4]@16 d4@15 ~@8 [d4,f4]@2, ~@30 a3@31 ~@15 a3@20]/6", // Gm7 Db C Dm
  U: "[~@14 [g3,d4]@14 ~@2 g3@16 ~@16 [d4,f4]@13 ~@3 [g3,f4]@14 [a3,db4]@16 ~@2 [d4,f4]@16 [g3,bb3]@2, ~@6 [bb3,f4]@8 c4@17 ~@7 [bb3,d4]@8 ~@18, ~@30 e4@33 ~@29 f4 ~@33 [d4,f4] ~, ~@46 a3@31 ~@31 a3@17 ~@3, ~@23 g4@9 ~@32]/8", // G5 Dm G7 A Dm Gm Bb5 Bb …
  V: "~ [c4,e4]", W: "[a3,d4,f4]", X: "[bb3,d4,f4] [c4,e4], g3@15 ~", Y: "f3 ~",
})).s("gm_pad_warm").gain(0.24).pan(0)

// bass · electric bass finger · "FINGERED"
const bass = note(`<
  ~@2 A B C D E F G D G H I J K B L M G N I O K P Q R S T U V W E M X M G Y Z AA AB AC AD AE AF AG AD AH AI AJ AK AL AM
  E AN G H I O AO X AP AJ AQ AR AS O AT AC AD AH AU AC AD AE AF AJ AK AJ F AV AW AX AY AJ AK AZ BA BB BC BD BE BF BG BH
  BF BC BI BJ BF BC BK BL BM V W BN
>`.pickRestart({
  A: "d2@4 ~@4 d2@3 ~ a1@3 ~", B: "g1@3 ~ c2@3 ~", C: "d2@6 ~@2 d2@3 ~ a1@2 ~@2", D: "g1@5 ~@3 c2@5 ~@3",
  E: "d2@2 ~@2 d2 ~ a1 ~", F: "g1 ~ c2 ~", G: "d2@5 ~@3 d2@2 ~@2 a1@2 ~@2", H: "bb1@5 ~@3 c2@7 ~", I: "f1@8 bb1@7 ~",
  J: "g1@7 ~ a1@7 ~", K: "d2@7 ~ d2@3 ~ a1@2 ~@2", L: "d2@3 ~ d2 ~ a1 ~", M: "g1@4 ~@4 c2@5 ~@3", N: "bb1@3 ~ c2@4",
  O: "g1@7 ~ a1@8", P: "g1@5 ~ d1 ~ g1@4 bb1@3 ~", Q: "c2@6 ~@2 c2@3 ~ bb1@3 ~", R: "a1@7 ~ a1@3 ~ c2@3 ~",
  S: "d2@6 a1 ~ d2@3 ~ a1@3 ~", T: "g1@7 ~ g1@4 bb1@3 ~", U: "a1@7 ~ a1@3 ~ a1@2 ~@2", V: "d2@5 ~ a1 ~ d2@3 ~ a1@3 ~",
  W: "g1@5 ~ g1 ~ c2@6 ~@2", X: "d2@4 ~@4 d2@3 ~ a1@2 ~@2", Y: "bb1@4 ~@4 c2@5 ~@3", Z: "f1@5 ~@3 bb1@5 ~@3",
  AA: "g1@6 ~@2 a1@5 ~@3", AB: "d2@6 ~@2 bb1@3 ~ c2@3 ~", AC: "f2@15 ~", AD: "e2@15 ~", AE: "d2", AF: "a1", AG: "f2",
  AH: "d2@15 ~", AI: "a1@15 ~", AJ: "d2@5 ~@3 d2@3 ~ a1@2 ~@2", AK: "g1@5 ~@3 c2@6 ~@2", AL: "d2@3 ~@5 d2@3 ~ a1@2 ~@2",
  AM: "g1@4 ~@4 c2@3 ~@5", AN: "g1@3 ~@5 c2@3 ~@5", AO: "d2@7 ~ d2@4 c2@3 ~", AP: "g1@6 ~@2 c2@5 ~@3",
  AQ: "g1@7 ~ c2@6 ~@2", AR: "bb1@7 ~ c2@7 ~", AS: "a1@7 ~ d2@7 ~", AT: "d2@7 ~ bb1@3 ~ c2@3 ~",
  AU: "a1@5 ~ a1 ~ a1@7 ~", AV: "d2@2 ~@6 d2@4 a1@3 ~", AW: "g1@8 c2@7 ~", AX: "d2@6 ~@2 d2@3 ~ a1@3 ~",
  AY: "ab1@3 ~ a1@3 ~", AZ: "bb1@5 ~@3 bb1@3 ~ a1@3 ~", BA: "ab1@6 ~@2 a1@5 ~@3", BB: "d2@5 ~@3 d2@4 a1@2 ~@2",
  BC: "g1@4 ~@2 g1 ~ g1@3 ~ g1@3 ~", BD: "c2@4 ~@2 c2 ~ c2@3 ~ bb1@3 ~", BE: "a1@4 ~@2 a1 ~ a1@3 ~ a1@3 ~",
  BF: "d2@5 ~ d2 ~ d2@3 ~ a1@3 ~", BG: "g1@5 ~ g1 ~ g1@3 ~ g1@3 ~", BH: "a1@4 ~@2 a1 ~ a1@6 ~@2",
  BI: "c2@4 ~@2 c2 ~ c2@4 bb1@4", BJ: "a1@5 ~ a1 ~ a1@3 ~ a1@3 ~", BK: "a1@4 ~@2 a1 ~ a1@7 ~",
  BL: "d2@5 ~ a1 ~ d2@3 ~ a1@2 ~@2", BM: "g1@5 ~ g1 ~ a1@3 ~ a1@2 ~@2", BN: "d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.54)

// other · french horn · "Horn"
const french_horn = note("<~@59 A@2 B@2 C@2 ~ D ~@39>".pickRestart({
  A: "[~@4 d4 ~ f4 ~ e4@2 f4 e4 ~ c4 ~ d4@15 ~@2]/2", B: "[~@4 d4 ~ f4 ~ e4@2 f4 e4 ~ c4 ~ a3@15 ~@2]/2",
  C: "[~@4 d4 ~ f4 ~ g4@2 f4 g4 ~ f4 ~ a4@9 c5 ~ a4 g4 ~ a4 ~ f4]/2", D: "d4@13 ~@3",
})).s("gm_french_horn").gain(0.8).pan(0.7)

// other · muted trumpet · "MT TRUMPE"
const muted_trumpet = note("<~@60 A@2 B@3 ~@37 C@3 D>".pickRestart({
  A: "[~@4 d4 ~ f4 ~ e4@2 f4 e4 ~ c4 ~ a3@11 ~@6]/2", B: "[~@4 d4 ~ f4 ~ g4 ~ f4 g4 ~ f4 ~ a4@25 ~@8]/3",
  C: "[~@4 d4 ~ f4 ~ e4@2 f4 e4 ~ c4 ~ d4@20 ~@13]/3", D: "[f4,d5] ~@15",
})).s("gm_muted_trumpet").gain(0.54)

// other · blown bottle · "Bottle"
const blown_bottle = note("<~@3 A ~ B ~@10 C ~ D ~@12 E ~@3 F ~@43 G ~@26>".pickRestart({
  A: "~@6 c5 d5 f5!2 d5 ~ c5@2 d5 ~", B: "d5@15 ~", C: "~@6 c5 d5 f5!2 d5 ~@5", D: "~@6 c5 ~ d5 ~@2 d5 ~@4",
  E: "~@6 c5 d5 ~ f5 d5 ~@5", F: "~@6 d5 f5 d5 ~@7", G: "~@6 c5 d5 f5!2 d5 c5 f5!2 d5 c5",
})).s("gm_blown_bottle").gain(0.46)

// other · electric guitar muted · "MT GUITAR"
const electric_guitar_muted = note(`<
  ~@2 A B C B C B C B C B D E C B C B C B D F C G H I J K L M N C B C B C B D O P Q R S T U R V W V X V B V B V B D Y V
  ~@8 Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AL AN AL AO AL AP AQ G H I M K L M G H I M K L M AR M AS AT
>`.pickRestart({
  A: "~@2 d3!2 ~ d3 ~@2 d3!2 ~ d3 ~ d3 a3 d3", B: "~@8 c3 ~@2 c3 ~ g3 c3 ~",
  C: "~@2 d3!2 ~ d3 ~@2 d3 ~@2 d3 ~ d3 a3 d3", D: "f3 ~@2 f3 ~ c3 f3 ~ bb2 ~@2 bb2 ~ f3 bb2 ~",
  E: "~@8 a3 ~@2 a3 ~ e3 a3 ~", F: "~@8 a3 e3 a3!2 ~ e3 a3 ~", G: "~@2 d3!2 bb3 d3!2 bb3 d3 ~@2 d3 ~ d3 c3 ~",
  H: "~@2 c3!2 g3 c3!2 g3 c3 ~@2 c3 ~ bb2 c3 ~", I: "~@2 c3!2 g3 c3!2 g3 c3 ~@2 c3 ~ c3 d3 ~",
  J: "~@2 d3!2 a3 d3!2 a3 d3 ~@2 d3 ~ d3!2 ~", K: "~@2 d3!2 bb3 d3!2 bb3 d3 ~@2 d3 ~ d3 e3 ~",
  L: "~@2 e3!2 a3 e3!2 a3 e3 ~@2 e3 ~ e3 d3 ~", M: "~@2 d3!2 a3 d3!2 a3 d3 ~@2 d3 ~ c3 d3 ~",
  N: "~@2 d3!2 bb3 d3!2 bb3 e3 ~@2 e3 ~ a3 ~@2", O: "g3 ~@2 g3 ~ d3 g3 ~ a3 ~@2 a3 ~ e3 a3 ~",
  P: "~@2 d3!2 ~ d3 ~ d3 ~ d3 ~ d3 ~ e3!2 ~", Q: "~@2 f3!2 c4 f3!2 c4 f3 ~@2 f3 ~ f3!2 ~",
  R: "~@2 c3!2 ~ g3 c3 ~@3 a3!3 e3 a3 ~", S: "~@6 d3!2 a3 d3!2 a3 d3!2 a3 ~",
  T: "~@2 a3!2 ~ e3 ~ e3 ~ a3 ~ a3 ~ e3 a3 ~", U: "~@2 f3!2 ~ f3 ~@2 f3 ~@2 f3 ~ f3!2 ~",
  V: "~@2 d3!2 a3 d3!2 a3 d3 ~@2 d3 ~ a3 d3 ~", W: "~@2 a3!2 ~ a3 ~ a3 ~ e3!2 a3 ~ a3 ~@2",
  X: "~@8 c3 ~ c3 g3 ~ c3 g3 ~", Y: "d3 ~@2 d3 ~ g3 d3 ~@4 a3 ~ [d3,e3] a3 ~", Z: "~@2 f3!2 ~ f3 ~ f3 ~@3 f3 c4 f3!2 ~",
  AA: "~@2 c3!2 g3 c3 ~@5 a3 ~ a3 e3 ~", AB: "d3 ~@2 d3 [d3,a3] ~ d3 ~@4 d3 ~ d3 a3 d3",
  AC: "~@3 a3 ~ a3 ~ e3 ~ e3 ~ e3 a3 e3!2 a3", AD: "f3 ~@2 f3 ~ f3 ~ f3 ~ f3 ~@3 f3!2 ~",
  AE: "~@2 c3!2 g3 c3 ~@4 e3 a3 ~ e3!2 ~", AF: "d3 ~ d3 a3 d3!2 a3 d3 ~@5 d3 a3 d3",
  AG: "~@2 a3!2 ~ a3 ~ e3 ~ e3 a3 e3 a3 e3 ~@2", AH: "~@2 d3!2 ~ d3 ~ d3 ~ d3 ~ d3 a3 d3 a3 d3",
  AI: "~@10 c3!2 ~ c3 g3 c3", AJ: "~@2 d3!2 ~ d3 ~ d3 ~ d3 a3 ~ d3 a3 d3 ~", AK: "~@2 c3!2 ~@7 c3 ~ c3 g3 c3",
  AL: "~@2 d3!2 a3 d3!2 a3 d3 ~@2 d3 ~ [d3,a3]!2 d3", AM: "~@8 c3 ~@2 [c3,d3] ~ [d3,g3] [c3,a3] ~",
  AN: "~@8 e3 ~@2 [d3,e3] ~ a3 [d3,e3] ~", AO: "~@8 c3 ~@2 [c3,d3] ~ [d3,g3] [c3,a3] d3", AP: "~@8 e3 ~@2 e3 ~ a3 e3 ~",
  AQ: "~@2 d3!2 a3 d3!2 a3 d3 ~ d3!2 ~ [d3,a3]!2 d3", AR: "~@2 d3!2 bb3 d3!2 bb3 a3 ~@2 a3 ~ e3 d3 ~",
  AS: "~@2 d3!2 bb3 d3!2 bb3 a3 ~@2 a3 ~ f3 d3 ~", AT: "d3 ~@15",
})).s("gm_electric_guitar_muted").gain(0.58).pan(0)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
  ~@2 A@2 B@2 ~@16 C@8 D ~@8 E F@8 G@2 ~@8 H I@8 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@5 R S@5 T@7 U@3 V@3 W
>`.pickRestart({
  A: "[[f3,a3]@15 ~ bb3@8 [c4,e4]@8, d4@23 ~@9, ~@16 g3@15 ~]/2", // F C
  B: "[[f3,a3]@15 ~ bb3@8 [c4,e4]@7 ~, d4@23 ~@9, ~@16 g3@15 ~]/2", // F C
  C: "[~@14 [bb3,d4,f4]@16 ~@16 g4@16 d4@15 ~ bb3@16 ~@9 db4@8 [d4,g4]@17, ~@14 g3@32 a3@31 ~ g3@32 ~@18, ~@15 [c4,e4]@16 f4@16 a3@17, ~@78 d4@25 ~@25, ~@47 e4@9 ~@8]/8", // Bb G5 C
  D: "[g3,bb3]@8 [c4,e4]@7 ~", E: "~@8 [f3,bb3,d4]@3 ~ [g3,c4,e4]@3 ~",
  F: "[[a3,f4]@16 ~@8 db4@8 f3@13 ~@11 db4@7 ~ f4@15 ~@9 db4@8 f3@12 ~ a3 ~@10 db4@7 ~, c4@23 a3@22 [g3,e4]@18 ~ c4@23 ~ a3@21 ~ [g3,e4]@17 ~, ~@16 [g3,e4]@15 ~ d4@23 ~ a3@24 [g3,e4]@15 ~ d4@23 ~@9]/8", // Dm C
  G: "[[f3,a3]@2 bb3 [c4,e4], d4@23 ~@9, ~ g3]/2", H: "~@15 d4",
  I: "[[f3,a3]@14 ~ [bb3,f4]@9 [c4,e4]@7 a3@16 bb3@8 ~ [c4,e4]@7 [bb3,d4,f4,a4]@9 g3@6 g4@9 ~@7 bb3@9 ~ db4@7 d4@8 ~ [f3,bb3,d4]@4 [g3,c4,e4]@3 ~, ~@14 g3@16 ~ [d4,f4]@25 ~@16 [c4,e4]@16 f4@32 ~@8, ~@47 g3@16 ~@15 a3@15 ~ g3@20 ~@14, ~@88 d4@16 a3@15 ~@5 a3 ~@3]/8", // F Bb5 C Bbmaj7 Bb C Dm C
  J: "[[a3,f4]@2 ~ db4, c4@23 a3@8 ~, ~@16 [g3,e4]@15 ~]/2", K: "[[a3,d4,f4]@13 [a3,d4] ~@10 db4@7 ~, ~@7 e4@9]/2",
  L: "[f4@2 [g3,e4] [g3,a3,db4,e4], c4@3 ~, e4 ~@31]/2", // C A7
  M: "[[f3,a3]@13 g3@10 ~ db4@7 ~, d4@23 ~@9, ~@13 e4@18 ~, ~@13 a3 ~@18]/2", // F
  N: "[~@2 bb3 [c4,e4], [d4,f4]@23 ~@9, ~@16 g3@15 ~]/2", O: "[a3@2 [g3,bb3] [g3,c4,e4], [f3,d4]@23 ~@9]/2",
  P: "[a3@15 ~ bb3@8 [c4,e4]@8, [d4,f4]@3 ~, ~@16 g3@15 ~]/2", // C Dm
  Q: "[a3@14 ~@2 ab3@7 ~ db4@8 f3@13 ~ [bb3,f4]@8 [c4,e4]@8 [bb3,d4,f4,a4]@18, f4@31 ~@14 g3@16 ~@19, d4@23 ~@9 d4@22 ~@26, ~@15 b3@8 ~ a3@22 ~@34]/5", // Bb5 C Bbmaj7
  R: "[ab3,b3]@7 ~ [a3,db4,f4]@8", // Abm Aaug
  S: "[[f3,d4]@13 ~ [g3,bb3,d4,f4]@16 g3@16 g4@16 [d4,f4]@15 [g3,bb3]@3, ~@30 [c4,e4]@32 ~@15 d4 ~@2, ~@46 a3@31 ~@3]/5", // Dm Gm7 Dm Gm C
  T: "[~@23 db4@6 ~ [d4,f4]@15 [g3,bb3,d4,f4]@16 ~ g3@15 ~ g4@16 [a3,d4,f4]@15 [g3,bb3]@3, ~@14 a3@31 ~@17 [c4,e4]@31 ~@16 d4 ~@2, ~@14 e4@16 ~@47 a3@16 ~@19]/7", // Dm Gm7 Dm Gm C
  U: "[~@24 db4@7 [d4,f4]@16 ~, ~@13 e4@17 ~@18, ~@7 a3@17]/3", // Dm
  V: "[[g3,bb3,d4,f4]@8 [g3,c4,e4]@6 ~ [f3,a3]@16 ~ [bb3,f4]@7 ~ [c4,e4]@8, ~@5 d4@8 ~@3, ~@32 g3@15 ~]/3", // Gm7 C F Bb5 C
  W: "[f3,a3,d4] ~@15", // Dm
})).s("gm_string_ensemble_2").gain(0.15).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  A B C A D E D A B A C A E A C A B A B E A B C B A B A B A B C A B A B E A E A C E A@2 B A@2 B@2 A C A B A B A B A@2 C
  A D A D A B A C A@3 C A B A C A B A B E A B A C A B A C A B A B A B E A@3 B A@2 C A D A F
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~ x ~", D: "x ~ x!2", E: "x ~@3 x ~@2 x", F: "x",
})).gain(0.54)

// drums · rim
const rim = s("rim").struct("<~ [~@7 x] [~ x ~ x]!56 [~ x ~@2] ~@47>").gain(0.54)

// drums · snare
const snare = s("sd").struct("<~@58 A B@10 C B@3 C B@30 D ~>".pickRestart({
  A: "~@11 x!2 ~ x ~", B: "~ x ~ x", C: "~ x ~@2 x ~@7 x ~@3", D: "~@4 x ~@6 x!2 ~ x ~",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct("<~@22 [~@15 x] ~@16 [~@15 x] ~@26 [~@14 x!2] ~@38 x>").gain(0.54)

// drums · hihat
const hihat = s("hh").struct("<A B C@38 D@3 E D@4 C@10 F C@46 G>".pickRestart({
  A: "~@3 x!2 ~@5 x!3 ~@3", B: "~@2 x!3 ~@5 x!3 ~@3", C: "~@3 x!2 ~@6 x!2 ~@3", D: "~@3 x!2 ~@4 x ~ x!2 ~@3",
  E: "~@3 x!2 ~@4 x ~ x!2 ~ x ~", F: "~@3 x!2 ~@6 x!2 ~ x ~", G: "x",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A ~@7 B ~@8 C ~@18 D ~@7 E ~@7 F ~@12 G ~@6 B ~@9 A ~>".pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~@13 x!2 ~", D: "~@15 x", E: "~@13 x ~@2", F: "~@12 x ~ x!2", G: "~@10 x ~ x!4",
})).gain(0.54)

// drums · high tom
const high_tom = s("ht").struct("<~@22 A ~@7 B ~@8 C ~@18 D ~@7 C ~@7 E ~@12 F ~@6 G ~@9 H ~>".pickRestart({
  A: "~@6 x ~ x ~@2 x ~ x ~@2", B: "~@11 x!3 ~@2", C: "~@9 x!2 ~ x ~@3", D: "~@9 x!2 ~ x ~ x ~", E: "~@9 x!2 ~@5",
  F: "~ x!2 ~ x ~ x!2 ~ x ~@6", G: "~@12 x!2 ~@2", H: "~@2 x ~@2 x ~@2 x ~@2 x!3 ~@2",
})).gain(0.54)

// drums · tambourine
const tambourine = s("tb").struct("<~ A B@56 C B@10 D B@3 D B@30 C ~>".pickRestart({
  A: "~@7 x", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~ x ~", D: "~ x ~@2 x ~@7 x ~@3",
})).gain(0.54)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@2 A@4 B C B C B C B C B C ~ C B C B C B C B C B C B C B C B@2 C B C B C B C B C B C B C B@2 C B C B C B C B C B C
  B@2 C B C B C B C B C B C B C B C B C B C B C B C B C ~ B C B C B C ~ B C B C B@4 C B ~
>`.pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "~@5 x ~ x",
})).gain(0.95)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@2 A@4 B C B C B C B C B C ~ C B C B C B C B C B C B D B C B@2 C B C B C B C B C B C B C B@2 C B C B C B C B C B C
  B@2 C B C B C B C B C B C B C B C B C B C B C B C B C ~ B C B C B C ~ B C B C B@4 C B ~
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@11 x ~@4", C: "~@11 x ~ x ~@2", D: "~@11 x!3 ~@2",
})).gain(0.95)

// drums · congas
const congas = s("conga:13").struct("<~@6 A@10 ~ A@70 ~ A@6 ~ A@10 ~>".pickRestart({
  A: "~@3 x",
})).gain(1.15)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@2 A B A B C ~ C ~ C ~ C ~ C ~ C ~ C ~ D ~ C@10 ~ C ~ C ~@2 C@2 ~ D ~ D ~@2 E D@2 ~ C ~ C ~ C ~@2 C ~@12 D ~@3 D ~@2
  C ~ C ~ C ~@3 C ~@2 C ~ E ~ C ~@2 C ~@2 E ~@2 C ~ C ~@2
>`.pickRestart({
  A: "~@3 x!2 ~@2 x", B: "~@7 x", C: "~@3 x!2 ~@3", D: "~@5 x!2 ~", E: "~ x!2 ~@5",
})).gain(1.15)

// … 34 more lines

More by Anna Oxa