Strudelify

'Na sera 'e maggio

Renzo Arbore

KeyE♭ minorTempo85 bpm
0:00/0:00
// 'Na sera 'e maggio — Renzo Arbore
// 85 bpm, 4/4, key D# 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 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 B A B A B A@3 B C D E F A B G@2 H I J K@2 L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI@2 AJ AK AL AM AN
  AO AP AQ AR AS AT AU@2 AV@2 AW AX AY AZ BA@2 BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BS BV@2 ~
>`.pickRestart({
  A: "~@2 [a3,f4,a4] ~@5 [a3,f4,a4]@4 [a1,e4]@4, d2@3 a2@3 ~@2", // Dm A5
  B: "~@2 [a3,f4,a4] ~@5 [a3,f4,a4]@4 e4 f4 e4@2, d2@3 a2@3 a1@2", // Dm
  C: "~@2 [a3,f4,a4] ~@5 [a3,f4,a4]@4 [d2,e4]@4, d2@3 a2@3 ~@2", // Dm Dsus2
  D: "~@2 [g3,bb3,d4,f4] ~@5 [g3,bb3,d4,f4]@4 [d2,e4]@4, g2@3 g1@3 ~@2", // Gm7 Dsus2
  E: "~@2 [g3,d4,f4] ~@5 [g3,d4,f4]@4 [g2,e4]@4, g2@3 d3@3 ~@2", F: "~@2 [bb3,d4,f4] ~@5 [bb3,d4,f4]@4 e4@4, f2@3 d3@5",
  G: "[~@2 [a3,f4,a4] ~@4 [bb3,c4] a3@4 [a1,f4,a4]@4 ~@2 [a3,f4,a4] ~@5 [a3,f4,a4]@4 [a1,e4]@4, d2@3 a2@3 a3@3 ~@7, ~@8 d2@3 a2@3 ~@2]/2", // Dm Bbsus2 Dm A5
  H: "~@2 [c4,eb4,g4] ~@9 c2@3 ~, c2@3 g2@3 ~@2, ~ [c4,eb4,g4]", // Cm
  I: "~@2 [bb3,d4,g4] ~@5 bb3@4 a3 bb3 a3@2, g2@3 d3@3 d2@2", // Gm
  J: "~@2 [g3,bb3,d4] ~@5 [g3,bb3,d4]@4 [f2,a3]@4, g2@3 d3@3 ~@2", // Gm F
  K: "~@2 [g3,bb3,eb4] ~@5 [g3,bb3,eb4]@4 [bb1,f3,a3,eb4]@4, eb2@3 bb2@3 ~@2", // Eb Bbsus4
  L: "~@2 [a3,db4,e4] ~@5 [bb3,db4,e4]@2 a3@2 [bb3,e4]@2 [a3,db4]@2, a2@3 e3@3 e2@2", // A Bbdim A
  M: "~ [a3,db4] [bb3,d4] [db4,e4] [e4,g4] [d4,f4] [db4,e4] [e4,g4], a2@3 e3@3 e2@2", // A Bb Dbm Em Dm Dbm Em
  N: "~ [a3,d4,f4]@2 g4 ~ [g3,db4]@2 e4, d2 e2, a4@5 ~@3 f4@6 ~@2", // Dm Gdim
  O: "~@2 [f3,a3]@3 ~ a3@2 ~@4 d4@4, f2 [g2,bb3], d4@3 ~@2 f4@3", // F Gm
  P: "~@2 [a3,f4,a4] ~@5 a3@3 ~ [a1,g3,e4]@4, d2@3 a2@3 ~@2, ~ f4", // Dm A7
  Q: "~ [f3,a3] [g3,bb3] [a3,c4] [bb3,d4] [c4,e4] [a1,a3,c4]@2, d2@3 a2@3 ~@2", // F Gm Am Bb C Am
  R: "~@2 [a3,f4,a4] ~@5 [a3,f4]@4 [a1,g3,e4]@4, d2@5 ~ a2@6 ~@4", // Dm A7
  S: "~@2 [f3,a3,d4] ~@3 f2@2 a3@2 ~@4 a3@2, d2@3 ~ [gb2,d4]@4, ~@5 a3@2 ~, ~@3 c4", // Dm D
  T: "~@2 [g3,bb3,d4] ~@5 [g3,bb3,d4]@4 [d2,a3,c4]@4, g2@3 d3@3 ~@2", // Gm D7
  U: "~@3 [bb3,d4] ~@2 [a3,c4] [g3,c4], g2@4 ~ [bb3,d4]@2 ~, ~ g3@3 c4@2 d2@2, ~ bb3@2 d3@4 ~, ~@2 [a3,c4]@2 e4@3 ~", // Bb Am C5 Bb Am
  V: "~ g4@2 [d4,g4] ~ d4@2 d4, [g2,bb4] [f2,a4]", // G5 Gm F
  W: "~ [bb3,d4]@2 d4 ~@3 g3, [e2,g4] [a2,f4], ~@5 [g3,db4]@2 ~, ~@3 e4", // Bb Em Dm Gdim
  X: "~@2 a3@4 ~@9 db4, d2@7 e4, e4@12 e4 f4@2 ~, ~@3 [a3,db4]@3 [a2,f3,a3,db4]@2, ~@6 f3@2 a4@7 ~", // A Aaug
  Y: "~@2 [a3,bb3,d4] ~@5 [g3,bb3,d4]@4 [g2,g3,d4]@4, ~@3 d3@3 ~@2", // Bbmaj7 Gm G5
  Z: "~@8 [f3,a3,d4]@4 ~@3 d4, f2@3 [f2,f3,a3,d4], ~@2 e4@10 ~ e4@3, ~ [f3,a3]@3 ~@3 f4, ~@3 d3@3 ~@2", // Dm F
  AA: "~@2 [g3,bb3,eb4] ~@3 bb2@2 [g3,bb3,db4,eb4]@4 [g3,a3,db4]@4, eb2@3 ~ ab2@4", // Eb Eb7 A7
  AB: "~@2 [f3,a3,d4] ~@5 [a3,d4,f4]@4 [a1,g3,e4]@4, d2@3 a2@3 ~@2", // Dm A7
  AC: "~@2 [c4,eb4] f4 ~ [eb4,gb4] [d4,f4] [f4,ab4], d2@3 [bb2,d4]@3 bb1@2, ~ [bb3,d4]@2 ~ [f4,ab4]@2 ~@2", // Cm Ebm Dm Fm Bb Fm
  AD: "~@2 [bb3,eb4,gb4] [bb1,ab3,f4], eb2@3 bb2@3 ~@2, ~ [bb3,eb4,gb4]@3 ~@4", // Ebm Bb7 Ebm
  AE: "~@2 [ab3,db4,e4]@4 ~@2 [ab3,db4,e4]@4 ~@3 db4, db2@3 ab2@3 gb3@2, ~@7 eb4", // Dbm
  AF: "~@2 [gb3,b3] [b1,e3,ab3,b3,db4], e2@3 ~, ~ [gb3,b3,eb4]@3 ~@4, ~@3 b2@3 ~@2", // B5 Dbm7 B
  AG: "~@2 [bb3,eb4,gb4] [bb1,f3,ab3], eb2@3 ~, ~ [bb3,eb4,gb4]@3 ~@4, ~@3 bb2@3 ~@2", // Ebm Bb7 Ebm
  AH: "~@2 [ab3,b3,eb4] ~@5 [ab3,b3,eb4]@4 [ab3,bb3,eb4]@4, ab2@2 ~ ab2@2 ~@3", // Abm Absus2
  AI: "[~@7 gb2 ~@5 bb2 ~ bb2, gb2@3 gb2@2 ~ f4@3 ~@7, ~ [bb3,eb4,gb4]@3 [bb3,eb4,gb4]@4 ~ [bb3,d4,f4]@3 [bb3,d4,f4]@2 [f3,bb3,d4]@2, ~@6 ab3@2 bb2@3 bb2@2 ~@3]/2", // Ebm Bb
  AJ: "~ [bb3,eb4,gb4]@2 ~@3 [ab3,f4]@2, eb2@3 eb2@2 eb2@3, ~@2 [bb3,gb4] ~", // Ebm Db Ebm
  AK: "~@2 [bb3,eb4,gb4] ~@5 [bb3,eb4,gb4]@4 [bb1,ab3,f4]@4, eb2@3 ~@5", // Ebm Bb7
  AL: "~@2 [bb3,eb4,gb4] ~@5 [bb3,eb4,gb4]@4 [bb1,bb3]@4, eb2@3 bb2@3 ~@2", // Ebm Bb
  AM: "~@2 [bb3,eb4,gb4] ~@5 [bb3,eb4,gb4]@4 [bb1,ab3,f4]@4, eb2@3 bb2@3 ~@2", // Ebm Bb7
  AN: "~@2 [bb3,eb4,gb4] ~@5 [bb3,eb4,gb4]@4 [g2,g3,bb3,eb4]@4, eb2@3 bb2@3 ~@2", // Ebm Eb
  AO: "~@2 [ab3,b3,eb4] ~@11 ab2@2, ab1, ab2@5 ~ ab2@4 ab2@4 ~@2, ~ b3, ~@2 [ab3,eb4] [ab3,bb3,eb4]", // Abm Ab5 Absus2
  AP: "~@2 [ab3,b3,eb4] ~@11 ab2@2, ab1, ~@3 ab2@2 ab2@2 ~, ~@2 [ab3,b3,eb4]!2", // Abm
  AQ: "~@2 [b3,eb4,gb4] ~@9 [b3,eb4,gb4]@4, gb2@3 gb2@2 gb2@2 ~, ~ gb3, ~@2 [b3,eb4] ~", // B
  AR: "~@2 [bb3,eb4,gb4] ~@11 f4@2, eb2@10 eb2@5 ~, ~@3 bb2@3 [bb2,ab3,d4]@2, ~ [bb3,eb4], ~@8 gb4@4 f4 gb4@3", // Ebm Bb7 Eb5
  AS: "~@2 [bb3,eb4,gb4] ~@9 [bb2,ab3,db4,f4]@4, eb2@2 [bb3,eb4,gb4] ~, ~@3 bb2@3 ~@2, ~@5 eb2@3", // Ebm Bbm7 Ebm
  AT: "~@2 [gb3,bb3,eb4] ~@5 bb3@2 ab3 bb3 b3 d4 bb3 ab3, eb2, ~@6 bb2@5 ~@5, ~ gb3, ~@8 eb4@5 ~@3", // Ebm
  AU: "[~@2 [bb3,eb4,gb4] ~@7 bb2@2 ~@18 ab2@2, eb2@14 eb4 db4@2 ~@7 e4@8, ~@3 bb2@2 ~ [ab3,f4]@2 db2@8, ~@8 bb3@9 ~ [ab3,db4,e4]@6 [ab3,db4]@4 [ab3,db4,eb4]@4, ~@8 [eb4,gb4]@5 [bb2,gb4]@4 ~@5 ab2@4 ab2@4 ~@2]/2", // Ebm Db Dbm Db5 Absus4 Ebm
  AV: "[~@2 [ab3,b3,eb4] ~@27 ab2@2, ab1@15 ~ ab1@16, ab2@2 ~ ab2@2 ab2@2 ~ ab2@3 ab2@2 ab2@2 ~, ~@8 b3@7 ~@9 eb4@7 ~, ~@4 [ab3,eb4]@2 [ab3,bb3,eb4]@3 [ab3,b3,eb4]@3 [ab3,b3]@2 [ab3,b3]@2]/2", // Abm Ab5 Absus2 Abm
  AW: "~@15 eb4, e2@7 gb4, e3@3 ab4@9 gb4 ab4@3, ~ b3@5 e3@4 e3@6, ~ e4@3 b3@2 bb3@2",
  AX: "e2 ~@7 [ab3,d4]@4 [ab3,bb3,d4]@4, [b3,e4] b3, e3@3 e3@5, ab3!2 ~@2, ~ e2@7", // Abdim Bb7 E5
  AY: "f3@2 ~@2 bb2@2 ~@6 f3@2 bb2 f2, [bb1,bb3,d4]@7 bb1@2 ~ bb1@5 ~, bb2@2 ~ bb2@4 ~, ~@2 f3@6 [ab3,b3,eb4]@7 ~, ~@2 f3 ~", // Bb Abm
  AZ: "[bb3,d4] ~@2 [d4,f4] d4 [d4,gb4,bb4] [d4,ab4,b4] [f4,b4,d5], [bb1,bb2], f3 ~ bb3@6 ~@8, ~ d4@2 ~ [f4,ab4]@2 ~@2, ~ [b3,eb4] ~@2", // Bb Dm Daug Abdim Bdim Bb Fm B
  BA: "[[gb3,bb3,eb4] ~@2 [bb3,eb4,gb4] f2 ~@4 [gb3,bb3]@2 [gb3,bb3,eb4] ~ [ab3,b3,eb4]@2 [ab3,b3,eb4], eb2@2 eb2@2 f1@5 ~@7, ~ [bb4,eb5]@3 ~@2 f2@3 ~@3 ab2@3 ~, ~ gb4@2 ~@2 [f3,ab3,eb4]@4 f4@3 ~@4, ~@2 [gb1,gb2] ab1]/2", // Ebm Gb Ebm Abm Eb5 Fm7 Gb
  BB: "~@2 [eb4,gb4,bb4] ~@11 bb2@2, eb2@10 eb2@5 ~, ~@6 bb2@5 ~@5, ~@2 [bb3,eb4,gb4] [ab3,f4]", // Ebm Db
  BC: "~@3 [bb3,db4] [ab3,b3] ~ eb4 db4, eb2, ~ gb3@3 ~ gb3@3, ~@2 bb3@4 bb2@5 ~@5, ~ [ab3,b3] ~ f4", // Bbm Abm
  BD: "[gb3,bb3,eb4] ~@6 bb2, eb2@5 eb2@3, ~ gb3@7, ~ [bb3,eb4]@3 [bb3,eb4,gb4]@4, ~@6 bb2@5 bb2 [ab3,db4,f4]@4", // Ebm Eb5 Ebm Db
  BE: "~@7 g2 g2@2 ~@2 g3@4, [eb2,gb3,bb3,eb4]@5 eb2@3 ~@2 g2@4 ~@2, ~ bb2@3 g3@2 ~@2, ~@3 eb4 [bb3,eb4]@4", // Ebm Eb5
  BF: "~@4 [b3,eb4] ~ [ab3,bb3,db4,eb4]@2, ab1@10 ab1@5 ~, ab2@6 ab2@5 ab2@3 ~@2, ~ [ab3,b3,eb4]@3 ~@4", // B Absus4 Abm
  BG: "ab1 ~@5 [db4,f4] [eb4,gb4], eb4@7 ab2@9, [ab3,b3]@5 ab2 b3@2 [bb3,db4]@2 [b3,eb4]@5 ~, ~ ab1@7, ~@6 ab3@9 ~", // Db Ebm Abm Bbm B
  BH: "b3@2 ~@4 [ab1,b3,eb4]@2 gb1 ~@5 b3@2, ab4@8 ~@3 b3@3 ~@2, [ab1,eb4]@3 ~@2 gb1@3, ab2!2 [gb2,b3] gb2, ~ b3@2 ~ [eb4,ab4]@4", // Abm Ab5 B5 Ab5
  BI: "f1@2 ~@5 b3 db4 ~@3 b3 bb3@3, f2 [bb2,f3,ab3], [b3,eb4,ab4]@6 ab4@3 ~ f4@6, ~@2 f1@7 ~@7, ~@7 eb4@2 d4@2 ~@5", // Bb7 Abm
  BJ: "bb3@6 bb3@2 ~@4 d4@3 ab1, [eb3,gb3,f4], d4@5 d4 ~@2, ~ bb3, ~@11 eb4@5", // Ebm
  BK: "~@2 [ab3,b3,eb4] ~@5 ab3@4 [ab3,b3,eb4]@4, ab1, ab2@3 ab2@2 ~@3", // Abm
  BL: "gb3@3 ~@5 gb3@4 [gb2,gb3]@4, gb1, [bb3,f4]@9 ~@7, gb2@3 gb2@3 ~@2, ~@3 gb3@5 [bb3,eb4]@8", // Gb Bb5 Eb5
  BM: "e3@3 ~ ab3@2 [bb1,bb2,ab3,bb3,d4]@2, [e2,b3,e4]@3 ~, ab3 ~, ~@3 e3@3 ~@2", // Bb7 E5
  BN: "~@8 [gb3,bb3,eb4]@3 ~@3 eb3@2, eb2@11 eb2@5, ~ [gb3,bb3,eb4]@3 ~@2 [ab3,f4]@2, ~@6 eb3@5 eb3@2 ~@3", // Ebm Db
  BO: "~@2 [bb3,gb4] ~@5 [bb3,eb4,gb4]@3 ~ [ab3,db4,f4]@4, eb2@11 eb2@5, ~ eb4@3 ~@4, ~@3 eb3@2 ~@3", // Ebm Db
  BP: "~@2 [b3,eb4,ab4] ~@5 b3@4 b3@4, ab2@5 ~@3 [eb4,ab4]@8", // Abm Ab5
  BQ: "eb2@3 ~@2 eb4 [f4,ab4]@2, f4@2 [gb4,bb4] ~, gb3@2 ~ eb2@5", BR: "[e2,ab3,b3,e4] [ab3,bb3,d4]",
  BS: "~@2 [gb3,eb4] ~@5 [gb3,bb3,eb4]@4 [ab3,db4,f4]@4, eb2@3 ~", // Ebm Db
  BT: "~@2 [bb3,eb4,gb4] ~@5 bb3@2 bb3@2 [eb2,ab3,db4,f4]@4, eb2@3 ~, ~@6 bb2@5 ~@5, ~@2 [eb4,gb4] ~", // Ebm Db Ebm
  BU: "~@2 [bb3,eb4,gb4] ~@9 [eb2,ab3,db4,f4]@4, eb2@3 ~, ~@3 bb2@2 bb2@3, ~@2 [bb3,eb4,gb4] ~", // Ebm Db Ebm
  BV: "[~@2 [bb3,eb4,gb4] ~@5 bb3@2 bb3@2 [eb2,ab3,db4,f4]@20, eb2@3 ~@5, ~@6 bb2@5 ~@21, ~@2 [eb4,gb4] ~@5]/2", // Ebm Db Ebm
})).s("gm_piano").gain(0.39)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@12 A ~@20 B C D E ~@5 F G ~ H I ~ J K ~@3 L M N L ~@4 O ~ P ~@4 Q R ~@2 S T@2 ~@3 U ~@2 V W X Y Z AA AB ~ AA AC@2 ~
>`.pickRestart({
  A: "~@2 bb3 ~@5 bb3@4 ~@4", B: "~ d4@2 ~@2 bb3@2 bb3", C: "~@3 bb3 ~@3 db4", D: "~ [f3,db4]@2 ~@2 f3 ~@2",
  E: "g2@3 ~@3 [a3,bb3]@2", F: "~@3 ab1", G: "~@2 [ab3,eb4] ~", H: "~@10 ab2@5 ~", I: "~@5 gb2@2 ~", J: "~@2 eb4 ~",
  K: "~@3 bb2@3 ~@2", L: "~@15 eb2", M: "ab2@5 ~@11", N: "~@7 gb2", O: "~@14 ab2 ~", P: "~@2 [ab3,e4] ~", Q: "~@7 ab2",
  R: "~@11 bb2@2 ~@3", S: "~@6 [gb3,bb3]@2 ~@7 d2, ~@7 g2",
  T: "[~@8 ab3@3 ~@3 ab2 ~ ab2@3 ab2@2 ~@11, ~@15 eb2@16 ~]/2", U: "~@10 ab2 ab2@3 ab2@2", V: "~@10 bb2@2 ~@3 bb2",
  W: "eb3@6 ~ bb2@3 eb3 eb3@5, ~@5 bb2 ~@2", X: "~@3 ab2@4 ab2", Y: "~ gb3 ~@2, bb3 ~", Z: "~ bb2",
  AA: "~@2 bb3 ~@3 bb2@4 bb2@2 ~@2 bb2@2, ~@3 eb2", AB: "~@11 bb2 ~@2 bb2@2", AC: "[~@11 bb2 ~@2 bb2@18]/2",
})).s("gm_piano").gain(0.22)

