Strudelify

Buona vita

Ramazzotti

KeyF majorTempo65 bpm
0:00/0:00
// Buona vita — Ramazzotti
// 65 bpm, 4/4, key F 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 63 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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(`<
  ~ A B C D E D F G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF O P Q R AG T U V AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX@2 AY@2
>`.pickRestart({
  A: "g2@5 d3 f3 g3 ~ g3@2 d3 f3@2 g3@2", B: "g2@7 ~", C: "~@3 bb1@3 c2 ~@9", D: "~@3 f1@3 g1 ~@9",
  E: "~@3 bb1@3 c2 ~@5 d1@4", F: "a1@3 g1@3 a1 ~@4 d2 d1@3 ~", G: "~@2 g1@3 g2@3 f2@4 f1@4",
  H: "eb1@2 ~ eb1 ~@3 eb2 d2@7 ~", I: "c2@3 bb1@3 c2 ~@6 eb1 f1@2",
  J: "[~@2 g1 f1@3 g1 ~@5 bb1@3 eb2@4 bb1@3 c2 ~@4 d2 d1@4]/2", K: "g1@3 f1@3 g1@2 ~@3 bb2 a2@2 g2@2",
  L: "~@3 g1@3 a1 ~@4 d2 d1@3 ~", M: "e2@3 e1@4 e2@7 f2 e2", N: "eb2@5 eb2@3 d2@5 f1 gb1@2", O: "g1@12 a1@3 ~",
  P: "bb1@6 f1 bb1 c2@3 g1@5", Q: "d1@5 ~ c2 d2 eb2@3 d2@4 a1", R: "g1@5 g1 g2 g1 f1@6 g1 f1",
  S: "eb1@6 ~ eb1 f1@3 f1@3 f1@2", T: "bb1@4 bb2@2 f1 bb1 c2@3 g1@4 c2", U: "d2@5 ~ c2 d2 eb2@3 d2@4 a1",
  V: "g1@3 g1@3 g1@2 f1@3 f1@3 f1@2", W: "eb1@7 [d3,eb3] d3 bb2 g2@5 ~", X: "d2@7 d3 d2@6 a1@2", Y: "g1@14 ~ d2",
  Z: "c2@3 c1@3 c1 ~@5 d1@4", AA: "~@3 f1@3 g1 ~@5 bb1@2 c2 ~", AB: "~@3 c1@3 c1 ~@5 d1@4",
  AC: "~@3 f1@3 g1 ~@2 g2 f2 ~ d2@3 ~", AD: "a1@3 a1@3 a1 ~@4 d2 d1@4", AE: "e1@3 e1@12 ~",
  AF: "eb1@5 bb1 eb1@2 d2@4 d3@3 ~", AG: "eb1@6 ~ eb1 f1@3 g1@3 a1@2", AH: "eb1@7 [d3,eb3] d3 bb2 g2@3 f2 eb2@2",
  AI: "f2@6 c2@2 f1@5 ~ f1@2", AJ: "g1@6 d2 e2 g2@3 ~ g2@3 ~", AK: "c2@3 c2 g1@2 e1@2 d1@6 c1 d1",
  AL: "e1@5 ~ d2 e2 f2@3 e2@4 b1", AM: "a1@5 a1 a2 a1 g1@6 a1 g1", AN: "f1@6 ~ f1 g1@3 a1@3 b1@2",
  AO: "c2@4 c3@2 g1 c2 d2@3 a1@4 d2", AP: "e2@5 ~ d2 e2 f2@3 e2@4 b1", AQ: "a1@3 a1@3 a1@2 g1@3 g1@3 g1@2",
  AR: "f1@5 c2 f2 eb2 e2 c2 f1@3 f2 f1 ~", AS: "e1@7 d2 e2@3 d1 e1@4", AT: "d1@5 e1 f1 d1 g1@6 g2@2",
  AU: "c2@5 c3@2 c2 d2@8", AV: "e2@8 f2@3 e2@3 e2 b1", AW: "a1@3 a1 g1@4", AX: "[f1@13 ~ c2 f2@2 g2@8 g1@7]/2",
  AY: "[~@2 c1@21 ~@9]/2",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A ~@9 B ~@3 C ~ D E F G H E F G I ~ J ~ K ~@3 L ~ M E F G H E F G I N O P Q R S P Q R T U@2 V W X Y Z AA@2
>`.pickRestart({
  A: "[d4,f4,a4]!2 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]", // Dm
  B: "~@4 [d4,f4,a4]!2 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]!2 ~@3", C: "~@4 [d4,g4,bb4]!2 ~@10",
  D: "[d4,f4,a4]!2 ~ [d4,f4,a4]!2 ~@2 [d4,f4,a4] ~@8", // Dm
  E: "~@2 [bb3,d4] [bb3,d4]@3 [bb3,d4] ~@3 [bb3,eb4] [bb3,eb4]@3 [bb3,eb4] ~", // Bb Eb5
  F: "~@2 [c4,f4] [c4,f4]@3 [c4,f4] ~@4 [c4,f4]@3 [c4,f4] ~", // F5
  G: "~@2 [bb3,d4] [bb3,d4]@3 [bb3,d4] ~@3 [bb3,d4] [bb3,d4]@3 [bb3,d4] ~", // Bb
  H: "~@2 [bb3,d4] [bb3,d4]@3 [bb3,d4] ~@3 [a3,d4] [a3,d4]@3 [a3,d4] ~", I: "~@2 [bb3,d4] [bb3,d4]@3 [bb3,d4]@4 ~@6",
  J: "~@4 [d4,f4,a4]!2 ~ [d4,f4,a4]!2 ~@7", K: "~@4 [d4,f4,a4]!2 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]",
  L: "~@4 [d4,g4,bb4]!2 ~ [d4,g4,bb4]!2 ~@2 [d4,g4,bb4] ~@4", M: "[d4,f4,a4]!2 ~ [d4,f4,a4]!3 ~ [d4,f4,a4]!2 ~@7",
  N: "~@2 [c4,f4] [c4,f4]@3 [c4,f4]@2 ~@2 [c4,f4] [c4,f4]@3 [c4,f4]@2", // F5
  O: "~@2 [d4,g4] [d4,g4]@3 [d4,g4]@2 ~@2 [d4,g4] [d4,g4]@2 [d4,g4]!3", // G5
  P: "~@2 [c4,e4] [c4,e4]@3 [c4,e4] ~@3 [c4,f4] [c4,f4]@3 [c4,f4] ~", // C F5
  Q: "~@2 [d4,g4] [d4,g4]@3 [d4,g4] ~@4 [d4,g4]@3 [d4,g4] ~", // G5
  R: "~@2 [c4,e4] [c4,e4]@3 [c4,e4] ~@3 [c4,e4] [c4,e4]@3 [c4,e4] ~", // C
  S: "~@2 [c4,e4] [c4,e4]@3 [c4,e4] ~@3 [b3,e4] [b3,e4]@3 [b3,e4] ~", T: "~@2 [c4,e4] [c4,e4]@3 [c4,e4]@4 ~@6",
  U: "[~@4 g4@11 ~ [c4,f4]@7 ~ [g3,c4]@6 ~@2, ~@15 a3@7 ~@10]/2", V: "~@4 d5@6 e5 ~ c5@2 d5 ~", W: "g4@13 ~@3",
  X: "a4 e4", Y: "c4@7 ~", Z: "~ g4@15", AA: "[~ [g3,c4]@9 ~@6]/2",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.7)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@2 A ~@8 B ~@3 C ~ D ~ E ~@3 E ~@3 F ~@5 G ~ H ~ E ~@3 E ~@5 I ~@3 I ~@11
>`.pickRestart({
  A: "[d4,f4,a4]!2 ~ [d4,f4,a4] ~@12", B: "~@13 [d4,f4,a4] ~ [d4,f4,a4]",
  C: "~@7 [d4,g4,bb4]!3 ~ [d4,g4,bb4]!3 ~ [d4,g4,bb4]", D: "~@5 [d4,f4,a4] ~@2 [d4,f4,a4]!2 ~ [d4,f4,a4] ~@4",
  E: "~@10 [c4,f4] ~@5", F: "~@9 [d4,f4,a4] ~ [d4,f4,a4]!3 ~ [d4,f4,a4]",
  G: "~@9 [d4,g4,bb4] ~@2 [d4,g4,bb4]!2 ~ [d4,g4,bb4]", H: "~@9 [d4,f4,a4] ~ [d4,f4,a4] ~@4", I: "~@10 [d4,g4] ~@5",
})).s("gm_electric_guitar_clean").gain(0.08).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@15 A B ~@4 C D@2 E F G H I@2 J K L M N O L P Q R D@2 E F S T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI@2
>`.pickRestart({
  A: "~@15 e6", B: "[c6,f6]", C: "~@8 [bb5,bb6]@3 [a5,a6]@3 [g5,g6]@2",
  D: "[[f5,f6]@24 [g5,g6]@3 [f5,f6]@3 [eb5,eb6]@2]/2", E: "[d5,d6]@3 [bb5,bb6] [a5,a6]@4", F: "[g5,g6]",
  G: "g6@8 gb6@7 [g6,ab6], d6@15 ~", H: "[d6,a6]@5 ~@3", I: "[[c5,c6]@23 ~ [bb4,bb5]@8]/2", J: "[bb4,bb5]",
  K: "[a4,a5] [g4,g5]", L: "[d5,d6] [eb5,eb6]", M: "[d5,d6]@2 [a5,a6] [g5,g6]", N: "[f5,f6]",
  O: "d6@8 d5@4 c5@3 ~, g6@15 ~, ~@8 g5@7 ~", P: "[f5,f6]@8 [g5,g6]@3 [f5,f6]@3 [eb5,eb6]@2", Q: "[d5,d6] [c5,c6]",
  R: "[bb4,bb5]@7 ~ [bb5,bb6]@3 [a5,a6]@3 [g5,g6]@2", S: "[f5,c6,f6]", T: "[g5,d6,g6]@11 ~ [d5,d6]@4",
  U: "[e5,e6] [f5,f6]", V: "[g5,g6]@8 [a5,a6]@3 [g5,g6]@3 [f5,f6]@2", W: "[e5,e6] [d5,d6]",
  X: "[c5,c6]@7 ~ [c6,c7]@3 [b5,b6]@3 [a5,a6]@2", Y: "[[g5,g6]@24 [a5,a6]@3 [g5,g6]@3 [f5,f6]@2]/2",
  Z: "[e5,e6]@3 [c6,c7] [b5,b6]@4", AA: "[a5,a6]", AB: "[b4,g5]@15 ~", AC: "[a4,f5]@7 ~ [g4,c5]@7 ~",
  AD: "[e5,c6] [f5,d6]", AE: "[g5,e6]@8 [a5,f6]@3 ~@3 [e5,c6]@2", AF: "[c5,a5]@3 [e5,c6] ~@4", AG: "[c5,a5]",
  AH: "~ [c5,g5,c6]@15", AI: "[[c5,g5,d6]@2 [c5,g5,c6,e6]@19 ~@11]/2",
})).s("gm_string_ensemble_1").gain(0.16)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@14 A B ~ C ~@39 D E ~@4>".pickRestart({
  A: "~ [c6,eb6]", B: "[bb5,d6]@15 eb6", C: "[d6,g6]@3 ~", D: "~@11 [g5,e6]@3 ~@2", E: "~ [d5,b5]",
})).s("gm_string_ensemble_1").gain(0.08)

