Strudelify

Se non avessi piu te

Morandi

KeyD majorTempo68 bpm
0:00/0:00
// Se non avessi piu te — Morandi
// 68 bpm, 4/4, key D 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 52 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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 · piano
const piano = note("<~@2 A@2 B@3 C D@2 E@8 ~@2 F G@4 H I@2 J@8 ~@5 K@8 L@3>".pickRestart({
  A: "[~@8 [g#2,g#3]@11 c#3@11 c3@21 ~@12 [b2,d4]@11 d4@11 g3@10 ~, ~@8 b3@44 f#2@11 ~@11 a#2@22, ~@19 e4@34 a3@32 ~@11]/2", // G# Bm
  B: "[~@49 f4@21 ~@2 e4@71 ~, a#2@35 ~@37, g3@45 ~@2 g3@23 g3@73 ~, ~ [c#4,f4]@46 ~ [c#3,c#4]@23 ~@73, ~@36 a#1@34 ~ [a1,a3,c#4]@73]/3", // C# A
  C: "e4@9 f#4@9 [d2,f#3,a3,d4]@29 ~, [d2,f#3,a3]@3 ~@5", // D
  D: "[~@17 [g#2,b3]@28 ~@20 b3@28 ~ [f#2,a3,d4]@2, e4@46 ~ b3@15 ~@34, [g#2,b3]@16 ~@31 [g2,g3,e4]@46 ~@3, ~@9 f#4@37 ~@10 f#4@37 ~@3]/2", // G#m D G#m C
  E: "[~@7 [b2,f#4]@9 ~@9 g3@3 ~@12 a4@5 ~@339, ~ a2@23, ~@16 e4@18 d4@3 e4@8 ~@339, ~@4 d4@3 e3@89, ~@31 g3@14 ~@339]/8", // B5
  F: "~@13 [g3,a#3,d4]@3", // Gm
  G: "[~@2 [a3,d4,f#4]@11 ~ [a#3,d4,g4]@11 ~ [a3,c4,f4]@11 ~ [a#3,d4,f4]@23 ~ [g3,c4,d4,e4]@23 a3@8 ~@34 a3@6 a3@8 a3@3 ~@24 d4@11 ~ [a#2,d4,f4]@9 a#3@3, ~@85 f2@17 ~ a3@13 ~@2 a3@7 ~@22 a3@6 f4@26 ~@13, ~@85 [c4,f4]@12 c4@21 ~@3 c4@11 ~ [d4,f4]@13 ~@4 e4@15 a3@14 ~ a#3@8 ~@4, ~@94 a3@6 f4@5 ~ f2@26 ~ d2@46 ~@13, ~@106 e4@16 ~@2 e4@9 ~@11 d4@22 ~@26]/4", // D Gm F A# C A# F5 Dm
  H: "d4 ~@2 [a#3,d4,f4]@4 ~@2 [g3,a#3]@11 ~@9 f4@6 g3@7 ~@2 g3@3 c4, ~@3 a#2@9 ~@4, ~@9 [d4,f4]@17 d4@8 ~@14, ~@20 g3@15 [c3,c4,e4]@13, ~@23 a#3@12 ~@13", // A# Gm Dm C
  I: "[~@8 c3@2 ~ [g3,a#3]@9 ~@9 g3@5 [a3,c4,g4]@14 ~ f4@4 ~ e4@4 a3@13 ~@8 f4@3 [g2,g3,a#3,d4]@14, ~@2 e4@8 ~ e4@12 a#3@11 a2@62, ~@5 g3@5 ~ a#2@24 ~@23 d2@23 ~@15, ~@20 g3@6 e4@9 ~@14 [a3,c4]@9 [c4,f4]@18 c4@6 ~@14, ~@73 a3@9 ~@14]/2", // Gm Am7 Gm Am F5
  J: "[~ f3@5 ~@12 a4@6 a#4@8 ~ [g3,b3]@26 ~@7 b3@14 d4@12 ~@3 d4@5 ~@16 g3@9 ~@259, ~@6 g3@25 ~@2 [e2,d4,e4]@46 ~ a2@304, ~@12 d4@19 ~@29 g3@19 ~ a3@45 ~@259, ~@80 e4@19 ~ a4@26 ~@258, ~@52 c#4@11 ~@129]/8", // G E7
  K: "[~@24 e4@9 f#4@9 [d2,f#3,a3,d4]@29 ~@18 [g#2,b3]@28 ~@19 b3@28 ~@2 f#2@9 [b2,f#4]@9 ~@9 g3@3 ~@11 a4@5 ~ e4@9 f#4@9 [d2,f#3,a3,d4]@29 ~@18 [g#2,b3]@28 ~@20 b3@28 ~@2 [f#2,a3,c#4]@9 [b2,b3,d4]@9 [a#2,g3,a#3,d4,f4]@10, ~@24 [d2,f#3,a3]@18 ~@29 e4@46 ~@2 b3@15 ~@32 a3@27 ~@5 g3@14 ~ [d2,f#3,a3]@18 ~@30 [g#2,b3]@16 ~@31 [g2,g3,e4]@47 ~@29, ~@71 [g#2,b3]@16 ~@32 [g2,g3,e4]@46 ~@19 a2@200, ~@80 f#4@37 ~@10 f#4@37 ~@2 d4@17 ~ e4@19 ~ e4@8 ~@49 e4@46 ~ b3@15 ~@61, ~@184 d4@13 ~@4 d4@11 ~@57 f#4@37 ~@11 f#4@38 ~ f#4@19 ~@9]/8", // D G#m B5 D G#m F#m Bm Gm7 …
  L: "[~@9 [a3,d4,e4]@11 ~@3 a4@95 ~@26, ~@5 d1@25 ~@6, ~@21 d2@97 ~@26, ~@22 [d4,f#4]@93 ~@29, ~@22 a3@83 ~@39]/3", // Asus4 D
})).s("gm_piano").gain(0.52).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note("<A@4 B C@2 D@8 E F@5 G H@5 I@8 J K@5 L@8 M@3>".pickRestart({
  A: "[~@11 [d4,f#4]@23 c#4@11 ~ c4@11 a4@11 ~ g4@11 f#4@12 b3@11 ~ [g#3,b3]@10 e4@11 ~@2 a4@9 g4@11 ~ a3@10 ~@23 g4@10 ~, ~@34 e4@23 d4@46 ~@22 a3@23 a4@33 ~@11, ~@158 d4@33 ~]/4", // D G#m
  B: "c#4", C: "[~@49 g3@46 f#4, ~@12 [c#4,e4]@35 ~]/2",
  D: "[[a3,d4,e4]@47 ~ e5@46 ~ d5@46 ~@20 d4@28 ~ d4@15 ~@2 c#4@29 d4@21 ~@3 c#4@24 [f#3,a3,c#4,e4]@47 e4@24 d#4@23 [b3,e4,g4]@6, ~@47 [g#3,b3,e4]@47 [g3,b3,d4,e4]@47 ~ a3@46 ~@2 [a3,f#4]@46 [g#3,b3,f4]@47 ~@48 [f#3,b3]@47 ~@6, ~@142 [d4,f#4]@18 e4@29 ~@195, ~@151 d5@38 ~@195]/8", // Asus4 F#m7 Em E Em7 D Fdim B5 …
  E: "~@6 [a3,b3,d#4,f#4]@11 ~ b3@11 ~ f#4@11 [b3,g4]@7, ~@17 [e4,g4]@12 d4@19, ~@29 a3@11 ~@8", // B7 Em
  F: "[~@6 [f#3,a#3,c#4,e4]@12 [b3,d4,f#4]@11 ~ [a3,c#4]@11 [f3,a3,c4,e4]@47 ~ [b3,d4,f4]@23 [g#3,b3,d4,e4]@23 ~ [g3,a3,c4,e4]@47 g4@24 f#4@23 [a#3,d4,g4]@10, ~@29 e4@11 ~@143 [a3,d4]@47 ~@10]/5", // F#7 Bm A Fmaj7 Bdim E7 Am7 Gm …
  G: "~@2 [a3,f#4]@12 [a#3,g4]@11 ~ [a3,c4]@11 ~ d4@10, ~@13 f4@11, ~@37 a#3@11", // D D# Am
  H: "[~@13 [g3,c4,e4]@23 ~ f4@18 e4@29 [d4,f4]@47 [a#3,d4,f4]@47 ~ c4@23 a#3@23 ~ [a3,c4]@14, ~@37 a3@94 ~@48 g3@47 ~@14, ~@37 c4@47 ~@95 e4@61]/5", // C Dm A# Am
  I: "[~@10 [d4,f4]@23 [g3,a#3,d4]@47 [b3,d4,e4,g4]@47 ~ d4@23 ~ c#4@22 ~@2 d4@15 ~@2 c#4@28 ~@25 c#4@24 [f#3,a3,c#4,e4]@47 e4@24 d#4@23 [b3,e4,g4]@11 ~ [a3,b3,d#4,f#4]@8, ~@128 [a3,e4]@47 ~ [a3,f#4]@46 [g#3,f4]@47 ~@48 [f#3,b3]@47 ~@20, ~@222 d4@23 ~@139, ~@223 b3@47 ~@114]/8", // Dm Gm Em7 F#m7 Em B7 A5 D …
  J: "~@4 [b3,e4,g4]@12 [a3,f#4]@11 ~ [b3,g4]@12 [f#3,a#3,c#4,e4]@8, ~@2 d4@3 ~", // Em D Em F#7
  K: "[~@4 [b3,d4,f#4]@12 [a3,c#4,e4]@11 [a3,d4,f#4]@46 ~ [g#3,b3]@24 [g3,a#3]@23 ~ d4@12 c#4@11 ~ b3@11 a3@11 ~ [e4,g4]@47 [g3,a#3,d4,e4]@24, ~@74 e4@47 ~ f#4@46 b3@47 ~@25, ~@122 a3@23 d4@70 ~@25]/5", // Bm A D G#m Gm Em Em7b5
  L: "[d4@12 c#4@11 ~ [a3,d4,e4]@46 ~@2 e5@46 [g3,b3,d4,e4,d5]@47 ~@19 [d4,e4]@28 ~ [a3,d4,e4]@46 ~@2 e5@46 ~ d5@47 ~ c#4@8 d4@9 ~ [g3,a#3,d4,f4]@10, a3@23 f#4@46 ~@2 [g#3,b3,e4]@47 ~@48 a3@46 ~@48 [g#3,b3,e4]@47 [g3,b3,d4,e4]@49 ~@28, ~@166 [d4,f#4]@17 ~@29 f#4@46 ~@97 a3@18 ~@11, ~@87 d5@19 ~@72 f#4@9 ~@5]/8", // Asus4 Em7 Dsus2 Asus4 Gm7 E Em7 D
  M: "[~@8 [a3,e4]@13 ~ [a3,d4]@106 ~@16]/3", // A5 D5
})).s("gm_synth_strings_1").gain(0.26)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~@3 A@3 ~@2 B@3 ~@31 C@4 D@3 E@3>".pickRestart({
  A: "[~@47 f4@73 ~@24]/3", B: "[~@9 f#5@7 b5@29 ~@2 [g4,a5]@46 ~@2 a5@45 ~@4, ~@95 c#5@8 ~@41]/3",
  C: "[~@32 f#5@7 ~ b5@30 ~ g4@46 ~@2 a5@46 ~@27, ~@35 a5@23 ~ c#5@4 ~@33]/4",
  D: "[~@30 f#5@7 b5@30 ~ [g4,a5]@47 ~@29]/3", E: "[~@21 f#4@106 ~@17]/3",
})).s("gm_synth_strings_1").gain(0.15)

