Strudelify

Aria e cielo

Tozzi

KeyA minorTempo137 bpm
0:00/0:00
// Aria e cielo — Tozzi
// 137 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · string ensemble 2
const string_ensemble_2 = note(`<
  ~@24 A B C D E F G H I J K L M N K O P Q R S ~@8 T U V W T U X ~ A B C D E F G H I J K L M N K O P Q R S P Q R S P Q R
  S P Q Y@2 ~ I B C D E F G H I J K L M N K Z I J K L M N K AA@6
>`.pickRestart({
  A: "~ [a2,a3,g4,c5,g5]@23", B: "~ [f2,a3,e4,c5,a5]@23", C: "~ [d3,a3,d4,f4,c5]@23",
  D: "~ [g2,a3,d4,f4,c5]@12 [g2,b3,d4,g4,d5]@11", E: "~ [e3,b3,d4,g4,d5]@23", F: "~ [a2,a3,c4,g4,e5]@23",
  G: "~ [f2,f3,c4,a4,e5]@23", H: "~ [g2,a3,c4,f4,d5]@12 [g2,g3,b3,g4,d5]@11", I: "~ [e3,b3,g4,d5,g5]@23",
  J: "~ [a2,a3,e4,c5,a5]@23", K: "~ [f2,a3,c4,e4,c5]@23", L: "~ [g2,a3,d4,a4,c5]@12 [g2,b3,d4,g4,d5]@11",
  M: "~ [e3,b3,d4,g4,e5]@23", N: "~ [a2,a3,c4,g4,c5]@23", O: "~ [g2,a3,d4,a4,c5]@12 [g2,g3,d4,g4,b4]@11",
  P: "~ [a2,e3,a3,c#4,e4]@23", Q: "~ [a2,e3,g#3,b3,e4]@23", R: "~ [a2,f3,a3,c4,e4]@23", S: "~ [a2,d3,g3,b3,d4]@23",
  T: "~ [f3,a3,e4]@23", U: "~ [f3,a3,d4]@23", V: "~ [g3,b3,d4]@23", W: "~ [e3,g3,d4]@23",
  X: "~ [e3,g3,b3]@8 ~ [f3,a3,c4]@8 ~ [g3,b3,d4]@5", Y: "[~ [a2,f3,a3,c4,e4]@25 ~@22]/2", Z: "~ [g2,g3,d4]@23",
  AA: "[~ [g3,d4]@72 [g3,c4,e4]@51 ~@20, ~ g2@24 ~@48 c2@48 ~@23]/6", // G5 C
})).s("gm_string_ensemble_2").gain(0.26)

