Strudelify

Fino alla fine del mondo

Morandi

KeyB♭ majorTempo81 bpm
0:00/0:00
// Fino alla fine del mondo — Morandi
// 81 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(81/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(`<
  ~@7 A B C D E F@2 G H I J K L G M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH L AI AJ AK AL AM P Q AN AO T AP V
  W AQ AR Z AA AB AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN ~@4
>`.pickRestart({
  A: "~@3 bb2", B: "bb1", C: "a1", D: "g1", E: "f1@5 eb1@3", F: "[d1@2 f1@2 d2@2 g1@23 ~ d1!2]/2",
  G: "d1@2 f1@2 d2@2 g1@9 ~", H: "eb2 d2 c2 f1", I: "bb1@6 bb1 ~ bb1@8", J: "a1@5 ~ a1 ~ a1@6 f1 gb1",
  K: "g1@5 ~ g1 ~ g1@8", L: "f1@5 ~ f1 ~ f1@2 eb1@5 ~", M: "g1@5 f1 g1 f1 g1@5 ~ d1!2", N: "d1@2 f1@2 d2@2 g1@8 d2 db2",
  O: "c2@5 f1 g1 gb1 f1@2 ~ f1!2 ~ f1 ~", P: "bb1@3 f1 bb1@3 f1", Q: "g1@5 f1 g1 f1 g1@4 d2@4",
  R: "eb2@5 ~ eb2@2 d2@3 ~ d2@4", S: "c2@6 g1 gb1 f1@4 f2 c2!2 f1", T: "f1@5 ~ f1 ~ f1@3 ~ f1@4",
  U: "d2@5 ~ c2@5 ~ eb1@4", V: "eb2@5 ~ eb2@2 f2@3 c2 f2 ~ c2 ~", W: "bb1@4 ~ d1 eb1 f1 g1@2 g1 ~ g1@2 g1@2",
  X: "c2@5 ~ c1 ~ c1@6 d1 eb1", Y: "f1@2 f2@2 f1@2 g1@4 d2@2 g2 d2 g1@2", Z: "c2@4 ~@2 g1!2 c1 g1 c1 g1 c1@2 c2 g1",
  AA: "f1@2 d1 f1 d1 f1 g1@3 ~ d2@2 g2 d2 g1 ~", AB: "eb1@6 bb1@2 eb2@5 ~ eb2@2", AC: "d2@6 bb1@7 ~ d1 db1",
  AD: "c1@3 g1 c2@3 g1", AE: "f1@10 ~ f1 f1@4", AF: "bb1@6 bb1 ~ bb1@6 f1 g1", AG: "a1@5 ~ a1 ~ a1@8",
  AH: "g1@5 ~ g1 ~ g1@6 d1 g1", AI: "d1@2 a1@2 d2@2 g1@9 f1", AJ: "g1@3 f1 g1 ~ f1 ~ g1@8",
  AK: "d1@2 a1@2 d2@2 g1@8 d2 db2", AL: "c2@5 ~ c2@2 c2@4 c1@4", AM: "f1@3 ~ f1@2 f1@2 f1 ~ f1 ~ f1 ~ f1 ~",
  AN: "eb2@5 ~ eb2@2 d2@3 ~ d1@4", AO: "c1@6 g1 gb1 f1@4 f2 c2!2 f1", AP: "e1@5 ~ c2@5 ~ e1@4",
  AQ: "c2@5 ~ c1 ~ c1@6 g1 gb1", AR: "f1@2 c2@2 f2@2 ~@4 g3 ~ g3 ~ g3 ~, ~@6 g1@9 ~", AS: "d2@6 d2@7 ~ d1 db1",
  AT: "c1@6 g1@2 c2@3 ~ g1 eb1 c1@2", AU: "gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1@2 gb1 ~", AV: "b1@3 gb1 b1@3 gb1",
  AW: "ab1@5 gb1 ab1 gb1 ab1@4 eb2@4", AX: "e2@5 ~ e2@2 eb2@3 ~ eb2@4", AY: "db2@6 ab1 g1 gb1@4 gb2 db2!2 gb1",
  AZ: "gb1@5 ~ gb1 ~ gb1@3 ~ gb1@4", BA: "eb2@5 ~ db2@5 ~ e1@4", BB: "e2@5 ~ e2@2 gb2@3 db2 gb2 ~ db2 ~",
  BC: "b1@4 ~ eb1 e1 gb1 ab1@2 ab1 ~ ab1@2 ab1@2", BD: "db2@5 ~ db1 ~ db1@6 eb1 e1",
  BE: "gb1@2 gb2@2 gb1@2 ab1@4 eb2@2 ab2 eb2 ab1@2", BF: "db2@4 ~@2 ab1!2 db1 ab1 db1 ab1 db1@2 db2 ab1",
  BG: "gb1@2 eb1 gb1 eb1 gb1 ab1@3 ~ eb2@2 ab2 eb2 ab1 ~", BH: "e1 ~@5 e1 ~ e1 ~@5 e1 ~",
  BI: "eb1 ~@5 b1 ~ b1 ~@3 eb1 ~@3", BJ: "db1 ~@15", BK: "gb1 ~@11 gb1 ~@3", BL: "a1 ~@11 eb2 ~@3",
  BM: "~ e2 ~@6 gb2 ~@7", BN: "gb1 ~@5 b1 ~@9",
})).s("gm_fretless_bass").gain(0.51)

// chords · piano
const piano = note(`<
  ~@11 A@4 B C D E F@4 G H I J K L M N O P Q R S T U V W X D E F@4 Y Z H I J K L M N O 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@5
