Strudelify

Io per lei

Camaleonti

KeyA minorTempo80 bpm
0:00/0:00
// Io per lei — Camaleonti
// 80 bpm, 4/4, key A minor. 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 68 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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("<~@14 A B C D E F G H I J K L M N O P ~@9 Q@2 R S T@2 U V W@3 X Y Z AA@4 ~@11>".pickRestart({
  A: "~@3 e2, ~@24 e1@23 ~", B: "a1@12 ~@6 a1 ~@5 a1@13 ~@5 a1@5 ~", C: "d2@12 ~@6 d2 ~@5 d2@13 ~@5 d2@5 ~",
  D: "b1@12 ~@6 b1 ~@5 b1@13 ~@5 b1@5 ~", E: "~@6 e2@12 e1@2 ~@4 e1@11 ~ e2@12, e1@17 ~@31",
  F: "a1@12 ~@6 a1@2 ~@4 a1@13 ~@5 a1@5 ~", G: "d2@12 ~@6 d2@2 ~@4 d2@13 ~@5 d2@6",
  H: "e1@13 ~@5 e1@2 ~@4 e1@12 e2@5 ~ e1@2 ~@4", I: "~@3 e2@3 ~@3 e2@2 ~, e1@20 ~@4 e1@21 ~@3",
  J: "a1@12 ~@6 a1 ~@5 a1@13 ~@5 a1@6", K: "d2@13 ~@5 d2 ~@5 d2@12 ~@6 d2@6", L: "b1@12 ~@6 b1 ~@5 b1@15 ~@3 b1@6",
  M: "e1@6 e2@3 e1 ~@2 e1@6 e2@6", N: "a1@6 ~@3 a1 ~@2 a1@7 ~@2 a1@3", O: "d2@13 ~@5 d2@2 ~@4 d2@13 ~@5 d2@6",
  P: "~@9 e2@8 ~@7, e1@11 ~@5", Q: "[~@44 e2@11 ~ a1@12 ~@6 a1 ~@5 a1@13 ~@3, ~@32 e1@23 ~@41]/2",
  R: "~@2 a1@6 d2@13 ~@5 d2 ~@5 d2@12 ~@4", S: "~@2 d2@6 b1@12 ~@6 b1 ~@5 b1@15 ~",
  T: "[~@2 b1@5 ~ e1@12 e2@6 e1@2 ~@4 e1@11 ~ e2@12 a1@12 ~@6 a1@2 ~@4 a1@14 ~@2]/2",
  U: "~@2 a1@6 d2@13 ~@5 d2@2 ~@4 d2@13 ~@3", V: "~@2 d2@6 e1@13 ~@5 e1 ~@5 e1@12 e2@4",
  W: "[~@2 e1@2 ~@4 e1@12 e2@12 e1@12 e2@8 ~@4 a1@6 ~@3 a1 ~@2 a1 ~@2 a1@3 ~@3 a1 ~@2 a1@6 ~@3 a1 ~@2 a1@7 ~@2 a1@2 ~ d2@5 ~@4 d2 ~@2 d2 ~@2 d2@4 ~@2 d2 ~@2 d2@6 ~@3 d2 ~@2 d2@4]/3",
  X: "~@2 d2@4 ~@2 b1@5 ~@4 b1 ~@2 b1 ~@2 b1@4 ~@2 b1 ~@2 b1@6 ~@3 b1 ~@2 b1@4",
  Y: "~@2 b1@5 ~ e1@5 ~@4 e1 ~@2 e1 ~@2 e1@3 ~@3 e1 ~@2 e1@6 ~@3 e1 ~@2 e1@4",
  Z: "~@2 e1@4 ~@2 a1@5 ~@4 a1 ~@2 a1 ~@2 a1@4 ~@2 a1 ~@2 a1@6 ~@3 a1 ~@2 a1@4",
  AA: "[~@2 a1@5 ~ d2@45 ~@3 e1@47 ~ a1@46 ~@42]/4",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note("<A B C D E@3 F G H@5 I ~@17 J K L M N O P@3 ~@16 Q R S T@2 U@6>".pickRestart({
  A: "~@17 e5 e6 e5 e6 [e5,e6]!2 e6!2 [e5,e6] e5 e6 e5 [e5,e6] e5 e6 e5 e6 [e5,e6] e5!2 e6 [e5,e6] e5 e6 e5 [e5,e6] e6 e5 e6 [e5,e6] e5", // E
  B: "e5 e6!2 e5 e6 e5 e6 [e5,e6] e5!2 e6 e5 e6 e5 e6 e5 [e5,e6] e5 e6 e5 [e5,e6] [f5,g#5]!4 f5 g#5 f5 [f5,g#5] g#5 f5 g#5 f5 [f5,g#5]!5 g#5 f5 g#5 [f5,g#5] g#5 f5 [f5,g#5]!4", // E Fm
  C: "[f5,g#5] g#5 [f5,g#5] f5 g#5 f5 [f5,g#5] g#5 [f5,g#5]!5 g#5 f5 [f5,g#5] g#5 f5 g#5 [f5,g#5] f5 [f5,g#5]!4 e5 e6 e5 [e5,e6]!3 e6 [e5,e6] e6 e5 e6 [e5,e6] e5!2 e6 [e5,e6] e5 e6 e5!2 e6 e5!2", // Fm E
  D: "e6 [e5,e6] e5 e6 e5 [e5,e6] e6 e5!2 e6 [e5,e6] e5 e6 e5 [e5,e6] e6 e5!2 [e5,e6] e5 e6 e5 [e5,e6] e6 e5!2 e6 [e5,e6] e5 [f5,g#5]!3 g#5 f5 g#5 [f5,g#5] f5 g#5 f5 g#5 [f5,g#5]!5 f5 g#5 f5", // E Fm
  E: "[[f5,g#5] f5 g#5 f5 [f5,g#5]!6 g#5 f5 g#5 [f5,g#5] f5 g#5 [f5,g#5]!5 g#5 [f5,g#5] f5 g#5 f5 [f5,g#5] g#5 f5 [f5,g#5]!4 ~@13 e3@64 ~ [c4,e4,a4] ~@2 [c4,e4,a4]@2 ~@8 [c4,e4,a4] ~@2 [c4,e4,a4]@2 ~@8 [c4,e4,g#4] ~@2 [c4,e4,g#4]@2 ~@2, ~@33 [g#4,b4,d5]@29 ~@82]/3", // Fm Am Caug G#dim
  F: "~@6 [c4,e4,g#4] ~@2 [c4,e4,g#4]@2 ~@8 [c4,e4,g4] ~@2 [c4,e4,g4]@2 ~@8 [c4,e4,g4] ~@2 [c4,e4,g4]@2 ~@8 [c4,e4,f#4] ~@2", // Caug C F#m7b5
  G: "[c4,e4,f#4]@2 ~@8 [c4,e4,f#4] ~@2 [c4,e4,f#4]@2 ~@7 [c4,e4,a4] ~@3 [c4,e4,a4]@2 ~@7 [c4,e4,a4] ~@3 [c4,e4,a4]@2 ~@7, ~@11 a2@13", // F#m7b5 Am
  H: "[[c4,e4,g#4] ~@3 [c4,e4,g#4]@2 ~@7 [c4,e4,g#4] ~@3 [c4,e4,g#4]@2 ~@7 [c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@7 [c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@7 [c4,e4,f#4] ~@3 [c4,e4,f#4]@2 ~@7 [c4,e4,f#4] ~@3 [c4,e4,f#4]@2 ~@7 [b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@7 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@8 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@8 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@8 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@8 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@8 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@8 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@8 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@8 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@8 [b3,e4,g4]@2 ~@2 [b3,e4,g4]@3 ~@9 [b3,e4,g4]@2 ~@2 [b3,e4,g4]@3 ~@9, b2@13 c3@13 d3@13 e3@26 b2@26 e2@29]/5", // Caug C F#m7b5 Em B Em
  I: "[b3,e4,g#4]@21 ~@3 [b3,d4,f4,g#4]@12 [b3,d4,f4,g#4]@10 ~@2, e2, ~ e3", // E Bdim
  J: "[c4,e4,a4] ~@2 [c4,e4,a4]@2 ~@7 [c4,e4,a4] ~@2 [c4,e4,a4]@2 ~@7 [c4,e4,g#4] ~@2 [c4,e4,g#4]@2 ~@7 [c4,e4,g#4] ~@2 [c4,e4,g#4]@2 ~@7", // Am Caug
  K: "[c4,e4,g4] ~@2 [c4,e4,g4]@2 ~@7 [c4,e4,g4]@2 ~ [c4,e4,g4]@2 ~@7 [c4,e4,f#4] ~@2 [c4,e4,f#4]@2 ~@7 [c4,e4,f#4] ~@2 [c4,e4,f#4]@2 ~@7", // C F#m7b5
  L: "[c4,e4,a4] ~@2 [c4,e4,a4]@2 ~@7 [c4,e4,a4] ~@2 [c4,e4,a4]@2 ~@7 [c4,e4,g#4] ~@2 [c4,e4,g#4]@2 ~@7 [c4,e4,g#4] ~@2 [c4,e4,g#4]@2 ~@7, a2 b2", // Am Caug
  M: "[c4,e4,g4] ~@2 [c4,e4,g4]@2 ~@7 [c4,e4,g4] ~@2 [c4,e4,g4]@2 ~@7 [c4,e4,f#4] ~@2 [c4,e4,f#4]@2 ~@7 [c4,e4,f#4] ~@2 [c4,e4,f#4]@2 ~@7, c3 d3", // C F#m7b5
  N: "[b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@7 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@7 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@7 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@7, e3", // Em
  O: "[b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@7 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@7 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@7 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]@2 ~@7, b2", // B
  P: "[[b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@7 [b3,e4,g4] ~@2 [b3,e4,g4]@2 ~@7 [b3,e4,g4]@2 ~@2 [b3,e4,g4]@3 ~@9 [b3,e4,g4]@2 ~@2 [b3,e4,g4]@3 ~@9 [b3,e4,g#4]@19 ~@5 [b3,d4,f4,g#4]@11 ~ [b3,d4,f4,g#4]@8 ~@44, e2@7 e2@6 ~@5, ~@10 e3@3 ~@5]/3", // Em E Bdim
  Q: "~@8 [b5,e6,g#6] [b5,g#6] [b5,e6] [e6,g#6] b5 [b5,e6] [e6,g#6] b5 [b5,e6] [e6,g#6] b5 [b5,g#6] g#6 b5 [b5,e6] g#6 b5 [b5,e6] g#6 b5 [b5,e6] [e6,g#6] b5 [b5,e6,g#6] g#6 b5 [b5,e6] g#6 b5 [b5,e6] g#6 b5 [b5,e6] g#6 b5 [b5,e6] e6 b5 [b5,g#6] [e6,g#6]", // E E5 E E5 E E5 E E5 …
  R: "b5 [b5,e6,g#6] e6 b5 [b5,e6] g#6 b5 [b5,e6] g#5 g#6 [g#5,g#6] g#5 [g#5,g#6]!2 g#6 g#5 [g#5,g#6] g#6 g#5 [g#5,g#6] g#5 g#6 [g#5,g#6] g#5 g#6 g#5 g#6!2 g#5 g#6 g#5 [g#5,g#6] g#6 g#5 [g#5,g#6] g#6 g#5 [g#5,g#6] g#6 g#5 [g#5,g#6] g#5 g#6 [g#5,g#6] g#5!2 [g#5,g#6] g#5", // E E5 G#
  S: "g#6 [g#5,g#6] g#5 g#6 g#5 g#6 g#5 [g#5,g#6] [a5,c6]!5 c6 a5 c6 a5 c6 a5 c6 a5 [a5,c6]!4 c6 a5 c6 a5 [a5,c6] a5 c6 a5 [a5,c6]!6 c6 a5 c6 a5 c6 a5 c6 a5 c6", // G# Am
  T: "[[a5,c6]!6 c6 a5 c6 a5 c6 a5 c6 a5 c6 a5 [a5,c6]!5 g#5 g#6 g#5 g#6 g#5 [g#5,g#6]!2 g#6!2 g#5 g#6 g#5 g#6 g#5 g#6 g#5!2 g#6 g#5 g#6 g#5 g#6 g#5!2 g#6!2 g#5 g#5 g#6 g#5 g#6 g#5 g#6 g#5 g#6 ~ g#5 g#6 g#5 ~ g#5 g#6 ~ g#6 g#5!2 ~ g#6 g#5 g#6 ~ g#5 g#6 g#5 ~ g#5 g#6 ~ g#5!2 g#6 ~ g#5 g#6 g#5 ~ g#6 g#5!2 ~ g#6 g#5 ~ g#6 g#5, ~@37 e3@8 f#3@9 g#3@10 b3@10 d#4@10 c#4@11 ~]/2", // Am G#
  U: "[g#5 g#6 g#5 g#6 g#5 [g#5,g#6]!2 g#6!2 g#5 g#6 g#5 g#6 g#5 g#6 g#5!2 g#6 g#5 g#6 g#5 g#6 g#5!2 g#6!2 g#5!2 g#6 g#5 g#6 g#5 [b3,e4]@27 ~@5 [c#3,c#4,f4]@192 ~@32, g#3@8 f#3@9 b3@8 g#3@7 g#4@224 ~@32, ~ e3 ~@7]/6", // G# E5 C#
})).s("gm_string_ensemble_1").gain(0.21).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@7 A@2 B ~@5 C@3 D E@2 F G H I J K L@2 M N O ~ P Q ~@5 R@6 S@5 T@4 ~ U@4 ~@8
>`.pickRestart({
  A: "[~@44 f#4@25 ~@27]/2", B: "g#4@13 ~@11", C: "[e4 f4 ~@2 d4@2, c4@2 ~, ~@48 f#4@95 ~]/3", D: "g4",
  E: "[e4 f4 f#4@2, c4@23 ~]/2", F: "[b3,e4,g4]", G: "[b3,e4,g#4] [d4,f4,g#4]", H: "[c4,e4]@2 [c4,f4]!2",
  I: "f#4 g4 g#4 a4, c4!2", J: "[d4,f#4,b4]@47 ~", K: "g4@12 a4@12 a#4@12 b4@11 ~, e4",
  L: "[[e4,c5]@2 f4@2 f#4 g4 g#4 a4, ~@24 c5@71 ~]/2", M: "e3", N: "a2", O: "[d3,f#4]@47 ~", P: "~ f#4", Q: "~@3 g#4",
  R: "[~@8 [c4,e4]@24 [c4,f4]@12 [c4,f4]@12 f#4@12 g4@12 g#4@12 a4@12 [d4,f#4,b4]@47 ~ g4@12 a4@12 a#4@12 b4@11 ~ [e4,c5]@24 f4@24 f#4@12 g4@12 g#4@12 a4@4, ~@7 c4@3 c4@3 ~@6 e4@6 ~@3 c5@8]/6", // C F5 Bm C
  S: "[~@2 [b3,e4,g4]@12 [b3,e4,g#4]@6 [d4,f4,g#4]@6 [c4,e4]@6 [c4,f4]@3 [c4,f4]@3 f#4@3 g4@3 g#4@3 a4@3 [d4,f#4,b4]@10, ~@19 c4@3 c4@3 ~@5]/5", // Em E Ddim C F5 Bm
  T: "[~@8 g4@12 a4@12 a#4@12 b4@9 ~@3 [e4,c5]@24 f4@24 [f#4,a4]@47 ~@41, ~ e4@6 ~@3 c5@6 ~@8]/4", // C F#m
  U: "[~@16 f#6@11 ~ e6@46 ~@22, ~@56 g#4@47 ~@89]/4",
})).s("gm_string_ensemble_2").gain(0.29).pan(0.7)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@6 A@4 ~@8 B ~@10 C@3 D@4 ~@17 E@2 ~ F@4 ~@8>".pickRestart({
  A: "[~@14 a4@25 ~ g#4@24 ~@2 g4@24 ~@28 a4@25 ~@49, ~@7 [c4,e4]@81 ~@8]/4", B: "[b3,e4]",
  C: "[[b3,g4]@45 ~@3 c4@95 ~, e4@95 ~@49, ~@48 a4@47 ~@49]/3", // Em
  D: "[a4@8 ~ g#4@7 g4@8 ~@7 a4@8 ~ g4@3 ~@21, [c4,e4]@25 ~@7]/4", E: "[~@8 d4@47 ~@41]/2",
  F: "[~@11 d6@43 ~@50 [b4,g#6]@44 ~@44, ~@4 a5@21 ~@3 b5@46 ~@22, ~@11 g6@22 ~@159]/4", // E
})).s("gm_string_ensemble_2").gain(0.14).pan(0.7)

// other · violin
const violin = note("<A@6 ~@50 B@6 C@6>".pickRestart({
  A: "[~@17 e6@63 ~ d6@14 c6@13 ~ d6@12 e6@63 ~ d6@14 c6@13 ~ d6@11 ~ e6@52 ~@11]/6",
  B: "[~@9 g6@23 f#6@25 e6@48 g#6@61 ~ f#6@14 e6@16 ~ f#6@15 g#6@64 ~@11]/6", C: "[~@33 e6@31 ~ c#7@191 ~@32]/6",
})).s("gm_violin").gain(0.26)

// chords · drawbar organ
const drawbar_organ = note("<~@15 A B C D E F G H I J K L M@2 N@3 ~@8 O@3 P@8 Q@6 ~@11>".pickRestart({
  A: "[a4,c5,e5] [a4,c5,f5]", B: "[a4,d5,f#5]", C: "[b4,f#5]@47 ~", D: "[g4,b4,e5]", E: "[a4,c5]!2", F: "[f#4,a4,d5]",
  G: "[b4,e5]@47 ~", H: "[g#4,b4,e5] [g#4,b4,d5]", I: "~ c5 [a4,c5,f5]@2, [a4,e5]@23 ~@25",
  J: "[f#4,a4,d5] [g4,d5] [g#4,d5] [a4,d5]", K: "[d5,f#5,b5]@7 [f#4,f#5]", L: "[g4,g5] [a4,a5] [a#4,a#5] [b4,b5]",
  M: "[e5@8 ~ [e4,e5]@3 [f4,f5]@12 [f#4,f#5]@6 [g4,g5]@6 [g#4,g#5]@6 [a4,a5]@6, c6@7 ~, a5@59 ~@37]/2", // E F F# G G# A
  N: "[[g4,b4]@47 ~@49 [d4,f#4]@47 ~, e5@2 ~, ~@24 [a4,c5]@47 ~]/3", // G D Am
  O: "[~@5 c5@3 [a4,c5,f5]@6 [f#4,a4,d5]@3 [g4,d5]@3 [g#4,d5]@3 [a4,d5]@3 [d5,f#5,b5]@10, ~@8 [a4,e5]@23 ~@113]/3", // F D G5 G#dim D5 Bm A5
  P: "[~@2 [f#4,f#5]@6 [g4,g5]@12 [a4,a5]@12 [a#4,a#5]@12 [b4,b5]@12 e5@17 ~ [e4,e5]@6 [f4,f5]@24 [f#4,f#5]@12 [g4,g5]@12 [g#4,g#5]@12 [a4,a5]@12 [b4,e5,g5]@47 ~ [g#4,b4,e5]@24 [g#4,b4,d5]@24 ~@12 c5@12 [a4,c5,f5]@24 [f#4,a4,d5]@12 [g4,d5]@12 [g#4,d5]@12 [a4,d5]@12 [d5,f#5,b5]@40, ~@14 c6@21 ~@61, ~@56 a5@60 ~@132 [a4,e5]@23 ~@113]/8", // F# G A A# B E F F# …
  Q: "[~ [f#4,f#5]@3 [g4,g5]@6 [a4,a5]@6 [a#4,a#5]@6 [b4,b5]@6 e5@8 ~ [e4,e5]@3 [f4,f5]@12 [d5,f#5,a5]@24 [b4,e5,g5]@24 [a3,c5,e5,a5]@24 ~@20, ~@7 [a5,c6]@6 ~@23]/6", // F# G A A# B E F D …
})).s("gm_drawbar_organ").gain(0.3)

// chords · piano
const piano = note(`<
  ~@15 A B C D E F G H I J K L M N O P@2 ~@8 Q R S T U V W X Y Z AA AB AC AD@2 AE@2 ~@11