// bass · synth bass 2
const bass = note(`<
  A B C D A B E F G H I@2 J K L M G H N@2 J K O ~ P Q A R S P T U V P W X S P T Y Z AA Z AB G H AC@2 J K AD AE G H AF@2
  J K O AG AH Q A R AI P T AJ AK P W AL AM P T Y AN AO AN AO AN AP AN AB AN AO AN AB AN AP Z AQ@2 V Q A R AI P T AR AM
  AS W AL AI P AT@2 AM AS W AL AI P AT@2 AU@2 AV@3
>`.pickRestart({
  A: "~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2",
  B: "~ a#1@2 ~ a#1@2 ~ a#1@2 ~ a#1@2 ~ a#1@2 ~ a#1@2 ~ a#1@2 ~ a#1@2",
  C: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2",
  D: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ c2@2 ~ f2@2",
  E: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ d2@2", F: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ d2@5",
  G: "~ f1@2 ~ f1@2 ~ f1@3 ~@12 c1@2", H: "~ d1@2 ~ d1@2 ~ d1@3 ~@14",
  I: "[~ g1@2 ~ g1@2 ~ g1@3 ~@12 e1@5 ~ e1@2 ~ e1@2 ~@4 e1@2 ~ e1@2 ~@6]/2", J: "~ f1@2 ~ f1@2 ~ f1@2 ~@13 c1@2",
  K: "~ d1@2 ~ d1@2 ~ d1@2 ~@15", L: "~ g1@2 ~ g1@2 ~ g1@3 ~@14", M: "~ a1@2 ~ a1@2 ~ a1@3 ~@3 a1@8 ~@3",
  N: "[~ g1@2 ~ g1@2 ~ g1@2 ~@13 e1@5 ~ e1@2 ~ e1@2 ~@4 e1@8 ~@3]/2", O: "~ e1@8 ~ f1@8 ~ g1@5",
  P: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ g1@2",
  Q: "~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ a1@3 c2@2", R: "~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@3 d2@2 ~ g1@3 d2@2",
  S: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2",
  T: "~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2", U: "~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ a2@3 g2@3 d2@3 e2@2",
  V: "~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2",
  W: "~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ a1@2 ~ c2@2",
  X: "~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ g1@2 ~ g1@2 ~ b1@2 ~ d2@2",
  Y: "~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ b1@3 g1@2",
  Z: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2",
  AA: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ d2@2 ~ a1@3 a1@2",
  AB: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ e2@2 ~ g2@3 a2@2 ~ a1@2",
  AC: "[~ g1@2 ~ g1@2 ~ g1@3 ~@12 e1@5 ~ e1@2 ~ e1@3 ~@3 e1@2 ~ e1@2 ~@6]/2", AD: "~ g1@2 ~ g1@2 ~ g1@2 ~@15",
  AE: "~ a1@2 ~ a1@2 ~ a1@2 ~@4 a1@8 ~@3", AF: "[~ g1@2 ~ g1@2 ~ g1@3 ~@12 e1@5 ~ e1@2 ~ e1@3 ~@3 e1@8 ~@3]/2",
  AG: "~@8 e2@3 ~", AH: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ b1@2 ~ c2@2",
  AI: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ g1@2",
  AJ: "~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ b2 ~ a2 g2 ~ e2 d2 ~ b1 g1 ~",
  AK: "d1 e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2",
  AL: "~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2",
  AM: "~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ g1@2",
  AN: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ e2@2",
  AO: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@3 a1@2",
  AP: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@3 e2@2",
  AQ: "[~@5 f2@3 ~ e2@3 ~ d2@3 ~ b1@3 ~ c2@5 ~@3 f2@3 ~ e2@3 ~ d2@3 ~ e2@3 ~ f2@3]/2",
  AR: "~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@3 b1@3 d2@3 g1@2", AS: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ b1@3 c2@2",
  AT: "[~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@2 ~ f1@5 ~ f2@3 e2@3 d2@6 e2@3 f2@3 g2@2]/2",
  AU: "~@4 f2@3 e2@3 d2@6 e2@3 f2@3 g2@2", AV: "[~ c2@48 c2@3 ~@20]/3",
})).s("gm_synth_bass_2").gain(0.63)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B C D A B C D E F G@2 H I J K L M N@2 O P Q ~ D R A S T D R S T D R S T D R U D T V W X Y Z@2 O AA J AB O AC AD@2 O
  AE Q ~ D R A S T D R S T D R S T D R U AF@4 AG@4 AH@7 AI AJ AK R A S T D R S T D R S T D R AL@2 D R S T D R AM@3 AN@3
