Strudelify

Piccola citta eterna

LIGABUE

KeyA majorTempo129 bpm
0:00/0:00
// Piccola citta eterna — LIGABUE
// 129 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 162 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(129/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 · fretless bass
const bass = note(`<
  ~@13 A B C D E F G@2 H I J K L M N O H F N P Q R S T F U V W F Q X G F M G D F M Y Z H AA A@3 C D E F AB G H I AC AD
  AE AF AG AH C D E F G@2 H I J K F Q X G F M G D F M Y Z H AA A@4 C D E F AB G H I AC AD AE AF AG AH C D E F G@2 H I AI
  AJ AK AL AM AN AK AO AM AN AL@2 AP AQ AL AR A@4 C D E F G@2 H I C D E F G@2 H I K ~@3
>`.pickRestart({
  A: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", B: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 b1@2",
  C: "a1@3 a1 a2@2 a1 ~ a1@3 a1 a2@2 a1 ~", D: "a1@2 ~ a1 a2@2 a1 ~ a1@2 ~ a1 a2@2 a1@2",
  E: "d2@2 ~ d2 d3@2 d2 ~ d2@3 d2 d3@2 d2@2", F: "d2@2 ~ d2 d3@2 d2 ~ d2@2 ~ d2 d3@2 d2 ~",
  G: "a1@2 ~ a1 a2@2 a1 ~ a1@2 ~ a1 a2@2 a1 ~", H: "d2@2 ~ d2 d3@2 d2 ~ d2@3 d2 d3@2 d2 ~",
  I: "d2@2 ~ d2 d3@2 d2 ~ d2@2 ~@2 d3@2 d2 ~, ~@11 d2@2 ~@3", J: "a1@2 ~ a1 a2@2 a1 ~ a1@2 ~@6",
  K: "c2@2 a1 ~ a1@2 c2@2 a1 ~ a1@2 c2@2 a1@2", L: "d2@3 d2 d3@2 d2 ~ d2@2 ~ d2 d3@2 d2 ~",
  M: "d2@2 ~ d2 d3@2 d2 ~ d2@2 ~@2 d3@2 g2 a2, ~@11 d2@3 ~@2", N: "a1@2 ~ a1 a2@2 a1 ~ a1@4 a2@2 d2 e2",
  O: "a1@2 ~ a1 a2@2 a1 ~ a1@4 a2@2 a1 d2", P: "a1@2 ~ a1 a2@2 a1 ~ a1@2 ~ a1 ~ a1 d2 e2, ~@6 a2 ~",
  Q: "d2@2 ~ d2 d3@2 d2 ~ d2@2 ~ d2 d3@2 g2 a2", R: "d2@2 ~ d2 d3@2 d2 ~ d2@3 ~ d3@2 d2@2",
  S: "b1@2 ~ b1 b2@2 b1 ~ b1@4 b2@2 b1 f#2", T: "f#1@2 ~ f#1 f#2@2 f#1 ~ f#1@4 f#2@2 f#1 ~",
  U: "e2@2 ~ e2 e3@2 e2 ~ e2@3 e2 e3@2 e2 ~", V: "a1@2 ~ a1 a2@2 a1 ~ a1@2 ~@2 a2@2 a1 ~, ~@11 a1@2 ~@3",
  W: "c2@2 a1 ~ a1 ~ c2@2 a1 ~ a1 ~ c2@2 a1 ~", X: "a1@3 a1 a2@2 a1 ~ a1@2 ~ a1 a2@2 a1 ~",
  Y: "b1@2 ~ b1 b2@2 b1 ~ b1@2 ~ b1 b2@2 b1 ~", Z: "f#1@2 ~ f#1 f#2@2 f#1 ~ f#1@2 ~ f#1 f#2@2 f#1 ~",
  AA: "e2@2 ~ e2 e3@2 e2 ~ e2@2 ~ e2 e3@2 e2 ~", AB: "a1@2 ~@2 a2@2 a1 ~ a1@2 ~ a1 a2@2 a1 ~, ~@3 a1@2 ~@11",
  AC: "b1@2 ~ b1 b2@2 b1@8 b1 ~", AD: "b1@2 ~ b1 b2@2 b1@7 ~ b1 ~", AE: "f#1@2 ~ f#1 f#2@2 f#1@8 f#2@2",
  AF: "f#1@2 ~ f#1 f#2@2 f#1@6 f#2@2 f#1 ~", AG: "d2@2 ~ d2 d3@2 d2@6 d3@2 d2 ~", AH: "e2@2 ~ e2 e3@2 e2@6 e3@2 e2 ~",
  AI: "a1@5 ~ a1@6 ~@4", AJ: "a1@2 ~ a1@3 ~@2", AK: "d2@2 ~ d2 b1@2 d2@2 ~@8", AL: "d2@2 ~ d2 b1@2 d2@2 ~@6 d2 ~",
  AM: "a1@2 ~ a1 f#1@2 a1@2 ~@8", AN: "a1@2 ~ a1 f#1@2 a1@2 ~@6 a1 ~", AO: "d2@2 ~ d2 b1@2 d2@2 ~@4 d2@3 ~",
  AP: "b1@2 ~ b1 a1@2 b1@2 ~@6 b1 ~", AQ: "f#1@2 ~ f#1 e1@2 f#1@2 ~@6 f#1 ~", AR: "e2@2 ~ e2 d2@2 e2@2 ~@4 e2 ~@3",
})).s("gm_fretless_bass").gain(0.41)

