Strudelify

Tristezza

Ornella Vanoni

KeyB majorTempo187 bpm
0:00/0:00
// Tristezza — Ornella Vanoni
// 187 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(187/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 · electric bass finger
const bass = note(`<
  ~@4 A B C A D C D E F G F H I J@2 K A L M N O P Q R A S T U F V W@2 A X Y O Z AA A AB AC AD F AE W@2 A AF AG AH AI AJ
  AI AK AL AM AL AN Y AO@2 AP AH AQ AR AS AT AU AV AW AH AX AY AZ AL BA BB@2 BC BD BE@2 BF BG AH BH BI BJ BK BL BM@2 BN
  BO AT BE BP BQ AH BR AA BS AL BT BB@2 BU BV AT BE BP BQ AH BR AA BS AL BT BB@2 BW@3 ~
>`.pickRestart({
  A: "d#1@4 ~@2 a#1 ~ a#1@4 ~@2 d#1 ~", B: "d#1@5 ~ a#1 ~ a#1@4 ~@2 d#1 ~", C: "d#1@4 ~@2 a#1 ~ a#1@5 ~ d#1 ~",
  D: "d#1@4 ~@2 d#1 ~ d#1@4 ~@2 d#1 ~", E: "d#1@4 ~@2 a#1 ~ a#1@3 ~ d#1@2 e1 ~", F: "f1@4 ~@2 c2 ~ c2@4 ~@2 f1 ~",
  G: "f1@4 ~@2 c1 ~ c1@4 ~@2 f1 ~", H: "f1@4 ~@2 c2 ~ c2@3 ~ f1 ~ f#1 ~", I: "g1@4 ~@2 d1 ~ d1@4 ~@2 g1 ~",
  J: "[g1@4 ~@2 d1@2 g1@2 f#1@2 ~@2 f1@6 ~@2 c2 ~ c2@4 ~@2 b1 ~]/2", K: "a#1@5 ~ f1 ~ f1@4 ~@2 a#1 ~",
  L: "d#1@4 ~@2 a#1 ~ a#1@4 ~@2 d#1@2", M: "a#1@5 ~ f1 ~ f1@4 ~@2 e1 ~", N: "d#1@4 ~@2 a#1 ~ a#1@5 ~ a1 ~",
  O: "g#1@5 ~ d#1 ~ d#1@4 ~@2 g#1 ~", P: "g#1@4 ~@2 d#1 ~ d#1@5 ~ g#1 ~", Q: "g#1@4 ~@2 d#2 ~ d#2@5 ~ d2@2",
  R: "c#2@4 ~@2 g#1@2 c#1@6 g#1 ~", S: "d#1@4 ~@2 a#1 ~ a#1@2 ~@2 d#1 ~ e1 ~", T: "c2@5 ~ g1 ~ g1@4 ~@2 c2 ~",
  U: "c2@5 ~ g1 ~ c1@4 ~@2 g1 ~", V: "f1@4 ~@2 c2 ~ c2@2 f1@2 c2 ~ b1 ~", W: "[a#1@15 ~]/2", X: "d#1@5 ~@11",
  Y: "g#1@4 ~@2 d#1 ~ d#1@4 ~@2 g#1 ~", Z: "g#1@4 ~@2 d#2 ~ d#2@4 ~@2 d2 ~", AA: "c#2@4 ~@2 g#1 ~ g#1@4 ~@2 c#1 ~",
  AB: "d#1@4 ~@2 a#1 ~ a#1@3 ~ d2@2 c#2 ~", AC: "c2@5 ~ g1 ~ g1@4 ~@2 c1 ~", AD: "c1@4 ~@2 g1@2 c2@3 ~ g1 ~ f#1 ~",
  AE: "f1@4 ~@2 c2 ~ c2@3 ~ f1 ~ c2@2", AF: "d#1@5 ~ a#1 ~ a#1@4 ~@2 d#2 ~", AG: "e2@4 ~@2 b1 ~ b1@5 ~ e1 ~",
  AH: "e1@4 ~@2 b1 ~ b1@4 ~@2 e1 ~", AI: "e1@4 ~@2 e1 ~ e1@4 ~@2 e1 ~", AJ: "e1@4 ~@2 b1 ~ b1@5 ~ e1 ~",
  AK: "e1@4 ~@2 b1 ~ b1@3 ~ e1@2 f1 ~", AL: "f#1@4 ~@2 c#2 ~ c#2@4 ~@2 f#1 ~", AM: "f#1@4 ~@2 c#1 ~ c#1@4 ~@2 f#1 ~",
  AN: "f#1@4 ~@2 c#2 ~ c#2@3 ~ f#1 ~ g1 ~", AO: "[g#1@4 ~@2 d#1@2 g#1@2 g1@2 ~@2 f#1@6 ~@2 c#2 ~ c#2@4 ~@2 c2 ~]/2",
  AP: "b1@5 ~ f#1 ~ f#1@4 ~@2 b0 ~", AQ: "e1@4 ~@2 b1 ~ b1@4 ~@2 e1@2", AR: "b1@5 ~ f#1 ~ f#1@4 ~@2 f1 ~",
  AS: "e1@4 ~@2 b1 ~ b1@5 ~ a#1 ~", AT: "a1@5 ~ e1 ~ e1@4 ~@2 a1 ~", AU: "a1@4 ~@2 e1 ~ e1@5 ~ a1 ~",
  AV: "a1@4 ~@2 e2 ~ e2@5 ~ d#2@2", AW: "d2@4 ~@2 a1@2 d1@6 a1 ~", AX: "e1@4 ~@2 b1 ~ b1@2 ~@2 e1 ~ f1 ~",
  AY: "c#2@5 ~ g#1 ~ g#1@4 ~@2 c#2 ~", AZ: "c#2@5 ~ g#1 ~ c#1@4 ~@2 g#1 ~",
  BA: "f#1@4 ~@2 c#2 ~ c#2@2 f#1@2 c#2 ~ c2 ~", BB: "[b1@15 ~]/2", BC: "e1@5 ~ e1 ~ e1@4 ~@2 e1 ~", BD: "e1@5 ~@11",
  BE: "a1@4 ~@2 e1 ~ e1@4 ~@2 a1 ~", BF: "a1@4 ~@2 e2 ~ e2@6 d#2 ~", BG: "d2@4 ~@2 a1 ~ a1@4 ~@2 d1 ~",
  BH: "e1@5 ~ b1 ~ b1@2 ~@2 b1@2 c2 ~", BI: "c#2@5 ~ g#1 ~ g#1@4 ~@2 c#1 ~", BJ: "c#1@4 ~@2 g#1 ~ g#1@3 ~ c#2@2 ~@2",
  BK: "f#1@4 ~@2 c#2 ~ c#2@3 ~@3 f#1 ~", BL: "f#1@4 ~@2 c#2 ~ c#2 ~ f#1@2 c#2@2 c2 ~", BM: "[b1@28 ~@2 d#1 ~]/2",
  BN: "e1@5 ~ b1 ~ b1@4 ~@2 e1 ~", BO: "e1@4 ~@2 b1 ~ b1@3 ~ e1@2 ~@2", BP: "a1@4 ~@2 e2 ~ e2@4 ~@2 d2 ~",
  BQ: "d2@5 ~ a1@2 d1@2 ~@2 a1@2 d#1 ~", BR: "e1@4 ~@2 b1 ~ b1@2 ~@2 b1@2 c2@2", BS: "c#1@4 ~@2 g#1 ~ g#1@3 ~ c#2 ~@3",
  BT: "f#1@4 ~@2 c#1 ~ c#1@3 ~ f#1 ~ a#1 ~", BU: "e1@5 ~ b1 ~ b1@5 ~ e1 ~", BV: "e1@3 ~",
  BW: "[e1@5 ~ b1 ~ b1@5 ~ e1@33 ~]/3",
})).s("gm_electric_bass_finger").gain(0.36)

