Strudelify

Malinconoia

Masini

KeyG majorTempo120 bpm
0:00/0:00
// Malinconoia — Masini
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 135 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// other · overdriven guitar
const overdriven_guitar = note("<~@58 A@4 ~@43 B@4 ~@3 C@5 D E F@2 ~@14>".pickRestart({
  A: "[~@18 [c2,c3]@4 [d2,d3]@4 [d#2,d#3]@11 ~ [d2,d3]@4 [c2,c3]@15 ~ b2@54 ~@2 b2@4 ~@10]/4", // C D D# D C
  B: "[~@21 c3@3 [d2,d3]@5 [d#2,d#3]@11 ~ d2@3 [c2,c3]@15 ~@2 b2@54 ~ b2@5 ~@7, ~@20 c2@3 ~@17 d3@4 ~@84]/4", // D D# C
  C: "[~@13 d5@4 g5@4 a5@3 g5@5 ~ a5@12 g5@2 ~ a5@28 g5@2 ~ a5@6 a#5@6 a5@4 ~@2 a5@12 g5@2 a5@29 ~@2 a5 a5@20]/5",
  D: "~@2 a5 ~ g5@2 a5@2 e5@2 g5@19 d#5 ~@2", E: "~@27 d5@2 e5@2 ~, ~@13 e5 ~@2", F: "[a#4@12 g4@27 ~@25]/2",
})).s("gm_overdriven_guitar").gain(0.64).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@21 A@2 B@4 ~ C@5 ~ D E F ~@23 G@6 ~@41 H@6 ~@22>".pickRestart({
  A: "f#3/2", B: "[d4@29 ~@3 e4@16 ~@16 g3@63 ~, f3@57 ~@71, a3@25 ~@7 a3@28 ~@4 c4@60 ~@4, ~@24 d4@21 ~@19]/4",
  C: "[~@16 d4@15 ~@3 [g3,d4]@12 e3@18 [a#3,c#4]@33 ~@31 e4@32, b3@39 ~@73 [a3,b3]@48, a3@30 ~@16 g3@53 ~@61]/5", // G5 A#m Asus2
  D: "[e4,g4]", E: "[g3,a3], [c4,e4]@29 ~@3", F: "b3@9 a3@7, f#3@15 ~",
  G: "[~@25 b5@16 ~ d6@16 g6@55 ~@9 b4@32 d5@31 ~@7]/6", H: "[~@28 b5@16 ~ d6@16 g6@55 ~@9 b4@32 d5@31 ~@4]/6",
})).s("gm_string_ensemble_1").gain(0.24)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@19 A@2 B@2 C@2 D@2 E F G ~ H ~ I J ~@100>".pickRestart({
  A: "[g3,a3,b3,d4]/2", B: "[b3,d4]/2", C: "[b3@55 ~@9]/2", D: "[~@13 d#4@16 ~@3]/2", E: "[g3,a3,d4]", F: "e4@15 ~@17",
  G: "~@7 b3@9", H: "~@8 g3@7 ~", I: "[e3,g3,b3]", J: "b3",
})).s("gm_string_ensemble_1").gain(0.08)