// chords · epiano1
const epiano1 = note(`<
  A@3 B C D E F G H I J K L M@2 H N O P Q R O P S T U V W X Y Z AA AB H N O P Q R O P S AC AD AE AF AG AH AI AF AG AJ AK
  AL AM AF AN AO AP AQ@3
>`.pickRestart({
  A: "[~@16 g3@31 ~, ~@15 [c4,d4,f4]@32 ~]/3", B: "[c2,g3,bb3,eb4] [d2,gb3,a3,c4]", C: "~@6 f4@9 ~, [g1,f3,bb3,d4]",
  D: "[c2,g3,bb3,eb4]@2 f4 eb4, ~ [d2,a3,c4]", // Cm7 D7
  E: "~@3 f4@5 [g3,bb3,d4]@4 [g3,bb3] [a3,c4] [bb3,d4]@2, g1@15 ~, [a3,c4] ~, f3@3 ~@5", // Gm Am Bb Am
  F: "[a1,g3,c4,eb4]@2 bb3 c4, ~ [d2,gb3]", G: "~ [f1,a3], d4@7 ~, [g1,g3,bb3] ~, ~@3 g4@11 ~@2",
  H: "[eb2,g3,bb3,c4,f4] [d2,gb3,a3,c4,f4]", I: "[c2,eb4]@3 [bb1,d4]@3 [g3,bb3]@9 ~, [g3,bb3]@5 ~ c2@2 ~@8",
  J: "~@8 f4@7 ~, [g2,f3,bb3]", K: "[c2,g3,bb3,c4,eb4]@8 ~@4 f4@3 ~, ~ [d2,gb3,a3,c4]",
  L: "~@3 f4@5 [g3,bb3,d4]@5 [f3,a3,c4] [g3,bb3,d4]@2, g2@15 ~, [f3,a3,c4] ~", // Gm F Gm F
  M: "[[a2,g3,c4,eb4]@8 [gb3,a3,c4,eb4]@6 ~@10 g3@7 ~, ~@8 d2@7 [a4,bb4]@7 ~@10, ~ [e2,d4,g4]]/2", // Am7b5 Gbdim Bbmaj7 Em7
  N: "[g2,f3,bb3,d4]@3 [a2,f3,a3,c4]", O: "[f3,bb3,d4] [g3,bb3,eb4]",
  P: "[bb3,c4,d4,f4]@7 ~ g4@3 f4@3 eb4@2, ~@8 bb3@7 ~, ~@8 eb4@5 ~@3", Q: "[g3,bb3,d4]@8 c4@3 d4@5, ~ [f3,a3]",
  R: "~@3 d4@5 [f3,a3]@3 [g3,bb3]@3 [a3,c4]@2, [g3,bb3] ~", S: "~@3 bb4 [f3,a3,c4,a4]@4, [g3,bb3,d4] ~",
  T: "[g3,bb3,d4,g4]@7 ~", U: "g4@8 gb4@7 ~, [a3,d4]@15 ~", V: "[bb3,d4,g4]@15 ~",
  W: "[g3,bb3,d4,eb4]@7 ~@4 eb4@5, ~@8 [gb3,a3,c4]@7 ~", X: "~@3 f4@5 [g3,bb3,d4]@5 ~ [g3,bb3,d4]@2, [f3,a3,c4] ~",
  Y: "[g3,c4,eb4]@8 ~@3 eb4@4 ~, ~ [gb3,bb3]", Z: "[f3,a3,c4]@7 ~ [g3,bb3,d4]@4 ~ [f3,a3,c4] [g3,d4]@2, ~@14 bb3 ~",
  AA: "[g3,c4,eb4]@8 ~@3 eb4@5, ~ [gb3,bb3]", AB: "~@3 g4@12 ~, [g3,bb3,d4]@15 ~",
  AC: "[g3,bb3,d4,g4]@9 ~ g3@3 g4@2 ~, ~@10 [bb3,d4]@5 ~", AD: "[a3,c4,f4]@7 [a3,c4,f4]",
  AE: "[b3,d4,g4]@13 ~ [g3,b3,d4]@2", AF: "[g3,c4,e4] [a3,c4,f4]",
  AG: "[c4,d4,e4,g4]@7 ~ a4@3 g4@3 f4@2, ~@8 c4@7 ~, ~@8 f4@5 ~@3", AH: "[a3,c4,e4]@8 d4@3 e4@5, ~ [g3,b3]",
  AI: "~@3 e4@5 [g3,b3]@3 [a3,c4]@3 [b3,d4]@2, [a3,c4] ~", AJ: "~@3 c5 [g3,b3,d4,b4]@4, [a3,c4,e4] ~",
  AK: "[a3,c4,e4,a4]@9 ~ a3@3 a4@2 ~, ~@10 [c4,e4]@5 ~", AL: "[b3,d4,e4,g4]@15 ~", AM: "[a3,c4,f4]@8 [g3,c4]@7 ~",
  AN: "[b3,d4,g4]@8 [f4,a4]@3 g4@3 [d4,f4]@2, ~@8 c4@5 ~ b3 ~", AO: "[a3,c4,e4]@7 ~ [g3,b3,e4]@8", AP: "[f3,a3,c4]@7 ~",
  AQ: "[~ g3@8 ~@5 c4@4 [g3,c4,e4]@21 ~@9, [c4,f4]@9 [f3,a3]@8 ~@31]/3", // C F5 F
})).s("gm_epiano1").gain(0.4)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@21 A B@3 C ~@2 D E F G H I J ~@4 A B@3 C ~@2 K@3 L K@3 L ~@2 M@2 N O ~@3
>`.pickRestart({
  A: "~@10 f3 g3 bb3 ~ g3 ~", B: "~@2 f3 g3 bb3!2 g3 ~@3 f3 g3 bb3 ~ g3 ~", C: "~@2 f3 g3 bb3!2 g3 ~@9",
  D: "~@3 c2@3 c2 ~@9", E: "~@3 f2@3 g2 ~@5 bb2@2 c3 ~", F: "~@3 c2@3 c2 ~@5 d2@4", G: "~@3 f2@3 g2 ~@9",
  H: "~@3 a2@3 a2 ~@4 d3 d2@4", I: "e2@3 e2@12 ~", J: "eb2@5 bb2 eb2@2 d3@4 ~@4",
  K: "~@2 g3 a3 c4!2 a3 ~@3 g3 a3 c4 ~ a3 ~", L: "~@2 g3 a3 c4!2 a3 ~@9", M: "~@4 [g3,c4] ~@7 [f3,c4] ~@3",
  N: "~@4 [a3,c4] ~@7 [g3,c4] ~@3", O: "~@4 [f3,c4] ~@11",
})).s("gm_electric_guitar_muted").gain(0.32)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@18 A B C D A B C E F G ~@8 A B C D A B C E H I J K L M J K L N O P Q R S T U@3
>`.pickRestart({
  A: "[bb3,d4] [bb3,eb4]", B: "[c4,f4] [bb3,g4]", C: "[bb3,d4] [a3,c4]", D: "[g3,bb3]@8 [f3,a3]@7 ~", E: "[bb3,d4]",
  F: "[a3,d4]", G: "[bb3,d4]@5 ~@3", H: "[c4,f4]", I: "[d4,g4]@15 ~", J: "[c4,e4] [c4,f4]", K: "[d4,g4] [c4,a4]",
  L: "[c4,e4] [b3,d4]", M: "[a3,c4]@8 [g3,b3]@7 ~", N: "[c4,e4]", O: "[b3,d4]", P: "[a3,c4] [g3,c4]", Q: "e4 f4, c4",
  R: "[d4,g4]@8 a4@3 g4@3 f4@2, ~ c4", S: "c4 b3, e4", T: "[a3,c4]", U: "[~ [g3,c4]@17 [g3,c4]@21 ~@9]/3",
})).s("gm_synth_strings_1").gain(0.24)