>`.pickRestart({
  A: "[a4,c5,e5] ~@5 [a4,c5] ~@5 [a4,c5,e5]@2 ~@4 [a4,c5,e5]@2 ~@4 [a4,f5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@4, ~@6 e5@2 ~@16 c5 ~@23", // Am Dm F
  B: "[d5,f#5] ~@5 [a4,d5,f#5]@2 ~@4 [a4,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4, a4@2 ~@10 d5 ~@35", // D
  C: "[f#4,d5] ~@5 [b4,d5] ~@5 [f#4,b4,d5]@2 ~@4 [f#4,b4,d5]@2 ~@4 [f#4,b4,d5]@2 ~@4 [f#4,b4,d5]@2 ~@4 [f#4,b4,d5]@2 ~@4 [f#4,b4]@2 ~@4, b4@2 ~@4 f#4@2 ~@34 d5 ~@5", // D Bm B5
  D: "[g4,b4]@2 ~@4 [b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4] ~@5, e5 ~@5 g4 ~@35 e5@2 ~@4", // G E5 Em G
  E: "[a4,e5] ~@2 [c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~@2, c5 ~@5 a4 ~@41", // A5 C Am F
  F: "[a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@3 ~@3 [a4,d5,f#5]@2 ~@4", // D
  G: "[b4,e5,g5] ~@5 [b4,g5]@2 ~@4 [b4,e5,g5] ~@5 [b4,e5,g5] ~@5 [b4,e5,g5] ~@5 [b4,e5,g5] ~@5 [b4,e5] ~@5 [b4,e5,g5] ~@5, ~@6 e5 ~@29 g5@2 ~@10", // Em E5 Em
  H: "[b4,e5,g#5]@2 ~@4 [b4,e5,g#5]@2 ~@4 [b4,e5,g#5]@2 ~@4 [b4,e5,g#5]@3 ~@3 [d5,f5,g#5]@10 ~@2 [d5,f5,g#5]@6 b4@3 ~@3, ~@3 b4@2 ~", // E Ddim
  I: "[a4,c5,e5] ~@5 [a4,e5]@2 ~@4 [a4,c5,e5]@2 ~@4 [a4,c5,e5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@4, ~@6 c5 ~@41", // Am A5 Am F
  J: "[a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2", // D
  K: "[d5,f#5] ~@5 [d5,f#5] ~@5 [b4,d5,f#5]@2 ~@4 [b4,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4, b4@2 ~@4 b4@2 ~@10 d5 ~@29", // D Bm B5 Bm
  L: "[b4,e5] ~@5 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5] ~@5 [g4,b4,e5] ~@5 [g4,e5]@2 ~@4 [g4,b4] ~@5, g4@2 ~@34 b4 ~@5 e5@2 ~@4", // E5 Em C G
  M: "[a4,c5,e5] ~@5 [a4,c5,e5] ~@5 [c5,e5] ~@5 [a4,c5,e5] ~@5 [a4,c5,f5] ~@5 [a4,c5,f5] ~@5 [a4,c5,f5] ~@5 [a4,c5] ~@5, ~@6 a4 ~@14 f5 ~@2", // Am C Am F Am
  N: "[a4,d5,f#5]@2 ~@4 [a4,d5,f#5] ~@5 [d5,f#5] ~@5 [a4,f#5]@2 ~@4 [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@5, ~@12 a4@2 ~@4 d5 ~@29", // D
  O: "~ [b3,e4,g4]@41 ~@6, e2@41 ~@7", // Em
  P: "[[a3,c4,e4,g4]@16 a3@7 ~@3 c4@5 ~, a2@18 ~@5 a3@8 ~, ~ [d3,d4], ~@48 c4@29 ~@19, ~@24 f#4@7 ~]/2", // Am7 D
  Q: "~@8 [a4,c5,e5] ~@5 [a4,e5]@2 ~@4 [a4,c5,e5]@2 ~@4 [a4,c5,e5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 ~@2, ~@14 c5 ~@33", // Am A5 Am F
  R: "~ [a4,c5,f5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~", // F D
  S: "~@2 [a4,d5,f#5]@2 ~@4 [d5,f#5] ~@5 [d5,f#5] ~@5 [b4,d5,f#5]@2 ~@4 [b4,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@2, ~@8 b4@2 ~@4 b4@2 ~@10 d5 ~@21", // D Bm B5 Bm
  T: "~@2 [b4,d5,f#5]@2 ~@4 [b4,e5] ~@5 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@2 ~@4 [g4,b4,e5] ~@5 [g4,b4,e5] ~@5 [g4,e5]@2 ~@2, ~@8 g4@2 ~@34 b4 ~@3", // Bm E5 Em C
  U: "~@2 [g4,b4] ~@5 [a4,c5,e5] ~@5 [a4,c5,e5] ~@5 [c5,e5] ~@5 [a4,c5,e5] ~@5 [a4,c5,f5] ~@5 [a4,c5,f5] ~@5 [a4,c5,f5] ~@3, ~ e5 ~@8 a4 ~@13", // G Am C Am F
  V: "~@2 [a4,c5] ~@5 [a4,d5,f#5]@2 ~@4 [a4,d5,f#5] ~@5 [d5,f#5] ~@5 [a4,f#5]@2 ~@4 [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@3, ~@2 f5@2 ~@16 a4@2 ~@4 d5 ~@21", // Am D
  W: "~@2 [a4,d5,f#5] ~@5 [b4,g5] ~@5 [e5,g5] ~@5 [b4,e5,g5]@2 ~@4 [b4,e5,g5] ~@5 [b4,g5]@2 ~@4 [b4,e5,g5]@2 ~@4 [b4,g5]@2 ~@2, ~@8 e5@2 ~@4 b4@2 ~@16 e5 ~@11 e5 ~@3", // D Em
  X: "~@2 [e5,g5] ~@5 [b4,e5]@2 ~@4 [b4,e5,g#5]@2 ~@4 [b4,e5,g#5]@3 ~@3 [b4,e5,g#5]@2 ~@4 [d5,f5,g#5]@9 ~@3 [d5,f5,g#5]@4, ~@2 b4@2 ~@4 g#5 ~@39", // Em E5 E Ddim
  Y: "~@2 [d5,f5,g#5]@2 ~@4 [c5,e5,a5] ~@5 [c5,e5,a5] ~@5 [c5,e5,a5] ~@5 [c5,e5,a5] ~@5 [c5,f5,a5] ~@5 [c5,f5,a5] ~@5 [c5,f5,a5] ~@3", // Ddim Am F
  Z: "~@2 [c5,f5,a5] ~@5 [f#5,a5] ~@5 [f#5,a5] ~@5 [f#5,a5] ~@5 [f#5,a5] ~@5 [c5,f#5,a5] ~@5 [f#5,a5] ~@5 [c5,f#5,a5] ~@3, ~@4 c5 ~@2 c5 ~@2 c5 ~@2 c5 ~@5 c5 ~@4", // F F#m F#dim F#m F#dim
  AA: "~@2 [f#5,a5] ~@5 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@4 [b4,d5,f#5]@2 ~@2, ~ c5 ~@22", // F#m Bm
  AB: "~@2 [b4,f#5]@2 ~@4 [b4,e5,g5]@2 ~@4 [b4,e5,g5]@2 ~@4 [b4,g5]@2 ~@4 [e5,g5] ~@5 [e5,g5] ~@5 [e5,g5] ~@5 [e5,g5] ~@3, ~@2 d5 ~@17 e5 ~@5 b4@2 ~@4 b4@2 ~@4 b4@2 ~@4 b4@2 ~@2", // B5 Em
  AC: "~@2 [b4,e5,g5] ~@5 [c5,e5,a5] ~@5 [e5,a5] ~@5 [c5,e5,a5] ~@5 [e5,a5] ~@5 [c5,a5]@2 ~@4 [f5,a5] ~@5 [f5,a5] ~@3, ~@14 c5@2 ~@10 c5@2 ~@4 f5 ~@5 c5@2 ~@4 c5@2 ~@2", // Em Am A5 Am A5 F
  AD: "[~ [c5,f5,a5] ~@2 [d2,c4,f#4,a4]@22 ~@22]/2", // F D7
  AE: "[~@15 a4@37 ~@44, ~@9 a2@43 ~@44, ~@11 a3@41 ~@44, ~@12 c4@41 ~@43, ~@13 e4@39 ~@44]/2",
})).s("gm_piano").gain(0.3).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@15 A B C D E F G H I J K L M N O ~@10 P@7 Q@2 ~@19>".pickRestart({
  A: "a3@4 ~@8 [c4,e4]@6 a3@4 ~@2 [c4,f4]@11 ~ f4@6 c4@3 ~@3, e4@5 ~@19, ~@3 a3@5 ~@4 a3@10 ~@2", // C F5
  B: "f#4@6 ~@12 a3@4 ~@2 f#4@6 ~@6 f#4@6 a3@3 ~@3, a3@2 ~ a3@2 ~, ~@6 d4@14 ~@10 d4@15 ~@3, ~@6 f#4@5 ~@13",
  C: "[f#4,b4]@3 d4 ~@2 d4@2 ~ d4@2 ~ [d4,f#4]@3 b3@3 ~@3 f#4@2 ~, d4@3 ~@9 b4@20 ~@16, ~@12 f#4@12 ~@12 [d4,b4]@11 ~", // B5 D G
  D: "~@18 e4@5 ~ [b3,g4]@6 e4@3 ~@9 e4@4 ~@2, [e4,g4]@11 ~ g4@11 ~@25, ~@3 b3@8 ~@7 [b3,g4]@5 ~", // Em
  E: "~@6 a4 ~@5 [c4,e4,a4]@4 ~@2 c4@2 ~@4 [c4,f4,a4]@2 ~@4 [c4,f4,a4]@3 ~@3 [c4,f4]@6 c4@4 ~@2, ~@18 a4@5 ~", // Am F F5
  F: "a4@6 ~@3 f#4@2 ~ [f#4,a4]@6 ~@6 f#4@6 d4@3 ~@3 [f#4,a4]@6 d4@3 ~@3, f#4@5 ~ d4@5 ~ d4@4 ~@2 d4@11 ~@7 d4@4 ~@8", // F#m
  G: "b3@2 ~@8 b3 ~@3 e3 ~, ~ e3@2 e4@2 ~@3, ~@6 [b3,g4]@9 ~@3 [b3,e4,g4]@5 ~, ~@12 e3@7 ~@5", // Em
  H: "~@6 e3@6 e4@6 e3@6 ~@6 e3@6 ~@6 g#4@3 e3 ~@2, [b3,g#4]@20 ~@4 [d4,f4,g#4]@11 ~ d4@9 ~@3, ~@13 f4@2 ~", // E Ddim
  I: "~@12 [c4,a4]@6 e4@4 ~@8 f4@5 ~@7 f4@4 ~@2, [c4,a4]@10 ~@14 [c4,a4]@11 ~ [c4,a4]@10 ~@2, ~@6 a3@19 ~@23", // F
  J: "[c4,f#4,a4]@10 ~@2 [f#4,a4]@6 d4@5 ~@7 f#4@5 ~ [d4,a4]@6 f#4@3 ~@3, ~@12 [d4,a4]@5 ~@7", // F#dim F#m D5
  K: "~@6 d4@4 ~@20 d4@3 ~@9 b3@3 ~@3, b3@18 f#4@11 ~@19, ~@12 [d4,b4]@17 ~@7 [d4,f#4,b4]@10 ~@2, ~@8 b3@5 ~@3", // G Bm
  L: "[e4,g4]@12 e4@3 ~@3 e4@6 ~@6 e4@3 ~@9 b3@4 ~@2, b3@16 ~@8 b3@15 ~@9, ~@12 g4@19 ~@5 [e4,g4]@10 ~@2", // Em
  M: "~@6 c4@2 ~@22 c4@3 ~@3 c4@5 ~ c4@6, a3@3 e4@2 ~ f4@2, ~@2 a4@3 ~@3, ~@12 c4@12 a3@13 ~@11",
  N: "~@6 c4@3 ~@3 c4@6 ~@12 f#4@4 ~@2 [c4,a4]@6 f#4@4 ~@2, d3@6 [f#4,a4]@6 c4@5 ~@7, ~@9 d3@14 ~", // F F#m
  O: "[e3,b3,e4,g4]@41 ~@7", // Em
  P: "[~@20 [c4,a4]@6 e4@4 ~@8 f4@5 ~@7 f4@4 ~@2 [c4,f#4,a4]@10 ~@2 [f#4,a4]@6 d4@5 ~@7 f#4@5 ~ [d4,a4]@6 f#4@3 ~@9 d4@4 ~@20 d4@3 ~@9 b3@3 ~@3 [e4,g4]@12 e4@3 ~@3 e4@6 ~@6 e4@3 ~@9 b3@3 ~@9 c4@2 ~@22 c4@3 ~@3 c4@5 ~ c4@6 ~@6 c4@3 ~@3 c4@6 ~@6 c4@6 f#4@4 ~@2 [c4,a4]@6 f#4@3 ~@15 [e4,g4]@6 ~@12 b3@4 ~@2 [b3,e4,g4]@4, ~@8 [c4,a4]@10 ~@14 [c4,a4]@11 ~ [c4,a4]@10 ~@26 [d4,a4]@10 ~@26 [d4,b4]@17 ~@7 [d4,f#4,b4]@10 ~@38 [e4,g4]@10 ~@14 c4@12 a3@13 ~@11 d3@14 ~@4 d3@28 ~@2 e3@21 ~@3 e3@15 ~, ~@14 a3@18 ~@72 b3@18 f#4@11 ~@31 g4@18 ~@30 a4@18 ~@106, ~@128 b3@15 ~@9 b3@16 ~@8 b3@15 ~@9 a3@18 e4@12 ~@6 f4@12 ~@12 [f#4,a4]@12 ~@36 b3@4 ~@2 b3@11 ~@11]/7", // F F#dim F#m D5 Em F Em F …
  Q: "[~@2 e3 ~@11 e3@6 e4@6 e3@3 ~@3 d4@6 e3@6 ~@6 f4@4 ~@42, ~@8 [b3,g#4]@21 ~@3 g#4@21 ~@43, ~@32 f4 ~@11 d4@10 ~@42, ~@47 e3@5 ~@44]/2", // E
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.4)

// other · timpani · D
const timpani = note(`<
  ~@14
  [~@24 f#2 ~@4 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 [d2,f#2]]
  ~@24
  [~@32 f#2 ~@2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2 d2 f#2]
  [d2 f#2 d2 f#2 d2 f#2 d2 [d2,f#2] ~@40]
  ~@27
>`).s("gm_timpani").gain(0.28).pan(0.3)

// other · timpani · soft notes
const timpani_soft = note("<~@14 [~@26 d2 f#2 d2 ~@19] ~@24 [~@34 d2 ~@13] ~@28>").s("gm_timpani").gain(0.19).pan(0.3)

// other · tremolo strings
const tremolo_strings = note(`<
  [~@17 g4!3 ~ g4!12 ~ g4!13 ~]
  [g4!12 ~ g4!8 g#4!4 ~ g#4!13 ~ g#4!8]
  [g#4!4 ~ g#4!12 ~ g#4!7 g4!6 ~ g4!12 ~ g4!3]
  [g4!9 ~ g4!13 ~ g4!5 g#4!7 ~ g#4!11]
  [g#4 ~ g#4!13 ~ g#4!12 ~ g#4!4 b4!8 ~ b4!6]
  [b4!7 ~ b4!3 ~@37]
  ~@62
>`).s("gm_tremolo_strings").gain(0.17).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@15 A@7 B C A@5 D ~@10 E F@6 G H I@3 J K ~@14>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x ~@4", C: "~ x ~@16 x ~@5 x ~@17 x ~@5", D: "x", E: "~@9 x ~@16 x ~@5 x ~@15",
  F: "~ x ~@2 x ~@8 x ~@2 x ~@7", G: "~ x ~@2 x ~@8 x ~@10", H: "~@8 x ~@8 x ~@11 x ~@2 x ~@8 x ~@6",
  I: "~@5 x ~@2 x ~@8 x ~@11 x ~@2 x ~@8 x ~@6", J: "~@5 x ~@2 x ~@17 x ~@5 x ~@15", K: "~ x ~@2 x ~@19",
})).gain(0.49)

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

// drums · low tom
const low_tom = s("lt").struct("<~@22 [~@18 x ~ x ~ x!2] ~@24 [~@11 x] [x ~ x!2 ~@20] ~@19>").gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 [~@15 x ~ x!2 ~@2 x ~@2] ~@24 [~@19 x ~ x!2 ~] [~ x ~@22] ~@19>").gain(0.49)

// drums · open hat
const open_hat = s("oh").struct("<~@15 A B@6 C A B@5 ~@11 D E@6 F D E@4 G ~@14>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4", D: "~@7 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  E: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", F: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@10", G: "~ x ~@22",
})).gain(0.21)
// … 17 more lines

More by Camaleonti