// chords · piano
const piano = note(`<
  ~ A@4 B@2 C D E F G H I J K L M N O P Q@2 R@3 S T@2 U V W X@2 Y Z AA@3 AB@6 AC@4 AD@6 AE@8 AF@4 ~@7 AG@5 AH@7 AI@4
  AJ@6 AK@6 AL@6 AM@2 AN@8 AO@6 AP@3 AQ@8
>`.pickRestart({
  A: "[~@15 b4@11 ~@5 [g4,a4,b4,d5]@14 ~@10 g3@8 ~ b4@15 [f#4,d5]@8 ~@9 [b4,d5]@14 ~@9 f#3@5 ~@4, g3@19 ~@28 [g4,a4,b4]@11 ~@5 f#3@22 ~@2 f#3@29 ~@12, ~@63 [f#4,d5]@15 ~ b4@14 ~@2 f#4@14 ~@2 [f#4,b4,d5]@13 ~@4]/4", // G D Bm G D Bm
  B: "[[f3,a4,b4]@15 ~ [f4,a4,b4]@11 ~@5 [a4,b4]@24 ~@8, ~@15 d5@13 f3@21 ~@15, ~@8 e5@3 ~@5]/2", // Bm7b5 Asus2
  C: "[c4,c5,d5,e5]@2 [g4,c5,d5,e5] c4, g4@13 ~@19", // C
  D: "[c5,d5]@14 ~@10 d#3@5 ~@3, d#3@21 ~@11, ~@16 [c5,d5,d#5]@13 ~@3", E: "g3@2 [g4,a4,b4] g3",
  F: "[f#3,e4,a4,b4]@4 [b3,a4,b4,d5]@3 ~", G: "[b4,d5,e5]@14 ~@2 [g4,b4,d5,e5]@9 ~@7, e3 ~",
  H: "~@16 [g4,a#4,c#5,e5]@9 ~@7", I: "[a4,b4]@14 ~@2 b4@7 ~@9", J: "[f#3,b4]@15 ~@2 [a4,b4]@15, ~@16 [f#3,e5]@15 ~",
  K: "e3@17 ~@7 e3@8, b4@13 ~@19", L: "[b4,e5,g5]@15 ~ [e5,g5]@12 ~@4",
  M: "[g4,c5,e5]@15 ~ [g4,a4,c5,e5]@8 d3@5 ~@3, d3@19 ~@13", N: "[f#4,b4]@15 ~ [d3,a4]@12 ~@4",
  O: "~ b4@13 ~@2 [g4,a4,b4,d5]@14 ~@2, g3@5 ~@3, d5@13 ~@19", // G
  P: "~ [g4,a4,b4]@14 ~@2 g4@9 ~@6, d5@14 ~@2 [a4,b4,d5]@9 ~@7", // G Bm7
  Q: "[~ b4@14 ~@18 [f#4,b4,d5]@14 ~@2 [f#4,b4,d5]@8 f#3@7, ~ f#3@23 ~@4 f#3@21 ~@15, ~@17 [f#4,b4,d5]@14 ~@33]/2", // Bm
  R: "[~ [f3,f4,a4,b4,d5]@16 [f4,d5]@12 ~@4 [f4,a4,b4,e5]@15 ~ [a4,b4,d5]@14 ~@18 [g4,c5,d5,e5]@9 ~@6, ~@17 [a4,b4]@15 ~@17 f4@11 ~@36, ~@29 f3@36 ~@31]/3", // Bm7b5 Dm Fmaj7 Bm7 C Asus2
  S: "~ d#3@16 [g4,c5,d5,d#5]@8 d#3@7", // Cm
  T: "[~ [g3,g4,a4,b4,d5]@14 ~@3 b4@5 c5@6 d5@4 ~@2 e5@12 ~@2 [f#3,a4,b4,d5]@12 ~@3, ~@17 g3@17 b4@14 ~@16, ~@17 g4@12 ~@4 [f#3,a4]@13 ~@18]/2", // G Bm7 F#m
  U: "~ [b4,d5]@15 ~@8 e3@8, ~ e3@20 ~@11, ~@17 [e4,d5]@13 ~@2, ~@17 g4@10 ~@5", // Bm E7
  V: "~ g4@15 ~ [e4,g4,a#4,c#5]@12 ~@3, ~ f#3@28 ~@3", // Edim
  W: "~ a4@7 ~@6 d5@2, ~ [g3,b4]@14 ~@2 g3@15, ~@17 [g4,b4]@12 ~@3, ~@23 c5@8 ~", // G
  X: "[~@2 e5@13 ~@2 [a4,b4,d5]@13 ~@3 [e4,g4]@14 ~@2 e4@8 e3@7, ~ a4@14 ~@18 e3@16 ~@15, ~@2 f#3@33 ~@29]/2", // Bm7 Em
  Y: "~@17 [b4,e5,g5]@8 c#3@7, ~@2 c#3@19 ~@11", Z: "~ a4 [c5,e5]@15 [g4,a4,c5,e5]@9 d3@6, ~ d3@17 ~@14",
  AA: "[~@3 [d3,f#4]@17 [d3,f#4,a4]@17 ~ [g4,a4,b4,d5]@16 ~@26 g4@8 [g4,a4,b4,d5]@8, ~@2 b4@17 ~@19 g3@29 ~@4 g3@19 ~@6, ~@55 [a4,b4]@24 ~@17]/3", // D G Asus2
  AB: "[~@5 a#4 ~@3 [f#4,b4,d5]@16 ~@17 f#3@17 ~@8 f#3@7 ~@2 [b4,d5]@16 ~ d5@21 ~@12 [f4,b4,d5]@8 f3@9 e3@16 ~@8 e3@8 ~ [d#3,g4,c5,d#5]@16, g3@9 f#3@27 ~@40 f3@25 ~@91, ~@25 b4@28 ~@6 [b4,d5]@13 ~@20 b4@21 ~@30 c5@15 ~ c5@15 ~@18, ~@13 d5@13 ~@70, ~@26 f#4@23 ~@27 f4@35 ~@32 [g4,e5]@31 ~@18]/6", // Bm Bdim Cm Bm C
  AC: "[~@9 d#3@4 ~@5 [g4,b4,d5]@16 [g4,b4,d5]@15 ~@2 [g3,d5]@16 ~ [f#4,b4,d5]@11 ~@6 [g4,b4,d5,e5]@15 ~@18 [g4,b4,d5,e5]@10, ~ [g4,c5,d#5]@13 ~@4 g3@22 ~@11 g4@9 ~@8 f#3@17 e3@21 ~@4 e3@14 ~@4, ~@51 b4@4 ~@46 [g4,b4,d5,e5]@16 ~@11]/4", // G G5 Bm Em7 Cm Em7
  AD: "[~@18 d5@4 ~@2 b3@16 [a4,b4,d5,f#5]@8 b3@9 g4@12 ~@16 d4@4 [g4,b4,d5]@14 ~@2 [g4,b4,d5]@12 ~@4 [b4,d5]@12 ~@8 b4@3 ~ g4@4 g3@4 [f#4,d5]@13 ~@23 f#4 ~@2, ~ e3@21 ~@2 d5@9 ~@40 g4@12 ~@36 g4@11 ~@5 g4@7 ~@25 [f#4,b4,d5]@19 ~@4, ~@6 [b4,g5]@16 ~ a4@15 ~@19 [d3,a4,c5,e5]@17 ~@3 [a4,c5,e5]@9 ~@59 [b4,d5]@8 b4 ~@38, ~@12 f#5@10 ~ [b4,f#5]@10 ~@36 d4@12 d3@7 ~ g3@16 ~@12 g3@11 ~@5 g3@13 ~@7 f#3@16 ~@16 f#3@7]/6", // Bm7 G Bm D Bm Em Am Bm …
  AE: "[~@17 f#3@7 ~@21 f4@4 b4@4 ~@20 [b4,d5]@8 f3@8 ~ [g4,c5,e5]@14 ~@9 c3@8 ~ [g4,a#4,c5]@11 ~@5 a#4@8 ~@8 [g4,b4,d5]@14 ~@25 b4@7 ~@2 [f#4,d5]@12 ~@4 [e4,g4,b4,d5]@15 ~@17 e3@4 e4@2, ~@5 b4@14 ~@6 f3@11 ~@5 f3@19 ~ f3@13 ~@15 c3@17 ~@15 d#3@11 ~ d#3@13 ~@8 g3@19 ~@13 g3@16 ~@54, ~@9 [f#4,d5]@11 ~@5 [f4,b4]@18 ~@10 b4@14 ~@103 b4@19 ~@12 b4@11 ~@22 [e4,g4,b4,d5]@19 ~@3, ~@26 d5@20 ~@7 d5@18 ~@50 d#5@14 ~@121, ~@53 f4@11 ~@5 f4@13 ~@23 [g4,c5,e5]@11 ~@21 [g4,c5,d#5]@10 ~@22 [g4,d5]@19 ~ g4@9 ~@3 f#3@17 e3@20 ~@18]/8", // Bm C C7 G D Em7 D Fdim …
  AF: "[~@2 g4@5 b4@2 ~ [e4,g4,d5]@8 e3@8 [a4,b4,d5,f#5]@15 ~ [a4,b4,d5,f#5]@12 b3@4 [a3,g4,a4,c5,e5]@13 ~@3 [a4,c5,e5]@26 ~@10 [g4,a4,c5,e5]@10 ~@8, ~@9 b4@9 ~@8 b3@19 ~@29 g4@23 ~@31, ~@74 d4@19 ~@35, ~@37 d3@5 ~@22]/4", // Em7 Bm7 Am7 Am Am7
  AG: "[~@27 [a4,b4,d5]@15 b4@6 c5@5 d5@3 ~@3 a#4 b4@13 ~@2 d5@13 ~@3 [g4,b4,d5,e5]@15 ~@8 e3@8 ~ [g4,b4]@15 ~ g4@11 ~@5 [g3,a4,b4,d5]@5, ~@27 g3@31 e5@15 ~@33 d5@11 ~@21 b4@12 ~@10, ~@27 g4@13 ~@17 a4@4 ~@13 [a4,b4]@12 ~@20 [g4,b4,e5]@14 ~@40, ~@59 f#3@28 ~@4 e3@18 ~@14 [c#3,e5]@28 ~@9]/5", // Bm7 Em7 G Asus2 Em C#m
  AH: "[~@10 b4@6 c5@5 d5@3 ~@3 b4@14 ~ [b4,d5]@13 ~@6 d5@13 ~@8 e3@4 ~@5 [g4,b4,e5]@15 ~@8 c#3@5 ~@4 [g4,a4,c5,e5]@14 ~@42 [a4,c5,e5]@5 ~@35 g3@5, ~@10 g3@15 a4@15 ~@2 a4@18 g4@15 ~@31 [g4,b4,e5]@12 ~@21 [a4,c5,e5]@19 ~ g4@7 ~ [g4,c5,e5]@8 g4@8 ~@4 [g4,a4,b4,d5]@16 ~@21, ~@26 f#3@32 b3@3 b4@5 ~@97 a4@13 ~@27 [a4,b4]@21, ~@26 e5@15 ~@18 e3@20 ~@12 c#3@18 ~@14 d3@22 ~@6 d3@18 ~@2 [d3,d4]@13 ~@4 g3@27 ~@9, ~@27 a#4 ~@29 b4@2 e4@14 ~@2 [e4,g4,b4,d5]@11 ~@53 g4@16 d4@13 ~@56]/7", // Bm Em Am7 Am Em Am C G …
  AI: "[~@3 g4@8 ~@12 a#4 ~@3 [f#4,b4,d5]@15 ~@17 f#3@16 ~@8 f#3@7 ~ [b4,d5]@16 [b4,d5]@20 ~, ~@11 [g4,a4,b4,d5]@11 ~@5 f#3@26 ~@38 f3@24 ~@13, ~@19 g3@9 ~@15 [b4,d5]@27 ~@5 [b4,d5]@12 ~@41, ~@43 f#4@22 ~@26 f4@34 ~@3]/4", // Bm G Bm
  AJ: "[~@11 [f4,b4,d5]@8 f3@8 ~@24 e3@8 ~ [g4,c5,d#5]@15 ~@8 d#3@4 ~@5 [g4,b4,d5]@15 [g4,b4,d5]@14 ~@3 [g3,d5]@15 ~ f#3@16 [g4,b4,d5,e5]@14 ~@18 [g4,b4,d5]@4, ~@27 e5@28 ~@132 e5@5, ~@27 c5@15 ~ c5@14 ~@67 b4@4 ~@12 b4@9 ~@43, ~@28 g4@30 ~@18 [g4,c5,d#5]@12 ~@36 g4@9 ~@6 [f#4,d5]@10 ~@22 [g4,b4,d5,e5]@15 ~@6, ~@28 e3@18 ~@14 d#3@16 ~@15 g3@21 ~@44 e3@20 ~@4 e3@12]/6", // Bdim Cm G G5 Em7 G Cm D …
  AK: "[~@22 d5@4 ~@2 [b4,d5,f#5]@10 ~@6 [a4,b4,d5,f#5]@8 b3@8 g4@12 ~@16 d4@4 [g4,b4,d5]@14 ~@2 [g4,b4,d5]@12 ~@4 [b4,d5]@12 ~@8 b4@3 ~ g4@4 g3@4 [f#4,d5]@13 ~@19 f#3@4, ~@6 e3@20 ~@2 [b3,a4]@16 ~@16 [d3,a4,c5,e5]@17 ~@3 [a4,c5,e5]@10 ~@58 [b4,d5]@8 b4 ~@35, ~@11 [b4,g5]@16 ~@45 d4@12 d3@7 ~ g3@16 ~@12 g3@11 ~@5 g3@13 ~@7 f#3@16 ~@20, ~@17 f#5@10 ~@49 g4@12 ~@36 g4@11 ~@5 g4@7 ~@25 [f#4,b4,d5]@19 ~]/6", // Bm Bm7 G Bm D B7 Am Bm …
  AL: "[f#4 ~@19 f#3@7 ~ f4@16 ~@4 f4@4 b4@4 ~@20 [b4,d5]@8 f3@8 ~ [g4,c5]@14 ~@9 c3@8 ~ [g4,a#4,c5]@11 ~@4 [g4,a#4,c5,d#5]@9 ~@8 g4@14 ~ [g4,b4,d5]@17 g3@3, ~@4 b4@7 ~@3 [b4,d5]@10 ~@4 d5@9 ~@9 e5@7 ~@9 d#5@7 ~@27, ~@12 [f#4,d5]@11 ~@5 f3@10 ~@6 f3@19 ~ f3@13 ~@15 c3@17 ~@15 d#3@11 ~ d#3@13 ~@7 g3@19 ~@17, ~@28 b4@7 ~@43 [b4,d5]@7 ~@11, ~@56 f4@11 ~@5 f4@13 ~@23 [g4,c5,e5]@11 ~@73]/6", // Bm C5 C7 Cm7 G Bm D Bm …
  AM: "[~@4 b4@7 ~@2 d5@12 ~@4 [e4,g4,b4,d5]@15 ~@17 e3@3, g4@9 ~@3 f#3@16 ~ e3@20 ~@15, ~@12 [f#4,b4]@11 ~@21 e4@17 ~@3, ~@45 [g4,b4,d5]@19]/2", // Em7 B5 G
  AN: "[e4@5 g4@5 b4@2 ~ [e4,g4,d5]@8 e3@8 [a4,b4,d5,f#5]@15 ~ [a4,b4,d5,f#5]@12 b3@4 [a3,g4,a4,c5,e5]@13 ~@3 [d4,g4,a4,c5,e5]@16 ~@8 g4@7 ~ g4@10 ~@22 g4@4 b4@4 g4@7 ~ [f#3,f#4,d5]@16 ~@16 f#4@4 b4@4 ~@4 b4@8 f#4@4 b4@3 ~ d5@3 ~@17 d5@8 f4@4 b4@7, ~@12 b4@9 ~@8 b3@19 ~@29 d3@11 ~@5 g3@21 ~@7 g3@37 ~@23 f#3@33 ~@7 f3@28 ~@7, ~@109 [b4,d5]@15 ~ g4@14 ~@90 f4@14 ~@13, ~@133 d5@18 ~@6 b4@14 ~@2 d5@17 ~@7 d5@13 ~@46]/8", // Em7 Bm7 Am7 D Bm
  AO: "[~@25 b4@4 ~@8 g4@3 ~@13 g4@4 c5@3 ~@2 [g4,d#5]@15 ~ [d#3,g4,c5,d#5]@10 ~@6 d5@14 ~ [g4,b4,d5]@14 ~@2 [g3,g4,d5]@16 [f#4,b4,d5]@12 ~@21 [e4,b4]@16 e3@2, ~ f3@16 f3@13 ~@31 [d#3,c5]@16 ~@17 g3@21 ~@26 f#3@15 ~@2 e3@25 ~@9, ~@5 f4@12 ~@4 f4@9 ~@15 e5@14 ~@133, ~@9 b4@12 ~@8 c3@31 ~@132, ~@13 d5@9 ~@19 c5@12 ~@40 [g4,b4]@15 ~@17 b4@11 ~@21 [e4,g4,b4,d5]@15 ~ [g4,d5]@19]/6", // Cm G G5 Bm E5 Cm G Em7 …
  AP: "[~@9 b4@3 ~@2 e4@7 e3@9 [a4,b4,d5,f#5]@14 ~@2 [a4,b4]@15 ~ a3@24 ~@4 a3@4 g4@2, ~ e4@8 ~@21 b3@33 ~@33, ~@5 g4@8 [g4,b4,d5]@9 ~@23 f#5@12 ~@39, ~@23 d5@6 ~@2 [g4,a4,c5,e5]@16 ~]/3", // Bm7 Asus2 G Am7
  AQ: "[~@14 [a4,c5,e5]@8 ~@9 e5@24 ~@6 [e4,a#4]@28 ~@5 [g3,d4,f4,b4]@26 ~@7 b4@7 [c5,e5]@8 ~@16 [c4,c5,e5]@31 ~@2 d5@45 ~@20, ~@2 a4@11 ~@46 c4@29 ~@39 g4@15 ~@16 g4@4 ~@27 g4@46 ~@21, ~@6 c5@7 ~@17 [c5,d#5]@3 ~@93 d5@8 ~@8 [b4,d5]@20 ~@94, ~@9 g4@11 ~@10 [c4,g4]@26 ~ g3@31 ~@38 g3@35 ~@29 [g3,b4]@46 ~@20]/8", // Am Edim G7 C Cm Bm C5 G
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A@2 ~@2 B C ~ D E F G H I@2 J K L M N@2 O ~@3 P Q ~@2 R S T U V W X ~ Y@2 ~ Z@2 AA ~@3 AB@2 ~@7 AC ~ AD AE ~@7 AF
  ~@11 AG@2 ~@5 AH ~@2 AI AJ@2 ~@3 AK ~@7 AL ~ AM AN ~@22 AO ~@2 AP ~@3
>`.pickRestart({
  A: "[[g4,a4,b4,d5]@12 ~@11 g3@24 d5@12 ~@5, ~@15 [g4,a4,d5]@12 ~@37]/2", B: "[f4,d5]@15 ~@17",
  C: "f4@3 ~ [f4,d5]@2 f3@2", D: "[g4,d#5]@7 ~ g4@6 ~@2", E: "[g4,a4,b4,d5]@7 ~ d5@5 ~@3", F: "d5@15 ~@17",
  G: "g4@7 ~@5 e3@3 ~", H: "[g4,a#4,c#5,e5]@15 ~@9 c#3@8, c#3@9 ~@7",
  I: "[[g4,d5]@14 ~@2 a4@8 g3@8 [a4,e5]@15 ~@9 d5@5 ~@3, g3@8 d5@15 ~@9, ~@16 g4@11 ~@37]/2", // G5 A5
  J: "[g4,d5]@13 ~@3 [g4,b4,d5,e5]@9 ~@7, e5@9 ~@23", K: "~@4 b4@3 ~, c#3@7 ~", L: "a4@15 ~@17",
  M: "d4@3 ~ d4@2 ~@2 [d4,f#4]@6 ~@2, d3@7 ~@9", N: "[~@4 g4@2 ~@6 g3@13 ~@3 g3@4, g4 ~@7, ~ a4@13 ~@50]/2",
  O: "~ [f#4,d5]@14 ~@17", P: "~ [g4,c5,d5,e5]@14 ~@10 c4@7, ~ c4@18 ~@13", Q: "~ [g4,c5,d5,d#5]@15 ~@16",
  R: "~@2 e4@14 ~ b4@11 ~@4, ~ g4@14 ~@17", S: "~@2 [a#4,c#5]@15 ~@15, ~ e4@15 ~@16", T: "~ [g4,d5]@14 ~@17",
  U: "~@2 b4@13 ~@17", V: "~@2 b4@12 ~@3 [g4,b4,d5]@10 ~@5, ~ d5@13 ~@18", W: "~@5 g5@11 ~@16, ~ [b4,e5]@7 ~@8",
  X: "~ [g4,a4]@7 ~@8", Y: "[~@11 d5@12 ~@9, ~@11 g4@10 ~@11]/2", Z: "[~@23 f#4@14 ~@27]/2",
  AA: "~@17 f4@9 ~@6, ~@13 f3@18 ~", AB: "[~@31 b4@2 ~@31]/2", AC: "~ f#4@5 ~@26", AD: "~ f4 ~@30",
  AE: "~@22 c5@3 ~@7, ~@22 d#5 ~@9", AF: "~ g4 a4 ~@2 e5@9 ~@18, d3@11 ~@5, ~ d4@22 ~@9, ~@4 c5@9 ~@19",
  AG: "[~@27 g4@11 ~@26]/2", AH: "~@11 [g4,d5]@21", AI: "~@7 f#4@14 ~@11", AJ: "[~@31 f4@9 ~@24, ~@27 f3@17 ~@20]/2",
  AK: "~@7 b4@2 ~@23", AL: "~@4 f#4@5 ~@23", AM: "~@4 f4 ~@27", AN: "~@25 [c5,d#5]@3 ~@4", AO: "~@2 c5@21 ~@9",
  AP: "~@7 g4@8 ~",
})).s("gm_piano").gain(0.24)

// bass · fretless bass
const bass = note("<~@37 A B C@6 D@2 E@8 F@4 G@5 H I@8 J@6 K@8 L M@6 N@8 O@8 P Q@7 R@2 S@8 ~@3 T@3 ~>".pickRestart({
  A: "~@3 g1@11 ~@2", B: "~@3 g1 ~@3 g1@25",
  C: "[~@5 g1@3 ~ f#1@16 f#2@13 f#1 ~@3 f#1@17 f#2@17 ~@21 f1@4 ~@4 f1@4 f2@24 ~@5 f2@4 ~ e2@24 ~@5 e2@4 d#2@16, ~@19 f2@6 ~@23]/6",
  D: "[~@9 d#2@5 ~@4 g1@16 g2@13 g1 ~@3 g1@13]/2",
  E: "[~@4 f#2@16 e2@21 ~@9 e2 ~@3 e2@22 ~@7 e2@4 b1@23 ~@6 b1@5 ~@8 d1@12 ~@4 d1@8 g1@16 g2@12 g1 ~@3 g1@16 g2@12 g1@4 f#2@18 ~@10 f#1@2 ~@2 f#1@7, ~@121 d2@18 ~@2 d2@17 ~@79 f#2@14 ~@5]/8",
  F: "[~@9 f#2@8 f#1@8 f1@16 f2@12 f1 ~@3 f1@15 ~ f2@17 e2@20 ~@3 c2@4 d2@4 d#2@7]/4",
  G: "[~@5 d2@4 c2@11 ~@6 b1@18 ~@5 b1 ~@3 b1 ~@27 b1@6 ~@3 e1@16 ~@12 e1@4 ~@11 e2@8 e1@4 ~ e2@7 ~ b1@6, ~@26 b2@46 ~@2 b2@13 ~@73, ~@58 b1@22 ~@26 e2@20 e1@13 ~@21]/5",
  H: "~@10 b1@11 ~@5 a1@6",
  I: "[~@10 d1@17 ~@11 d2@8 ~@4 d2@8 g2@64 f#2@54 ~@10 f2@54 ~@16, ~@5 d2@13 ~@110, ~@30 d1@13 ~@3 d1@13 ~@197]/8",
  J: "[~@26 [d#1,d#2,d#3]@25 ~@8 g1@17 ~@6 g1@7 ~ f#1@23 ~@5 f#1@5 e1@25 ~@2 e1@5 c#2@30 ~@2 g1@5]/6", // D#
  K: "[~@18 g1@8 ~ f#1@19 ~@5 f#1@8 e1@32 c#2@32 d2@16 d1@12 d2@4 d1@4 ~@4 d1@6 ~@6 d2@8 ~@4 g1@21 ~@7 g1 ~@3 g1@24 ~@4 g1@3 ~ f#1@5, ~@159 d2@12 d1@12 ~@73]/8",
  L: "~@11 f#2@12 f#1 ~@3 f#1@5",
  M: "[~@11 f#2@16 ~@20 f1@4 ~@4 f1@4 f2@23 ~@5 f2@4 ~ e2@23 ~@4 e2@4 ~ d#2@17 ~@6 d#2@5 ~@4 g1@16 g2@11 g1 ~@4 g1@4, ~@27 f2@23 ~@142]/6",
  N: "[~@12 f#2@16 e2@20 ~@8 e2 ~@3 e2@21 ~@7 e2@4 b1@22 ~@6 b1@4 ~@8 d1@12 ~@4 d1@8 g1@16 g2@12 g1 ~@3 g1@16 g2@12 g1@4 f#2@18 ~@10 f#1@2 ~@2 f#1@4, ~@124 d2@18 ~@2 d2@17 ~@79 f#2@14 ~@2]/8",
  O: "[~@12 f#2@8 f#1@8 f1@16 f2@12 f1 ~@3 f1@15 ~ f2@16 e2@21 ~@3 c2@4 d2@4 d#2@11 ~ d2@4 c2@11 ~@5 b1@18 ~@6 b1 ~@3 b1 ~@27 b1@7 ~@2 e1@15 ~@12 e1@4 ~@4, ~@156 b2@46 ~@2 b2@13 ~@39, ~@189 b1@22 ~@25 e2@20]/8",
  P: "~@8 e2@8 e1@4 ~ e2@7 ~ b1@3, e1@13 ~@19",
  Q: "[~@13 b1@11 ~@5 a1@16 [d1,d2]@16 g1@16 g2@12 g1 ~@3 g1@16 g2@12 g1@4 f#2@18 ~@10 f#1@2 ~@2 f#1@16 f#2@8 f#1@8 f1@16 f2@12 f1 ~@3 f1@3, ~@61 d2@5 ~@79 f#2@14 ~@65, ~@61 d1 ~@162]/7", // D
  R: "[~@13 f2@16 e2@20 ~@4 c2@4 d2@4 d#2@3]/2",
  S: "[~@9 d2@4 c2@11 ~@5 g1@16 g2@12 g1 ~@3 g1@16 f#1@17 ~@27 e1 ~@3 e1@16 e2@8 e1@7 ~@2 b1@32 a1@19 a1@3 ~@6 a1@2 ~@2 a1@28 ~@6, ~@94 e1@21 ~@141, ~@109 e2@19 ~@128]/8",
  T: "[~@15 c2@16 g1@15 ~@2]/3",
})).s("gm_fretless_bass").gain(0.64)

// bass · fretless bass · soft notes
const bass_soft = note("<~@48 A ~@14 B ~@2 C@8 ~@21 D ~@14 E ~@22 F@2>".pickRestart({
  A: "~@13 e2 ~@18", B: "~@2 e2 ~@29",
  C: "[~@26 g1@51 ~@5 g1@7 ~ f#1@54 ~@2 [f#1,f#2]@8 f1@53 ~@3 [f1,f2]@8 ~ [e1,e2]@32 ~@5]/8", D: "~@20 e2 ~@11",
  E: "~@5 e2 ~@26", F: "[~@27 g2@31 ~@6]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · rock organ
const rock_organ = note("<~@66 A@8 B@5 C@4 ~@52>".pickRestart({
  A: "[~@26 a#5 ~@63 f#5@63 ~@33 e5@14 ~@2 d5@12 ~@4 e6@31 ~@2 a#5@5, ~@26 d6@127 ~@33 f4@23 ~@47, ~@26 g5@64 ~@65 [f5,b5,d6]@62 ~ [g5,c6]@38, ~@27 b5@126 ~@33 b4@27 ~@43]/8", // Bdim C5
  B: "[~@27 d5@31 ~ b4@27 ~@5 d5@29 ~@3 [b4,e5,g5]@32 ~@3 g4@2, ~@27 b4@28 ~@3 [a4,e5]@29 ~@73]/5", // Em A5
  C: "[~@27 b4@28 ~@4 [g4,b4]@59 ~@10]/4", // G
})).s("gm_rock_organ").gain(0.2)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@72 A B@3 C@2 D@5 ~@52>".pickRestart({
  A: "~@11 f4@2 ~@3", B: "[~@27 d#6@29 ~@3 g5@27 ~@10]/3",
  C: "[~@30 f5 ~@3 g5@22 ~@8, ~@27 b4@29 ~@8, ~@15 e5@14 ~@3]/2",
  D: "[~@35 b4@22 ~@2 [a4,e5]@28 ~@4 e5@57 ~@12, ~@31 a4@22 ~@107]/5", // A5
})).s("gm_rock_organ").gain(0.07)

// drums · kick
const kick = s("bd").struct(`<
  ~@37 A ~ B ~ C ~ D ~ E ~ F ~ G ~ H I@6 J K I@4 L M N M N M N M N M N M N M N O P O ~ Q R S@6 O P S@2 T@2 U V U@6 W X Y
  U@2 Y U Y Z@6 AA AB Z@4 AC ~@9
>`.pickRestart({
  A: "~@3 x ~@3 x ~@8", B: "~@9 x ~@7 x ~@14", C: "~@11 x ~@8 x ~@11", D: "~@14 x ~@8 x ~@8", E: "~@17 x ~@8 x ~@5",
  F: "~@20 x ~@8 x ~@2", G: "~@23 x ~@7 x", H: "~@25 x ~@6", I: "~ x ~@23 x ~@6", J: "~ x ~@15 x ~@3 x ~@3 x ~@6",
  K: "~@5 x ~@3 x ~@11 x ~@3 x ~@6", L: "~ x ~@24 x ~@5", M: "~ x ~@14", N: "~@13 x ~@2", O: "~@3 x ~@28",
  P: "~@27 x ~@4", Q: "~@31 x", R: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", S: "~@3 x ~@23 x ~@4",
  T: "~@3 x ~@24 x ~@3", U: "~ x ~@5 x", V: "~@4 x ~@3 x!2 ~@4 x ~", W: "~ x ~@3 x!3", X: "~@2 x!2 ~@2 x!2",
  Y: "~@4 x ~@24 x ~@2", Z: "~@5 x ~@23 x ~@2", AA: "~@5 x ~@15 x ~@3 x ~@3 x ~@2",
  AB: "~@9 x ~@3 x ~@4 x ~@5 x ~@4 x ~@2", AC: "~@5 x ~@26",
})).gain(0.56)

// drums · rim
const rim = s("rim").struct(`<
  A ~@37 B ~ C ~ D ~@2 E ~ F ~ G H ~@17 I ~ I ~ I ~ I ~ I ~ I ~ I ~ J ~@8 K ~@43
>`.pickRestart({
  A: "x!3 ~", B: "~@3 x", C: "~@27 x ~@4", D: "~@15 x", E: "~ x ~@30", F: "~@3 x ~@28", G: "~@3 x ~@12",
  H: "~@25 x ~@6", I: "~@5 x ~@10", J: "~@11 x ~@20", K: "~@7 x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@37 A ~ B ~ C ~ D ~@2 E ~ F ~@3 G@6 H I G@4 J@2 ~ J ~ J ~ J ~ J ~ J ~ J ~ J ~ K ~ K ~ K@7 ~ K@2 L K L M L@7 N L@6 O@7
  P O@5 ~@9
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@25 x ~@6", C: "~@7 x", D: "~@31 x", E: "~ x ~@14", F: "~@5 x ~@26", G: "~@9 x ~@22",
  H: "~@9 x ~@21 x", I: "~ x!2 ~@29", J: "~@5 x ~@10", K: "~@11 x ~@20", L: "~@3 x ~@4", M: "~@6 x ~@4 x ~@4",
  N: "~@2 x ~ x!2 ~@26", O: "~@13 x ~@18", P: "~@3 x ~ x ~@26",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@51 A ~@7 B ~@6 C ~@17 D ~@7 E ~@13 F ~@13 G ~@14>".pickRestart({
  A: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@10", B: "~@17 x ~@14", C: "~@7 x ~@8", D: "~@7 x ~@7 x ~@3 x ~@3 x ~@8",
  E: "~@7 x ~@3 x ~@3 x ~@3 x ~@3 x ~@8", F: "~@5 x ~@2", G: "~@13 x ~@4 x ~@5 x ~@7",
})).gain(0.64)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@50 A B ~@32 C ~@6 D E ~@42>".pickRestart({
  A: "~@29 x ~@2", B: "~ x ~@30", C: "~@19 x ~@12", D: "~@31 x", E: "~ x ~@6",
})).gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@126 [~@9 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~] [~@21 x ~@10] ~@7>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 A ~@7 B ~@6 C ~@16 D E ~@7 F ~@5 G ~@7 H ~@28>".pickRestart({
  A: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@10", B: "~@17 x ~@14", C: "~@9 x ~@6", D: "~@24 x ~@6 x",
  E: "~@15 x ~@3 x ~@3 x ~@8", F: "~@7 x ~@3 x ~@3 x ~@3 x ~@3 x ~@8", G: "~@5 x!2 ~", H: "~@5 x ~@2",
})).gain(0.64)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@50 [~@29 x ~@2] [~ x ~@30] ~@39 [~@31 x] [~@3 x ~@28] ~@42>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@59 A ~@23 B ~@14 C ~@7 D ~@28>".pickRestart({
  A: "~@13 x ~@18", B: "~@23 x ~@8", C: "~@5 x ~@2", D: "~ x",
})).gain(0.8)
// … 75 more lines

More by Masini