// other · shamisen
const shamisen = note("<~@4 A B A C D ~ E@2 F ~ G@2 ~@112>".pickRestart({
  A: "d#3 ~@3 d#3 ~@3 a#2 ~@3 a#2 ~ a#2 ~", B: "d#3 ~ d#3 ~@3 a#2 ~@9", C: "d#3 ~ d#3 ~@3 a#2@2 ~@8", D: "d#3@3 ~@13",
  E: "[d#3@27 ~@5]/2", F: "f3@7 ~", G: "[f3@11 ~@5]/2",
})).s("gm_shamisen").gain(0.48).pan(0.7)

// bass · trombone
const bass_2 = note(`<
  ~@8 A B C B D E F G H I@2 J K L ~@6 A M@2 ~@3 N@2 K O ~@4 A P ~@2 Q R N@2 S P T U T V T U W X W X Y Z@2 AA AB V ~@6 T
  AC ~@4 AD@2 AB AE ~@4 AF V ~@2 W AG AD@2 AH AI ~@4 AF V ~@2 W AG AD@2 AH AE ~@4 AF V ~@2 W AG AD@2 AJ ~@3
>`.pickRestart({
  A: "d#2 ~@3 a#1 ~@3", B: "d#2@2 ~@4 a#1@3 ~@7", C: "d#2@2 ~@6 a#1@3 ~@5", D: "f2@3 ~@5 c2@3 ~@5",
  E: "f2@2 ~@4 c2@3 ~@7", F: "f2@3 ~@5 c2@2 ~@6", G: "f2@3 ~@3 c2@3 ~@7", H: "g2@3 ~@5 d2@3 ~@5",
  I: "[g2 ~@3 g2 f#2 ~ f2@7 ~@2]/2", J: "a#1@3 ~", K: "d#2@3 ~@5 a#1@3 ~@5", L: "d#2@3 ~@3 a#1@3 ~@7",
  M: "[d#2 ~ d#2 ~ d2 c#2 ~ c2@7 ~@2]/2", N: "[a#1@15 ~]/2", O: "d#2 ~@3", P: "d#2 ~@2 a#1 ~@4", Q: "f2 ~@3 c2 ~@3",
  R: "f2 ~@2 c2 ~@4", S: "~ d#2@2 ~@5 a#1@2 ~@6", T: "e2 ~@3 b1 ~@3", U: "e2 ~@2 b1 ~@4", V: "e2@2 ~@4 b1@3 ~@7",
  W: "f#2 ~@3 c#2 ~@3", X: "f#2 ~@2 c#2 ~@4", Y: "g#2 ~@3 d#2 ~@3", Z: "[g#2@2 ~@6 g#2@2 g2@2 ~@2 f#2@15 ~@3]/2",
  AA: "b1@13 ~@3", AB: "e2@3 ~@5 b1@3 ~@5", AC: "e2 ~@3 e2@2 ~@2 d#2@2 d2@2 ~@4", AD: "[b1@29 ~@3]/2", AE: "e2@3 ~@13",
  AF: "e2 ~@7 b1@2 ~@6", AG: "f#2@2 ~@4 c#2@3 ~@7", AH: "e2@2 ~@6 b1@3 ~@5", AI: "e2@3 ~@3 b1@3 ~@7",
  AJ: "e2@2 ~@6 b1@3 ~@3 e2@2",
})).s("gm_trombone").gain(0.8).pan(0.3)