// other · guitar harmonics
const guitar_harmonics = note("<~@124 A@3 B A@3 B C A D@2 A@2 ~@24>".pickRestart({
  A: "a3@3 g#3@3 e3@2", B: "a3@3 g#3@3 a3@2", C: "a3@6 ~@6 e3@3 ~, ~@6 g#3@9 ~", D: "a3@3 g#3@3 f#3@2",
})).s("gm_guitar_harmonics").gain(0.22).pan(0)

// chords · distortion guitar
const distortion_guitar = note(`<
  A@4 B@7 C@2 D E F@2 G@2 F@2 G@2 H I@6 J@7 K@3 L@6 J@7 M@2 N O P F@2 G@2 F@2 G@2 Q@5 R F@2 G@2 F@2 G@2 H I@6 J@7 M@2 N
  S N T F@2 G@2 F@2 G U Q@5 R F@2 G@2 F@2 G@2 V@2 W@2 X@2 W@2 Y@2 W@2 Z AA AB AC AD@2 AE AD AF AG G@2 F@2 G@2 F@2 G@2
  F@2 G@2 AH@4
>`.pickRestart({
  A: "[~@10 a3@2 e4@2 ~@2 d4@25 ~@3 a3@2 ~@2 a3@16, ~@7 a3@13 ~ d4@2 c#4@9]/4",
  B: "[~@10 a3@2 e4@2 ~@2 d4@24 ~@2 d4@2 a3@2 ~@2 a3@25 ~ a3@2 e4@2 ~@2 d4@23 [d3,f#3,a3] [b3,d4] ~@5 f#3@2, ~@14 a3@27 ~@5 c#4@27 ~@5 a3@25 ~@3 c#4@5 ~, ~@27 a3]/7", // D Bm
  C: "[d3@14 ~@3 f#4@15, ~@15 [e3,a3]@17, ~ [f#3,c#4]]/2", D: "a3 ~@3 d4@2 ~@2 e4@2 d4@2 ~@2 d4@2, ~ e4@2 a3@2 ~ g3@2",
  E: "~@2 d4 ~ e4 d4 g3 d4, a3@2 ~ a3@2 ~@3, ~ e4@2 ~@5", F: "[e3,a3]@3 a2 [e3,a3]@2 a2@2 [e3,a3]@3 a2 [e3,a3]@2 a2@2",
  G: "[d3,a3]@3 a2 [d3,a3]@2 a2@2 [d3,a3]@3 a2 [d3,a3]@2 a2@2", H: "[e3,a3]@13 ~@3",
  I: "[c3@2 a2 ~ a2@2 c3@2 a2@2 a2@2 c3@2 ~@2 [d3,a3]@30 ~@2 e3@29 ~@3 d3@16, ~@14 a2@2 ~@31 [a3,b3]@31 ~ a3@17, ~@15 [d4,e4]@30 ~ e4@31 ~ [d4,e4]@18]/6", // D5 Asus2 Dsus2
  J: "[~@16 e3@30 ~@2 d3@30 ~@4 d3@11 ~@2 [e3,f#3,a3]@14 ~@2 [a3,b3], ~@14 e4@31 ~ [d4,e4]@31 ~@2 [f#3,a3]@14 ~@17 [d4,e4]@2, ~@15 [a3,b3]@31 ~ a3@30 ~ [b2,b3]@15 ~ [f#2,c#4]@15 ~@3]/7", // F#m7 Asus2 Dsus2 F#m Dsus2 Asus2 B F#5
  K: "[[d3,e3]@13 ~@2 [e3,b3,d4]@13 ~@3 [e3,a3,b3]@16 ~, ~@14 e4@14 ~@2 [a2,e4]@17 ~]/3", // Dsus2 E7 Esus4 A5
  L: "[c3@2 a2 ~ a2@2 c3@2 a2 ~ a2@2 c3@2 ~@2 [d3,a3]@30 ~@2 e3@29 ~@3 d3@16, ~@14 a2@2 ~@31 [a3,b3]@31 ~ a3@17, ~@15 [d4,e4]@30 ~ e4@31 ~ [d4,e4]@18]/6", // D5 Asus2 Dsus2
  M: "[[d3,e3]@13 ~@2 [e3,b3,d4]@13 ~@4, ~@7 e4@7 ~@2]/2", // Dsus2 E7
  N: "[d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~, ~@3 d4 ~@2 d4 ~", // D5
  O: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~, ~ d4 ~@2 d4 ~@3", // D5
  P: "[d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~", // D5
  Q: "[[b2,f#3,a3,b3]@29 ~@2 [c#3,a3]@32 ~ [e3,a3,d4]@14 ~@2, ~@15 f#2@16 ~@9, ~@31 f#3@30 ~@2 d3@15 ~@2]/5", // B7 F#m Dsus2
  R: "[e3,g#3,e4]@7 ~", // E
  S: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ d4@2 [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~, ~@2 d4@2 ~@4 a3 ~@7", // D5
  T: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~, ~ d4 ~@6", // D5
  U: "[d3,a3]@3 ~ [d3,a3]@2 a2@2 [d3,a3]@3 a2 [d3,a3]@2 a2@2, ~@3 a2@2 ~@11", V: "[[e3,a3]@15 ~]/2",
  W: "[[d3,a3]@31 ~]/2", X: "[e3,a3]/2", Y: "[[e3,a3]@31 ~]/2", Z: "[f#3,b3]@15 ~", AA: "[f#3,c#4]@15 ~",
  AB: "[d3,a3]@15 ~", AC: "[e3,b3]@15 ~",
  AD: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  AE: "[d3,a3] ~ [d3,a3] a3 d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  AF: "[e3,a3]@3 a2 [e3,a3]@2 a2@2 [e3,a3]@3 a2 [e3,a3]@2 a2 ~", // A5
  AG: "~ e3@2 a2 [e3,a3]@2 a2@2 [e3,a3]@3 a2 [e3,a3]@2 a2@2, a3@3 ~@13", // A5
  AH: "[c3@2 a2 ~ a2@2 c3@2 a2@2 a2 ~ c3@2 [a2,e3]@50]/4", // A5
})).s("gm_distortion_guitar").gain(0.28).pan(0.1)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@15 A B C D E F A G H I J@2 K L M@2 N O P@2 Q R S T U I V@2 K L W@2 X Y Z@2 AA AB AC AD AE AF AG A B C D E F A G ~
  AH@3 AI AJ A B A AK A F A AL H AM V@2 K L AN@2 AO@2 Z@2 AA AB AC AP AE AF AQ AR AS B AT D AT D A G ~ AH@3 AI AJ A B C
  D E F A G AU@2 AV@2 AW@2 AV@2 AX@2 AV@2 AY AB AZ T BA BB BC BD A B C D A F A G A B C D A F A G BE@4
>`.pickRestart({
  A: "[a3,d4] ~ [a3,d4] ~ [a3,d4]@2 c#4@2 [a3,d4]@3 ~ [a3,d4]@2 c#4@2", // D5
  B: "[a3,d4]@3 ~ [a3,d4]@2 c#4@2 [a3,d4]@2 c#4 ~ [a3,b3]@2 c#4@2", // D5 Asus2
  C: "[a3,d4]@2 [a3,d4] ~ [a3,d4]@2 c#4@2 [a3,d4]@3 ~ [a3,d4]@2 c#4@2", // D5
  D: "[a3,d4]@3 ~@3 c#4@2 ~@2 c#4@2 [a3,b3]@2 c#4 ~, ~ [a3,d4]!2 ~", // D5 Asus2 D5
  E: "[a3,d4] ~ [a3,d4] ~ [a3,d4]@2 c#4@2 [a3,d4]@4 a3@2 c#4@2, ~@12 d4 ~@3", // D5
  F: "[a3,d4]@3 ~ [a3,d4]@2 c#4@2 ~@2 c#4@2 [a3,b3]@2 [a3,c#4]@2, ~@2 [a3,d4] ~", // D5 Asus2 A D5
  G: "[a3,d4]@3 ~ [a3,d4]@2 c#4@2 ~@2 c#4@2 [a3,b3]@2 c#4@2, ~@2 [a3,d4] ~", H: "a3@13 ~@3",
  I: "[c3,c4]@2 [a2,a3] ~ [a2,a3]@2 [c3,c4]@2 [a2,a3] ~ [a2,a3]@2 [c3,c4]@2 [a2,a3]@2", // C A C A C A
  J: "[d4@25 ~ d3@6, a3@9 ~@7, e3@15 ~@17]/2", K: "~@2 a3@3 g3@3, a2@5 ~@3", L: "c3@5 ~ c4@3 ~ c4@5 ~",
  M: "[~@6 d4@23 ~@3, a3@25 ~@7, e3@21 ~@11]/2", N: "~@2 e3@2 a3 ~ e3 ~ a3@2 e3 ~@3 g3@2",
  O: "~@2 f#3@2 e3 ~ d3 ~ f#3@4 e3@4", P: "[~@6 e4@23 ~@3, [a3,d4]@29 ~@3]/2", Q: "[b2,f#3]", R: "[f#2,c#3]@7 ~",
  S: "[d3,a3]", T: "[e3,b3]@15 ~", U: "[a2,e3,a3]@13 ~@3", V: "[d3@5 ~ d4@19 ~ d3@6, [e3,a3]@13 ~@3]/2",
  W: "[~@2 d4@13 ~, a3@15 ~]/2", X: "e4@2 c#5 ~ [a4,c#5]@2 c#5@4 e4@2 [a4,c#5]@2 [a4,c#5]@2, a4@2 ~ a4@3 ~@2",
  Y: "c#5@2 e4@3 ~ e4@8 ~@2, a4@3 ~@5", Z: "[[a3,d4]@31 ~]/2", AA: "[f#3,b3]", AB: "[f#3,c#4]@15 ~",
  AC: "[a3,d4], e4 ~@15", AD: "[b3,e4]",
  AE: "[d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~, ~@3 d4 ~@2 d4 ~", // D5
  AF: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~, ~ d4 ~@2 d4 ~@3", // D5
  AG: "[d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~", // D5
  AH: "[~@2 f#3@2 a3@2 b3@6 f#3@2 ~@16 c#4@17 ~, ~@14 a3@33 ~, ~@26 f#4@21 ~]/3", AI: "[a3,d4,e4]", AJ: "[b3,e4]@7 ~",
  AK: "[a3,d4]@3 ~@3 c#4@2 ~@2 c#4@2 b3@2 c#4 ~, ~ [a3,d4]!2 a3", // D5
  AL: "[a3,d4]@2 [a3,d4] c#4 ~ c#4 [a3,b3] c#4, ~@2 [a3,d4] ~", // D5 Asus2 D5
  AM: "c4@2 [a2,a3] ~ [a2,a3]@2 [c3,c4]@2 [a2,a3] ~ [a2,a3]@2 [c3,c4]@2 [a2,a3]@2, c3 ~@15", // A C A C A
  AN: "[d3@5 ~ d4@23 ~@3, [e3,a3]@29 ~@3]/2", AO: "[~@2 e3@2 f#3@2 a3@2 b3 a3 b3@2 a3@2 c#4@8 a3@10]/2",
  AP: "b3, e4@7 ~",
  AQ: "[a3,d4]@2 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~, ~@3 d4 ~@2 d4 ~", // D5
  AR: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~, ~ d4 ~@4 d4@2", // D5
  AS: "[a3,d4] ~ [a3,d4] ~ a3@2 c#4@2 [a3,d4]@3 ~ [a3,d4]@2 c#4@2", // D5
  AT: "[a3,d4]@2 [a3,d4]@2 a3@2 c#4@2 [a3,d4]@3 ~ [a3,d4]@2 c#4@2, ~@4 d4 ~@11", AU: "[[e3,a3]@15 ~]/2",
  AV: "[[d3,a3]@31 ~]/2", AW: "[e3,a3]/2", AX: "[[e3,a3]@31 ~]/2", AY: "[f#3,b3]@15 ~", AZ: "[d3,a3]@15 ~",
  BA: "[c#3,c#4] ~ [d3,d4] ~ [d3,d4] ~ [c#3,c#4] ~ [d3,d4] ~ [d3,d4] ~ [c#3,c#4] ~ [d3,d4] ~", // C# D C# D C# D
  BB: "[d3,d4] ~ [c#3,c#4] ~ [d3,d4] ~ [d3,d4] ~@2 c#4 [d3,d4] ~ [c#3,c#4]@2 [d3,d4] ~, ~@4 c#3 ~@3", // D C# D C# D
  BC: "[c#3,c#4]@2 [d3,d4] ~ [d3,d4] ~ [c#3,c#4]@2 [d3,d4] ~ [d3,d4] ~ [c#3,c#4]@2 [d3,d4] ~", // C# D C# D C# D
  BD: "[d3,d4] ~ [c#3,c#4]@2 [d3,d4] ~ [d3,d4] ~ [c#3,c#4]@2 [d3,d4] ~ [c#3,c#4]@2 [d3,d4] ~", // D C# D C# D C# D
  BE: "[[c3,c4]@2 [a2,a3] ~ [a2,a3]@2 [c3,c4]@2 [a2,a3] ~ [a2,a3]@2 [c3,c4]@2 [a2,e3,a3]@50]/4", // C A C A C A5
})).s("gm_overdriven_guitar").gain(0.37).pan(0.9)

// chords · rock organ
const rock_organ = note(`<
  ~@13 A B C@2 D@2 E@2 F@2 G ~ H@4 I@4 J@2 K@2 L M N ~ O@2 P@2 Q@4 O@2 R S@2 T U@3 V@2 W@2 X@2 Y@2 Z@4 L AA AB AC AD@2
  AE@2 AF@2 AG ~ O@2 P@2 J@2 AH@2 O@2 AI AJ L M AK@4 W@4 AE@2 AL@2 AM@4 L AA X@2 AN AO X@2 F@2 AP@6 AQ@6 AR@2 L AA AS@4
  AT@2 X@2 AU@2 AV@2 AW@4 AX@2 AY@2 ~ AZ ~@2
>`.pickRestart({
  A: "[d4,f#4,a4]@15 ~", B: "[e4,g#4,b4]@15 ~",
  C: "[[a4,d5] ~ [a4,d5] ~ [a4,d5]@2 c#5@2 [a4,d5]@4 d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@6 a4 ~@5 a4@7 ~ a4@11 ~]/2", // D5
  D: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@4 d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@4 a4@7 ~ a4@7 ~ a4@11 ~]/2", // D5
  E: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@4 d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 [a4,b4]@2 c#5 ~, ~@4 a4@8 a4@7 ~ a4@8 ~@4]/2", // D5 Asus2
  F: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@4 a4@7 ~ a4@7 ~ a4@10 ~@2]/2", // D5
  G: "a4@7 ~@9", H: "[[d5,f#5] [c#5,e5], a5@63 ~]/4", I: "[[d5,f#5]@31 ~ [c#5,e5]@32, a5@63 ~]/4",
  J: "[[d5,f#5,a5]@31 ~]/2", K: "[[b4,d5]@15 ~ [a4,c#5]@16, f#5]/2", L: "[a4,d5,f#5]", M: "[b4,e5,g#5]",
  N: "[a4,c#5,e5]@7 ~", O: "[d5,f#5,a5]/2", P: "[[c#5,e5,a5]@31 ~]/2", Q: "[[d5,f#5]@32 [c#5,e5]@31 ~, a5@63 ~]/4",
  R: "[b4,d5,f#5]", S: "[[a4,c#5] [d5,a5], f#5@31 ~]/2", T: "[e5,g#5,b5]", U: "[~@2 [f#5,a5], d5]/3",
  V: "[[a4,d5] ~ [a4,d5] ~@3 c#5 ~ [a4,d5]@4 d5@2 c#5@2 d5@4 d5@2 c#5@2 d5@2 c#5@2 [a4,b4]@2 c#5@2, ~@5 [a4,d5]@3 ~@4 a4@8 a4@7 ~@5]/2", // D5 Asus2 D5
  W: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@4 d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@4 a4@8 a4@7 ~ a4@11 ~]/2", // D5
  X: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5 ~, ~@4 a4@7 ~ a4@7 ~ a4@11 ~]/2", // D5
  Y: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@4 a4@8 a4@7 ~ a4@11 ~]/2", // D5
  Z: "[~@48 a5@15 ~, [b4,d5]@32 [a4,c#5]@31 ~, ~@16 f#5@47 ~]/4", AA: "[b4,e5,g#5]@15 ~",
  AB: "[a4,d5] ~ [a4,d5] ~ [a4,d5]@2 c#5@2 [a4,d5]@3 ~ [a4,d5]@2 c#5@2", // D5
  AC: "[a4,d5]@3 ~ [a4,d5]@2 c#5@2 d5@2 c#5@2 b4@2 c#5 ~, ~@8 a4@7 ~", // D5
  AD: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@4 d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 [a4,b4]@2 c#5 ~, ~@4 a4@7 ~ a4@7 ~ a4@7 ~@5]/2", // D5 Asus2
  AE: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@4 d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5 ~, ~@4 a4@8 a4@7 ~ a4@11 ~]/2", // D5
  AF: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 ~@2 d5@3 ~ [a4,d5]@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@4 a4@7 ~ a4@7 ~@5 a4@7 ~]/2", // D5
  AG: "a4@5 ~@11", AH: "[c#5,e5,a5]/2", AI: "[b4,d5,f#5]@15 ~", AJ: "[a4,c#5,f#5]",
  AK: "[~@32 a5@31 ~, [a4,d5,f#5]@63 ~]/4", // D
  AL: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5@2, ~@4 a4@7 ~ a4@7 ~ a4@11 ~]/2", // D5
  AM: "[~@37 f#5@25 ~@2, [b4,d5]@31 [a4,c#5]@31 ~@2, ~@8 f#5@29 ~@27]/4", // Bm A
  AN: "[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ [a4,d5]@2 c#5@2, ~@4 a4@7 ~@5", // D5
  AO: "[a4,d5]@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5 ~, ~@4 a4@11 ~", AP: "[~@32 [d5,f#5]@32 [c#5,e5]@31 ~, a4@95 ~]/6",
  AQ: "[[d5,f#5]@32 [c#5,e5]@31 ~ [d5,f#5]@32, a4@63 a4@32 ~]/6", AR: "[[b4,d5]@15 ~ [a4,c#5]@15 ~, f#5@31 ~]/2",
  AS: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", // D5
  AT: "[[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5 ~, ~@6 a4@5 ~ a4@7 ~ a4@11 ~]/2", // D5
  AU: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5@2 b4@2 c#5 ~, ~@4 a4@7 ~ a4@7 ~ a4@11 ~, ~@24 c#5 ~@7]/2", // D5
  AV: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@2 c#5 ~ [a4,b4]@2 c#5 ~, ~@4 a4@7 ~ a4@7 ~ a4@8 ~@4]/2", // D5 Asus2
  AW: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ [a4,d5]@2 c#5 ~ [a4,d5]@2 c#5@2 b4@2 [a4,c#5] ~, ~@4 a4@7 ~ a4@7 ~@9 a4 ~@3]/2", // D5 A
  AX: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5 ~ d5@3 ~ d5@2 c#5@2 d5@3 ~ [a4,d5]@2 c#5 ~ [a4,d5]@2 c#5 ~ [a4,b4]@2 c#5 ~, ~@4 a4@7 ~ a4@7 ~@13]/2", // D5 Asus2
  AY: "[[a4,d5] ~ [a4,d5] ~ d5@2 c#5@2 d5@3 ~ d5@2 c#5@2 d5@3 ~ [a4,d5]@2 c#5@2 d5@2 [a4,c#5]@2 b4@2 [a4,c#5] ~, ~@4 a4@7 ~ a4@7 ~@5 a4 ~@3 a4 ~@3]/2", // D5 A
  AZ: "[a2,a4,e5] ~@3", // A5
})).s("gm_rock_organ").gain(0.34)

// chords · violin
const violin = note("<~ A@2 B@2 A@2 C@2 D@2 E F G H ~@109 I@2 J@2 I@2 K@2 L@2 M@2 N O ~@24>".pickRestart({
  A: "[b4@3 a4@3 e4@2 b4@3 a4@3 e4@2, d2]/2", B: "[b4@3 a4@3 d5@2 d5@3 c#5@3 b4@2, a1]/2",
  C: "[b4@3 a4@3 d5@2 a4@8, a1]/2", D: "[b4@3 a4@3 g#4@2 b4@3 ~@3 g#4@2, d2@3 e2, ~@22 a4@7 ~@3]/2",
  E: "d4@3 e4@3 a4@2, b1", F: "f#4@3 e4@3 a4@2, f#1", G: "b4@3 a4@3 e4@2, d2", H: "b4@3 a4@3 e4@2, e2",
  I: "[b4@3 a4@3 e4@2 b4@3 a4@3 e4@2, d3]/2", J: "[b4@3 a4@3 e4@2 d5@3 c#5@3 b4@2, a2]/2",
  K: "[b4@3 a4@3 g#4@2 e4@8, a2]/2", L: "[b4@3 a4@3 g#4@2 b4@3 ~@3 g#4@2, d3@3 c#3, ~@11 a4@3 ~@2]/2",
  M: "[e4@3 f#4@3 ~@2 f#2@8, b2 ~, ~@3 a4@5]/2", N: "b4@3 a4@3 e4@2, d3", O: "b4@3 a4@3 e4@2, e3",
})).s("gm_violin").gain(0.25).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@15 A B A C A C A C@2 D A@14 C D A@3 E A@9 C F G H A C A I A C J K A J A@3 J A J A C A C A C A D A@9 J@2 L A@2 M N D
  O J C P C@3 A C A@7 C A C A C J Q R@16 S@3 T A C A C A C A C A C A C A C J U D ~@3
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@7", B: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", C: "x ~@2 x ~@2 x ~ x ~@5 x ~", D: "~ x!2 ~ x!2 ~ x",
  E: "x ~@2 x ~@2 x ~@3 x ~@5", F: "~ x ~@2", G: "x ~@2 x ~ x ~@2", H: "~ x!2 ~ x!2 ~@2", I: "x ~@2 x ~@2 x ~@7 x ~",
  J: "x ~@2 x!2 ~@3", K: "x ~@2 x ~@2 x ~@9", L: "~@3 x ~@2 x ~ x ~@7", M: "~ x!2 ~@2 x ~ x", N: "x ~@2 x ~ x ~ x",
  O: "x ~@3 x ~ x ~@2 x ~@6", P: "x ~@5 x ~ x ~@2 x ~@2 x ~", Q: "x ~@2 x ~@2 x ~ x ~@6 x", R: "x ~@2 x ~@4", S: "x!4",
  T: "x!3 ~", U: "x ~@2 x ~@2 x ~ x ~@2 x ~@4",
})).gain(0.56)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@15 A ~ B ~ C D ~@5 C E@2 ~ C E B C F C E G ~@3 E F B E@2 G C G@2 C E@2 G D H I ~ E J B@2 E B K ~ B L E M N B N O B ~
  N D B ~@3 B N B C N ~@2 B N P L Q B ~ R S ~@2 N ~@2 D J@2 E J N B N B N@2 B J N J N J L T ~@27 J G ~@3 E ~ U ~@5
>`.pickRestart({
  A: "~@5 x!3", B: "~@10 x ~@2 x ~@2", C: "~@11 x ~@2 x ~", D: "~@11 x ~@4", E: "~@7 x", F: "~@13 x!2 ~",
  G: "~@13 x ~@2", H: "~@4 x!2 ~ x", I: "~@2 x ~@4 x", J: "~@5 x ~@2", K: "~@3 x ~@6 x ~@2 x ~@2",
  L: "~@3 x ~@6 x ~@3 x ~", M: "~@11 x ~ x!2 ~", N: "~@5 x ~ x", O: "~@3 x ~@9 x ~@2", P: "~@3 x ~@7 x ~@2 x ~",
  Q: "x ~@9 x ~@2 x ~@2", R: "~ x", S: "~ x ~@2", T: "~@11 x ~ x ~@2", U: "~@3 x ~@10 x ~",
})).gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A B C@9 D C@7 E C@7 D C@14 D F G C@7 H C@7 I C J C@5 D C@7 I C@5 J D F D K C@21 L C@16 ~@2 M N C@16 D ~@3
>`.pickRestart({
  A: "~@7 x", B: "x ~ x ~ x ~ x ~ x!2 ~@2 x ~ x!2", C: "~ x ~ x", D: "x ~@2 x ~@2 x ~", E: "~@4 x ~@7 x ~@2 x",
  F: "~ x ~@2 x ~ x ~", G: "x ~@2 x ~@2 x!2", H: "~@4 x ~@6 x!2 ~ x ~", I: "~@4 x ~@7 x ~ x!2", J: "~@2 x ~@2 x!2 ~",
  K: "~@2 x ~@5 x ~ x!3 ~ x!2", L: "~@2 x ~@2 x!3", M: "~@3 x ~@2 x!2", N: "x ~ x ~ x ~ x ~ x!8",
})).gain(0.8)
// … 73 more lines

More by LIGABUE