// bass · electric bass finger
const bass = note("<~@7 A B@8 C@2 D@3 E@2 F G@3 H@4 I J K L@3 M N O P Q@4 R@7>".pickRestart({
  A: "d2@8 ~ d2@7 ~@2 d2@23 ~ a2@3 d3@2 ~",
  B: "[g#2@8 ~ g#2@8 g#2@17 ~ g#2@3 a2@3 b2@6 g2@8 ~ g2@7 ~@2 g2@21 ~ g2 a2@2 ~ g2@3 f#2@9 b2@9 a2@14 ~ a1 ~@2 a1@11 ~ d1@19 ~ d1@3 ~@3 d1 ~@2 d1@17 ~ g#1@11 ~ c#2@3 d2@2 ~ f#2@3 d3@3 c#3@11 c#2@11 ~ f#1@19 ~@2 c#2@2 ~ f#2@18 c#2@3 a1@2 b1@21 f#1@3 b1@3 f#1@3 b0@17 ~ e1@12 d#1@11 e1@11 ~ f#1@11 ~ g1@6]/8",
  C: "[~@6 f#1@12 b1@12 a1@11 f1@19 ~@2 f1@3 ~@3 f1 ~@2 f1@12 g1@2 ~ f1@3 b1@7]/2",
  D: "[~@2 b1@3 f1@2 b1@2 ~ d2@3 f2@3 e2@8 ~ e2@3 e1@11 ~ a1@19 ~@2 a1@5 ~ e1@2 ~ a1@11 a1@3 e1@3 d1@18 a1@3 d1@3 d2@9 a1@2 ~ d1@12 g1@9]/3",
  E: "[~@2 f#1@11 ~ g1@12 a1@12 a#1@14 ~ a#1@2 ~ a#1@3 g1@3 c2@5 c2@6 c1@12 f1@8 ~ f1@2]/2",
  F: "~@4 f1@2 ~ f1@15 c2@2 ~ f2@9 c2@2 ~ d2@8 d1@3",
  G: "[~@3 d1 ~@2 d1@14 ~ a1@2 ~ d2@9 a1@2 ~ a#1@8 ~ a#1@5 ~ a#1@26 d2@3 a#1@2 ~ c2@23 ~ a#1@17 ~ a#1@5 a1@14]/3",
  H: "[~ e1@5 a1@4 d1@11 ~ d2@6 d2@5 ~ g1@34 ~ g1@11 ~ e1@23 ~ e2@11 ~ g2@11 a2@23 ~@13 a2@11 ~ d1@16, ~@152 c#3@23 ~@17]/4",
  I: "~@4 d1@3 ~@3 d1 ~@2 d1@17 ~ g#1@11 ~ c#2@3 d2@2", J: "~ f#2@3 d3@3 c#3@11 c#2@11 ~ f#1@18",
  K: "~@3 c#2@2 ~ f#2@18 c#2@3 a1@3 b1@18",
  L: "[~@2 f#1@3 b1@3 f#1@3 b0@17 ~ e1@12 d#1@12 e1@11 f#1@11 ~ g1@12 f#1@12 b1@12 a1@11 d1@21]/3",
  M: "a1@3 d2@14 ~ a1@2 ~ d2@5 ~ e1@11 ~ g#1@9", N: "~@2 g1@11 ~ a#1@11 ~ d2@11 ~ c#2@10",
  O: "~@2 b1@11 ~ a1@11 e1@20 ~ e2@2", P: "~ e1 ~@2 e1 ~@2 e1@17 ~ g1@11 ~ a#1@11",
  Q: "[a1@11 ~ a1@11 ~ d2@8 ~ d2@7 ~@2 d2@23 a1@2 ~ d2@3 g#1@8 ~ g#1@8 ~ g#1@17 ~ g#1@3 a1@2 ~ b1@6 g1@8 g1@7 ~@2 g1@21 ~@2 g1 a1@2 ~ g1@3 f#1@8 ~ b1@9 a1@8]/4",
  R: "[~@6 a1 ~@2 a1@11 ~ d2@8 ~ d2@7 ~@2 d2@23 ~ a1@3 d2@3 g#1@8 g#1@8 ~ g#1@17 ~ g#1@3 a1@2 ~ b1@6 g1@8 ~ g1@7 ~@2 g1@30 f#1@9 b1@9 a#1@18 ~ a1@12 ~ d1@105 ~@17]/7",
})).s("gm_electric_bass_finger").gain(0.49)