// chords · flute
const flute = note(`<
  ~@8 A B A B C D C D E F ~@2 A B ~@6 A G ~@6 A H ~@4 A B ~@2 I J ~@2 A B K L K L K L M N M N O P@2 ~ K L ~@6 K Q ~@6 K
  R ~@4 K L ~@2 M N ~@2 K R ~@4 K L ~@2 M N ~@2 K R ~@4 K L ~@2 M N ~@2 S ~@3
>`.pickRestart({
  A: "~@4 [a#5,d6,f6] ~@5 [a#5,d6,f6] ~@5", B: "[a#5,d6,f6] ~@5 [a#5,d6,f6] ~@9",
  C: "~@4 [c6,d#6,f6] ~@5 [c6,d#6,f6] ~@5", D: "[c6,d#6,f6] ~@5 [c6,d#6,f6] ~@9",
  E: "~@4 [d6,f6,g6] ~@5 [d6,f6,g6] ~@5", F: "[d6,f6,g6] ~@7 g6@2 f#6 ~@3 f6@2",
  G: "[a#5,d6,f6] ~@3 [a#5,d6,f6] ~@3 [a5,c#6,e6] ~ [g#5,c6,d#6] ~@3 [g5,b5,d6] ~", H: "[a#5,d6,f6] ~@15",
  I: "~@4 [a5,d#6,f6] ~@5 [a5,d#6,f6] ~@5", J: "[a5,d#6,f6] ~@5 [a5,d#6,f6] ~@9",
  K: "~@4 [b5,d#6,f#6] ~@5 [b5,d#6,f#6] ~@5", L: "[b5,d#6,f#6] ~@5 [b5,d#6,f#6] ~@9",
  M: "~@4 [c#6,e6,f#6] ~@5 [c#6,e6,f#6] ~@5", N: "[c#6,e6,f#6] ~@5 [c#6,e6,f#6] ~@9",
  O: "~@4 [d#6,f#6,g#6] ~@5 [d#6,f#6,g#6] ~@5", P: "[[d#6,f#6,g#6] ~@7 g#6@2 g6 ~@3 f#6@6 ~@12]/2",
  Q: "[b5,d#6,f#6] ~@3 [b5,d#6,f#6] ~@3 [a#5,d6,f6] ~ [a5,c#6,e6] ~@3 [g#5,c6,d#6] ~", R: "[b5,d#6,f#6] ~@15",
  S: "~@4 [b5,d#6,f#6] ~@5 [b5,d#6,f#6] ~@3 [b5,d#6,f#6] ~", // B
})).s("gm_flute").gain(0.2).pan(0.3)

