Strudelify

Viento 'e terra

Daniele

KeyB minorTempo115 bpm
0:00/0:00
// Viento 'e terra — Daniele
// 115 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(115/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(`<
  A@3 B C D E@2 F G@7 H I@2 J@6 K@8 L@8 M N@2 O@4 P@2 Q R S T@6 U@5 V@3 W X Y Z@2 AA AB AC AD AE AF@3 AG@2 AH@5 AI@3
  AJ@6 AK AL AM AN@2 AO AP@2 AQ AR
>`.pickRestart({
  A: "[b1,b2,b3,e4,f#4,b4] ~@2 [b1,b2,b3,e4,f#4,b4]@12 ~", // Bsus4
  B: "[b1,b2,b3,e4,f#4,b4] ~@2 [b1,b2,b3,e4,f#4,b4]@10 b5 f#5 e5", C: "b4@9 c#5 b4 a4 c#5 e5 b5 c#6",
  D: "b5 c#6 b5 a5 f#5 b5 f#5 e5 b4 c#5 b4 a4 f#4 ~ f#4 e4, ~@13 b4@2 ~",
  E: "[[b3,c4] ~@2 b3@27 ~@2, e4@15 ~, c#4@3 ~@29]/2", F: "[c3,b3,e4,g4]@7 [b2,a3,d#4,f#4]@8 ~",
  G: "[[e2,g3,b3,d4,f#4]@7 [f#2,d4]@8 [g2,g3,b3,d4,f#4]@9 [b2,a3,d#4,f#4]@7 [e2,e3,g#3,b3,d#4]@12 ~ [e3,g#3,b3,d#4]@3 [a2,g3,c4,e4]@9 [b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@9 [b2,d4,f#4,a4]@7 [a2,g3,c4,e4,g4]@9 [b2,a3,d4,f#4,a4]@7 [c3,b3,e4,g4,b4]@9 [b2,a3,d4,f#4,a4]@7 ~, ~@7 [f#3,a3]@5 ~@31 e2@4 ~@65]/7", // Em7 D Gmaj7 B7 Emaj7 Am7 Bm7 G …
  H: "[b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@12 ~", // Bsus4
  I: "[~@15 [b2,b3,e4,f#4]@8 [b2,b3,d#4,f#4,b4]@9, [e3,g3,b3] ~, [d4,f#4]@13 f#4@2 ~@17, ~@3 a4 ~@4, ~@7 d4 ~@8]/2", // Bsus4 B Em D
  J: "[[e3,g3,b3,d4,f#4]@7 [c3,d4,g4,b4]@8 [a2,g3,c4,e4,g4]@9 [b2,b3,d#4,f#4,b4]@7 f#4@13 ~ f#4@2 [b2,b3,e4,f#4]@8 [b2,b3,d#4,f#4,b4]@8 [c3,d4,g4,b4]@8 [b2,d4,f#4,a4]@8 e4@8 [b2,b3,e4,f#4,b4]@8 ~, ~@31 [e3,g3,b3,d4]@16 ~@32 [a2,g3,c4,g4]@16 ~, ~@44 a4@3 ~@49]/6", // Em7 G Am7 B Bsus4 B G Bm7 …
  K: "[b3@11 ~@3 d4 [b2,b3,e4,f#4]@8 [b2,b3,d#4,f#4]@8 [e3,g3,b3,d4,f#4]@8 [c3,b3,d4,g4,b4]@8 [a2,a3,c4,e4,g4]@8 [b2,b3,d#4,f#4]@8 [g3,b3,d4,f#4]@9 [b3,d4,f#4,a4] ~ [b3,d4,a4] [b3,d4,f#4] ~ [b3,d4,a4] ~ [b2,b3,e4,f#4]@8 [b2,b3,d#4,f#4]@8 [c3,b3,d4,g4,b4]@8 [b2,a3,d4,f#4,a4]@7 ~ [a2,a3,c4,e4,g4]@8 [b2,b3,e4,f#4,b4]@7 ~@2, [e3,g3,d4]@15 ~@48 e3@14 ~@51, f#4@12 a4@3 ~@113, ~@11 b3@4 ~@113, ~@13 f#4@2 ~@113]/8", // Bsus4 B Em7 G Am7 B Gmaj7 Bm7 …
  L: "[[c3,d4,g4,b4]@7 [b2,b3,d#4,f#4,b4]@8 [e3,g3,b3,d4,f#4]@9 [f#2,f#3,a3,d4]@7 [g2,g3,b3,d4,f#4]@8 [b2,a3,d#4,f#4]@7 g#2 [e2,e3,g#3,b3,d#4]@13 [e2,e3,g#3,b3,d#4]@3 [a2,g3,c4,e4]@3 ~@6 [b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@8 ~ [b2,a3,d4,f#4,a4]@5 [b2,a3,d4,f#4,a4] ~ [a2,a3,c4,e4,g4]@9 [b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@6 ~@3 [b2,d4,f#4,a4]@7 ~, ~@79 b3@5 ~@44]/8", // G B Em7 D Gmaj7 B7 Emaj7 Am7 …
  M: "[b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@10 ~@3", // Bsus4
  N: "[[b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@5 [a2,a3,d4,e4,a4] ~@2 [a2,a3,d4,e4,a4]@13 [a2,a3,d4,e4,a4] ~@2 [a2,a3,d4,e4,a4]@5]/2", // Bsus4 Asus4
  O: "[[f#2,f#3,b3,c#4,f#4] ~@2 [f#2,f#3,b3,c#4,f#4]@5 [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4]@13 [c3,b3,e4,g4]@7 [b2,a3,d#4,f#4]@9 [e2,g3,b3,d4,f#4]@7 [f#2,d4]@8 [g2,g3,b3,d4,f#4]@9, ~@47 [f#3,a3]@5 ~@12]/4", // F#sus4 Gsus4 Cmaj7 B7 Em7 D Gmaj7 F#m
  P: "[[b2,a3,d#4,f#4]@7 [e2,e3,g#3,b3,d#4]@12 ~ [e3,g#3,b3,d#4]@3 [a2,g3,c4,e4]@9, ~@19 e2@4 ~@9]/2", // B7 Emaj7 Am7
  Q: "[b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@9", R: "[b2,d4,f#4,a4]@7 [a2,g3,c4,e4,g4]@9",
  S: "[b2,a3,d4,f#4,a4]@7 [c3,b3,e4,g4,b4]@9", // Bm7 Cmaj7
  T: "[[b2,a3,d4,f#4,a4]@7 ~ [b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@12 ~ b3@11 ~@3 d4 [b2,b3,e4,f#4]@8 [b2,b3,d#4,f#4]@8 [e3,g3,b3,d4,f#4]@8 [c3,b3,d4,g4,b4]@8 [a2,a3,c4,e4,g4]@8 [b2,b3,d#4,f#4]@8 [e3,g3,b3,d4,f#4]@9, ~@8 [e3,g3,d4]@5 ~@19, ~@8 f#4@4 a4 ~@19, ~@35 b3@4 ~@57, ~@37 f#4@2 ~@57]/6", // Bm7 Bsus4 B Em7 G Am7 B Em7
  U: "[[b3,d4,f#4,a4] ~ [b3,d4,a4] [b3,d4,f#4] ~ [b3,d4,a4] ~ [b2,b3,e4,f#4]@8 [b2,b3,d#4,f#4]@8 [c3,b3,d4,g4,b4]@8 [b2,a3,d4,f#4,a4]@7 ~ [a2,a3,c4,e4,g4]@8 [b2,b3,e4,f#4,b4]@7 ~@2 [c3,d4,g4,b4]@7 [b2,b3,d#4,f#4,b4]@8 [e3,g3,b3,d4,f#4]@9]/5", // Bm7 Bm Bm7 Bsus4 B G Bm7 Am7 …
  V: "[[f#2,f#3,a3,d4]@7 [g2,g3,b3,d4,f#4]@8 [b2,a3,d#4,f#4]@7 g#2 [e2,e3,g#3,b3,d#4]@13 [e2,e3,g#3,b3,d#4]@3 [a2,g3,c4,e4]@3 ~@6]/3", // D Gmaj7 B7 Emaj7 Am7
  W: "[b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@8 ~, ~@7 b3@5 ~@4", // Bm7 G
  X: "[b2,a3,d4,f#4,a4]@5 [b2,a3,d4,f#4,a4] ~ [a2,a3,c4,e4,g4]@9", Y: "[b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@6 ~@3",
  Z: "[[b2,d4,f#4,a4]@7 ~ [b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@10 ~@3 [b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@5]/2", // Bm7 Bsus4
  AA: "[a2,a3,d4,e4,a4] ~@2 [a2,a3,d4,e4,a4]@13", // Asus4
  AB: "[a2,a3,d4,e4,a4] ~@2 [a2,a3,d4,e4,a4]@5 [f#2,f#3,b3,c#4,f#4] ~@2 [f#2,f#3,b3,c#4,f#4]@5", // Asus4 F#sus4
  AC: "[g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4]@13", AD: "~ f#4 g4 a4 ~ e4 ~ d#4 ~ c5@3 b4 ~ a4 ~, e4 ~@7",
  AE: "g#4 a4 b4 e4 ~@3 d4 c4 a4 ~@2 a4@2 ~ e4",
  AF: "[g4 f4 e4 d4 f4@2 e4 d4 ~@2 c4 ~@2 c4 ~@3 g#3 ~ b3 e3 ~@2 e3@5 d3 ~@2 d3@2 f3 e3 ~ a3 g#3 ~@2 c4@2 b3 c4@2 ~@3, ~@9 b3@2 ~ d4@2 ~ b3@2 ~@22 d4@2 ~@7, ~@8 a3 ~@15]/3",
  AG: "[~@5 c#4 ~ d4 e4 ~ f4 ~ e4@2 d4 f4@2 ~@4 b3 ~ d#4 e4 ~ f#4 ~ g4@4]/2",
  AH: "[f#4@4 e4@4 d#4@2 ~@2 [c3,d4,g4,b4]@7 [b2,b3,d#4,f#4,b4]@8 [e3,g3,b3,d4,f#4]@9 [f#2,f#3,a3,d4]@7 [g2,g3,b3,d4,f#4]@8 [b2,a3,d#4,f#4]@7 g#2 [e2,e3,g#3,b3,d#4]@13 [e2,e3,g#3,b3,d#4]@3 [a2,g3,c4,e4]@3 ~@2]/5", // G B Em7 D Gmaj7 B7 Emaj7 Am7
  AI: "[~@4 [b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@8 ~ [b2,a3,d4,f#4,a4]@5 [b2,a3,d4,f#4,a4] ~ [a2,a3,c4,e4,g4]@9 [b2,a3,d4,f#4]@7 [c3,d4,g4,b4]@5, ~@11 b3@5 ~@32]/3", // Bm7 G Bm7 Am7 Bm7 G
  AJ: "[~@4 [b2,d4,f#4,a4]@7 ~ [b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@10 ~@3 [b2,b3,e4,f#4,b4] ~@2 [b2,b3,e4,f#4,b4]@5 [a2,a3,d4,e4,a4] ~@2 [a2,a3,d4,e4,a4]@13 [a2,a3,d4,e4,a4] ~@2 [a2,a3,d4,e4,a4]@5 [f#2,f#3,b3,c#4,f#4] ~@2 [f#2,f#3,b3,c#4,f#4]@5 [g2,g3,c4,d4,g4] ~@2 [g2,g3,c4,d4,g4]@13 ~ f#4 g4 a4 ~ e4 ~ d#4 ~ c5@3, ~@42 e4 ~@5]/6", // Bm7 Bsus4 Asus4 F#sus4 Gsus4
  AK: "b4 ~ a4 ~ g#4 a4 b4 e4 ~@3 d4 c4 a4 ~@2", AL: "a4@2 ~ e4 g4 f4 e4 d4 f4@2 e4 d4 ~@2 c4 ~, ~@13 b3@2 ~",
  AM: "~ c4 ~@3 g#3 ~ b3 e3 ~@2 e3@5, d4@2 ~ b3@2 ~@11, ~@2 a3 ~@5",
  AN: "[d3 ~@2 d3@2 f3 e3 ~ a3 g#3 ~@2 c4@2 b3 c4@2 ~@8 c#4 ~ d4 e4 ~ f4 ~, ~@11 d4@2 ~@19]/2",
  AO: "e4@2 d4 f4@2 ~@4 b3 ~ d#4 e4 ~ f#4 ~", AP: "[g4@4 f#4@4 e4@4 d#4@3 e4@2 ~@15]/2", AQ: "~@11 c4 b3 a3 g3 f#3",
  AR: "e3 ~@7",
})).s("gm_piano").gain(0.48)

// bass · electric bass finger
const bass = note(`<
  A B A B C D@2 E F G@7 B H@2 I@6 H@2 I@6 J@8 B K@2 L@4 M N O P O Q@5 R S T@4 U@2 V W X Y Z@2 AA AB AC AD AE AF@3 AG@2
  AH AI AJ AK AL AM AN AM AO@6 AP AQ AR AS@2 AT AU ~ AV AW