>`.pickRestart({
  A: "[~@10 a3@2 bb3@2 ~@2 d2 ~ d2 ~ d2@2 [g2,g3,bb3,d4]@12 d3@2 f3@2 bb3@4 a3@2 f3@2 ~@2 [d2,f3] ~ [d2,f3] ~ d2@2 [g2,g3,bb3,d4]@9 ~, ~@10 eb2@6 ~@36 f3 ~@11, ~@7 f3@4 ~@12 f4@4 ~@5]/4", // Gm Dm Gm
  B: "[eb2,eb4,g4] [d2,d4,f4] [c2,c4,eb4] [f1,f3,eb4]", C: "[bb1,d4], bb3@3 ~",
  D: "[g3,c4]@5 ~@7 f4@4, a1, f4@5 ~@3, ~@3 [f3,c4]@5", E: "eb4@4 bb3@11 ~, [g1,g3]",
  F: "[~@10 a3@2 bb3@2 ~@2 [d2,f4] ~ [d2,f4] ~ d2@2 [g2,g3,bb3,d4]@12 d3@2 f3@2 bb3@4 a3@2 f3@2 ~@2 [d2,f3] ~ [d2,f3] ~ d2@2 [g2,g3,bb3,d4]@9 ~, f1@5 eb2@3 ~@24, d4@6 c4@4 ~@10 f4 ~@25 f4@8 ~@10, ~@4 f3@4 f3@4 ~@2 f3@8 ~@30 f3 ~@11]/4", // Dm Gm Dm Gm
  G: "c2@4 [f3,c4]@4 f1@4 [f3,c4]@3 ~", // F5
  H: "[f3,bb3,d4]@3 ~ [f3,bb3,d4]@2 ~@2 [bb3,d4]@2 f3 ~ [bb3,d4]@2 f3@2, bb1, ~@6 f3@4 ~@2 f3 ~@3", // Bb
  I: "[a3,c4]@2 f3 ~ [f3,a3,c4] ~ [bb3,d4]@4 g3@2 [bb3,d4]@2 g3 ~, f2@3 g2@5, f3 ~@5 g3@2 ~@8", // Am F Bb
  J: "[bb3,d4,g4]@5 ~ [bb3,d4,g4] ~ [a3,c4,f4]@5 ~ [a3,c4,f4] ~, eb3 d3", // Gm F
  K: "[g3,bb3,eb4]@5 ~@3 [bb3,eb4,g4]@5 ~ [eb4,g4] ~, c3 f2, ~@7 bb3", // Eb
  L: "[bb3,d4,f4]@7 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 ~@2, f1@15 ~", // Bb
  M: "[c4,e4]@2 g3@2 [c4,e4]@2 g3@2 [c4,e4]@2 g3@2 [c4,e4]@2 g3 ~, c2@7 ~, g3 ~@15", // C
  N: "[bb3,eb4,g4]@2 bb3 ~ [eb4,g4]@2 bb3 ~ [c4,f4]@2 a3 ~ [c4,f4]@2 a3 ~, eb1 f1, ~@4 bb3 ~@3 a3 ~@3 a3 ~@3", // Eb F5
  O: "[f3,bb3,d4]@3 ~ [f3,bb3,d4]@3 ~ [bb3,d4,g4]@3 ~ [bb3,d4,g4]@3 ~, bb1@8 g1@7 ~", // Bb Gm
  P: "[g3,c4,eb4]@3 ~ [g3,c4,eb4]@2 g3@2 [g3,c4,eb4]@2 g3 ~ [g3,c4,eb4]@2 g3 ~, ~ c5 d5 bb4", // Cm
  Q: "[f3,a4]@4 [a3,c4] ~ bb4@4 ~@2 [g3,bb3,d4]@3 ~, [a3,c4]@3 ~ f5@2 [g3,bb3,d4]@6 ~@4, ~@10 f5@5 ~", // F Am Gm Am Gm
  R: "[g3,c4,eb4]@3 ~ [g3,c4,eb4]@2 g3 ~ [g3,d5]@4 [g3,c4,eb4]@2 ~@2, ~@2 c5@2 [c4,eb4] ~ bb4@2", // Cm G5 Cm
  S: "[f3,a3,c4]@4 [f3,a3,c4] ~ bb4@4 bb4@5 ~, a4@6 [g3,bb3,d4]@7 ~@3", T: "[bb3,d4]@6 [g3,c4]@9 ~",
  U: "[f3,c4]@6 [f3,bb3]@4 ~@2 f4@3 ~, ~@10 f3@5 ~", V: "[eb5,eb6]@3 ~ [d5,d6]@3 ~ [bb4,bb5]@3 ~ [c5,c6]@2 ~@2",
  W: "f4@2 eb4@2 g4@2 f4@3 ~ eb4 d4 bb3 f3 eb3 d3", X: "[bb1,d4], bb3@3 ~, bb2@3 ~@5", Y: "c2 [c4,eb4] c2 [c4,eb4]",
  Z: "[f1,c4,eb4] [f3,c4] f1 [f3,c4]", // F7 F5
  AA: "[g3,c4,eb4]@3 ~ [g3,c4,eb4]@2 g3@2 [g3,c4,eb4]@2 g3 ~ [g3,c4,eb4]@2 g3 ~, ~ [c5,c6] [d5,d6] [bb4,bb5]", // Cm C D Bb
  AB: "[f3,a4,a5]@4 [f5,f6]@2 [bb4,bb5]@4 ~@2 [g3,bb3,d4]@3 ~, [a3,c4]@3 ~ [a3,c4] ~ [g3,bb3,d4]@6 ~@4, ~@10 [f5,f6]@5 ~", // F Bb Gm Am Gm F
  AC: "[g3,c4,eb4]@3 ~ [g3,c4,eb4]@2 g3 ~ [g3,d5,d6]@4 [g3,c4,eb4]@2 ~@2, ~@2 [c5,c6]@2 [c4,eb4] ~ [bb4,bb5]@2", // Cm G5 Cm C Cm Bb
  AD: "[f3,a3,c4]@4 [f3,a3,c4] ~ [bb4,bb5]@4 bb4@5 ~, [a4,a5]@6 [g3,bb3,d4]@7 ~@3", // F Bb A Gm
  AE: "[eb2,bb4,d5,d6]@6 [eb2,g4,c5,c6]@9 ~", AF: "[d2,f4,c5,c6]@3 [f4,bb4,bb5]@2 [f3,f4] bb3 f4, ~@6 d2@9 ~",
  AG: "[c2,g3,eb4]@6 [g1,g3,eb4]@2 c2@2 g3@2 [c2,g3,eb4]@3 ~, ~@10 eb4 ~@5", // Cm
  AH: "[gb1,ab3,e4]@5 ~ [ab3,e4]@2 gb1@2 e4@2 [gb1,ab3,e4]@3 ~, ~@6 gb1 ~@3 ab3 ~@5", // Dbm
  AI: "[gb3,b3,eb4]@3 ~ [gb3,b3,eb4]@2 ~@2 [b3,eb4]@2 gb3 ~ [b3,eb4]@2 gb3@2, b1, ~@6 gb3@4 ~@2 gb3 ~@3", // B
  AJ: "[bb3,db4]@2 gb3 ~ [gb3,bb3,db4] ~ [b3,eb4]@4 ab3@2 [b3,eb4]@2 ab3 ~, gb2@3 ab2@5, gb3 ~@5 ab3@2 ~@8", // Bbm Gb B
  AK: "[b3,eb4,ab4]@5 ~ [b3,eb4,ab4] ~ [bb3,db4,gb4]@5 ~ [bb3,db4,gb4] ~, e3 eb3", // Abm Gb
  AL: "[ab3,b3,e4]@5 ~@3 [b3,e4,ab4]@5 ~ [e4,ab4] ~, db3 gb2, ~@7 b3", // E
  AM: "[b3,eb4,gb4]@7 ~ [b3,eb4,gb4]@3 ~ [b3,eb4,gb4]@2 ~@2, gb1@15 ~", // B
  AN: "[db4,f4]@2 ab3@2 [db4,f4]@2 ab3@2 [db4,f4]@2 ab3@2 [db4,f4]@2 ab3 ~, db2@7 ~, ab3 ~@15", // Db
  AO: "[b3,e4,ab4]@2 b3 ~ [e4,ab4]@2 b3 ~ [db4,gb4]@2 bb3 ~ [db4,gb4]@2 bb3 ~, e1 gb1, ~@4 b3 ~@3 bb3 ~@3 bb3 ~@3", // E Gb5
  AP: "[gb3,b3,eb4]@3 ~ [gb3,b3,eb4]@3 ~ [b3,eb4,ab4]@3 ~ [b3,eb4,ab4]@3 ~, b1@8 ab1@7 ~", // B Abm
  AQ: "[ab3,db4,e4]@3 ~ [ab3,db4,e4]@2 ab3@2 [ab3,db4,e4]@2 ab3 ~ [ab3,db4,e4]@2 ab3 ~, ~ [db5,db6] [eb5,eb6] [b4,b5]", // Dbm Db Eb B
  AR: "[gb3,bb4,bb5]@4 [gb5,gb6]@2 [b4,b5]@4 ~@2 [ab3,b3,eb4]@3 ~, [bb3,db4]@3 ~ [bb3,db4] ~ [ab3,b3,eb4]@6 ~@4, ~@10 [gb5,gb6]@5 ~", // Gb B Abm Bbm Abm Gb
  AS: "[ab3,db4,e4]@3 ~ [ab3,db4,e4]@2 ab3 ~ [ab3,eb5,eb6]@4 [ab3,db4,e4]@2 ~@2, ~@2 [db5,db6]@2 [db4,e4] ~ [b4,b5]@2", // Dbm Ab5 Dbm Db Dbm B
  AT: "[gb3,bb3,db4]@4 [gb3,bb3,db4] ~ [b4,b5]@4 [b4,b5]@5 ~, [bb4,bb5]@6 [ab3,b3,eb4]@7 ~@3", // Gb B Bb Abm
  AU: "[ab3,eb4]@3 ~ [ab3,eb4]@3 ~ [ab3,db4]@4 [gb3,b3]@4", // Ab5 Db5 B5
  AV: "[ab3,db4]@3 ~ [ab3,db4]@3 ~ b3@2 db4@2 gb4@3 ~, ~@8 gb3@7 ~", // Db5
  AW: "[e4,b4]@2 db2@2 [e4,b4]@2 db2@2 b3@2 [db2,ab3]@2 ab4@3 ab2", // E5 Db5
  AX: "[b3,db4,gb4]@3 ~ [b3,db4,gb4]@2 ab3@2 [b3,db4,gb4]@3 ~ [gb1,ab3,db4]@4, gb2@5 ~@3", // Bsus2 Gbsus2
  AY: "[gb3,b3,eb4]@3 ~ [gb3,b3,eb4]@3 ~ [gb3,bb3,db4]@4 [eb2,eb3,gb3,b3]@4, b1@3 ~", // B Gb B
  AZ: "~ [eb4,gb4]@2 [e4,ab4]@2 [gb3,b3,gb4,b4]@2 ~ [gb2,gb3,b3,db4,gb4]@7 ~, ~ e2@7 ~@8, ~ [gb3,b3]@4 ~@11", // Ebm E B5 Gbsus4 B5
  BA: "[[gb3,b3,db4,e4]@5 ~ b1@70 ~@4, gb1@3 eb4@12 ~@25, ~ [gb3,b3,db4]@5 ~@10]/5", // Gbsus4
})).s("gm_piano").gain(0.33)

// chords · epiano1
const epiano1 = note(`<
  ~@8 A B C D E@2 F G H I J K E@2 F L M N O P Q R S T ~@8 H I J K E@2 F U V M N O P Q R S T ~@4 W X W Y Z AA AB AC AD AE
  AF AG ~@4 AH AI AH ~@8