// bass · acoustic bass
const bass = note(`<
  ~@4 A@2 B@2 C A D E F G B@2 H I J K L M N O P Q R S T U V W K X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL@2 BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC ~
>`.pickRestart({
  A: "d2@4 ~@2 a2 ~ f3@4 a2@3 ~", B: "d2@4 ~@2 a2 ~ f3@4 a2@4", C: "d2@6 a2@6 a1@3 ~", D: "d2@2 a2 d2",
  E: "g1@5 ~ g1@2 bb2@4 d2@4", F: "g1@5 ~ g1@2 bb2@4 g2@4", G: "f2@5 ~ f2 ~ f2@8", H: "d2 a1",
  I: "d2@4 ~@2 a2 ~ f3@4 d2@4", J: "c2@5 ~ g2@5 ~ c2@3 ~", K: "g1@5 ~ d2 ~ bb2@4 d2@4", L: "g1@5 ~ d2@2 g2@4 g1@4",
  M: "eb2@3 ~@3 bb1@2", N: "eb2@3 bb2@3 bb1@2", O: "a1@3 e2@3 e1@2", P: "a1@3 e2@3 a1@2", Q: "d2@5 ~ d2@2 e2@5 ~ e2 ~",
  R: "f2@5 ~ f2 ~ f2@3 ~ f2@4", S: "d2@4 ~@2 a2@2 f3@4 a2@3 ~", T: "d2@2 ~ a2 f3@2 a2@2", U: "d2@6 a2 ~@5 a1@3 ~",
  V: "d2@5 ~ a2 ~ gb2@7 ~", W: "g1@7 ~ g2@4 d2@2 ~@2", X: "g1@5 ~ g1 ~ f1@5 ~ f1 ~", Y: "e1@5 ~ e1@2 a1@3 ~ a1@4",
  Z: "d2@5 ~ a2@2 f3@4 d2@4", AA: "g1@6 d2@2 bb2@4 g1@3 ~", AB: "f1@3 f2 f1@2 f1@2", AC: "eb2@8 ab1@7 ~",
  AD: "d2@5 ~ a2@2 f3@4 a2@3 ~", AE: "d2@3 bb2 bb2@2 bb1@2", AF: "eb2@6 bb2@2 f3@4 eb2@3 ~",
  AG: "db2@5 ~ ab2@2 e3@4 db2@4", AH: "e2@3 b2 b2@2 e2@2", AI: "eb2@5 ~ bb2@2 f3@4 eb2@4",
  AJ: "ab1@4 ~@2 eb2@2 b2@3 ~ ab1@4", AK: "gb1@5 ~ bb2@2 f3@4 eb2@3 ~", AL: "bb1@2 ~ f2 bb2@2 d3@2",
  AM: "eb2@4 ~@2 bb2@2 f3@3 ~ bb1@3 ~", AN: "eb2@3 ~ f3@2 bb1@2", AO: "eb2@5 ~ bb2@2 ~@4 bb1@4", AP: "eb2@2 ~ bb2 ~@4",
  AQ: "eb2@4 ~@2 bb2@5 ~ g1@4", AR: "ab1@5 ~ eb2@2 b2@4 eb2@3 ~", AS: "ab1@5 ~ eb2@2 b2@4 ab1@4",
  AT: "gb1@5 ~ gb1 ~ gb1@7 ~", AU: "eb2@4 ~@2 bb2@2 f3@3 ~ bb2@4", AV: "eb2@5 ~@3 f3@4 bb2@4",
  AW: "eb2@5 ~ bb2@2 bb2@4 bb1@4", AX: "eb2@4 ~@2 bb2 ~ f3@3 ~ bb2@3 ~", AY: "db2@5 ~ ab2 ~ e3@3 ~ ab2@3 ~",
  AZ: "ab1@4 ~@2 eb2 ~ b2@4 eb2@3 ~", BA: "ab1@2 ~ eb2 b2@2 eb2@2", BB: "e1@3 e2@3 ab2@2", BC: "e1@3 e2 d2@4",
  BD: "bb1@3 f2 bb2@2 f2@2", BE: "bb1@3 f2 bb2@2 bb1@2", BF: "eb2@3 ~ f2@3 f2", BG: "gb2@5 ~ gb2@2 ab2@4 ab2@4",
  BH: "eb2@3 bb2 gb3@2 bb2@2", BI: "eb2@3 ~ gb3@2 bb2@2", BJ: "eb2@3 ~@3 bb2@2", BK: "eb2@3 ~ g2@4",
  BL: "ab1@3 eb2 b2@2 eb2@2", BM: "ab1@7 ~ gb1@7 ~", BN: "f1@7 ~ bb1@4 bb1@4", BO: "eb2@3 ~ gb3@2 eb2@2",
  BP: "ab1@3 eb2 b2@2 ab1@2", BQ: "gb1@3 gb2 gb1@4", BR: "e2@2 ab2!2", BS: "eb2@5 ~@3 gb3@3 ~ bb2@3 ~",
  BT: "eb2@5 ~ bb2@2 gb3@3 ~ bb2@4", BU: "ab1@5 ~ eb2 ~ b2@4 ab1@3 ~", BV: "gb1@5 ~ gb1@6 gb1@3 ~", BW: "e1@7 ~",
  BX: "eb2@5 ~@7 bb2@3 ~", BY: "eb2@5 ~@6 [eb2,bb2] bb1@4", BZ: "eb2@5 ~@6 bb2 bb1@3 ~", CA: "eb2@5 ~@6 bb2 bb1@4",
  CB: "eb2@5 ~ eb2@2 bb2@3 ~ bb1@3 ~", CC: "eb2",
})).s("gm_acoustic_bass").gain(0.48)