>`.pickRestart({
  A: "b1 ~@2 b1@11 ~ f#2, ~@7 e2", B: "b1 ~@2 b1@12 ~", C: "e1@2 ~ b1 b1@3 e1@3 ~ b1 b1@4",
  D: "e1@3 b1 b1@3 e1@4 b1 b1@4", E: "e1@3 b1 b1@3 e1@4 b1 b1@3 ~", F: "c2@3 g2 g2@3 b1@4 f#2 f#2@4",
  G: "[e1@3 b1 b1@3 f#1@4 ~ d2@3 g1@4 d2 d2@3 ~ b1@3 f#2 f#2@3 e1@4 b1 b1@4 e1@3 b1 b1@3 a1@4 e2 e2@4 b1@3 f#2 f#2@3 c2@4 g2 g2@4 b1@3 f#2 ~ g1 ~ a1@4 e2 e2@4 b1@3 f#2 f#2@3 c2@4 g2 g2@4 b1@3 f#2 f#2@4, ~@38 f#2 ~@17]/7",
  H: "[e1@3 b1 b1@3 e1@4 b1 b1@2 ~ b1@4 f#2 f#2@3 b1@4 f#2 f#2@4]/2",
  I: "[e1@3 b1 b1@3 c2@4 g2 g2@3 a1@4 e2 e2@3 ~ b1@3 f#2 f#2@3 e1@4 b1 b1@3 d1 e1@3 b1 b1@3 b1@3 ~ f#2 f#2@4 b1@3 f#2 f#2@3 c2@4 g2 g2@3 b1@4 f#2 f#2@3 a1@4 e2 e2@3 b1@4 f#2 f#2@2 ~@2]/6",
  J: "[c2@3 g2 g2@3 b1@4 f#2 f#2@3 e1@4 b1 b1@3 f1 f#1@3 d2 d2@3 g1@4 d2 d2@3 b1@4 f#2 f#2@3 e1@4 b1 b1@3 d#1 e1@3 b1 b1@3 a1@3 ~@4 a1 ~ b1@3 ~ b1@2 ~ c2@2 ~@5 c2@2 b1@4 ~ b1 ~ a1@2 ~@5 a1 ~ b1@3 ~ b1@2 ~ c2@2 ~@5 c2 ~ b1@4 b1@3 ~]/8",
  K: "[b1 ~@2 b1@5 a1 ~@2 a1@12 ~ a1 ~@2 a1@5]/2",
  L: "[f#1 ~@2 f#1@5 g1 ~@2 g1@12 ~ c2@3 g2 g2@3 b1@4 f#2 f#2@4 e1@3 b1 b1@3 f#1@4 ~ d2@3 g1@4 d2 d2@3 ~]/4",
  M: "b1@3 f#2 f#2@3 e1@4 b1 b1@4", N: "e1@3 b1 b1@3 a1@4 e2 e2@4", O: "b1@3 f#2 f#2@3 c2@4 g2 g2@4",
  P: "b1@3 f#2 ~ g1@2 a1@4 e2 e2@4, ~@2 f#2 ~@5",
  Q: "[b1@3 f#2 f#2@4 b1 ~@2 b1@12 ~ e1@3 b1 b1@3 e1@4 b1 b1@2 ~ b1@4 f#2 f#2@3 b1@4 f#2 f#2@4 e1@3 b1 b1@3 c2@4 g2 g2@3 a1@4 e2 e2@3 ~]/5",
  R: "b1@3 f#2 f#2@3 e1@4 b1 b1@3 d1", S: "e1@3 b1 b1@3 b1@3 ~ f#2 f#2@4",
  T: "[b1@3 f#2 f#2@3 c2@4 g2 g2@3 b1@4 f#2 f#2@3 a1@4 e2 e2@3 b1@4 f#2 f#2@2 ~@2 c2@3 g2 g2@3 b1@4 f#2 f#2@3 e1@4 b1 b1@3 f1]/4",
  U: "[f#1@3 d2 d2@3 g1@4 d2 d2@3 b1@4 f#2 f#2@3 e1@4 b1 b1@3 d#1]/2", V: "e1@3 b1 b1@3 a1@3 ~@4 a1 ~",
  W: "b1@3 ~ b1@2 ~ c2@2 ~@5 c2@2", X: "b1@4 ~ b1 ~ a1@2 ~@5 a1 ~", Y: "b1@3 ~ b1@2 ~ c2@2 ~@5 c2 ~",
  Z: "[b1@4 b1@3 ~ b1 ~@2 b1@12 ~ b1 ~@2 b1@5]/2", AA: "a1 ~@2 a1@12 ~", AB: "a1 ~@2 a1@5 f#1 ~@2 f#1@5",
  AC: "g1 ~@2 g1@12 ~", AD: "~ f#2 g2 a2 ~ e2 ~ d#2 ~ c3@3 b2 ~ a2 ~, e2 ~@7",
  AE: "g#2 a2 b2 e2 ~@3 d2 c2 a2 ~@2 a2@2 ~ e2",
  AF: "[g2 f2 e2 d2 f2@2 e2 d2 ~@2 c2 ~@2 c2 ~@3 g#1 ~ b1 e1 ~@2 e1@5 d1 ~@2 d1@2 f1 e1 ~ a1 g#1 ~@2 c2@2 b1 c2@2 ~@3, ~@9 b1@2 ~ d2@2 ~ b1@2 ~@22 d2@2 ~@7, ~@8 a1 ~@15]/3",
  AG: "[~@5 c#2 ~ d2 e2 ~ f2 ~ e2@2 d2 f2@2 ~@4 b1 ~ d#2 e2 ~ f#2 ~ g2@4]/2", AH: "f#2@4 e2@4 d#2@4 c2@3 g2",
  AI: "g2@3 b1@4 f#2 f#2@3 e1@4 b1", AJ: "b1@3 f1 f#1@3 d2 d2@3 g1@4 d2", AK: "d2@3 b1@4 f#2 f#2@3 e1@4 b1",
  AL: "b1@3 d#1 e1@3 b1 b1@3 a1@3 ~@2", AM: "~@2 a1 ~ b1@3 ~ b1@2 ~ c2@2 ~@3", AN: "~@2 c2@2 b1@4 ~ b1 ~ a1@2 ~@3",
  AO: "[~@2 c2 ~ b1@4 b1@3 ~ b1 ~@2 b1@13 b1 ~@2 b1@5 a1 ~@2 a1@12 ~ a1 ~@2 a1@5 f#1 ~@2 f#1@5 g1 ~@2 g1@12 ~@2 f#2 g2 a2 ~ e2 ~ d#2 ~ c3@3, ~@42 e2 ~@5]/6",
  AP: "b2 ~ a2 ~ g#2 a2 b2 e2 ~@3 d2 c2 a2 ~@2", AQ: "a2@2 ~ e2 g2 f2 e2 d2 f2@2 e2 d2 ~@2 c2 ~, ~@13 b1@2 ~",
  AR: "~ c2 ~@3 g#1 ~ b1 e1 ~@2 e1@5, d2@2 ~ b1@2 ~@11, ~@2 a1 ~@5",
  AS: "[d1 ~@2 d1@2 f1 e1 ~ a1 g#1 ~@2 c2@2 b1 c2@2 ~@8 c#2 ~ d2 e2 ~ f2 ~, ~@11 d2@2 ~@19]/2",
  AT: "e2@2 d2 f2@2 ~@4 b1 ~ d#2 e2 ~ f#2 ~", AU: "g2@4 f#2@4 e2@4 d#2@3 e2", AV: "~@11 c2 b1 a1 g1 f#1", AW: "e1 ~@7",
})).s("gm_electric_bass_finger").gain(0.41)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<~@16 A B C D E B F G@3 H I E J F K@2 L@8 M ~@20 N@2 O P Q R S T U@2 ~@34>".pickRestart({
  A: "~@9 b4@3 b4@2 a4 ~", B: "a4@3 g4@11 ~@2", C: "~ e5 ~ f#5 g5 f#5 ~ e5@2 d#5 ~ g5@3 [f#5,g5] ~",
  D: "e5@2 b4 g4@2 e4 ~ e5@9", E: "~ c5 ~ d5 e5 d5 ~ c5 b4@2 a4 ~ c5@2 b4@2", F: "~ f#4 ~ g4 a4 g4 ~ f#4 ~ a4@4 ~ a4 ~",
  G: "[g4 ~ f#4 e4@2 d4 ~ e4@8 e5@10 b4 ~ d5 ~ d5 ~ a4@3 g4@11 ~@3]/3",
  H: "~ e5 ~ f#5 ~ f#5 ~ e5@2 d#5 ~ g5@3 f#5 ~, ~@2 g5 ~@5", I: "e5@2 b4 g4@2 e4 ~ e5@8 ~", J: "a4@3 g4@9 ~@4",
  K: "[g4 ~ a4 b4 ~ d5 ~ e5@7 ~ g5@2 f#5 ~ e5!2 ~ e5 e5@5 ~@4]/2",
  L: "[b4@10 c5 b4 ~ a4 ~ g4@7 d5 ~ d5@2 e5 d5 ~ c5 ~ b4@9 ~ a4 ~ b4 c5@2 b4 a4@2 g#4@2 ~ g#4 ~ a4 ~ b4@2 g#4 e4@2 g#4 ~ e5@4 ~ f#5 ~ g5 ~ f#5@3 ~ f#5@2 ~ f#5@3 e5@3 ~ f#5 g5 f#5@2 d5 b4 ~ d5 ~ e5@4 ~ b4@2 d5 ~ b4@2 a4!2 ~ a4 ~ g4@6 ~ b4 d5 b4@2 a4 a4@2 g4 ~@2]/8",
  M: "b4", N: "[~@8 b4@10 c5 b4 ~ a4 ~ g4@7 d5 ~]/2", O: "d5@2 e5 d5 ~ c5 ~ b4@9",
  P: "~ a4 ~ b4 c5 b4 ~ a4@3 g#4 ~ g#4@2 a4 ~", Q: "b4@2 g#4 e4 ~ e4@2 e5@6 f#5 g5 ~",
  R: "f#5@3 ~ f#5@2 ~ f#5@3 e5@4 f#5 g5", S: "f#5@2 d5 b4@2 d5 ~ e5@6 b4 d5 ~", T: "b4@2 a4!2 ~ a4 ~ g4@7 b4 d5",
  U: "[b4@2 a4 a4@2 g4@2 ~ b4@15 ~@9]/2",
})).s("gm_lead_8_bass_lead").gain(0.48)

// other · distortion guitar
const distortion_guitar = note("<~@81 [~@3 g3] [f#3 e3 d#3 ~] ~@19 [g3@4 f#3@4 e3@4 d#3@3 ~] ~ [~@13 a2 g2 f#2] ~>")
  .s("gm_distortion_guitar").gain(0.37).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@4 A@4 B C@7 D E@16 F@2 G H ~@4 I@3 J@4 K@2 L M N O@5 P@7 Q@2 ~@3 R@2 S@2 T ~@7 U@5 V@8 ~@11
>`.pickRestart({
  A: "[e4,f#4,b4]/4", B: "[b3,e4,g4]@7 [b3,d#4,f#4]@5 ~@4",
  C: "[[b4,d5,f#5]@6 ~ [f#3,a3,d4]@7 ~ [g3,b3,d4,f#4]@6 ~@3 [a3,d#4,f#4]@7 [e3,g#3,b3,d#4]@15 ~ [c4,e4,g4]@9 [b3,d4,f#4]@6 ~ [d4,g4,b4]@8 ~ [d4,f#4,a4]@6 ~ [c4,e4,g4,b4]@7 ~@2 [d4,f#4,a4]@6 ~ [e4,g4,b4,d5]@9 [d4,f#4,a4]@8, ~@47 g3@5 ~@60]/7", // Bm D Gmaj7 D#dim Emaj7 C Bm G …
  D: "[e4,f#4,b4]@15 ~", // Esus2
  E: "[[b3,d4,f#4]@12 ~@3 [b3,e4,f#4]@8 [b3,d#4,f#4]@8 [b3,d4]@5 ~@3 [e4,g4]@8 [c4,e4,g4]@9 [b3,d#4,f#4]@7 [b3,d4,f#4]@14 ~@2 [b3,e4,f#4]@8 [d#4,f#4]@8 [d4,g4,b4]@7 ~ [d4,f#4,a4]@8 [c4,e4,g4]@6 ~@2 [b3,e4,f#4,b4]@9, ~@31 f#4@8 b4@5 ~@43 b3@4 ~@37]/8", // Bm Bsus4 B Bm Em C B Bm …
  F: "[[e4,g4,b4]@7 [d#4,f#4,b4]@4 ~@4 [b4,d5,f#5]@8 [f#3,a3,d4]@9]/2", G: "[b3,d4,f#4]@7 ~ [b3,d#4,f#4]@7 ~",
  H: "[g#3,b3,d#4]@15 ~", I: "[[e4,f#4,b4] [d4,e4,a4]]/3",
  J: "[[b3,c#4,f#4]@7 d#4 [c4,d4,g4]@15 ~ [b3,e4,g4]@7 [b3,d#4,f#4]@5 ~@4 [b4,d5,f#5]@6 ~ [f#3,a3,d4]@8 [g3,b3,d4,f#4]@6 ~@3, ~@8 a4 ~@55]/4", // Bsus2 Csus2 Em B Bm D Gmaj7
  K: "[[a3,d#4,f#4]@7 [e3,g#3,b3,d#4]@15 ~ [c4,e4,g4]@9, ~@23 g3@5 ~@4]/2", L: "[b3,d4,f#4]@6 ~ [d4,g4,b4]@8 ~",
  M: "[d4,f#4,a4]@6 ~ [c4,e4,g4,b4]@7 ~@2", N: "[d4,f#4,a4]@6 ~ [e4,g4,b4,d5]@9",
  O: "[[d4,f#4,a4]@8 [e4,f#4,b4]@15 ~ [b3,d4,f#4]@12 ~@3 [b3,e4,f#4]@8 [b3,d#4,f#4]@8 [b3,d4]@5 ~@3 [e4,g4]@8 [c4,e4,g4]@9, ~@55 f#4@8 b4@5 ~@12]/5", // D Esus2 Bm Bsus4 B Bm Em C
  P: "[[b3,d#4,f#4]@7 [b3,d4,f#4]@14 ~@2 [b3,e4,f#4]@8 [d#4,f#4]@8 [d4,g4,b4]@7 ~ [d4,f#4,a4]@8 [c4,e4,g4]@6 ~@2 [b3,e4,f#4,b4]@9 [e4,g4,b4]@7 [d#4,f#4,b4]@4 ~@4 [b4,d5,f#5]@8 [f#3,a3,d4]@9 [b3,d4,f#4]@7 ~, ~@31 b3@4 ~@77]/7", // B Bm Bsus4 D#m G D C Bsus4 …
  Q: "[[b3,d#4,f#4]@7 ~ [g#3,b3,d#4]@15 ~@9]/2", R: "[~ [e4,f#4,b4]@3]/2", S: "[[d4,e4,a4]@24 [b3,c#4,f#4]@7 d#4]/2",
  T: "[c4,d4,g4]@15 ~, a4 ~@15", // Csus2
  U: "[~@12 [e4,g4,b4]@7 [d#4,f#4,b4]@4 ~@4 [b4,d5,f#5]@8 [f#3,a3,d4]@9 [b3,d4,f#4]@7 ~ [b3,d#4,f#4]@7 ~ [g#3,b3,d#4]@15 [c4,e4,g4]@5]/5", // Em B Bm D Bm B G#m C
  V: "[~@4 [d4,f#4,a4]@7 [e4,g4,b4]@9 [d4,f#4,a4]@7 [c4,e4,g4]@9 [d4,f#4,a4]@7 [e4,g4,b4]@8 ~ [d4,f#4,a4]@8 [e4,f#4,b4]@24 [d4,e4,a4]@24 [b3,c#4,f#4]@7 d#4 [c4,d4,g4]@12, ~@20 g4 ~@15 g#4 ~@79 a4 ~@11]/8", // D Em D C D Em D Esus2 …
})).s("gm_string_ensemble_2").gain(0.21).pan(0.6)