// chords · string ensemble 1
const string_ensemble_1 = note("<A@7 ~@15 B@5 C@4 ~@10 D@7 E@4>".pickRestart({
  A: "[~@11 f#5@5 g5@6 a5@6 b5@5 ~@14 e5@5 a5@5 ~@13 g4@11 f#4@11 d4@9 ~ c#5@2 [g#2,b4]@10 c#3@11 c3@22 ~ f#2@10 ~@23 g4@11 ~@18 g5@6 c6@3 a#5@3 a5@3 g5@3 f5@3 c#5@3 c5@3 a#4@3 a4@3 g4@3 ~@3 c#4@3 c4@3 a#3@3 a3@3 g3@3 [a2,e4]@72, ~@11 [d3,a4]@23 [c#3,a5]@12 c3@12 [b2,d5]@44 ~@2 b3@21 e4@33 b2@12 a#2@94 ~@72, ~@35 a4@22 a4@13 ~@31 a2@3 ~@10 e5@33 a4@12 d5@23 ~@10 a5@18 ~@126, ~@160 d4@32 ~ f4@53 f4@18 a3@67 ~@5]/7", // G#m A5 D5 F#m Bm
  B: "[~@37 f4@18 e4@6 f4@6 c5@6 e5@11 ~ f5@23 g5@12 f5@12 d5@47 g5@61]/5",
  C: "[~ f5@4 ~ e5@4 f5@11 ~ a5@11 a#5@36 a5@12 g5@23 d5@21 ~ e5@3 d5@22 c#5@24 ~@17]/4",
  D: "[~@24 [d4,f#4]@46 ~ [b3,f#4]@47 [g3,d4]@48 d4@23 e4@24 [d4,f#4]@47 [b3,f#4]@47 ~ [g3,d4]@28, ~@166 a3@47 ~@123]/7", // D B5 G5 D B5 G5
  E: "[~@20 [f#3,e4,c#5]@8 ~ d5@9 f4@17 ~ e4@14 ~ d3@104 ~@17, ~@28 f#4@10 d5@32 [f#4,a5]@105 ~@17, ~@29 a3@26 g3@14 ~@123]/4", // F#7 F#m
})).s("gm_string_ensemble_1").gain(0.34)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@6 A@5 ~@5 B@5 ~ C@7 D@2 ~@5 E@3 F@2 G@3 H@4 ~@4>".pickRestart({
  A: "[~@48 e4@9 f#4@27 ~@12 e4@32 ~@16 [d4,f#4]@19 ~@29 f#4@12 ~@4 [d4,e4]@28 ~@4, ~@46 a3@33 ~@16 [g#3,b3]@31 ~@16 g3@16 ~@32 a3@13 ~@4 a3@27 ~@6, ~@47 d4@33 ~@63 b3@15 ~@33 d4@12 ~@37]/5", // D Dsus2 G#m
  B: "[~@42 e4@7 ~ [f3,c4,e4]@6 e4@3 [c4,e4]@9 c4@4 e4@2 [c4,e4]@3 [c4,e4]@3 [c4,e4]@3 [a3,c4,e4]@4 ~@2 [d4,f4]@8 ~ d4@2 ~ [d4,f4]@2 ~ d4@2 ~ f4@2 f4 ~@3 e4@7 ~ [d4,e4]@6 e4@3 e4@2 ~ e4@2 ~@2 g4@8 c4@6 g4@3 [a3,c4,g4]@9 [a3,c4]@6 g4@2 ~ [c4,g4]@2 ~ c4@2 ~ [a3,c4,g4]@5 ~ g4@5 [d4,g4]@3 [d3,d4,g4]@3 g4@2 ~ g4@2 ~ [a3,g4]@3 [a3,g4]@2 ~ f#4@2 ~ f#4@3 [d4,f#4]@3 [d4,f#4]@5 ~ [d4,f#4]@3 [d3,a3,d4,f#4]@5 ~@10, ~@41 a3@17 ~ [f3,a3]@17 ~ f3@10 ~@10 f4@3 ~@3 f4@2 ~@2 d4@5 d4@8 ~@16 c4@8 ~ g4@5 ~@13 g4@5 ~@4 e3@5 e3@5 ~ d3@9 ~@3 [d3,d4]@6 d3@23 ~@16, ~@41 c4@8 ~@19 e4@3 ~@6 a3@6 ~@5 b3@12 b3@6 b3@5 ~ [e3,g#3]@18 [e3,g#3,d4]@6 [e3,a3]@17 ~ e3@17 a3@6 ~@6 a3@17 ~@7 [a3,d4]@9 a3@6 ~@18, ~@174 g4@3 ~@6 d4@5 ~@13 d4@5 ~@34]/5", // Fmaj7 C Am Dm Dsus2 Am7 Am C5 …
  C: "[~@38 f4@7 ~@7 f4@2 ~ c4@2 ~ e4@5 ~ e4@5 ~ e4@2 ~ e4@2 ~ e4@3 c4@3 c4@2 ~ d4@8 ~@9 a3@3 ~@6 [d4,f4]@6 [d4,f4]@3 [d4,f4]@2 ~ [d4,f4]@3 [a3,d4,f4]@5 ~ [a#3,d4]@9 [a#3,d4,f4]@3 [a#3,d4,f4]@3 f4@2 ~@4 a#3@5 ~@7 [f4,g4]@2 [f4,g4]@3 f4@2 ~ [a#3,f4]@4 ~@3 e4@5 e4@2 ~ [c4,e4]@3 [c4,e4]@6 [c4,e4]@2 ~ [c4,e4]@2 ~ e4@5 ~ e4@2 ~ e4@6 e4@3 e4@2 ~ c4@2 ~ g4@7 ~ [c4,g4]@5 ~ f4@5 e4@4 ~ f4@5 f4@2 ~ f4@3 a3@3 [d4,f4]@3 [a3,d4,f4]@5 ~ [a#3,f4,g4]@9 [a#3,f4]@6 g4@2 [a#3,f4,g4]@6 g4@3 [f4,g4]@6 g4@3 [f4,g4]@3 [f4,g4]@3 [f4,g4]@5 ~ [g3,e4]@9 [g3,e4]@6, ~@37 [f3,a3]@12 a3@9 [a3,c4]@14 ~@13 a3@17 ~@4 a3@14 a3@6 ~@6 f3@16 ~@5 f3@8 ~ f3@5 [f3,a#3]@9 ~@3 [e3,g3]@17 ~ [e3,g3]@5 ~ [e3,a#3]@23 [e3,a3]@24 ~@12 f4@2 ~@19 g4@5 ~@48, ~@38 c4@17 ~@30 f4@7 ~ f4@6 f4@5 ~ f4@6 ~@21 f4@3 ~@17 [f4,g4]@5 ~ [f4,g4]@6 ~@6 g4@6 ~@47 [e3,e4]@2 ~@49 f3@17 f3@21 f3@6 ~@3 [e3,d4]@15, ~@46 f4@6 f3@20 ~ [f3,a3,c4]@6 [f3,a3,e4]@6 ~@11 d4@6 d4@9 ~@48 a#3@8 ~@12 c4@8 ~@16 c4@14 ~ c4@6 ~@2 c4@8 ~@7 c4@8 ~ [a3,d4]@9 d4@6 ~@35 a#3@18 ~@18]/7", // Dm A# Fsus2 A#5 C C5 Dm Gm7 …
  D: "[~@12 e4@5 ~ e4@5 [d4,e4]@8 ~@19 e3@5 ~@3 e4@20 ~@18, e4@9 ~@23 d4@7 ~@2 d4@5 ~ d4@6 ~@43, ~@3 [e3,g3]@28 ~ a3@18 ~@46, ~@3 d4@14 d4@6 ~@9 e3@11 ~ e3@5 ~@7 [e3,c#4]@22 ~@18, ~@11 e4@4 ~@17]/2", // Dsus2 Em C#m
  E: "[~@36 e4@6 ~@12 a3@3 ~@9 e4@3 f#4@6 ~@9 d4@6 ~@17 d4@6 ~@6 a#3@2 ~@2 f#4@8 ~@3 f#4@8 ~@2, ~@27 d3@26 ~@4 d3@17 ~ e3@20 d4@5 ~@4 a#3@12 d4@5 ~ d4@8 ~@14, ~@30 a3@18 d4@11 ~ a3@13 ~@5 g#3@21 ~@2 g3@19 ~ a3@8 ~@4 [a3,c#4]@9 ~@2, ~@33 d4@9 f#4@21 d4@7 ~@11 b3@15 ~@2 a#2@24 ~@22, ~@90 e4@12 ~@11 e4@8 ~@23]/3", // A
  F: "[~@2 f#4@9 ~@3 f#4@10 ~@10 e4@6 ~@24 e4@6 d4 ~@2 g4@23, b3@10 ~@3 [a3,d4]@11 ~ e3@21 d4@5 ~ b3@18 ~ a#3@24 ~, ~ d4@10 ~@17 b3@15 e4@6 e3@23 ~@24, ~@31 d4@9 g4@12 ~@3 d4@9 ~@8 [d4,e4]@23 ~, ~@29 g4@7 ~@12]/2", // D5 Dsus2
  G: "[d4@6 a3@6 ~@6 a3@4 ~@2 e4@9 f#4@27 ~@12 e4@32 ~@16 f#4@19 ~@5, e4@22 ~ d4@33 ~@15 b3@31 ~@17 [b3,d4]@17 ~@8, a3@5 ~@7 c#4@10 a3@33 ~@15 g#3@29 ~@19 g3@16 ~@10]/3", // Bm
  H: "[~@23 [d4,f#4]@12 ~@5 e4@27 ~@2 e4@9 f#4@27 ~@12 e4@32 ~@16 [d4,f#4]@19 ~@8, ~@22 a3@13 ~@4 [a3,d4]@27 ~ a3@33 ~@16 [g#3,b3]@31 ~@16 g3@16 ~@13, ~@69 d4@33 ~@62 b3@15 ~@13]/4", // D D5 G#m
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@10 A@2 B@7 C@2 D@2 ~@6 E F@5 G H ~@4 I@8 ~@3>".pickRestart({
  A: "[~@46 d4@3 ~@35 a3@7 ~@5, ~@49 a3@34 ~@13, ~@51 d4@18 ~@3 d4@20 ~@4, ~@27 e4@10 ~@11, ~@30 f#4@8 ~ f#4@7 ~@2]/2",
  B: "[~@12 d4@6 c#4@5 ~@12 g#4@8 ~@40 g#4@7 ~@16 f#4@5 ~ f#4@6 ~@12 d#4@7 ~@2 [b3,e4]@9 ~@3 f#4@9 ~@2 [e4,g4]@10 ~@2 f#4@10 ~@2 g4@10 ~@2 [e4,f#4]@9 ~@3 f#4@10 ~@2 a4@9 ~@2 f3@14 ~ a3@3 f3@3 [c4,e4]@21 ~@7 d4@11 ~@12 e4@17 ~@6 [a3,c4,g4]@8, g#3@20 ~@9 c#4@14 ~ c#4@6 a3@21 f#3@18 ~@49 g3@10 ~ a3@9 ~@15 [a3,d4]@11 ~@13 [a#3,c#4]@9 ~@14 a3@8 ~@52 [f3,b3]@13 ~@10 g#3@15 ~@18, ~@6 b3@15 ~@2 b3@19 ~@5 f#3@18 g#4@15 ~@11 f#4@5 ~@4 e4@11 ~@10 d#4@8 ~@21 d#4@9 ~@50 d4@9 ~@3 [c#4,e4]@9 ~@106, ~@53 b3@18 ~@3 a3@16 ~@4 b3@17 ~@7 b3@19 ~@24 b3@11 ~@13 [b3,d4]@11 ~@12 b3@10 ~@86 b3@17 ~@15, ~@59 c#4@15 ~@3 c#4@14 ~@6 c#4@21 ~@6 f#4@14 ~@198]/7", // E5 Em Esus2 C Am7 D5 A#m Fdim …
  C: "[~@7 g4@2 ~ [e4,b4] ~@2 e4@5 ~@4 c4@13 ~@5 g4@20 ~@3 f#4@21 ~@2 [d4,g4]@9 ~, ~ a3@8 ~@10 e4@17 ~@2 a3@21 ~@3 [a3,d4]@21 ~@2 a#3@10 ~, ~@4 c4@5 ~@4 b4@23 ~@3 d4@21 ~@36]/2", // E5 G5 D5
  D: "[~@3 f#4@8 ~@3 [d4,g4]@10 ~@2 [f4,a4]@11 ~ a#4@21 ~@3 [d4,e4]@21 ~@13, ~ a3@8 ~@4 a#3@11 ~ c4@11 ~@24 g3@23 ~@13, ~@2 d4@8 ~@27 [d4,f4]@20 ~@4 c4@22 ~@13]/2", // G5 F Dsus2 Dm
  E: "e3@3 g3@2 ~ a3@3 b3@8 ~@12 a4@3 a4@16, ~@3 g3@5, ~@21 d4@26 ~",
  F: "[~@8 c#4@20 ~@4 d4@3 ~@35 a3@7 ~@17 d4@6 c#4@6 ~@11 g#4@8 ~@40 g#4@7 ~@16 f#4@5 ~ f#4@6 ~@12 d#4@7 ~@3 e4@9 ~@2 f#4@7, d4@7 ~@28 a3@34 ~@13 g#3@20 ~@27 f#3@18 g#4@15 ~@12 f#4@5 ~@3 e4@11 ~@10 d#4@8 ~@21 d#4@8, ~@4 a4@25 ~@9 d4@18 ~@2 d4@20 ~@10 b3@15 ~@3 b3@19 ~@7 a3@21 f#3@18 ~@49 g3@10 ~ a3@9, ~@41 e4@20 ~@50 c#4@14 ~ c#4@6 ~@3 b3@18 ~@3 a3@16 ~@5 b3@17 ~@6 b3@19 ~@2 b3@9 ~@10, ~@46 f#4@16 ~@2 f#4@14 ~@63 c#4@15 ~@3 c#4@14 ~@6 c#4@21 ~@6 f#4@14 ~@20]/5",
  G: "~@5 g4@9 ~@2 f#4@10 ~@2 g4@10 ~@3 f#4@7, ~@3 b3@11 ~ [a3,d4]@11 ~ [b3,d4]@11 ~ [a#3,c#4]@9, ~@2 e4@5 ~@13 e4@4", // D5 Bm A#m
  H: "~@4 f#4@10 ~@2 a4@9 ~@23, ~ b3@5 ~ a3@4 ~@13, ~ d4@3 ~ [c#4,e4]@3 ~@8", // C#m
  I: "[~@24 e4@9 f#4@9 a3@25 ~@4 e4@9 f#4@9 b3@28 ~@2 e4@8 ~ f#4@8 b3@26 ~@13 d4@9 a4@24 ~@6 e4@8 f#4@9 a3@25 ~@5 e4@8 f#4@9 b3@28 ~@2 e4@8 ~ f#4@9 b3@26 ~@32, ~@83 a3@9 ~@100]/8",
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.8)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@2 A B@2 C@2 ~@3 D@2 E@5 ~ F@2 ~@2 G@3 H@4 I@6 J K@2 L M@2 N@2 O@2 P@2 Q ~@4
>`.pickRestart({
  A: "~@8 g#3@11 e4@11 a3@18",
  B: "[~@4 e4@11 d4@11 g3@20 ~@3 f4@23 c5@3 a#4@3 a4@3 g4@2 ~ f4@3 c#4@2 c4 c4@2 a#3@3 ~, ~@47 a3@26 ~@23, ~@48 c#4@25 ~@23]/2",
  C: "[a3@3 g3@3 f3@3 c#3@3 c3@3 a#2@3 a2@3 g2@3 a2@71 ~]/2",
  D: "[~@46 d4@3 ~@35 a3@7 ~@5, ~@49 a3@34 ~@13, ~@51 d4@18 ~@3 d4@20 ~@4, ~@27 e4@10 ~@11, ~@30 f#4@8 ~ f#4@7 ~@2]/2",
  E: "[~@12 d4@6 c#4@5 ~@12 g#4@8 ~@40 g#4@7 ~@16 f#4@5 ~ f#4@6 ~@12 d#4@7 ~@2 [b3,e4]@9 ~@3 f#4@9 ~@2 [e4,g4]@10 ~@2 f#4@10 ~@2 g4@10 ~@2 [e4,f#4]@9 ~@3 f#4@10 ~@2 a4@9 ~@9, g#3@20 ~@9 c#4@14 ~ c#4@6 a3@21 f#3@18 ~@49 g3@10 ~ a3@9 ~@15 [a3,d4]@11 ~@13 [a#3,c#4]@9 ~@14 a3@8 ~@12, ~@6 b3@15 ~@2 b3@19 ~@5 f#3@18 g#4@15 ~@11 f#4@5 ~@4 e4@11 ~@10 d#4@8 ~@21 d#4@9 ~@50 d4@9 ~@3 [c#4,e4]@9 ~@10, ~@53 b3@18 ~@3 a3@16 ~@4 b3@17 ~@7 b3@19 ~@24 b3@11 ~@13 [b3,d4]@11 ~@12 b3@10 ~@22, ~@59 c#4@15 ~@3 c#4@14 ~@6 c#4@21 ~@6 f#4@14 ~@102]/5", // E5 Em Esus2 D5 A#m C#m Bm
  F: "[~ d4@2 ~ e4@6 ~ d4@3 c4@2 b3@7 ~@2 b3@3 g#3@10 ~@2 g3@19 ~@37]/2",
  G: "[~@43 c4@3 f4@6 ~@11 f3@4 ~@3 c4@3 e4@3 ~@6 e4@2 ~@10 f4@5 ~@12 a3@3 d4@3 ~ f4 ~ e4@3 ~ f4@3 ~ g4@3 ~ a4@7 ~@2 a3@3, ~@37 f3@6 ~@9 f3@6 e4@8 ~@13 a3@5 ~@4 a3@5 ~@6 a3@5 ~@40, ~@40 a3@6 ~@8 a3@8 ~@5 a3@6 ~@3 f3@5 ~@4 d3@17 ~@3 d3@14 ~@25, ~@90 d4@8 ~@4 d4@9 ~@33]/3",
  H: "[~@5 f4@3 ~ g3@10 ~ f3@12 ~@3 g3@3 ~@3 e4@3 g4@6 e4@3 c4@3 g3@3 g3@3 a#3@3 c4@3 e4@6 c4@3 a#3@2 g3@3 ~@12 g3@4 ~ f3@3 e3@3 ~ d3@11 ~ f4@4 e4@3 ~ c4@3 ~ d4@22 ~@40, a#3@5 ~@33 c4@5 ~@149, ~ d4@3 ~@92]/4",
  I: "[e3@3 g3@2 ~ a3@3 b3@8 ~@13 a4@2 a4@23 ~@25 d4@3 ~@35 a3@7 ~@17 d4@6 c#4@6 ~@11 g#4@8 ~@40 g#4@7 ~@16 f#4@5 ~ f#4@6 ~@6 f#4@6 a3@3 d#4@2 ~ f#4@3 f#4@2 g4 f#4@2 e4@2 ~ g4@4 f#4@4 d#4@3, ~@18 g3@30 ~@35 a3@34 ~@13 g#3@20 ~@27 f#3@18 g#4@15 ~@12 f#4@5 ~@3 e4@11 ~@10 d#4@8 ~@29, ~@21 d4@28 ~@37 d4@18 ~@2 d4@20 ~@10 b3@15 ~@3 b3@19 ~@7 a3@21 f#3@18 ~@69, ~@89 e4@20 ~@50 c#4@14 ~ c#4@6 ~@3 b3@18 ~@3 a3@16 ~@5 b3@17 ~@6 b3@11 ~@29, ~@94 f#4@16 ~@2 f#4@14 ~@63 c#4@15 ~@3 c#4@14 ~@6 c#4@21 ~@40]/6",
  J: "~ a4@3 ~ g4@5 ~@3 g4@2 b4@2 ~ a4@3 ~ a4@3 d5 ~@4 b4@6 [a4,b4]@2 ~ g4@2 c#4@4 e4 ~ f#4, ~@29 a4@2 ~@17", // Asus2
  K: "[~ c#4@2 ~ e4@3 c#4@3 d4@3 c#4@3 d4@3 f#4@3 e4@5 d4@3 ~@18 a3@12 e4@5 ~ f#4@6 ~@7 b3@4 d4@3 g#4@4 ~ a4@3 b4@2, e4@2 ~@28 d3@29 ~@37, ~@33 f#3@14 ~@49, ~@18 a3@5 ~@25, ~@14 d4@7 ~@11]/2",
  L: "~@3 a#4@2 a4@2 a#4@2 ~@2 d4 ~@2 g3@4 ~ d3@4 e3@3 ~ f#3@11 c#4@10, ~@9 a4@2 ~@37, ~@10 g4@2 ~ a#3@2 ~@33",
  M: "[~@2 b3@12 a3@10 ~ [g3,a3,d4]@8 ~@10 d4@3 ~@3 b3@21 ~@3 [e4,g4]@18 ~@5, ~@34 e3@10 ~@2 e3@21 ~@29, ~@37 g3@8 ~@27 d4@16 ~@8, ~@40 a3@6 ~@25 a#3@16 ~@9]/2", // Gsus2 Em
  N: "[d4@11 ~ c#4@8 ~@4 e4@9 f#4@8 ~ a3@12 ~@2 e4@2 d4@2 c#4@3 d4@2 ~ e4@2 ~ d4@2 ~ f#4@5 b3@2 ~ d4@16, a3@5 ~@19]/2",
  O: "[~@23 e4@8 f#4@9 b3@21 ~@35]/2", P: "[~@21 e4@9 f#4@9 a3@18 a3@3 d4@3 e4@2 f#4@3 ~ b3@22 ~@5]/2",
  Q: "~@5 a3@2 ~ g#3@3 ~ b3@2 e4@2 ~ f#4@3 ~ d4@20 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · epiano1
const epiano1 = note("<~@10 A@6 B@5 ~@9 C D@5 E@2 F G@2 H ~@10>".pickRestart({
  A: "[~@46 [a3,d4,f#4]@17 [a3,c#4,e4,f#4]@29 ~ [d4,f4,g#4]@22 ~@2 [c#4,f4,g#4,c#5]@22 ~ f#4@18 g#4@9 ~@15 a3@5 b3@7 ~@11 f#4@4 ~@2 [b3,d#4]@9 ~@6 d#4@8 ~ [b3,e4,g4]@11 ~ [a3,d#4,f#4]@11 [b3,d4,e4,g4]@12 [a3,d4,f#4]@11 ~ [d4,g4,b4]@6, ~@93 b4@18 ~@29 [a3,c#4]@36 c#4@11 [e4,f#4]@15 e4@5 ~@4 [f#4,b4]@23 ~@54, ~@167 a4@20 b4@21 ~@80, ~@196 b3@12 ~@12 b3@13 ~@55]/6", // D F#m7 Ddim C# B Em D#dim Em7 …
  B: "[~@6 [e4,f#4,a#4,c#5]@11 ~ [f#4,b4,d5]@11 ~ [e4,a4,c#5]@11 a3@21 ~@6 a3@19 ~@2 [b2,b3,d4,f4]@23 [g#3,b3,d4,e4]@23 ~ e4@19 ~@2 e4@25 ~ [a3,d4,g4]@22 ~@2 [a3,d4,f#4]@23 ~@10, ~@41 [c4,e4]@45 ~@154, ~@41 f3@19 ~@2 f3@24 ~@50 [g3,a3,c4]@46 ~@58]/5", // F#7 Bm A Bdim E7 Dsus4 D C …
  C: "~@2 [a3,d4,f#4]", // D
  D: "[~ [a3,c#4,e4,f#4]@29 ~ [d4,f4,g#4]@22 ~@2 [c#4,f4,g#4,c#5]@22 ~ f#4@18 g#4@9 ~@15 a3@5 ~ b3@7 ~@10 f#4@4 ~@2 [b3,d#4]@9 ~@6 d#4@8 ~ [b3,e4,g4]@11 ~ [a3,d#4,f#4]@11 ~ [b3,d4,e4,g4]@11 [a3,d4,f#4]@11 ~ [d4,g4,b4]@11 ~ [e4,f#4,a#4,c#5]@8, ~@31 b4@18 ~@29 [a3,c#4]@36 c#4@11 ~ [e4,f#4]@14 e4@5 ~@4 [f#4,b4]@23 ~@68, ~@105 a4@20 ~ b4@21 ~@93, ~@134 b3@12 ~@12 b3@13 ~@69]/5", // F#m7 Ddim C# B Em D#dim Em7 D …
  E: "[~@4 [f#4,b4,d5]@11 ~ [e4,a4,c#5]@11 [a3,d4,f#4]@40 ~@8 [b3,e4,g#4]@21]/2", // Bm A D E
  F: "~@2 [e4,g4,a#4]@23 ~ d4@10 ~@2 c#4@10, ~@13 [a3,f#4]@11", // Edim D
  G: "[~ b3@5 ~ a3@5 ~ g4@22 ~ [g4,a#4]@12, ~@2 [d4,f#4]@22 b3@45 ~@2 e4@24 ~, ~@25 [d4,e4]@45 d4@25 ~]/2", // Gm D Dsus2
  H: "d4@11 ~ c#4@11 ~@25, [e4,a4]@23 ~@25", // A5
})).s("gm_epiano1").gain(0.45).pan(0.6)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@17 [~@5 x ~@6] ~ [~@19 x ~@28] ~@3 [~ x ~@10] [~ x ~@14] ~@27>").gain(0.35)

// drums · rim
const rim = s("rim").struct("<~@47 [~@2 x] [~ x ~@4] ~@3>").gain(0.63)

// drums · snare
const snare = s("sd").struct(`<
  ~@10 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD ~ AE AF AG AH AI C AJ ~@4