// bass · acoustic bass · soft notes
const bass_soft = note("<~@21 A ~@14 B ~@2 C ~@9 D E F ~@5 D ~@9 G ~@2 D H D ~@4 D ~@3 I ~@4 J@4 K ~@2>".pickRestart({
  A: "~@3 bb2@3 ~@2", B: "~@8 a2 ~@7", C: "~@8 e3 ~@7", D: "~@3 bb2 ~@4", E: "~@2 bb2 ~", F: "~@12 bb2@3 ~",
  G: "~@3 eb2 ~@4", H: "~@3 bb2 gb3@2 ~@2", I: "~@6 bb2 ~@9", J: "~@6 bb2 ~ gb3@3 ~@5", K: "~@11 gb3 ~@4",
})).s("gm_acoustic_bass").gain(0.24)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@40 A@2 ~@9 B@2 C@2 D E F G H I J@2 ~ K ~ L ~@5 M N O ~@6 P Q ~@3 R S T U V W@2
>`.pickRestart({
  A: "[~@2 d4@2 eb4@2 f4@2 ab4@2 gb4@2 f4@2 gb4@7 ~@11]/2",
  B: "[~@10 [eb4,bb4]@2 f4@3 ~@7 eb4@5 ~ [g2,bb3,eb4]@4, ~@15 eb4@2 bb3@4 bb3@4 ~@7, ~@8 eb3@5 ~@3, ~@18 eb4@3 ~@11, ~@19 gb4@8 ~@5]/2", // Eb5 Eb
  C: "[~@3 b3@2 ~@6 b3 ~@9 eb4 ~ eb4 ~ eb4 b3 eb4 ~ eb4 b3 eb4, ab2@7 b3@3 ab3@2 ~ eb4@2 eb4@2 eb4@2 eb4@2 ~@3 ab4@4 ~@4, ~ eb3@3 ~ eb3@3 ab2@3 ~ ab2@2 b3@4 b3@5 ~@5 ab3@4, ~@2 ab3@3 ~ ab3@3 eb3@7 ab2@8 ~@8, ~@5 b4@2 ~]/2",
  D: "~@5 b3@2 ~, ~ gb3@4 gb3@3 ~@8, ~ b3@2 b3@2 ~@3, ~@3 eb4@4 eb4@8 ~",
  E: "~@7 eb4@2 ~@2 eb4@5, ~ eb3@2 eb4@3 bb3@3 ~ bb3@5 ~, ~@2 bb3@3 eb3@3 ~ eb3@6 ~", F: "~@14 eb4 gb4", G: "gb4 ~@15",
  H: "~@3 gb4@2 ~ eb4@4 ~@6, ~ bb3@3 ~ bb3@5 ~@6, ~@2 eb4@3 ~@11",
  I: "~@3 b4@3 ~ b4@6 ~@3, b3@13 ~@3, ~@2 e4@4 e4@7 ~@3",
  J: "[~@7 ab4@2 ~@5 eb4@3 ~@6 ab4@2 ~@4 eb4 b3@2, ~ b3@2 bb4@3 eb4@3 ~ eb4@3 b3@3 ~ b3@2 bb4@3 eb4@3 ~ eb4@2 ~@4, ~@2 eb4@3 b3@3 ~ b3@2 ab4@7 eb4@3 b3@3 ~ b3@4 ~@3, ~@27 ab4@5]/2",
  K: "~@3 ab4@2 ~@2 ab4@8 ~, ~ b3@4 b3@3 ~@8, ~@2 e4@3 ~ e4@3 ~@7", L: "~ d4 eb4 f4 ab4 bb4 b4 ~",
  M: "~@8 [bb3,eb4]@7 ~, ~@7 g3@7 ~@2", // Eb5
  N: "~@3 b4@2 b3 ~@6 bb4@2 ~ eb4, ~ b3@3 ~@3 eb4@2 ab4@2 b3@2 ~ b3@2, ~ eb4@2 bb4 b3 eb4 ~@2",
  O: "ab4@2 ~@2 eb4 ~ ab4@2 b3 ~ eb4 b3 ~@2 b3@2, ~@2 b3@2 ~ b3@2 ~@6 eb4@3, ~@3 bb4@3 ~@3 b4@3 ab4@3 ~",
  P: "~@7 gb4@3 ~@4 eb4@2, ~ bb3@4 bb3@4 ~@7, ~@2 eb4@4 eb4@4 eb4@3 ~@3, ~@3 gb4@4 ~@4 gb4@5",
  Q: "~@7 gb4@2 ~@2 gb4@5, ~ bb3@2 gb4@3 eb4@3 ~ eb4@6, ~@2 eb4@3 bb3@3 ~ bb3@7",
  R: "~@5 eb3@3 ~@3 eb4@5, eb3@3 gb4@13, ~@2 eb4@4 ~@3 eb3@6 ~, ~@5 bb3@3",
  S: "~@5 eb3@2 eb4@2 ~@2 eb4@5, eb3@3 gb4@6 ~@7, ~ bb3@4 ~@4 eb3@6 ~, ~ eb4@2 ~@5",
  T: "~@5 eb3@2 eb4@2 eb3@5 ~@2, eb3@3 gb4@13, ~ bb3@4 ~@11, ~ eb4@2 ~@5",
  U: "~@5 eb3@2 eb4@2 ~@2 eb4@5, eb3@3 gb4@13, ~ bb3@4 ~@4 eb3@6 ~, ~ eb4@2 ~@5",
  V: "~@5 eb3@2 eb4@2 ~@2 eb4@5, eb3@3 gb4@13, ~@2 eb4@4 ~@3 eb3@6 ~, ~@5 bb3@3",
  W: "[~@3 f4@22 ~@7, eb3@25 ~@7, ~@2 db4@23 ~@7]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.6)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note("<~@55 A ~@17 B C ~@6 D ~@4 E F@2 G H I@2>".pickRestart({
  A: "~@9 gb3@5 ~@2", B: "~@13 eb4 ~@2", C: "~ eb4 ~@5 eb4@2 ~@7", D: "~@9 bb3@3 ~ bb3@3",
  E: "~ bb3@4 ~@2 eb4@3 ~@6, ~@6 bb3@3 ~@7", F: "~@6 bb3@3 ~ bb3@6", G: "~@6 bb3@3 ~ bb3@2 ~ bb3@3",
  H: "~ bb3@4 ~ bb3@3 ~@7", I: "[~ ab3@24 ~@7]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.24).pan(0.6)

// other · accordion
const accordion = note("<~@40 A B C@2 D E F G H I@2 ~@14 J K ~@7 L M N@2 O P Q R S ~@10>".pickRestart({
  A: "~@12 ab3 b3 [d4,f4] [b4,d5]", B: "~@2 [eb4,gb4] ~@3 [eb4,gb4] ~@3 [eb4,f4] ~ [eb4,f4]@3 db5, bb4@15 ~",
  C: "[~@2 [eb4,e4] ~@3 [eb4,e4] ~@3 [eb4,e4,ab4] ~ [eb4,e4]@2 ~@6 e4 ~ gb4 ab4 [gb4,ab4] ~ e4@4 b3 db4, ab4@10 ~@2 ab4@7 ~@13]/2", // Emaj7 Gbsus2
  D: "eb4 gb4 eb4@8 ~@2 [f3,gb3] [ab3,bb3,b3] [db4,eb4,f4] [gb4,ab4]", // Gbmaj7 Abm Db Gbsus2
  E: "gb4@5 b3 db4 eb4 db4 [db4,eb4] b3@3 ~ gb3 ab3", F: "bb3 eb4 bb3@7 ~@4 d4 [eb4,e4] f4",
  G: "f4@2 [eb4,e4] d4 bb3 bb3@5 [e4,f4] [gb4,g4] ab4 [f4,ab4] [d4,f4] b3", // Emaj7 Fmaj7 Gmaj7 Fm Dm
  H: "[eb4,e4] f4 eb4 bb3 bb3@5 ~ gb3 [ab3,bb3] [c4,db4] [eb4,f4] [gb4,ab4,bb4] [c5,db5,eb5]", // Emaj7 Absus2 Dbmaj7 Ebsus2 Gb Cm
  I: "[c5@3 [db5,eb5] bb4@4 c5 c5@4 [ab4,bb4] f4@6 ~@12, f5 ~@8 db5 ~@22]/2", // Dbsus2 Absus2
  J: "~@4 f5@5 [bb4,b4,c5] ab4 [f4,gb4,g4,ab4] [bb4,b4] [gb4,ab4] [eb4,f4] [c4,db4]", // Bmaj7 Gbsus2 Ebsus2 Dbmaj7
  K: "[bb3,b3] ~ [bb3,d4]@2 [b3,eb4]@2 [d4,f4]@2 [f4,ab4]@2 [eb4,gb4]@2 [d4,f4]@2 [eb4,gb4]@2", // Bmaj7 Bb B Dm Fm Ebm Dm Ebm
  L: "~@11 b3 f4 e4 [d4,eb4] db4", M: "b3@3 db4@2 eb4@2 ~ b3@4 db4@4, c4 ~@15",
  N: "[eb4@11 f4@8 bb3@8 ~@2 [gb4,ab4] [f4,gb4] [d4,eb4], ~@19 b3 ~@12]/2", O: "[c4,db4] b3@6 ~@7 db5 b4",
  P: "bb4@5 bb4@2 ab4 [f4,gb4] gb4 ab4 eb4@2 ~ eb4 db4", Q: "e4@5 ~@11", R: "~@10 eb4!3 ~ d4 ~",
  S: "db4 ~ c4 ~ b3 c4 [bb3,b3] [g3,ab3,a3] f3@5 ~@3, ~@8 gb3 ~@7", // Bmaj7
})).s("gm_accordion").gain(0.53)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@41 A B C D E F G H@3 ~@8 I J K L M@2 N@2 O P@2 Q R S@3 T@3 U V W X@2 ~@10
>`.pickRestart({
  A: "[bb3,eb4,gb4]@3 [ab3,f4]", B: "[ab3,eb4,e4]", C: "[ab3,b3,e4]", D: "[gb3,bb3,eb4]", E: "[bb3,b3,gb4]",
  F: "f4@3 eb4, [gb3,bb3]", G: "[ab3,d4,f4]", H: "[gb3,bb3,f4]/3", I: "eb2", J: "db2", K: "ab2@3 eb2", L: "ab2",
  M: "[e1,e2]/2", N: "bb2/2", O: "gb3 ab3, eb4", P: "[[bb3,f4]@2 ~@2 bb3@2 [bb3,gb4] [ab3,f4], ~ [gb3,eb4]@2 ~]/2",
  Q: "[gb3,eb4]", R: "[bb3,eb4,gb4]@3 [ab3,db4,f4]",
  S: "[gb3@2 g3@2 b3@3 [bb3,db4] [b3,eb4]@4, eb4@7 ~@5, bb3 ab3@2]/3", // Bbm B
  T: "[[b3,eb4,ab4]@3 [ab3,d4] [gb3,bb3]@2, ~ f4]/3", U: "[ab3,b3,eb4]", V: "f4 eb4, db4",
  W: "[ab3,b3,e4]@3 [f3,bb3,d4]", X: "[gb3,bb3,eb4]/2",
})).s("gm_string_ensemble_2").gain(0.18).pan(0.1)
// … 138 more lines

More by Renzo Arbore