// bass · slap bass 2
const bass_2 = note("<~@37 A ~ B C ~@26 D E F ~@17 F G A ~@16>".pickRestart({
  A: "~@13 b2 ~@2", B: "~ a2 ~ a2 ~@12", C: "~ b2 ~@14", D: "~@5 b2 ~@10", E: "~@9 a2 ~ a2 ~@4", F: "~@9 b2 ~@6",
  G: "~@13 a2 ~ a2",
})).s("gm_slap_bass_2").gain(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A B C B D ~@3 E F G@3 H G I J K L M N@3 O L K L M N@3 O L M P O Q P R P S J T U T V H L E@3 W E T X M G O M@3 O G Y M
  Y Z AA AB AC T U J T@2 AD@3 AE AF AG AH AI AJ AK AJ AL AK AM AN AO AP AQ AR@2 AS AD@2 AT AU AV AW AT AX AY ~
>`.pickRestart({
  A: "x ~@2 x ~@12", B: "x ~@2 x ~@5 x ~@2 x ~@3", C: "x ~ x!2 ~@5 x ~@2 x ~@3", D: "x", E: "x ~@6 x ~@8",
  F: "x ~@4 x ~ x ~@7 x", G: "~@8 x ~@6 x", H: "~@8 x ~@4 x ~ x", I: "~@8 x ~@2 x ~@4", J: "x ~@2 x ~@7 x ~@4",
  K: "x ~@6 x!2 ~@6 x", L: "~@7 x ~@8", M: "x ~@6 x ~@7 x", N: "~@7 x!2 ~@6 x", O: "~@7 x ~@7 x", P: "~@6 x ~ x ~@6 x",
  Q: "~@6 x ~ x ~@2 x ~@3 x", R: "~@6 x ~ x ~@4 x ~ x", S: "~ x ~@4 x ~ x ~@2 x ~@4", T: "x ~@2 x ~@4 x ~@2 x ~@4",
  U: "~@3 x ~@4 x ~@2 x ~@4", V: "x ~@2 x ~@4 x ~@6 x", W: "x ~@4 x ~ x ~@8", X: "~@3 x ~@4 x ~@6 x",
  Y: "~@7 x ~@6 x ~", Z: "x ~@2 x ~@3 x ~@6 x ~", AA: "x ~@6 x ~@6 x ~", AB: "x ~@4 x ~ x ~@6 x ~",
  AC: "x ~@6 x ~ x ~@4 x ~", AD: "x!4", AE: "x ~@3 x ~@2 x ~@4 x ~@2 x", AF: "~@2 x ~@2 x ~@2 x ~@2 x ~@4",
  AG: "~@3 x ~ x ~@6 x ~ x ~", AH: "~@5 x ~ x ~@2 x ~ x ~@3", AI: "x ~@3 x ~@2 x ~@4 x ~@3", AJ: "~@3 x ~@7 x ~@4",
  AK: "~@2 x ~ x ~@6 x ~@4", AL: "~@2 x ~ x ~@2 x ~@3 x ~@4", AM: "~@2 x ~ x ~@4 x ~ x ~@4",
  AN: "~@2 x ~ x ~@6 x ~ x ~@2", AO: "~@2 x ~ x ~@2 x ~@4 x ~@2 x", AP: "~@7 x ~@4 x ~@2 x", AQ: "~@4 x ~@2 x ~@7 x",
  AR: "~@4 x ~@2 x ~@4 x ~@2 x", AS: "~ x!3", AT: "x ~@3 x ~@3 x ~@2 x ~@4", AU: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  AV: "~@7 x ~ x ~@6", AW: "x ~ x ~@6 x ~ x ~@2 x ~", AX: "~@3 x!2 ~@2 x ~@8", AY: "~@3 x!3 ~ x ~@4 x!4",
})).gain(0.49)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@3 B ~@11 C ~@4 D ~@2 C ~@4 D ~@8 A ~@3 E ~@10 A ~@4 F E ~@8 C ~@2 G ~@4 H I ~@10 J ~@2 F ~@4 G ~ K ~@4
>`.pickRestart({
  A: "~@3 x", B: "~@5 x ~ x!2 ~ x ~ x ~ x ~", C: "~ x ~@2", D: "~@7 x ~@3 x ~@4", E: "~@3 x ~@12", F: "~@15 x",
  G: "~@11 x ~@4", H: "~@7 x ~@8", I: "~@7 x", J: "~ x", K: "~ x ~@6",
})).gain(0.49)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@8 A B C D E F E G ~ A B C D E F E G A B C D E F E G A B C D E F E G H I J K L M N O P N Q N R S M N O P N Q N C M N
  O P N Q N C T U V W ~@7 X Y Z AA AB AC AD AC E AE AF AG AH ~@9 AI ~