>`.pickRestart({
  A: "~ [a2,d3]@23", B: "~ [a#2,f3]@23", C: "~ [g2,c3]@23", D: "~ [a2,e3]@23",
  E: "~ f3 ~@2 f3@2 ~ f3@2 ~@7 [a3,e4] ~ e4 ~@3 [g2,c3,e4]@2", F: "~ d3@2 ~ d3 ~@2 d3@2 ~ [a3,e4]@3 ~@3 e4@2 ~@6",
  G: "[~ g3@2 ~ g3@2 ~ [g3,d4]@2 ~@7 [d4,g4]@6 e3@8 ~ [b2,e3]@2 ~@4 [b2,e3]@2 ~ [b2,e3]@2 ~@6]/2", // G5 E5
  H: "~ f3 ~@2 f3@2 ~ f3@2 ~@7 [a3,e4]@3 ~@3 [g2,c3,d4]@2", // A5 Gsus4
  I: "~ [a2,d3]@2 ~ [a2,d3]@2 ~ d3@2 ~ [a3,d4]@3 ~@3 d4@2 ~@4 d4@2", // D5
  J: "~ [d3,g3]@2 ~ [d3,g3]@2 ~ [g3,d4]@2 ~ [d4,g4]@6 [d4,g4]@6 ~@2, ~@10 d5@3 ~@11", // G5
  K: "~ [e3,a3]@2 ~ [e3,a3]@2 ~ [e3,a3,a4,d5]@3 ~@3 [e3,a3]@8 ~@3, ~@13 [a4,d5]@6 ~@5", // A5 Dsus2 A5 D5
  L: "~ [c3,f3] ~@2 f3@2 ~ [c3,f3]@2 ~@7 [a3,e4]@3 ~@3 [g2,c3,d4]@2", // F5 A5 Gsus4
  M: "~ d3@2 ~ [a2,d3]@2 ~ [a3,d4]@4 ~@2 f4@2 ~ e4@2 ~ d4@2 ~ e4@2, ~@7 d3@2 ~@15", // D5
  N: "[~ [d3,g3]@2 ~ [d3,g3]@2 ~ [d3,g3,d4]@2 ~@7 [d4,g4]@6 e3@5 ~ [b2,e3]@2 ~ [b2,e3]@2 ~@4 [b2,e3]@8 ~@3]/2", // G5 E5
  O: "~ [c3,f3] ~@2 [c3,f3]@2 ~ [c3,f3]@2 ~@7 [a3,e4]@3 ~@3 [g2,c3,d4]@2", // F5 A5 Gsus4
  P: "~ [a2,d3]@2 ~ d3@2 ~ [a3,d4]@4 ~@2 f4@2 ~ e4@2 ~ d4@2 ~@3, ~@7 d3@2 ~@15", // D5
  Q: "~ [b2,e3,b3]@9 [c3,f3,c4]@9 [d3,g3,d4]@4 ~", R: "~ [f2,c3]@23", S: "~ [f2,c3]@12 [g2,d3]@11", T: "~ [b2,e3]@23",
  U: "~ [g2,d3]@18 [g2,d3]@5", V: "~ [c3,f3]@23", W: "~ [d3,g3]@23",
  X: "~ f3 ~@2 f3@2 ~ f3@2 ~@7 [a3,e4]@2 e4 ~@3 [g2,c3,e4]@2", Y: "~ d3@2 ~ d3@2 ~ d3@2 ~ [a3,e4]@3 ~@3 e4@2 ~@6",
  Z: "[~ g3@2 ~ g3 ~@2 [g3,d4]@2 ~@7 [d4,g4]@6 e3@8 ~ [b2,e3]@2 ~@4 [b2,e3]@2 ~ [b2,e3]@2 ~@6]/2", // G5 E5
  AA: "~ [a2,d3]@2 ~ [a2,d3]@2 ~ [a2,d3]@2 ~ [a3,d4]@3 ~@3 d4@2 ~@4 d4@2", // D5
  AB: "~ a3@2 ~ [e3,a3]@2 ~ [e3,a3,a4,d5]@3 ~@3 [e3,a3]@8 ~@3, ~@13 [a4,d5]@6 ~@5", // A5 Dsus2 A5 D5
  AC: "~ [a2,d3]@2 ~ [a2,d3]@2 ~ [a3,d4]@4 ~@2 f4@2 ~ e4@2 ~ d4@2 ~ e4@2, ~@7 d3@2 ~@15", // D5
  AD: "[~ [d3,g3]@2 ~ [d3,g3] ~@2 [d3,g3,d4]@2 ~@7 [d4,g4]@6 [b2,e3]@5 ~ [b2,e3]@2 ~ [b2,e3]@2 ~@4 [b2,e3]@8 ~@3]/2", // G5 E5
  AE: "~ d3@2 ~ d3@2 ~ [a3,d4]@4 ~@2 f4@2 ~ e4@2 ~ d4@2 ~@3, ~@7 d3@2 ~@15", // D5
  AF: "[~ [a2,e3]@13 ~@2 [a2,e3]@4 ~@2 b2@17 ~ [b2,e3]@4 ~@2 [c3,f3]@17 ~ [c3,f3]@4 ~@2 [d3,g3]@11 ~ d3@12 d3@2, ~@22 e3@3 ~@57 g3@14]/4", // A5 E5 F5 G5
  AG: "[~ [a2,e3]@13 ~@2 [a2,e3]@4 ~@2 b2@17 ~ [b2,e3]@4 ~@2 [c3,f3]@17 ~ [c3,f3]@4 ~@2 [d3,g3]@11 ~ [d3,g3]@14, ~@22 e3@3 ~@71]/4", // A5 E5 F5 G5
  AH: "[~ [a2,e3]@13 ~@2 [a2,e3]@4 ~@2 b2@17 ~ [b2,e3]@4 ~@2 [c3,f3]@17 ~ [c3,f3]@4 ~@2 [d3,g3]@17 ~ [d3,g3]@4 ~@2 e3@17 ~ [a2,e3]@4 ~@2 b2@17 ~ [b2,e3]@4 ~@2 [c3,f3]@17 ~ [c3,f3]@2 ~ [c3,f3]@3 ~@2, ~@22 e3@3 ~@69 a2@3 ~@21 e3@3 ~@47]/7", // A5 E5 F5 G5 A5 E5 F5
  AI: "~@5 [f3,f4]@4 [e3,e4]@4 [d3,d4]@4 [b2,b3]@4 [c3,c4]@3", // F E D B C
  AJ: "~@5 [f3,f4]@4 [e3,e4]@4 [d3,d4]@4 [e3,e4]@4 [f3,f4]@3", AK: "~ [b2,e3,g3,g4]@23",
  AL: "[~@4 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 g3@3 [b2,e3]@23, ~@22 g4@7 ~@19]/2", // F E D E F E5
  AM: "[~@4 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 g4@6 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 g4@6 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 [g3,g4]@2, ~@11 g3@12 g3@12 ~]/3", // F E D E F E D E …
  AN: "[~ [c3,c4]@48 [c3,c4]@3 ~@20]/3", // C
})).s("gm_overdriven_guitar").gain(0.32).pan(0.7)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  ~@8 A B C ~ D E ~@2 F G H@2 I J ~@22 A K L ~ I M ~ N I O ~@2 I P ~@64
>`.pickRestart({
  A: "~ c3 ~@2 c3@2 ~ c3@2 ~@9 a3 ~@5", B: "~ a2@2 ~ a2 ~@2 a2@2 ~@7 a3@2 ~@6", C: "~ d3@2 ~ d3@2 ~@18",
  D: "~ c3 ~@2 c3@2 ~ c3@2 ~@13 a3@2", E: "~@7 a2@2 ~@7 a3@2 ~@4 a3@2", F: "~@2 c3 ~@8 a3", G: "~ a2@2 ~@4 a2@2 ~@15",
  H: "[~@22 b2@5 ~@21]/2", I: "~@11 a3", J: "~@4 a2@2 ~ a2@2 ~@15", K: "~ a2@2 ~ a2@2 ~ a2@2 ~@7 a3@2 ~@6",
  L: "~ d3@2 ~ d3 ~@19", M: "~@8 a3 ~@2 a3", N: "~ e3@2 ~@21", O: "~@7 a2@2 ~@15", P: "~ a2@2 ~ a2@2 ~ a2@2 ~@15",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.7)

// other · lead 1 square
const lead_1_square = note("<~@84 A B C D E F G H ~@30>".pickRestart({
  A: "~@7 e4 ~@8 a4 ~ b4 c#5 ~ a4 b4 ~", B: "c#5 b4@9 e5@14", C: "~ a5@3 g5@3 f5@3 c5@6 f5@3 a5@3 c6@2",
  D: "~ b5@3 g5@3 d5@3 d6@14", E: "~ c#6 ~ b5 a5 ~ e5 a5 ~ c#6 e6 ~ f#6 e6@9 d6 ~",
  F: "c#6 b5 ~ e5 g#5 ~ e5 b5 ~ g#5 e6@14", G: "~ a6 ~ g6 f6 ~ c6 a5 ~ g5 f5 ~ c5 f5 ~ g5 a5 ~ c6 f6 ~ g6 a6 ~",
  H: "c7 ~@7",
})).s("gm_lead_1_square").gain(0.39).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note("<A@4 B@4 ~@32 C@2 D@3 ~@31 C@2 E@3 C E@3 C F@3 C G@2 ~@30>".pickRestart({
  A: "[~ d4@21 ~@3 f4@21 ~@3 e4@21 ~@3 g4@21 ~@2, ~@23 a3@21 ~@3 g3@21 ~@3 a3@21 ~@4, ~@8 d4@7 ~ c4@7 ~ c4@7 ~]/4",
  B: "[~ d4@21 ~@3 f4@21 ~@3 e4@21 ~@3 g4@21 ~@2, [f3,a3]@21 ~@2 a3@21 ~@3 g3@21 ~@3 a3@21 ~@4, ~@8 d4@7 ~ c4@7 ~ c4@7 ~]/4", // F
  C: "~@7 e3@3 a3@6 e3@3 ~@3 e3@2, ~ a2@18 a2@5",
  D: "[~@7 e3@3 a3@6 e3@3 ~@3 e3@3 ~@6 e3@3 a3@6 e3@3 ~@3 e3@4 ~@22, ~ a2@18 a2@6 a2@18 a2@6 ~@23]/3",
  E: "[~@7 e3@3 a3@6 e3@3 ~@3 e3@3 ~@6 e3@3 a3@6 e3@3 ~@3 e3@3 ~@6 e3@3 a3@6 e3@3 ~@3 e3@2, ~ a2@18 a2@6 a2@18 a2@6 a2@18 a2@5]/3",
  F: "[~@7 e3@3 a3@6 e3@3 ~@3 e3@3 ~@6 e3@3 a3@6 e3@3 ~@15 a3@6 e3@3 ~@3 e3@2, ~ a2@18 a2@6 a2@18 a2@6 a2@18 a2@5, ~@46 e3@9 e3@8 ~@9]/3",
  G: "[~@7 e3@3 a3@6 e3@3 ~@3 e3@4 ~@22, ~ a2@18 a2@7 ~@22]/2",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.3)

// chords · piano
const piano = note(`<
  A B C D A B C D E F G H@2 F ~ I@2 ~ G J ~@2 K ~ L M N O P L M Q R L M O P L M S T U V W E ~@2 X@2 F Y I@2 ~@2 Z ~@2 K
  ~ L M N O P L M Q R L M O P L M S T U V W T U V W T U V W T U AA@2 AB R M N O P L M Q R L M O P L AC@3 L M O P L AD@4
  AE@3
>`.pickRestart({
  A: "~ [f3,a3,d4]@23", B: "~ [a3,d4,f4]@23", C: "~ [c4,e4,g4]@23", D: "~ [a3,c4,g4]@23", E: "~ e4@23", F: "~ a3@23",
  G: "~ g3@23", H: "[~@4 b4@5 ~ c5@6 g5@6 d5@19 ~@7]/2",
  I: "[~@25 [a3,e4]@23, ~@19 e6@14 ~@15, ~@5 c6@3 ~@4, ~@22 b5@17 ~@9]/2", J: "~@2 g5, ~ b4@2 ~@3, ~@10 c5@9 ~@5",
  K: "~ [e3,g3,b3]@8 ~ [f3,a3,c4]@8 ~ [g3,b3,d4]@5", L: "~ [a2,g3,c4,e4]@23", M: "~ [f2,f3,a3,e4]@23",
  N: "~ [d3,f3,a3,c4]@23", O: "~ [g2,d3,a3,c4]@11 ~ [g2,g3,b3,d4]@11", P: "~ [e2,e3,g3,d4]@23",
  Q: "~ [g2,d3,a3,c4]@11 ~ [g2,d3,g3,b3]@11", R: "~ [e2,g3,b3,d4]@23", S: "~ [g2,g3,b3,d4]@11 ~ [g3,b3,d4,g4]@11",
  T: "~ [e3,a3,c#4,e4]@23", U: "~ [e3,g#3,b3,e4]@23", V: "~ [f3,a3,c4,e4]@23", W: "~ [g3,b3,d4]@23",
  X: "[~@4 b4@5 ~ c5@6 g5@6 ~@3 c4@23, ~@22 d5@19 ~@7]/2", Y: "~ b3@23",
  Z: "~@2 g5, ~ d4@23, ~ b4@2 ~@3, ~@10 c5@9 ~@5",
  AA: "[~ [f3,a3,c4,e4]@25 ~@3 [f2,f3,f4]@5 [e2,e3,e4]@4 [d2,d3,d4]@4 [b1,b2,b3]@4 [c2,c3,c4]@2]/2", // Fmaj7 F E D B C
  AB: "~@5 [f3,f4]@5 [e3,e4]@3 [d3,d4]@4 [e3,e4]@4 [f3,f4]@3", // F E D E F
  AC: "[~ [f2,a3,e4]@23 ~@4 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 g3@3 [e2,g3,b3,d4]@23, ~ f3@25 ~@20 g4@7 ~@19]/3", // Fmaj7 F E D E F Em7
  AD: "[~ [f2,a3,e4]@23 ~@4 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 g4@6 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 g4@6 [f3,f4]@3 [e3,e4]@3 [d3,d4]@6 [e3,e4]@3 [f3,f4]@3 [g3,g4]@2, ~ f3@25 ~@20 g3@24 g3@24 ~@2]/4", // Fmaj7 F E D E F E D …
  AE: "[~ c4@51 ~@20, ~ c3@48 ~@23]/3",
})).s("gm_piano").gain(0.37).pan(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@8 A B C D E B F G H I C D J I ~@22 A I F D A B K G H I F L J I ~@64>".pickRestart({
  A: "~ [f3,a3]@23", B: "~ [f3,d4]@23", C: "~ [b3,d4]@23", D: "~ [e3,g3,d4]@23", E: "~ [f3,a3,c4]@23",
  F: "~ [g3,b3,d4]@23", G: "~ [a3,c4,e4]@23", H: "~ f3@23", I: "~ [f3,a3,d4]@23", J: "~ [f3,a3,e4]@23",
  K: "~ [g3,d4]@23", L: "~ [e3,g3]@23",
})).s("gm_piano").gain(0.21).pan(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  [~@7 x ~@11 x ~@4]!59
  [~@13 x ~@10]
  [~@7 x ~@11 x ~@4]!31
  [~ x ~@22]!2
  [~@7 x ~@11 x ~@4]!26
  ~@3
>`).gain(0.61)

// drums · hihat
const hihat = s("hh").struct(`<
  A@7 B A@14 C ~ D E F G H G H I J K A J L M N C ~@4 A@14 C ~ D O@2 M@3 P Q M@2 G E@2 O M R ~@17 E O@2 G M@3 Q M@2 D M@4
  S M@2 D M@4 S@3 T ~@2
>`.pickRestart({
  A: "~ x ~@5 x ~@5 x ~@5 x ~@4", B: "~ x ~@5 x ~@11 x ~@4", C: "~ x ~@5 x ~@5 x ~@10",
  D: "~ x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~", E: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  F: "~ x ~@2 x ~@2 x ~@5 x ~@5 x ~@4", G: "~ x ~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~",
  H: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~", I: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@7",
  J: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4", K: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@4",
  L: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4", M: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  N: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~", O: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4",
  P: "~ x ~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~", Q: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@7", R: "~ x ~@5 x ~@2 x ~@2 x ~@10",
  S: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@10", T: "~ x ~@22",
})).gain(0.38)

// … 42 more lines

More by Tozzi