// chords · electric guitar clean
const electric_guitar_clean_3 = note(`<
  ~@2 A B ~ B ~ C D ~ E ~ F G H ~@3 I@8 J K ~@2 F L H ~@3 I@8 ~@2 M@8 N O P Q R ~@4
>`.pickRestart({
  A: "~@2 g5@5 ~", B: "~@4 [bb3,eb4] ~@11", C: "~@3 [a3,c4]", D: "[bb3,d4]@9 ~@7", E: "eb4@3 ~@13",
  F: "~@4 [bb3,eb4] ~@7 [c4,f4] ~@3", G: "~@4 [g3,d4]!2 ~@2 [g3,d4] ~@7", H: "~@4 [c4,eb4] ~@11",
  I: "[~@2 [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4] [bb3,f4]@2 ~ [bb3,f4]@6 ~@4]/8", // Bb5
  J: "[a3,d4,g4]@7 ~", K: "[bb3,d4,g4]@11 ~@5", L: "~@4 [g3,d4]!2 ~@2 [g3,d4] ~@3 [g3,d4] ~@3",
  M: "[~@2 [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4] [c4,g4]@2 ~ [c4,g4]@6 ~@4]/8", // C5
  N: "~@2 [b3,d4] [b3,d4]@3 [b3,d4]@2 ~@2 [b3,d4] [b3,d4]@3 [b3,d4]@2", O: "~@2 [c4,f4] [c4,f4]@3 [c4,f4]@2 ~@8",
  P: "~@4 c4@11 ~", Q: "~@2 c4 ~ e4@2 g4@2 a4@3 g4@3 f4@2", R: "e4@8 c4@7 ~",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.6)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_4 = note("<~@3 A B A B ~@3 C ~@2 D ~@17 E ~@31>".pickRestart({
  A: "~@12 [c4,f4] ~@3", B: "~@4 [g3,d4]!2 ~@2 [g3,d4]!2 ~@2 [g3,d4]!2 ~@2", C: "~@3 d4@3 g3@8 ~@2",
  D: "~@9 [g3,d4] ~@2 [g3,d4]!2 ~@2", E: "~@9 [g3,d4] ~@3 [g3,d4] ~@2",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A B C D@2 B E F C G H I@3 J I K ~ A B C D@2 B E L M N O B C D@2 B E L P Q G ~@6
>`.pickRestart({
  A: "x ~@2 x ~@4 x ~@2 x ~@4", B: "x ~@7 x ~@2 x ~@3 x", C: "x ~@6 x!2 ~@7", D: "x ~@6 x!2 ~@2 x ~@4",
  E: "x ~@2 x ~@4 x ~@6 x", F: "x ~@7 x ~@2 x ~@4", G: "x", H: "x ~@2 x ~@8 x ~@3", I: "x ~@2 x ~@7 x!2 ~@3",
  J: "x ~@10 x!2 ~@3", K: "x ~@2 x ~@4 x ~@7", L: "x ~@7 x ~@2 x ~@2 x ~", M: "x ~@6 x!2 ~@2 x ~@2 x ~",
  N: "x ~@2 x ~@3 x ~@5 x ~ x", O: "x ~@2 x ~@3 x!2 ~@2 x ~@2 x!2", P: "x ~@4 x ~ x!2 ~@2 x ~@4",
  Q: "x ~@2 x ~@2 x ~ x ~@2 x ~@4",
})).gain(0.56)

// drums · rim
const rim = s("rim").struct("<~@3 [~ x ~@2]!11 [~ x ~ x] [~ x ~@2] [~ x ~ x] ~@39 [~ x ~@2]!4 ~@3>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@18 A@9 ~ B@7 C A@9 D A@10 ~@7>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~@2 x ~ x!2 ~ x",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@2 A ~@14 A ~@10 B@6 ~ C ~@13 C ~ D ~ D ~@9>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@3 x", C: "~@15 x", D: "~@11 x ~@4",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A@4 B A C A@7 D E F G H I J K L M N O P Q P R@3 S E F G H I J K L T U V W@7 X Y Z R AA AB ~@3
>`.pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", B: "~ x!4 ~ x ~ x ~ x!3 ~ x ~", C: "x ~ x!3 ~ x ~ x ~ x!3 ~@3",
  D: "~@4 x ~ x!3 ~ x!4 ~@2", E: "~@2 x!3 ~ x ~ x!5 ~ x ~", F: "x ~ x!11 ~@3", G: "x ~ x!11 ~ x!2",
  H: "x ~ x!5 ~ x!5 ~@3", I: "x ~ x!5 ~ x!5 ~ x!2", J: "x!13 ~@3", K: "x ~ x!3 ~ x!9 ~", L: "x ~ x!3 ~ x ~ x!5 ~@3",
  M: "x ~ x ~ x ~ x!3 ~ x!3 ~ x ~", N: "x ~ x ~ x ~@2 x!2 ~@7", O: "x!8", P: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
  Q: "x ~ x!3 ~ x!3 ~ x ~ x ~ x ~", R: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", S: "x ~ x ~@2 x!3 ~@8", T: "x ~ x!3 ~ x ~ x!8",
  U: "~ x!7", V: "~ x!12 ~@3", W: "x!16", X: "~@2 x!9 ~ x!4", Y: "~@2 x!7 ~ x ~ x ~@2 x",
  Z: "x ~@3 x ~ x ~ x ~ x ~ x ~ x!2", AA: "x ~ x!3 ~ x ~ x ~ x!3 ~ x!2", AB: "~@3 x!2 ~ x!2 ~@8",
})).gain(0.24)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@24 A B C D E F G F H@3 ~@7 A B I ~ J ~@7 K L ~@7>".pickRestart({
  A: "~@5 x ~@10", B: "~@5 x ~ x ~@8", C: "~@3 x ~ x ~@3 x ~@6", D: "~@3 x ~ x!2 ~@9",
  E: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", F: "~@3 x ~ x ~@3 x ~ x ~ x ~ x", G: "~@5 x ~@3 x ~ x ~ x ~ x",
// … 32 more lines

More by Ramazzotti