>`.pickRestart({
  A: "[d3,f3,bb3]@15 ~", B: "g3@3 f3@5, c4", C: "[bb3,eb4]@4 bb3@11 ~, [eb3,g3]@15 ~",
  D: "[f3,a3,d4]@6 [f3,a3,c4]@3 ~ [f3,a3]@5 ~", E: "[f4!3 [d3,f3,bb3]@12 ~, [d3,f3,a3]@5 ~@27]/2",
  F: "f4 ~ f4@2 f4@2 [f3,bb3,d4]@8 ~@2, [d3,a3,c4]@5 ~@11", // Bb D7
  G: "[d4,eb4,g4] [c4,d4,f4] [bb3,eb4] [f3,g3,eb4], ~@8 c4 ~@7", H: "[f3,bb3], d4@13 ~@3", I: "g3@6 f3@9 ~, c4@15 ~",
  J: "[g3,bb3,eb4]@15 ~", K: "[f3,a3,d4]@5 ~ [f3,a3]@9 ~, ~@3 c4@2 ~@3",
  L: "[bb3,c4,f4]@6 [bb3,c4] [bb3,c4,f4], ~@12 f4 ~@3", M: "[f3,bb3,d4]@7 ~", N: "[a3,c4,f4]@5 ~ [g3,bb3,d4]@8 ~@2",
  O: "[bb3,d4,g4]@7 ~ [a3,c4,f4]@7 ~", P: "[g3,bb3,eb4]@8 [a3,c4,f4]@7 ~", Q: "[bb3,d4,f4]@7 ~",
  R: "[bb3,c4,e4]@13 ~@3", S: "[g3,bb3,eb4]@7 ~ [a3,c4,f4]@6 ~@2", T: "[f3,bb3,d4]@7 ~ [d3,g3,bb3]@8",
  U: "[bb3,c4,f4]@15 ~", V: "[a3,c4,eb4]@15 ~", W: "[g3,bb3,eb4]@7 ~", X: "c4@3 bb3@4 ~, [f3,d4]@7 ~",
  Y: "[ab3,b3]@3 ~, e4@7 ~", Z: "[gb3,b3,eb4]@7 ~", AA: "[bb3,db4,gb4]@5 ~ [ab3,b3,eb4]@8 ~@2",
  AB: "[b3,eb4,ab4]@7 ~ [bb3,db4,gb4]@7 ~", AC: "[ab3,b3,e4]@8 [bb3,db4,gb4]@7 ~", AD: "[b3,eb4,gb4]@7 ~",
  AE: "[b3,db4,f4]@13 ~@3", AF: "[ab3,b3,e4]@7 ~ [bb3,db4,gb4]@6 ~@2", AG: "[gb3,b3,eb4]@7 ~ [eb3,ab3,b3]@8",
  AH: "[ab3,b3,e4]@7 ~", AI: "db4@3 b3@4 ~, [gb3,eb4]@7 ~",
})).s("gm_epiano1").gain(0.16)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@16 A B C D@2 E F G ~@8 H I H I ~@4 J K L M N O P Q@2 ~@8 H I H I ~@12 R S R S ~@11
>`.pickRestart({
  A: "[f3,bb3,d4] f3 [bb3,d4] f3 [bb3,d4] f3 [bb3,d4] f3", // Bb
  B: "[a3,c4]@2 f3@2 [a3,c4]@2 [f3,a3,c4]@2 [a3,c4]@2 f3@2 [a3,c4]@2 f3 ~", // Am F Am
  C: "[bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3 ~", // Eb5
  D: "[[a3,d4]@2 f3 ~ [a3,d4] ~@3 f3@2 a3@2 bb3@2 ~@2 [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4] ~ [f3,bb3,d4]@7 ~@3, ~@3 [a3,c4]@2 ~@2 f3@2 ~@7]/2", // D5 F Bb Am
  E: "[bb3,c4,f4]@2 ~ [bb3,c4,f4]!2 ~ [bb3,c4,f4]@5 ~ [bb3,d4,f4]@3 ~", // Bbsus2 Bb
  F: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [f3,bb3,d4]@7 ~@3", // F Bb
  G: "[f3,bb3,c4]@3 ~ [f3,bb3,c4]@3 ~ [f3,bb3,c4]@4 [f3,bb3,c4]@3 ~", // Fsus4
  H: "[eb4,g4]@3 ~ [eb4,g4]@2 ~ [eb4,g4] ~@2 [eb4,g4] ~ [eb4,g4]@2 ~@2", I: "[c4,f4]@2 ~ [c4,f4] ~@2 [bb3,d4]@5 ~@5",
  J: "~@4 f4@5 ~@3 f4@3 ~, ~@3 bb3@7 ~@6", K: "~@2 c4 a3@2 ~@3", L: "~ g3 bb3 g3@3 ~@2", M: "d4@3 c4@4 ~",
  N: "[c4,f4]@2 [c4,f4]@2 [c4,f4] ~ [bb3,d4]@8 ~@2", O: "[c4,f4]@2 ~ [c4,f4]!2 ~ [c4,f4]@5 ~ [d4,f4]@3 ~",
  P: "[c4,f4] ~ [c4,f4] ~ [c4,f4] ~ [bb3,d4]@7 ~@3", // F5 Bb
  Q: "[~@2 [c4,eb4]@3 ~ [c4,eb4]@3 ~ [c4,eb4]@4 [c4,eb4]@4 [c4,eb4]@3 ~ [c4,eb4]@3 ~ [c4,eb4]@4 [c4,eb4]@2]/2", // Cm
  R: "[e4,ab4]@3 ~ [e4,ab4]@2 ~ [e4,ab4] ~@2 [e4,ab4] ~ [e4,ab4]@2 ~@2", // E
  S: "[db4,gb4]@2 ~ [db4,gb4] ~@2 [b3,eb4]@5 ~@5", // Gb5 B
})).s("gm_acoustic_guitar_steel").gain(0.1)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@2 B@2 C@2 D@2 E ~@14 F G H I J K L M@2 N O P Q R S T U V W X Y Z@5 AA H I AB AC AD AE@2 N O P Q R S AF AG AH AI AJ@2
  AK AL AM@2 AN AO AP AQ AR AS AT AU AV AW@5 ~