>`.pickRestart({
  A: "~@17 x ~@6", B: "~@3 x ~@7 x ~@4", C: "~@9 x ~@22 x ~@15", D: "~ x ~@2 x ~", E: "~@7 x ~@23 x ~@16",
  F: "~@7 x ~@22 x ~@17", G: "~ x ~@3 x ~@2", H: "~@5 x ~@23 x ~@18", I: "~@5 x ~@22 x ~@19", J: "~@4 x ~@22 x ~@20",
  K: "~ x ~@7 x ~@6", L: "~ x ~@11 x ~@10", M: "~@2 x ~@22 x ~@22", N: "~ x ~@23 x ~@22", O: "x!2",
  P: "x ~@22 x ~@23 x", Q: "~@23 x ~@22 x ~", R: "~@11 x ~@11 x", S: "~@7 x ~@7 x", T: "~@21 x ~@22 x ~@3",
  U: "~@20 x ~@22 x ~@4", V: "~@19 x ~@23 x ~@4", W: "~@3 x ~@3 x", X: "~@18 x ~@22 x ~@6", Y: "~@17 x ~@23 x ~@6",
  Z: "~@2 x ~@2 x", AA: "~@16 x ~@22 x ~@8", AB: "~@5 x ~@7 x ~@2", AC: "~@7 x ~@11 x ~@4", AD: "~@7 x ~@16",
  AE: "~ x ~ x", AF: "~@11 x ~@23 x ~@12", AG: "~@11 x ~@22 x ~@13", AH: "~@5 x ~@11 x ~@6",
  AI: "~ x ~@7 x ~@5 x ~@2 x ~@14 x ~@14", AJ: "~ x ~@4",
})).gain(0.63)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP ~@3
>`.pickRestart({
  A: "~@4 x ~ x!2", B: "x ~@5 x ~@4 x ~@11 x ~@11 x ~@5 x ~@5 x",
  C: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~", D: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3",
  E: "~@7 x ~@3 x ~ x ~ x", F: "~@3 x ~@5 x ~@11 x ~@10 x ~@5 x ~@5 x ~@3",
  G: "~@2 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@4", H: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@16",
  I: "~@3 x ~ x!3", J: "x ~@5 x ~@11 x ~@11 x ~@4 x ~@11 x", K: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x",
  L: "~@5 x ~@4 x ~@5 x ~@5 x ~@11 x ~@5 x ~@5 x ~", M: "~@4 x ~@5 x ~@5 x ~@5 x ~@10 x ~@5 x ~@5 x ~@2",
  N: "~ x ~ x ~ x ~ x ~@3 x ~@3 x", O: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  P: "~@2 x ~@5 x ~@5 x ~@4 x ~@11 x ~@11 x ~@4", Q: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5",
  R: "x!4 ~ x ~ x", S: "x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x",
  T: "~@5 x ~@5 x ~@5 x ~@11 x ~@10 x ~@5 x ~", U: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  V: "~ x ~ x ~ x ~@3 x ~@3 x ~ x", W: "~@3 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@3",
  X: "~ x ~@2 x ~@2 x ~@5 x ~@10", Y: "~@7 x ~@11 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4",
  Z: "~@7 x ~@10 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5", AA: "x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x",
  AB: "~@5 x ~@5 x ~@5 x ~@30", AC: "~@5 x ~@10 x ~@5 x ~@5 x ~@5 x ~@5 x ~@7", AD: "~@2 x ~@5 x ~@2 x ~@12",
  AE: "~ x ~@3 x ~ x ~ x ~ x ~ x ~@2", AF: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  AG: "~@2 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4", AH: "~ x ~@5 x ~@5 x ~@34", AI: "x ~ x!2 ~@4",
  AJ: "x ~@10 x ~@5 x ~@5 x ~@5 x ~@5 x ~@11 x", AK: "~@11 x ~@5 x ~@28 x ~", AL: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x",
  AM: "~@3 x ~ x ~@9 x", AN: "~@9 x ~@5 x ~@5 x ~@4 x ~@5 x ~@11 x ~@3", AO: "~@4 x ~@2 x ~@14 x ~",
  AP: "~@4 x ~@2 x ~@8 x ~@7",
})).gain(0.35)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@7 A B ~@2 C D ~@2 E F ~@13 G H@2 ~ I J K L M ~ N O P Q R S T U V ~@3
>`.pickRestart({
  A: "~ x!3 ~ x ~@2", B: "~@17 x ~@11 x ~@18", C: "~ x ~ x ~ x ~@3 x ~@6", D: "~@15 x ~@10 x ~@21",
// … 91 more lines

More by Morandi