// other · flute
const flute_2 = note(`<
  ~@51 A B C D E F ~ G H I ~ J K@2 ~ L M ~@6 N O ~@2 P Q R ~ S@2 T@2 ~@2 U V W@2 X Y Z ~ AA@2 AB AC@2 ~ AD@2 AE ~ AF AG
  ~@20
>`.pickRestart({
  A: "d#5@2 f5@2 g5@2 g#5@2 a#5@2 ~ c6@2 ~ b5@2", B: "~@2 b5@2 ~@2 a5 ~ g#5 a5 g#5@2 f#5@2 b5@2",
  C: "~@2 a5@2 g#5@2 f#5@2 e5@2 d#5@2 ~ c5@2 ~, ~@6 c#5 ~", D: "b4@3 ~@13", E: "~@6 b4@2 c#5@2 d#5@2 e5@2 f#5 g5",
  F: "g#5@2 ~ b4@2 ~@11", G: "~@5 c#5 ~@2 e5 ~@2 g#5@5, ~@11 g5 ~@4", H: "~@2 f#5 ~@3 e5 ~ d#5@2 ~ c#5 ~@2 c5 ~",
  I: "b4 ~@15", J: "~@12 d#5 ~@3", K: "[d#5@3 ~ b4 ~ d#5 ~ g#5 ~ d#6@2 ~@2 g#5@4 ~@14]/2",
  L: "~@6 g#5 ~ d#6@2 ~ d6 ~@2 c#6@2", M: "~@2 g#5 ~ c#6 ~ c6@2 b5@2 a#5@2 a5@2 g#5 ~",
  N: "~@4 d#5@2 g#5 ~ d#6@2 d6@2 ~@2 c#6 ~", O: "~@2 g#5@2 c#6@2 c6@2 b5@2 a#5 ~ a5@2 g#5 ~", P: "~@4 d#6 g#5 ~ d#6",
  Q: "~@2 c#6@3 ~@3 g#5 ~ g#5@2 d#5 d5@2 ~, ~@9 a5@2 ~@5", R: "c#5@3 ~@5",
  S: "[~@10 d#5@2 g#5 ~ a#5 b5@3 g#5@2 f#5@2 e5@2 g#5@2 e5@2 d#5@2 d5@2]/2",
  T: "[c#5@2 ~@4 c#5 ~@2 e5 ~@2 g#5@6 f#5 ~@3 e5@2 d#5 ~@2 d5 ~@4, ~@6 g5 ~@9]/2", U: "~@8 b4@2 c#5@2 d#5 ~ e5@2",
  V: "f#5@2 d#5 ~ e5@2 f#5@2 g#5 ~ a5@2 b5@2 c#6 ~", W: "[d6 d#6@3 b5@2 g#5@2 ~@2 f#5@3 ~ f5@4 ~@14]/2",
  X: "~@9 e5 ~ g#5 ~ a#5 b5@2", Y: "~@2 g#5@6 ~@2 e5 ~ d#5 ~ d5 ~", Z: "c#5@5 ~@11",
  AA: "[~@6 e5 ~@4 d6 d#6@6 c#6 ~ b5 [b5,c#6] ~ g#5 ~@2 e5@2 d#5 ~ d5@2, ~@25 f#5@2 ~@5]/2", // Bsus2
  AB: "c#5@2 ~@4 a4 ~ c#5 ~ e5@2 g#5 ~ e5@2", AC: "[g#5@3 ~ f#5 ~ e5@2 d#5@2 ~ c#5@2 ~ c5@5 ~@13]/2",
  AD: "[~@2 b4@3 ~ c#5@3 d#5@2 d#5@2 ~@2 d#5@2 ~ c#5 ~ b4@2 c#5@2 d#5 ~ e5@2 f#5@2 g#5@2]/2", AE: "c#5 ~@3",
  AF: "~@2 d#6@2 ~@2 c#6@2 ~@2 g#5 ~ e5@2 d#5@2", AG: "c#5 g#4 ~@6",
})).s("gm_flute").gain(0.56).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@25 A B C D@2 ~@3 E@5 ~ F@5 ~@4 G@4 H@3 ~@16 I@5 ~@4 J@4 ~ I@5 ~@4 J@4 ~ I@5 ~@4 J@4 ~ I@5 ~@4 K@6
>`.pickRestart({
  A: "~ [g#4,c5,d#5,f5,a#5]", B: "[b3,d#4,f#4,a#4] [b4,d#5,f#5,a#5]", C: "[b3,d#4,f4,a#4] [g#4,b4,d#5,f5]",
  D: "[[g3,a#3,d4,f4]@19 ~@13]/2", E: "[~@15 [a#2,c4]@32 [d#3,a#3,d4]@18 ~@15, ~@3 f4@10 ~@3, ~@3 g#3@6 ~@7]/5",
  F: "[~@14 [b3,d#4,f#4,a#4]@8 [b4,d#5,f#5,a#5]@8 [b3,d#4,f4,a#4]@8 [g#4,b4,d#5,f5]@8 [g3,a#3,d4,f4]@19 ~@15, ~ [g#4,c5,d#5,f5,a#5] ~@8]/5", // Bmaj7 Fm7b5 Gm7 Fm7
  G: "[[a#2,c4]@31 [d#3,a#3,d4]@32 ~, f4, g#3@15 ~@17]/4", H: "[[e3,b3,d#4,f#4]@3 ~]/3",
  I: "[~@14 [c4,e4,g4,b4]@8 [c5,e5,g5,b5]@8 [c4,e4,f#4,b4]@8 [a4,c5,e5,f#5]@8 [g#3,b3,d#4,f#4]@19 ~@15, ~ [a4,c#5,e5,f#5,b5] ~@8]/5", // Cmaj7 F#m7b5 G#m7 F#m7
  J: "[[b2,c#4]@31 [e3,b3,d#4]@32 ~, f#4, a3@15 ~@17]/4", // Bsus2 Emaj7
  K: "[[b2,c#4]@31 [e3,b3,d#4]@49 ~@16, f#4@27 ~@5, a3@5 ~@11]/6", // Bsus2 Emaj7
})).s("gm_string_ensemble_1").gain(0.05)

// other · orchestral harp · G# G A G#
const orchestral_harp = note("<~@22 [[g#4,g#5]] [[g4,g5]@13 ~@3] ~@44 [[a4,a5]] [[g#4,g#5]@13 ~@3] ~@58>")
  .s("gm_orchestral_harp").gain(0.32).pan(1)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 F@2 G@3 H I@2 J K L@2 M@2 I@2 N O P@2 ~@4 L@2 M@2 I@2 N O P@2 ~@2 C@2 Q@2 R@2 S@2 T@2 U@2 V@3
  W X@2 Y Z AA@2 AB@2 ~@2 AC AD AE@2 AF@2 AG@2 AA@2 AB@2 X@2 AC AD AE@2 AH@2 AG@2 AA@2 AB@2 X@2 AC AD AE@2 AH@2 AG@2
  AA@2 AB@2 X@2 AC AD AE@2 AH@2 AI@3 ~
>`.pickRestart({
  A: "[[c4,f4,a#4] ~@3 [c4,f4,a#4]@5 ~ [c4,f4,a#4]@2 ~@2 [c4,f4,a#4]@6 ~@2 [c4,f4,a#4]@9 ~]/2", // Fsus4
  B: "[[c4,f4,a#4] ~@3 [c4,f4,a#4]@5 ~ [c4,f4,a#4]@2 ~@2 [c4,f4,a#4]@6 ~@2 [c4,f4,a#4]@8 ~@2]/2", // Fsus4
  C: "[[a#3,c4,f4] ~@3 [a#3,c4,f4]@5 ~ [a#3,c4,f4]@2 ~@2 [a#3,c4,f4]@7 ~ [a#3,c4,f4]@8 ~@2]/2", // A#sus2
  D: "[[a#3,c4,f4] ~@3 [a#3,c4,f4]@5 ~ [a#3,c4,f4] ~@3 [a#3,c4,f4]@6 ~@2 [a#3,c4,f4]@7 ~@3]/2", // A#sus2
  E: "[[g#3,c4,d#4] ~@3 [g#3,c4,d#4]@5 ~ [g#3,c4,d#4] ~@3 [g#3,c4,d#4]@6 ~@2 [g#3,c4,d#4]@8 ~@2]/2", // G#
  F: "[[c4,d#4,g#4] ~@3 [c4,d#4,g#4]@4 ~@2 [c4,d#4,g#4] ~@3 [c4,d#4,g#4]@6 ~@2 [c4,d#4,g#4]@8 ~@2]/2", // G#
  G: "[[a#3,d4,f4] ~@3 [a#3,d4,f4]@4 ~@2 [a#3,d4,f4] ~@3 [a#3,d4,f4]@8 ~@2 [a#3,d4,f4]@2 [a3,c#4,e4]@2 ~@2 [g#3,c4,d#4]@16 ~@2]/3", // A# A G#
  H: "[g#3,d4,g#4]@7 ~", I: "[[a#3,c4,f4] ~@3 [a#3,c4,f4]@4 ~@2 [a#3,c4,f4] ~@3 [a#3,c4,f4]@7 ~ [a#3,c4,f4]@10]/2",
  J: "[g#3,c#4,f4]@7 ~", K: "[g3,c#4,f4]@7 ~",
  L: "[[g3,c4,d#4] ~@3 [g3,c4,d#4]@4 ~@2 [g3,c4,d#4] ~@3 [g3,d#4]@16 ~@2, ~@7 c4@7 ~@2]/2", // Cm
  M: "[[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@4 ~@2 [f#3,b3,d#4] ~@3 [f#3,b3]@15 ~@3, ~@14 d#4@17 ~]/2", N: "[a#3,e4,a4]@15 ~",
  O: "[a#3,e4,g#4]@15 ~", P: "[[a3,d#4,g4]@15 ~]/2",
  Q: "[[b3,c#4,f#4] ~@3 [b3,c#4,f#4]@5 ~ [b3,c#4,f#4]@2 ~@2 [b3,c#4,f#4]@7 ~ [b3,c#4,f#4]@8 ~@2]/2", // Bsus2
  R: "[~@4 [b3,c#4,f#4]@5 ~ [b3,c#4,f#4]@2 ~@2 [b3,c#4,f#4]@7 ~ [b3,c#4,f#4]@8 ~@2]/2", // Bsus2
  S: "[[b3,c#4,f#4] ~@3 [b3,c#4,f#4]@5 ~ [b3,c#4,f#4] ~@3 [b3,c#4,f#4]@6 ~@2 [b3,c#4,f#4]@7 ~@3]/2", // Bsus2
  T: "[[a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~ [a3,c#4,e4] ~@3 [a3,c#4,e4]@6 ~@2 [a3,c#4,e4]@8 ~@2]/2", // A
  U: "[[c#4,e4,a4] ~@3 [c#4,e4,a4]@4 ~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4]@6 ~@2 [c#4,e4,a4]@8 ~@2]/2", // A
  V: "[[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@4 ~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@8 ~@2 [b3,d#4,f#4]@2 [a#3,d4,f4]@2 ~@2 [a3,c#4,e4]@16 ~@2]/3", // B A# A
  W: "[a3,d#4,a4]@7 ~", X: "[[b3,c#4,f#4] ~@3 [b3,c#4,f#4]@4 ~@2 [b3,c#4,f#4] ~@3 [b3,c#4,f#4]@7 ~ [b3,c#4,f#4]@10]/2",
  Y: "[a3,d4,f#4]@7 ~", Z: "[g#3,d4,f#4]@7 ~",
  AA: "[[g#3,c#4,e4] ~@3 [g#3,c#4,e4]@4 ~@2 [g#3,c#4,e4] ~@3 [g#3,e4]@16 ~@2, ~@7 c#4@7 ~@2]/2", // C#m
  AB: "[[g3,c4,e4] ~@3 [g3,c4,e4]@4 ~@2 [g3,c4,e4] ~@3 [g3,c4]@15 ~@3, ~@14 e4@17 ~]/2", AC: "[b3,f4,a#4]@15 ~",
  AD: "[b3,f4,a4]@15 ~", AE: "[[a#3,e4,g#4]@15 ~]/2", AF: "[[a3,d#4,a4]@29 ~@3]/2",
  AG: "[[b3,c#4,f#4] ~@3 [b3,c#4,f#4]@4 ~@2 [b3,c#4,f#4] ~@3 [b3,c#4,f#4]@7 ~@11]/2", // Bsus2
  AH: "[[a3,d#4,g#4]@7 ~, b2@15 ~]/2", AI: "[[b3,c#4,f#4] ~@3 [b3,c#4,f#4]@4 ~@2 [b3,c#4,f#4] ~@3 [b3,c#4,f#4]@34]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.28).pan(0)

// drums · kick
const kick = s("bd").struct("<A@34 B ~ A B A@10 B ~ A@30 B ~ A B A@10 B ~ A@12 B ~ A B A@10 B ~ A ~@3>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@2 A C A B A B A B A B A B ~@2 A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B ~@2 A C ~@44
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "x ~@2 x ~@2 x ~", C: "x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@84 A B A B A B A B A B ~@2 C D A B A B A B A B A B ~ E A F A B A B A B A B A B ~@2 G ~@3
>`.pickRestart({
  A: "~ x", B: "~@3 x ~@4", C: "~@2 x!2", D: "~ x ~@2 x!2 ~@2", E: "~@3 x!2 ~@3", F: "x!2 ~@2 x!2 ~ x",
  G: "~@2 x ~@4 x",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@37 [~ x] ~@45 [~@3 x] ~@27 [~@3 x] ~@16>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@83 A ~@13 B ~@12 C D ~@12 E ~@3>".pickRestart({
  A: "~@4 x!2 ~@2", B: "~@3 x", C: "~@7 x", D: "~@3 x ~@4", E: "~@5 x ~@2",
})).gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@37 [~@3 x ~@4] ~@86 [~@3 x ~@4] ~@3>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@37 A B ~@45 B ~@13 B ~@10 A B A ~@11 A C ~@3>".pickRestart({
  A: "~@7 x", B: "x", C: "x ~@6 x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct(`<
  A@34 ~@2 A ~ A@10 ~@2 A@30 ~@2 A ~ A@10 ~@2 A@12 ~@2 A ~ A@10 ~@2 B ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2",
})).gain(0.56)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
// … 66 more lines

More by Ornella Vanoni