>`.pickRestart({
  A: "[~@4 [bb4,d6]@4 [a4,eb6]@4 [bb4,d6]@4 [a4,c6]@5 ~ [g4,d5]@9 ~, f4@16 ~@5 bb5@9 ~@2, ~@2 f5@9 ~@5]/2", // Bb Adim Bb Am G5
  B: "[d6 eb6 f6 ~@3 bb5 ~ [bb4,g5]@2 [a4,f5,a5]@2 [g4,bb5]@2 [f4,c6]@2, bb4@2 ~ eb5, [eb4,g5] [d4,f5] c4@2, ~@3 c6@3 ~ eb6@3 ~@6]/2", // Eb Dm Gm F5 Eb Dm
  C: "[c6@4 ~@8 f6@2 ~@2 bb4@4 ~@4 e4@2 c4@3 ~@3, [f4,d5]@8 [d4,f5]@3 f4@5 ~@4 g4@4 ~@8, ~@2 d6@3 eb6 d5@2 e5@6 ~@2, ~@14 g6@7 ~ c6@9 ~]/2", // Dm
  D: "[[d5,d6] [eb5,eb6] [f5,f6] ~@3 [bb4,bb5] ~ d4@4 bb4@2 c5@2, [bb3,d4] [c4,eb4] ~@2, ~@3 [c5,c6]@3 ~ [bb4,bb5]@4 ~@5]/2", // D Eb F Bb Cm C Bb
  E: "d5@7 ~", F: "f4@2 f4 g4 f3@4, bb3, g3@2 bb4 ~", G: "[f3,bb3]", H: "[d4,f4]@3 [bb3,d4]@4 ~", I: "eb4 d4",
  J: "eb4@2 g5 bb5", K: "d6 ~", L: "~@2 c6@2 bb5@2 g5@2 c5@3 ~@5, [bb3,e4]@15 ~",
  M: "[[bb3,eb4]@2 c4@2 d5@2 ~ d6, ~ f4@3, ~@3 a4]/2", N: "eb6 c6 d6 bb5, [bb3,eb4]@15 ~",
  O: "a5@2 f6 bb5@2 f6@3, [f3,c4]@6 [bb3,d4]@9 ~", P: "~ c6 d6 bb5, [c4,eb4]@15 ~", Q: "[f3,c4,a5]@6 [bb3,d4,bb5]@9 ~",
  R: "[g3,eb4]@15 ~", S: "d4@3 bb3@5, f3@7 ~", T: "[g3,bb3,eb4]@15 ~", U: "bb3@8 c4@7 ~, [eb3,g3]", V: "f4",
  W: "g4@3 f4@5", X: "bb4", Y: "d5@3 c5@2 a4 bb4@2", Z: "[~@26 eb4 d4 eb4@2 bb4@2 c5@2 f4 g4 bb4 c5 d5 eb5, f5@79 ~]/5",
  AA: "[f3,bb3,d5]", AB: "eb4 f5 g5 bb5", AC: "d6@7 ~@9", AD: "~ c6 bb5 g5 c5@4, [bb3,e4]@15 ~",
  AE: "[[bb3,eb4]@8 c4@8 d5@8 a4@5 ~@3, ~ f4@3]/2", AF: "~ g4 bb4 g4, [g3,bb3,eb4]@15 ~",
  AG: "~@2 gb4 ab4 b4 db5 eb5 e5", AH: "eb6@5 e6 eb6@2", AI: "db6 b5",
  AJ: "[eb6 e6 gb6 db6@3 b5 e6@3 gb5@2 ab5@2 b5@2]/2", AK: "eb6@7 ~@9", AL: "~ db6 b5 ab5 db5@4, [b3,f4]@15 ~",
  AM: "[[b3,e4]@8 db4@8 eb5@8 bb4@5 ~@3, ~ gb4@3]/2", AN: "e6@3 ~ db6@4 eb6@4 b5@4, [b3,e4]@15 ~",
  AO: "bb5@2 gb6 b5@2 gb6@3, [gb3,db4]@6 [b3,eb4]@9 ~", AP: "~ db6 eb6 b5, [db4,e4]@15 ~",
  AQ: "[gb3,db4,bb5]@6 [b3,eb4,b5]@9 ~", AR: "[ab3,e4]@15 ~", AS: "eb4@3 b3@5, gb3@7 ~", AT: "[ab3,b3,e4]@15 ~",
  AU: "b3@8 db4@7 ~, [e3,ab3]", AV: "eb5 b4 bb4 gb4",
  AW: "[[eb4,gb4]@2 ~ ab4@2 [gb4,b4]@2 db4@8 [b3,gb4]@6 ~ [b3,gb4]@51 ~@7, ~@2 e4@2 ~@3 gb4@6 ~@67]/5", // Ebm B5
})).s("gm_string_ensemble_2").gain(0.27).pan(0.4)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note(`<
  ~@7 A B@2 C D E@3 ~ F@2 C D E@3 G ~@4 H ~@6 I ~@17 H ~@6 I ~@8 J ~@6 K ~@11
