Strudelify

Senza patria

Nomadi

KeyD minorTempo135 bpm
0:00/0:00
// Senza patria — Nomadi
// 135 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 47, 4/4 at bar 48, 2/4 at bar 95, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 198 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · electric bass finger · "Elisa"
const bass = note(`<
  A B C D E F C G H I J K L M N M O P Q A R N S T M@3 U V N W X Y M Z AA V N AB AC AD N AE AF AG AH AI@2 AJ AK AL AM AN
  AO AP AQ AR AS AT AU AV AU AT AW AX AY AU AZ BA AS BB@2 BC BD BE BF BG AS BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV
  BW BX AA BY BZ CA U CB CC CD CE CF CG M N CH N M CI CJ M CK CL BX AA BY CM CN CO CP CQ CH A BY CR M CS CT CU CV CW CX
  CY CZ DA DB DC DD DE ~@11 CS CT CU CV CS CT CU CV CW CX CY CZ DA DB DC DD DE ~@11 CS CT CU CV CS CT CU CV CW CX CY CZ
  DA DB DC DD DE
>`.pickRestart({
  A: "d2@4 ~@2 d2 ~ d2@5 ~ d2@2", B: "a1@4 ~@2 a1 ~ a1@3 ~ a1@2 c2@2", C: "f1@4 ~@2 f1 ~ f1@5 ~ f1 ~",
  D: "c2@6 c1 ~ c2 ~ c2@2 c1 ~ c2 ~", E: "d2@4 d1 ~ d2 ~ d2@4 d1 ~ d2 ~", F: "a1@4 ~@2 a1 ~ a1@7 ~",
  G: "c2@6 c1 ~ c2 ~ c2@2 c1 ~@3", H: "d2@5 ~ d1 ~ d2 ~ d2@3 ~ d1 ~", I: "d2@6 d1 ~ d2 ~ d2@4 d1 ~",
  J: "d2@4 ~@2 d2 ~ d2@6 c1 ~", K: "c2@5 ~ c2 ~ c2@7 ~", L: "d1@4 ~@2 d2 ~ d2@5 ~ d2 ~", M: "c2@4 ~@2 c2 ~ c2@6 ~@2",
  N: "d2@4 ~@2 d2 ~ d2@6 ~@2", O: "d2@4 ~@2 d2 ~ d2@6 d1 ~", P: "d2 ~ d2@4 d1 ~ d2 ~ d2@4 c1 ~",
  Q: "c2@4 ~@2 c2 ~ c2@4 ~@2 c2 ~", R: "~@2 d2@2 ~@2 d2 ~ d2@2 c2 ~ d2@2 c2 ~", S: "d2@4 ~@2 d2 ~ d2@5 ~ c2 ~",
  T: "f1@4 ~@2 f1 ~ f1@7 ~", U: "d2@5 ~ d2 ~ d2@8", V: "g1@4 ~@2 g1 ~ g1@7 ~", W: "d2@4 ~@2 d2 ~ d2@8", X: "~@14 f1 ~",
  Y: "f1 ~@7 c2@6 ~@2", Z: "c2@4 ~@2 c2 ~ c2@5 ~@3, ~@8 b1 ~@7", AA: "d2@5 ~ d2 ~ d2@7 ~", AB: "d2@5 ~ d2 ~ d2@6 e2@2",
  AC: "g1@5 ~ g1 ~ g1@6 ~@2", AD: "g1@4 ~@2 g1 ~ g1@6 b1 ~", AE: "d2@4 ~@2 d2 ~ d2@6 f2 ~",
  AF: "g1@4 ~@2 g1 ~ g1@5 ~@3", AG: "g1@4 ~@2 g1 ~ g1@6 ~@2", AH: "d2 ~@7", AI: "[~@7 bb1@13 ~@4 d2@4 ~@2 d2 ~]/2",
  AJ: "d2@7 ~ a1@5 ~ a1 ~", AK: "a1@6 c2@2 f1@5 ~ f1 ~", AL: "f1@7 ~ c2@6 [c1,d1] ~",
  AM: "c2 ~ c2@2 c1 ~ c2 ~ d2@5 ~ d2 ~", AN: "d2@7 ~ a1@4 ~@2 a1 ~", AO: "a1@4 f1@2 ~ f1", AP: "f2@2 f1@6 c2@5 ~ f1 ~",
  AQ: "c2 ~ c2@4 ~@2 d2@4 ~@2 d2 ~", AR: "d2@7 ~ d2@4 ~@2 d2 ~", AS: "d2@6 ~@2 d2@4 ~@2 d2 ~",
  AT: "d2@6 ~@2 c2@4 ~@2 c2 ~", AU: "c2@6 ~@2 d2@4 ~@2 d2 ~", AV: "d2@7 ~@2 c2@4 ~ c2 ~", AW: "c2@5 ~@3 d2@4 ~@2 d2 ~",
  AX: "d2@6 c2 ~ d2 ~ d2@5 c2", AY: "d2 ~ d2@5 ~ c2@4 ~@2 c2 ~", AZ: "d2@6 d1@2 d2 ~ d2@4 d1 ~",
  BA: "d2 ~ d2@4 d1@2 d2@4 ~@2 d2 ~", BB: "[d2@4 ~@4 eb2@12 ~@4 c2@4 ~@2 c2 ~]/2", BC: "c2@6 ~@2 c2@4 ~@2 c2 ~",
  BD: "c2@6 ~@2 c2@4 ~@2 [b1,c2] ~", BE: "c2@6 ~@2 d2@5 ~ d2 ~", BF: "d2@7 ~ g1@5 ~ g1 ~", BG: "g1@6 ~@2 d2@4 ~@2 d2 ~",
  BH: "d2@5 ~@3 eb2@4 ~@2 eb2 ~", BI: "eb2@5 ~@3 c2@4 ~@2 c2 ~", BJ: "c2@6 b1 g1 c2@4 ~@2 c2 ~",
  BK: "c2@6 ~@2 c2@5 ~ c2 ~", BL: "c2@6 f2@2 d2@5 ~ d2 ~", BM: "d2@7 ~ g2@4 ~@2 g2 ~", BN: "g2@6 f2 e2 d2@5 ~ d2 ~",
  BO: "d2@7 ~ d2@5 ~ d2 ~", BP: "d2@6 ~@2 f2@5 ~ f2 ~", BQ: "f2@7 ~ d2 ~@7", BR: "g2 ~ g2@2 f2 ~ g2@2 d2@5 ~ d2 ~",
  BS: "d2@6 ~@2 d2@5 ~ d2 ~", BT: "d2@4 ~@3 f2@6 ~ f2 ~", BU: "f2@7 ~ f2@5 ~ f2 ~", BV: "f2@2 ~@2 d2 ~@3",
  BW: "~@6 d2 e2", BX: "c2@15 ~", BY: "a1@4 ~@2 a1 ~ a1@8", BZ: "f2@4 ~@2 f2@9 ~", CA: "c2@7 ~ e2@2 d2@2 c2 ~ e2@2",
  CB: "a1@5 ~ a1 ~ a1@6 ~ [a1,c2]", CC: "f2@4 ~@2 f2 ~ f2@6 ~@2", CD: "c2@4 ~@2 c2 ~ c2@5 ~@3",
  CE: "d2@5 ~ d2 ~@3 d2@3 ~ d2 ~", CF: "d2@4 ~@2 d2 ~@3 d2@4 c2 ~", CG: "d2@5 ~ d2 ~ d2@6 ~@2",
  CH: "c2@5 ~ c2 ~ c2@6 ~@2", CI: "c2@5 ~ c2 ~ c2@4 ~@2 c2@2", CJ: "c2@4 ~@2 c2 ~ c2@8", CK: "d2@5 ~ d2 ~ d2@5 ~@3",
  CL: "d2 ~@5 d2@2", CM: "f2@4 ~@2 f2 ~ f2@8", CN: "c2@4 ~@2 c2 ~ c2@2 d2 ~ e2@2 f2 ~",
  CO: "[d2,e2] [c2,d2]@3 ~@2 d2 ~ d2@7 ~", CP: "a1@4 ~@2 a1 ~ a1@5 ~ a1@2", CQ: "f2@4 ~@2 f2 ~ f2@6 e2 d2, e2 ~@15",
  CR: "f2@4 ~@2 [e2,f2] ~ f2@8", CS: "d2@4 ~@2 d2 ~ d2@7 ~", CT: "a1@5 ~ a1 ~ a1@6 ~@2",
  CU: "f2@5 ~ [e2,f2] ~ f2@4 ~@4", CV: "c2@5 ~ c2 ~ c2@4 ~@4", CW: "d2@3 ~@9 d2@3 ~", CX: "a1@3 ~@13",
  CY: "f1@3 ~@9 f2@4", CZ: "c2@9 ~@7", DA: "c2@5 ~@11", DB: "a1 ~@3", DC: "f1 ~@3", DD: "c2@8 ~@2 c2@5 ~",
  DE: "d2@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · synth strings 1 · "Beppe"
const synth_strings_1 = note(`<
  A B@3 C@2 D@2 E@5 F G H@3 F I@4 J@4 K@2 L@6 M@2 N@4 O@4 P Q R@6 S@7 T@5 U@5 V@6 W@8 X@8 Y Z@2 AA@4 AB@8 AC F G AD@3
  AE@2 ~ AF AG@4 AH@4 AI@4 AJ@4 AK AL AM AN AO AL AP AQ AR ~@11 AS@4 AT@4 AK AL AM AN AO AL AP AQ AR ~@11 AS@4 AT@4 AK
  AL AM AN AO AL AP AQ AR
>`.pickRestart({
  A: "[d2,d3,a3,d4,f4]", B: "[[a2,a3,e4]@15 ~ [a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~, c4, ~@16 [f2,f3]@13 ~@19]/3",
  C: "[[d2,d3,d4,f4]@16 [a2,c4,e4]@15 ~, a3@15 ~, ~@16 d4 ~@15]/2", // Dm Am
  D: "[[f2,f3,a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~, c4@31 ~]/2", // F C
  E: "[[d3,a3]@30 a2@2 [d3,a3]@15 ~ [c2,c3,g3,e4]@15 [d2,d3,a3,d4,f4]@16 ~, [d2,d4,f4]@47 c4@16 ~@17]/5", // D5 C Dm
  F: "[c2,c3,g3,c4,e4]@15 ~", G: "[d2,d3,a3,d4,f4]@15 ~", H: "[[c2,c3,g3,c4,e4]@15 [d2,d3,a3,d4,f4]@32 ~]/3",
  I: "[d3@29 ~@2 d3@31 ~@2, [d2,a3,d4,f4]@63 ~]/4", // Dm
  J: "[[f2,a3,f4]@15 ~ [c2,c3,g3,e4]@47 ~, c4@63 ~, f3@13 ~@51, d4 ~@63]/4", // F C
  K: "[[a3,d4,f4]@15 [g2,g3,b3,d4]@15 ~@2, [d2,d3]@13 ~@19]/2", // Dm G D
  L: "[[a3,d4]@31 [f2,f3,a3]@15 ~@2 [c2,c3,g3,e4]@47 ~, f4@47 ~@49, [d2,d3]@30 ~ c4@63 ~@2]/6", // D5 F C D
  M: "[[a3,f4]@15 [b3,g4]@16 ~, d4, [d2,d3]@12 ~@3 [g2,g3]@14 ~@3]/2", // Dm Em D G
  N: "[~ [d3,a3,f4]@30 [g2,g3,b3,d4]@31 ~@2, ~ [d2,d4]@28 ~@35]/4", // Dm G D
  O: "[[a3,d4,f4]@30 ~ [g2,g3,b3,d4]@31 ~@2, [d2,d3]@31 ~@33, g4 ~@63]/4", P: "[d2,d3,a3,d4,f4] ~@7",
  Q: "~@7 [c2,c3,g3,c4,e4]@9", // C
  R: "[~@8 [d2,d3,a3,d4,f4]@16 [a2,a3,e4]@15 ~ [a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~ [d2,d3,d4,f4]@16 [a2,c4,e4]@8, ~ c4@2 a3, ~@40 [f2,f3]@13 ~@35 d4 ~@7]/6", // Dm A5 Dm C Dm Am F
  S: "[~@8 [f2,f3,a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~ [d3,a3]@30 a2@2 [d3,a3]@15 ~ [c2,c3,g3,e4]@15 [d2,d3,a3,d4,f4]@9, ~@8 c4@31 ~ [d2,d4,f4]@47 c4@16 ~@9]/7", // F C D5 C Dm
  T: "[~@8 [c2,c3,g3,c4,e4]@15 ~ [d2,d3,a3,d4,f4]@15 ~ [c2,c3,g3,c4,e4]@15 [d2,d3,a3,d4,f4]@25]/5", // C Dm C Dm
  U: "[~@8 [c2,c3,g3,c4,e4]@15 ~ d3@29 ~@2 d3@25, ~@3 [d2,a3,d4,f4]@7]/5", // C Dm
  V: "[~@8 [f2,a3,f4]@15 ~ [c2,c3,g3,e4]@47 ~ [a3,d4,f4]@15 [g2,g3,b3,d4]@9, ~@8 c4@63 ~@25, ~@8 f3@13 ~@51 [d2,d3]@13 ~@11, ~@8 d4 ~@87]/6", // F C Dm G D
  W: "[~@8 [a3,d4]@31 [f2,f3,a3]@15 ~@2 [c2,c3,g3,e4]@47 ~ [a3,f4]@15 [g2,g3,b3,g4]@9, ~@8 f4@47 ~@49 [d2,d3]@12 ~@12, ~@8 [d2,d3]@30 ~ c4@63 ~@2 d4@24]/8", // D5 F C Dm G D
  X: "[~@9 [d3,a3,f4]@30 [g2,g3,b3,d4]@31 ~@2 [a3,d4,f4]@30 ~ [g2,g3,b3,d4]@25, ~@9 [d2,d4]@28 ~@35 [d2,d3]@31 ~@25, ~@72 g4 ~@55]/8", // Dm G Dm G D
  Y: "~@4 [d2,d3,a3,d4,f4] ~@3", Z: "[~@15 [c2,c3,g3,c4,e4]@14 ~@3]/2",
  AA: "[[d2,d3,d4,f4]@15 ~ a2@15 ~ [f2,f3]@13 ~@3 [c2,g3]@15 ~, a3@31 [a3,f4]@15 ~ [c3,e4]@15 ~@2, ~@15 e4@16 ~ e4 ~@31, ~ c4@3]/4", // Dm F C5 Dm C
  AB: "[[d2,d3,d4,f4]@15 [a2,e4]@16 ~ [f2,a3,f4]@16 [c2,c3,g3,e4]@14 ~ [d2,d3,a3]@30 a2@2 [d2,d3,a3]@15 ~@2 [c2,c3,g3,e4]@15 ~, a3@31 ~ f3@14 ~@82, ~@15 c4@47 ~ [d4,f4]@48 c4@16 ~]/8", // Dm A5 F C D5 C Dm
  AC: "[d2,d3,a3]@7 ~, [d4,f4]", AD: "[[c2,c3,g3,c4,e4]@14 ~ [d2,d3,a3,d4,f4]@32 ~]/3",
  AE: "[[c2,c3,g3,c4,e4]@15 ~ [d2,d3,a3,f4]@13 a2@2 [d2,d3,a3,d4,f4], ~@15 d4@15 ~@2]/2", AF: "[c2,c3,g3,c4,e4]",
  AG: "[[d2,d3,d4]@15 ~ [a2,a3]@16 [a3,f4]@15 ~ [g3,e4]@15 ~, [a3,f4]@14 ~ c4@48 ~, ~@15 e4@15 ~@2 [f2,f3]@13 ~@2 [c2,c3]@15 ~@2]/4", // D A Dm C Dm F C
  AH: "[[d2,d3,a3,d4,f4]@15 [a2,a3,e4]@16 ~ [a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~, ~@15 c4@49, ~@31 f3@13 ~@20, ~@32 f2@13 ~@19]/4", // Dm A5 Dm C
  AI: "[[d2,d3,a3,d4,f4]@15 ~@17 f4@15 ~ [g3,e4]@15 ~, ~@15 [a2,e4]@16 [f2,a3]@15 ~ [c2,c3]@15 ~@2, ~@15 a3@14 ~@2 f3@13 ~@20, ~ c4@3]/4", // Dm C A5 F C
  AJ: "[[d2,d3,d4,f4]@15 ~ a2@15 [f2,a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~@2, a3@14 ~ c4@47 ~@2, ~@15 [a3,e4]@15 ~ f3@13 ~@20, ~@31 e4 ~@32]/4", // Dm F C A5
  AK: "[d2,d3,a3,d4,f4]@3 ~@9 [d2,d3,a3,d4,f4]@4", AL: "[a2,a3,c4,e4] ~@7", AM: "[f2,f3,a3,c4]@3 ~@9 [f2,f3,a3,c4]@3 ~",
  AN: "[c2,c3,c4]@15 ~, [e3,g3]@13 ~@3", AO: "[a3,d4,f4]@2 ~@8 d3 ~ [d3,a3,d4,f4]@2 ~@2, ~@12 e4 ~@3",
  AP: "[f2,f3,a3,c4] ~@5 [f3,a3,c4] ~", AQ: "[c2,c3,e3,g3]@3 ~@6 [c2,c3,g3,c4,e4]@3 ~ [c2,c3] [g3,e4] ~, c4@5 ~@9 c4@2",
  AR: "[d2,d3,a3,d4,f4]@3 ~@13", // Dm
  AS: "[~@16 a2@15 [f2,a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~@2, ~@15 c4@47 ~@2, ~@15 [a3,e4]@15 ~ f3@13 ~@20, ~@31 e4 ~@32]/4", // F C A5
  AT: "[[d2,d3,a3,d4,f4]@3 ~@13 a2@15 [f2,a3,f4]@15 ~ [c2,c3,g3,e4]@15 ~@2, ~@15 c4@47 ~@2, ~@15 [a3,e4]@15 ~ f3@13 ~@20, ~@31 e4 ~@32]/4", // Dm F C A5
})).s("gm_synth_strings_1").gain(0.14).pan(0.4)

// other · lead 1 square · "Beppe synt"
const lead_1_square = note(`<
  A B C D A B E@2 ~@39 F@4 G@5 ~@39 A B H I A B H J ~@14 K B H I A B H L M B H I K B N O P B Q R K B H S T ~@3 P B Q R P
  B Q R P B Q R P B Q R P B Q R K B H S T ~@3 P B Q R P B Q R P B Q R P B Q R P B Q R K B H S T
>`.pickRestart({
  A: "f5@2 e5 d5@2 f5 e5 d5", B: "c5@2 b4 d5@2 c5 b4 a4", C: "f4@4 g4@2 a4@4 c5@3 b4@2 ~", D: "c5@13 ~@3",
  E: "[f4@4 g4@2 a4@4 c5@3 b4@2 c5@13 ~@4]/2",
  F: "[~@8 f5@4 e5@2 d5@4 f5@2 e5@2 d5@2 c5@4 b4@2 d5@4 c5@2 b4@2 a4@2 f4@4 g4@2 a4@4 c5@4 b4@2 c5@7 ~]/4",
  G: "[c5 d5 e5 g5 f5@2 e5 d5@2 f5 e5 d5 c5@2 b4 d5@2 c5 b4 a4 f4@2 g4 a4@2 c5@2 b4 c5@7 ~@5]/5",
  H: "f4@2 g4 a4@2 c5@2 b4", I: "c5@7 ~ c5@2 d5@2 e5@2 g5@2", J: "c5@15 ~", K: "f5@2 e5 d5@2 ~ e5 d5, ~@5 f5@2 ~",
  L: "c5@7 ~ c5@2 d5 ~ e5@2 g5@2, ~@12 d5 ~@3", M: "f5@2 e5 d5@2 f5 e5 d5, ~@10 g5 ~@5",
  N: "f4@4 g4@2 a4 a4@3 c5@4 b4 ~", O: "c5@5 d5 e5 g5, b4 ~@15", P: "f5@4 e5@2 d5@4 e5 ~ e5@2 d5@2, ~@11 f5@3 ~@2",
  Q: "f4@4 g4@2 a4@4 c5@4 b4 ~", R: "c5@7 ~ c5@2 d5@2 e5@2 g5@2, b4 ~@15", S: "c5@8 ~@2 c5@3 ~ c5@2, b4 ~@15",
  T: "d5@3 ~@13",
})).s("gm_lead_1_square").gain(0.66).pan(0.6)

// other · distortion guitar · "Cico"
const distortion_guitar = note("<~@22 A B@4 C@4 D@2 E@2 F@3 ~@32 G@2 H@8 I@4 J ~@113>".pickRestart({
  A: "~@12 f4 ~ g4 ~",
  B: "[g4@13 ~ g4 ~ e4@7 ~@2 g4 f4 ~@2 f4 e4 ~ e4@27 ~@2 e4 d4 e4, ~@15 f4@2 ~@7 a4@2 ~ e4@2 ~@2 d4@2 ~@31, ~@14 g4 ~@15 [f4,g4] ~]/4", // Fsus2
  C: "[f4@15 ~ d4@44 f4 ~ g4 ~, ~@15 e4@2 ~@47]/4",
  D: "[g4@12 ~@2 f4 e4@8 ~@2 f4 e4@2 ~@3 d4, ~@13 g4@2 ~@9 [g4,a4]@2 ~@2 g4@2 e4@2, ~@29 f4@2 ~]/2", // Gsus2
  E: "[~ e4@27 ~ e4 d4 e4, ~@14 f4 ~]/2", F: "[f4@25 d4 f4 g4 a4 g4 a4@6 ~@12]/3",
  G: "[~@4 f4@2 g4 ~ g4@13 ~ g4 f4 e4@8]/2",
  H: "[a4 ~ [e4,f4]@2 ~@2 e4 ~ e4@27 ~@2 e4 d4 e4 f4@16 d4@44 f4 ~ g4 ~ g4@13 ~@3 e4@8, ~ g4@2 ~ g4@2 ~@30 f4@2 ~@80 g4@2 ~@8, ~@5 f4@2 d4@2 ~@110 f4@2 ~@7]/8", // Fmaj7
  I: "[~ f4@2 ~@3 e4 d4 e4@28 ~ e4 d4 e4 f4@22 ~@2, [g4,a4]@2 ~ e4@2 f4@2 ~@29 f4@2 ~@26, ~@2 g4 ~@29]/4", // Gsus2
  J: "a4 d4 ~@2 a4 f4@2 a4 [b4,c5] ~@7, ~ f4 ~@6, ~@3 g4@2 ~@11", // Cmaj7
})).s("gm_distortion_guitar").gain(0.46).pan(0.4)

// chords · electric guitar muted · "Cico mutte"
const electric_guitar_muted = note(`<
  A B C D A B C D E A@2 F A F A F A@2 F A@2 ~@16 G@2 H@2 G@2 H@2 ~@2 I J K L M J K L M N A O P O P O P A O P A Q ~@15 R
  G S H T G S H U ~@2 A B C D A B C D E A@2 F A F A F A@2 F A ~@2 A B C D A B C D A B C D A B C D ~@20 A B C D A B C D
  ~@20 A B C D A B C D ~@9
>`.pickRestart({
  A: "[d2,d3,a3,d4]!16", B: "[a1,a2,e3,a3]!16", C: "[f1,f2,c3,f3]!16", D: "[g1,g2,d3,g3]!16",
  E: "[d2,d3,a3,d4]!12 [d2,d3,g3,d4]!4", F: "[c2,c3,g3,c4]!16", G: "[d3,a3,d4]!16", H: "[g2,d3,g3]!16",
  I: "~@8 [d2,d3,a3,d4]!8", J: "[d2,d3,a3,d4]!8 [a1,a2,e3,a3]!8", K: "[a1,a2,e3,a3]!8 [f1,f2,c3,f3]!8",
  L: "[f1,f2,c3,f3]!8 [g1,g2,d3,g3]!8", M: "[g1,g2,d3,g3]!8 [d2,d3,a3,d4]!8",
  N: "[d2,d3,a3,d4]!4 [d2,d3,g3,d4]!4 [d2,d3,a3,d4]!8", O: "[d2,d3,a3,d4]!8 [c2,c3,g3,c4]!8",
  P: "[c2,c3,g3,c4]!8 [d2,d3,a3,d4]!8", Q: "[d2,d3,a3,d4]!8 ~@8", R: "~@8 [d3,a3,d4]!8", S: "[d3,a3,d4]!8 [g2,d3,g3]!8",
  T: "[g2,d3,g3]!8 [d3,a3,d4]!8", U: "[g2,d3,g3]!8 ~@8",
})).s("gm_electric_guitar_muted").gain(0.28).pan(0.7)

// chords · piano · "Beppe pian"
const piano = note(`<
  ~@45 A B@2 ~@44 C ~ D ~@20 E F G ~@15 H I J K L M N O P ~@19 H I J K L M N O P ~@19 H I J K L M N O P
>`.pickRestart({
  A: "[a3,d4] ~@7, d3 ~@15", B: "[~ [c2,c3,g3,c4,e4]@2 ~]/2", C: "~@4 [a3,d4] ~@3, ~@8 d3 ~@7", D: "[c2,c3,g3,c4,e4]",
  E: "c4 ~@15", F: "[g3,c4,e4]@8 c3@2 ~@3 [g3,c4,e4] ~@2, [c2,c3]@6 ~@4 [g3,c4,e4]@2 c3@3 ~, ~@11 c2@3 ~@2",
  G: "d2@15 ~, d4@9 ~@7, d3@3 ~@5", H: "[d3,f4]@2 ~@10 [d3,a3,d4,f4]@3 ~", I: "[a2,a3,c4,e4]@3 ~@13, eb4 ~@15",
  J: "[f2,f3,a3,c4]@3 ~@9 [f3,c4]@3 ~, ~@11 f2@3 ~@2, ~@12 a3 ~@3", K: "[c2,c3,e3,g3,c4]@13 ~@3",
  L: "[d3,a3,d4,f4]@3 ~@9 [d3,a3,d4,f4]@2 ~@2", M: "[a2,a3,c4,e4] ~@7", N: "[f3,a3]@7 ~, c4@3 ~, f2 ~@3",
  O: "[c2,c3,e3,g3,c4]@5 g2@2 ~ c3 ~ [c2,c3,g3,c4,e4]@2 ~@2 [c2,c3,g3,c4,e4] ~", // C
  P: "[d2,d3,a3,d4,f4]@3 ~@13, [c4,e4] ~@15", // Dm C
})).s("gm_piano").gain(0.5).pan(0.3)

// chords · string ensemble 2 · "Beppe tap"
const string_ensemble_2 = note(`<
  A B@3 C@4 ~@13 D@6 E@2 F@2 G@6 H@8 I ~ J@4 K@5 ~@12 L@8 M@6 N@8 O@3 ~@2 P@4 Q@4 ~@14 R@2 S@2 T@4 U V@3 W@4 X Y Z AA AB
  AC AD AE AF ~@3 AG@4 AH AI AJ AK AL@4 AM@4 AN AO AP AQ AR AS AT AU AV ~@3 AW AI AJ AX AH AI AY@2 AZ@3 BA BB@4 BC AC BD
  BE BF BG BH BI BJ
>`.pickRestart({
  A: "[d3,d4,f4,a4,d5]", B: "[~ e5@6 ~ [f3,f5]@8 [c4,g4]@8, a3@5 ~@11, ~ c5@23, ~ a4@14 ~ e5@7 ~]/3",
  C: "[[d4,d5,f5]@15 [a3,e5]@16 ~ [f3,f5]@16 [c4,g4,e5]@16, a4@23 ~@9, ~@15 c5@49, ~@32 e5 ~@31]/4", // Dm A5 F C
  D: "[[d4,f4,d5]@30 ~ [f3,f4]@16 [c4,e4,g4]@48 ~, a4@47 c3@46 ~@3, d3@27 ~@4 c5@62 ~@3]/6", // Dm F C
  E: "[[d3,a4]@15 [g3,g4,b4]@16 ~, d4@15 ~, [f4,d5]@7 ~@9]/2", F: "[d3,d4,f4,a4,d5]/2",
  G: "[[f3,a4]@15 [c3,c4,e4,g4]@47 ~ [d3,d4,f4,a4,d5]@15 ~ [g3,g4,b4]@16 ~, c5@31 ~@17, f4@14 ~@65 d4@13 ~@4]/6", // F C Dm G
  H: "[~@4 d3@28 c5@3 b4@28 [d3,a4]@32 [g3,g4]@32 ~, [f4,a4]@34 ~ d5@90 ~@3, d5@31 ~ g3@31 ~@65, ~@35 g4@26 ~@2 f4@31 ~ b4@29 ~@4]/8", // D5 G F
  I: "[d3,d4,f4,a4] ~@7", J: "[~ [d3,d4,d5,f5]@2 [a3,e5]@2 [f3,f4,a4,f5]@2 [c4,g4,e5], ~@4 a4@15 ~@13, ~@3 c5@5]/4",
  K: "[~ [d3,d4,d5,f5]@2 [a3,e5]@2 [f3,f4,a4,f5]@2 [c4,g4,e5]@2 ~, ~@8 a4@31 ~@41, ~@3 c5@6 ~, ~@24 d5 ~@55]/5", // Dm A5 F C
  L: "[~@8 [d3,d4,d5]@32 f3@16 [c3,c4,e4,g4]@47 ~ [d3,d4]@15 c5@3 ~ c5 ~ [g4,b4]@3, ~@8 a4@48 ~@63 g3@9, ~@8 f4@46 ~@50 [f4,a4]@19 ~@5, ~@40 c5@63 ~ d5@14 ~@7 d5 ~@2]/8", // D C D G F
  M: "[d5@7 ~@7 d3@26 f3@15 [c3,e4,g4]@41, ~@9 a4@47 ~@40, ~@9 [f4,d5]@31 c5@56, ~@40 f4@13 ~@43]/6", // C Dm
  N: "[~@8 [d3,a4]@16 [g3,g4,b4]@16 ~@16 [d4,f4]@15 ~ [g3,b4]@31 [d3,d4,f4,a4]@25, ~ d5@15, ~@8 f4@14 ~@18 a4@31 ~ g4@30 ~@26, ~@40 f4@15 ~@73, ~@45 d3@27 ~@56]/8", // D5 G Dm G Dm
  O: "[~@7 [g3,g4,b4]@31 ~@2 [d3,d4,f4,a4,d5] ~@7]/3", // G Dm
  P: "[[d3,d4,d5,f5]@15 [a3,e5]@16 ~ [f3,f4,f5]@16 [c4,e5]@16, a4@23 ~ g4@7 ~, ~@15 c5@48 ~]/4", // Dm A5 F C
  Q: "[[d3,d4,d5,f5]@15 [a3,e5]@16 ~ [f3,f4,a4,f5]@16 [c4,g4,e5]@16, a4@31 ~@33, ~@15 c5@48 ~]/4", // Dm A5 F C
  R: "[[d3,d4]@15 a3@15 a4 ~, a4@29 ~@3, [f4,d5]@14 ~ c5@14 ~@3, ~@15 e4@12 ~@5]/2", // D Dm
  S: "[[f3,f4,a4,f5]@8 [g4,e5]@7 ~, c5@31 ~, ~@4 c4@3 ~]/2", // F C
  T: "[[d3,d4,d5,f5]@16 [a3,e5]@15 [f3,f4]@17 [c4,g4,e5]@14 ~@2, a4@47 ~@17, ~ c5@3, ~@31 f5@15 ~@18]/4", // Dm A5 F C
  U: "[d3,d4,a4,d5,f5]", V: "[[a3,a4,e5]@8 [f3,f4]@8 [g4,e5]@7 ~, c5@47 ~, ~@16 [a4,f5]@15 ~ c4@11 ~@5]/3",
  W: "[[d3,d4,d5,f5]@16 [a3,e5]@15 [f3,f4]@17 [g4,e5]@15 ~, a4@31 [a4,f5]@15 ~@2 c4@11 ~@5, ~ c5@3]/4", // Dm A5 F C Dm
  X: "[d3,d4,a4,d5,f5]@6 ~@7 f5 ~@2", Y: "[a3,a4,c5,e5]@3 ~@13", Z: "[f3,a4,c5,f5] ~@5 [a4,c5,f5] ~",
  AA: "[c3,g4,c5,e5]@3 ~@13", AB: "[d3,d4,a4,d5,f5]@2 ~@8 d4@2 [a4,d5,f5]@2 d4 ~, c5 ~@11 c5 ~@3", AC: "[a4,c5,e5] ~@7",
  AD: "[a4,c5,f5] ~@5 [a4,c5,f5] ~", AE: "[g4,c5,e5]@5 ~@3 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~",
  AF: "[a4,c5,d5,f5] ~@15", AG: "[d4@15 a3@16 f3@16 c3@16 ~]/4", AH: "d4", AI: "a3", AJ: "f3", AK: "c3@15 ~",
  AL: "[[d4,d5,f5]@15 [a3,e5]@16 ~ [f3,f4,f5]@16 [g4,e5]@15 ~, a4@31 ~ a4@14 ~@2 c4@13 ~@3, ~@15 c5@48 ~]/4", // Dm A5 F C
  AM: "[[d3,d4,d5,f5]@15 [a3,e5]@16 [f3,a4,f5]@16 ~ [c3,c4,g4,e5]@15 ~, a4@31 ~@33, ~@15 c5@47 ~@2]/4", // Dm A5 F C
  AN: "[d3,a4,d5] ~@5 [a4,d5,f5] ~, f5 ~@11 c5 ~@3", AO: "[a3,a4,c5,e5] ~@7", AP: "[f3,a4,c5,f5] ~@5 [f3,a4,c5,f5] ~",
  AQ: "[c3,g4,c5,e5] ~@7", AR: "[d4,a4,d5,f5] ~@7, c5 ~@15", AS: "[a3,a4,c5,e5] ~@7, d5 ~@15",
  AT: "[f3,a4,c5,f5] ~@7, eb5 ~@15", AU: "[g4,c5,e5]@2 ~@8 [c3,d3,g4,c5,e5] ~@3 [c3,g4,c5,e5] ~, c3 ~@15",
  AV: "[d3,a4,d5,f5] ~@15", AW: "d4@15 ~", AX: "c3", AY: "[f3@15 c3@13 ~@4]/2",
  AZ: "[[d3,a4,d5]@15 [a3,e5]@16 ~ [f3,f4]@14 ~@2, f5@14 ~ [a4,c5]@33, ~@2 f5, ~@32 e5 ~@15]/3", // D5 A5 F Am
  BA: "[c4,e4,g4,c5]@15 ~", // C
  BB: "[[d3,d5,f5]@16 a3@16 f3@15 ~ [g4,e5]@14 ~@2, a4@46 ~ c3@15 ~@2, ~@16 c5@47 ~, ~@8 e5@7 ~ f5@7 ~@9]/4", // Dm C
  BC: "[d3,a4,c5,f5] ~@11 [a4,c5,d5,f5] ~@3, d5 ~@7", BD: "[a4,c5,f5]@3 ~@9 [a4,c5,f5]@3 ~", BE: "[g4,c5,e5]@3 ~@13",
  BF: "[a4,d5,f5]@3 ~@9 [a4,d5,f5]@2 ~@2", BG: "[a4,c5,e5]@3 ~@13", BH: "[a4,c5,f5]@3 ~@13",
  BI: "[g4,c5,e5]@3 ~@7 [g4,c5,e5]@2 ~@2 [g4,c5,e5] ~", BJ: "[d3,a4,d5,f5]@3 ~@13",
})).s("gm_string_ensemble_2").gain(0.32)

// other · pad sweep · "Beppe spac"
const pad_sweep = note("<~@21 A@4 B@2 C D E@2 F@2 G@2 H@2 ~@31 I@5 J@8 K@4 ~@113>".pickRestart({
  A: "[d4@29 ~@2 f4@17 c4@14 ~@2]/4", B: "[c4@15 ~]/2", C: "d4", D: "g3", E: "[d3@31 ~]/2", F: "[f3@19 c3@11 ~@2]/2",
  G: "c3/2", H: "[d3@15 g2@16 ~, ~@15 f2 ~@16]/2", I: "[~@8 d3@31 ~ f3@16 c3@24]/5",
  J: "[~@8 c3@16 d3@15 ~ g3@16 d3@31 ~ f3@16 c4@24, ~@88 e3 ~@39]/8", K: "[~ c4@2 d3@2 g3@2 ~]/4",
// … 84 more lines

More by Nomadi