>`.pickRestart({
  A: "~ x ~@3 x ~@3 x ~ x ~@4", B: "~ x ~ x ~@5 x ~ x ~ x ~@2", C: "~ x ~ x ~ x ~ x ~ x ~@3 x ~@2",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", F: "~ x ~ x ~ x ~ x ~@3 x ~@4",
  G: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", H: "~ x ~@3 x ~@7 x ~ x", I: "~ x ~ x ~ x ~@3 x ~ x ~@3 x",
  J: "~@5 x ~@5 x ~@2 x ~", K: "~ x ~@3 x ~ x ~ x ~ x ~ x ~@2", L: "~@3 x ~@5 x ~@3 x ~@2", M: "~ x ~ x ~@5 x ~ x ~@4",
  N: "~ x ~ x ~ x ~@3 x ~ x ~ x ~ x", O: "~ x ~@3 x ~@3 x ~ x ~ x ~ x", P: "~ x ~ x ~@5 x ~ x ~ x ~ x",
  Q: "~@3 x ~@5 x ~ x ~ x ~ x", R: "~ x ~ x ~ x ~ x ~@8", S: "~@9 x ~@3 x ~@2", T: "~@5 x ~ x ~ x ~ x ~ x ~@2",
  U: "~ x ~ x ~@3 x ~@5 x ~@2", V: "~@3 x ~@2 x ~@2 x ~@3 x ~ x", W: "~ x ~ x ~ x ~@5 x ~@4", X: "~@13 x ~@2",
  Y: "~ x ~@3 x ~ x ~@5 x ~ x", Z: "~@5 x ~ x ~ x ~@3 x ~ x", AA: "~ x ~ x ~ x ~@3 x ~@3 x ~ x",
// … 146 more lines

More by Daniele