>`.pickRestart({
  A: "~ bb3@15", B: "[bb3 ~@15 c4@8 ~@8, f3]/2", C: "[g3,eb4]", D: "d4@6 f4@4 eb4@5 ~, f3@15 ~",
  E: "[~@6 [bb3,d4]@25 ~@7 [bb3,d4]@8 ~@2, f4@19 ~@5]/3", F: "[bb3@2 c4 ~, f3]/2", G: "~@12 c5@3 ~", H: "[f3,bb3]@15 ~",
  I: "c6@5 ~ d6@10", J: "[gb3,b3]@15 ~", K: "db6@5 ~ eb6@10",
})).s("gm_string_ensemble_2").gain(0.11).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@7 A@5 ~ B@2 C@2 ~ D ~@2 B@2 E@2 F ~ G@2 H I J K L K L M N O P ~@2 D ~@2 B@2 ~ E@2 F ~ G@2 H I J K L K L ~@5 Q ~ R@2
  S T U V W V W ~@6 X@3 ~@2
>`.pickRestart({
  A: "[~@16 f4@19 ~@13 [bb3,eb4]@22 ~@10, ~@15 [bb3,c4]@20 ~@12 g3@23 ~@10]/5", // Eb5 Bbsus2
  B: "[~@12 f3@13 ~@7, ~@2 d3@23 ~@7, ~ f3@2 ~@5, ~@6 bb3@19 ~@7, ~@10 a3@15 ~@7]/2",
  C: "[[d4,d5]@4 [c4,c5]@4 [bb3,bb4]@4 [g3,g4]@3 ~ [c5,d5]@16, ~@15 [f4,bb4]@17]/2", D: "~@4 bb3@11 ~, eb4@15 ~",
  E: "[~@8 [d4,g4]@4 [c4,f4]@3 ~ [bb3,c4]@4 ~@12, ~@15 [d4,f4]@5 ~@12]/2", F: "~@3 d4@5",
  G: "[~@6 f4@5 ~@5, f3@7 ~ c4@10 ~@14, ~@4 bb3@11 ~@17]/2", H: "bb3@2 ~@2 e4@9 ~@3, ~ g3@2 ~@5",
  I: "bb3@2 g3@2 d4@3 ~ [c4,f4]@7 ~", J: "[bb3,d4]@3 ~ [g3,d4]@3 ~", K: "[c4,eb4]@3 ~", L: "[a3,c4]@5 ~ [bb3,d4]@9 ~",
  M: "d4@5 ~@3", N: "d4@3 f4@3 ~@2", O: "g3@2 bb3@2 eb4@3 ~", P: "f3 bb3 c4 ~", Q: "~@3 eb4@5",
  R: "[~@6 gb4@5 ~@5, gb3@7 ~ db4@10 ~@14, ~@4 b3@11 ~@17]/2", S: "b3@2 ~@2 f4@9 ~@3, ~ ab3@2 ~@5",
  T: "b3@2 ab3@2 eb4@3 ~ [db4,gb4]@7 ~", U: "[b3,eb4]@3 ~ [ab3,eb4]@3 ~", V: "[db4,e4]@3 ~",
  W: "[bb3,db4]@5 ~ [b3,eb4]@9 ~", X: "[~@5 gb5@5 ~@2, ~ gb4@4 ~, ~@11 b4@29 ~@8, ~@7 db5@13 ~@4]/3",
})).s("gm_electric_guitar_clean").gain(0.18)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@24 A B C D E F G H I J I K L M N O ~@9 A B C D E F G H I J I K L M N P Q R S T U V W X Y Z Y AA AB AC AD AE ~@7
>`.pickRestart({
  A: "bb2", B: "d3@3 g2@5", C: "eb3 d3", D: "c3@6 g2 gb2 f2@4 f2@3 ~", E: "f2", F: "e3@6 c3@9 ~", G: "eb3 f3",
  H: "bb2 g2", I: "[c2,g2,c3]@15 ~", J: "[f2,c3,f3]@3 [g2,d3,g3]@4 ~", K: "[f2,c3,f3]@5 ~ [g2,d3,g3]@9 ~",
  L: "[bb2,eb3]@15 ~", M: "d3@5 ~ [f2,bb2]@6 d3@3 ~", N: "[g2,c3]@15 ~", O: "[c3,f3]",
  P: "[gb2,db3]@3 ~ [gb2,db3]@3 ~ [gb2,db3]@2 db3@5 ~, ~@10 gb2@3 ~@3", Q: "b2", R: "eb3@3 ab2@5", S: "e3 eb3",
  T: "db3@6 ab2 g2 gb2@4 gb2@3 ~", U: "gb2", V: "f3@6 db3@9 ~", W: "e3 gb3", X: "b2 ab2", Y: "[db2,ab2,db3]@15 ~",
  Z: "[gb2,db3,gb3]@3 [ab2,eb3,ab3]@4 ~", AA: "[gb2,db3,gb3]@5 ~ [ab2,eb3,ab3]@9 ~", AB: "[b2,e3]@15 ~",
  AC: "eb3@5 ~ [gb2,b2]@6 eb3@3 ~", AD: "[ab2,db3]@15 ~", AE: "[db3,gb3]",
})).s("gm_distortion_guitar").gain(0.24)

// other · string ensemble 1
const string_ensemble_1 = note(`<
// … 143 more lines

More by Morandi