Strudelify

Gelosia

Dirotta su Cuba

KeyF majorTempo123 bpm
0:00/0:00
// Gelosia — Dirotta su Cuba
// 123 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 16 alto sax (copy of ch 15 alto sax, 0.5 beats late)
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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
const bass = note(`<
  ~@7 A B C D E F G D H I J K L I J K M I J K L I J K N O P Q R S T U V W X Y E W Z AA AB@2 I J K L I J K M I J K L I J
  K N O P AC R S T U V W X Y E W X Y E W X Y E W Z AA AD@2 AE AF AG AH AE AF AG AI AJ AK AL AM AJ AN AL AM AE AF AG AH
  AE AF AG AO AP AQ AR AS AT AQ AR AS AT AQ AR AU AT AQ AR AS AT AQ AR AS ~
>`.pickRestart({
  A: "~@2 bb1 gb1", B: "g1@3 ~ g1 ~ g1!2 ~ g2 g1 ~ a1@2 bb1@2", C: "c2@3 ~ c2 ~ c2!2 ~ c3 c2 ~ a1@2 g1 ~",
  D: "f1@3 ~ f1 ~ f1!2 ~ f2 f1 ~ c2@2 db2@2", E: "d2@3 ~ d2 ~ d2!2 ~ d3 d2 ~ bb1@2 gb1@2",
  F: "g1@3 ~ g1 ~ g1!2 ~ g2 g1 ~ a1 ~ bb1@2", G: "c2@3 ~ c2 ~ c2!2 ~ c3 c2 ~ a1@2 g1@2", H: "d2!2 ~@5 d1 bb1@4 a1@3 ~",
  I: "d1@3 ~ d1 ~ d1!2 ~ d2 a1 ~ g1@2 f1@2", J: "d1@3 ~ d1 ~ d1!2 ~ d2 a1@2 g1@2 f1 ~",
  K: "g1@3 ~ g1 ~ g1!2 ~ g1 d1@2 f1@2 d1@2", L: "eb1@3 ~ eb1 ~ eb1!2 ~ eb1 bb1@2 a1@2 g1@2",
  M: "eb1 eb2 ~ eb1!2 ~ eb1!2 ~ eb1 bb1@2 a1@2 g1@2", N: "eb1 eb2 ~ eb1!2 ~ eb1!2 ~ eb1 eb2@2 c2@2 b1@2",
  O: "bb1@3 ~ bb1 ~ bb1!2 ~ bb2 bb1 ~ f1@2 e1@2", P: "eb1@3 ~ eb1 ~ eb1!2 ~ eb2 eb1 ~ c2@2 db2@2",
  Q: "d2@3 ~ d2@3 a1 d2 d2@2 a1 eb2@2 e2@2", R: "f2@3 ~ f2@3 a1 f2!2 a1@2 c2@2 b1@2",
  S: "bb1@3 ~ bb1 ~ bb1!2 ~ bb2 bb1 ~ g1@2 ab1@2", T: "a1@3 ~ a1 ~ a1 a2 ~ a1 g1 ~ f1@2 e1@2",
  U: "eb1 eb2 ~ eb1 eb2 ~ eb1 eb2 ~ eb1 bb1@2 g1@2 f1@2", V: "eb1 eb2 ~ eb1 eb2 ~ eb1 eb2 ~ eb1 c2@2 f1@2 gb1@2",
  W: "g1@3 ~ g1 ~ g1!2 ~ g2 g1@2 bb1@2 b1@2", X: "c2@3 ~ c2 ~ c2!2 ~ c3 c2 ~ g1@2 gb1@2",
  Y: "f1@3 ~ f1 ~ f1!2 ~ f2 f1@2 c2@2 db2@2", Z: "c2@3 ~ c2 ~ c2!2 ~ c3 c2@2 g1@2 gb1@2",
  AA: "f1@3 ~ f1 ~ f1!2 ~ f2 f1 ~ f1@4", AB: "[d1@2 ~ d1@21 bb1@4 a1@3 ~]/2", AC: "d2@3 ~ d2@3 a1 d2!2 ~ a1 eb2@2 e2@2",
  AD: "[d1@2 ~ d1@19 ~@2 b1@4 bb1@3 ~]/2", AE: "eb1@3 ~ eb1 ~ eb1!2 ~ eb2 bb1 ~ ab1@2 gb1@2",
  AF: "eb1@3 ~ eb1 ~ eb1!2 ~ eb2 bb1@2 ab1@2 gb1 ~", AG: "ab1@3 ~ ab1 ~ ab1!2 ~ ab1 eb1@2 gb1@2 eb1@2",
  AH: "e1@3 ~ e1 ~ e1!2 ~ e1 b1@2 bb1@2 ab1@2", AI: "e1 e2 ~ e1!2 ~ e1!2 ~ e1 b1@2 bb1@2 ab1@2", AJ: "eb1@6 eb2 bb1",
  AK: "eb2@2 ~ eb2 ~@2 eb2@2 ~@4 gb1@2 g1@2", AL: "ab1@11 ~ ab1@2 eb1@2", AM: "e1@2 ~ e1 ~@2 e1@2 ~@4 e1@2 db1@2",
  AN: "eb2@2 ~ eb2 ~@2 eb2 ~@5 gb1@2 g1@2", AO: "e1 e2 ~ e1 e2 ~ e1 e2 ~ e1 f1@2 gb1@2 g1@2",
  AP: "ab1@3 ~ ab1 ~ ab1!2 ~ ab2 ab1@2 b1@2 ~@2", AQ: "db2@3 ~ db2 ~ db2!2 ~ db3 db2 ~ ab1@2 g1@2",
  AR: "gb1@3 ~ gb1 ~ gb1!2 ~ gb2 gb1@2 db2@2 d2@2", AS: "eb2@3 ~ eb2 ~ eb2!2 ~ eb3 eb2 ~ b1@2 g1@2",
  AT: "ab1@3 ~ ab1 ~ ab1!2 ~ ab2 ab1@2 b1@2 c2@2", AU: "eb2@3 ~ eb2 ~ eb2!2 ~ eb3 eb2@2 b1@2 g1@2",
})).s("gm_electric_bass_finger").gain(0.37)

// chords · epiano2
const epiano2 = note(`<
  A B C D A B C D A B C D A B C E F@2 G H I@2 G J K@2 L M K@2 N O P Q R S T U V@2 W X Y Z W AA Y AB@2 AC@2 G Y F@2 AD Y
  AE@2 N AF AG@2 AH O P Q R S T U V@2 W X Y Z W AA Y AI W X Y Z W AA Y AJ@2 AK@2 AL@2 AK@2 AM@2 AN@3 AO AP@2 AQ@2 AP@2
  AR AS AP@2 AT@2 AU AV AW AX AU AY AW AZ BA BB BC BD BE BB BC BD BE BB BC BD ~
>`.pickRestart({
  A: "[a3,bb3,d4,f4]", B: "[bb3,d4,e4,g4]", C: "[bb3,d4,eb4,g4]", D: "[c4,d4,f4,a4]@2 [b3,eb4,f4,bb4] [bb3,c4,eb4,gb4]",
  E: "[c4,d4,f4,a4]@2 [bb3,d4,e4,g4] [g3,c4,db4,f4]", F: "[[a3,c4,d4,e4,f4]@7 ~]/2", G: "[b3,d4,f4,g4]@13 ~@3",
  H: "[bb3,d4,f4,g4]@13 ~@3", I: "[[a3,c4,d4,e4,f4]@27 ~@5]/2", J: "[bb3,d4,g4]@15 ~", K: "[[a3,c4,d4,e4,f4]@15 ~]/2",
  L: "[a3,b3,e4,f4]@15 ~", M: "[f3,a3,db4]@7 ~", N: "[a3,b3,e4,f4]@7 ~", O: "[bb3,d4,eb4,g4]@15 ~",
  P: "[c4,d4,f4,a4]@7 ~", Q: "[c4,db4,f4]@7 ~", R: "[a3,c4,e4,f4]@7 ~", S: "[g3,a3,c4,eb4]@15 ~",
  T: "[a3,bb3,d4,f4]@7 ~", U: "[g3,db4,f4]@7 ~, c4@3 ~", V: "[[g3,bb3,d4]@11 ~@5]/2", W: "[bb3,d4,f4,g4]@7 ~",
  X: "[bb3,d4,e4,g4]@13 ~@3", Y: "[bb3,d4,eb4,g4]@7 ~", Z: "[a3,c4,d4,g4]@13 ~@3", AA: "[bb3,d4,e4,g4]@7 ~",
  AB: "[[a3,c4,d4,g4]@5 ~ [bb3,d4,e4,g4] [a3,c4,db4,f4]]/2", AC: "[[a3,c4,d4,e4,f4]@29 ~@3]/2", AD: "[b3,d4,f4,g4]@7 ~",
  AE: "[[a3,c4,e4,f4]@7 ~]/2", AF: "[a3,c4,db4,f4]@7 ~", AG: "[[a3,c4,e4,f4]@15 ~]/2", AH: "[a3,b3,e4,f4]",
  AI: "[a3,c4,d4,g4]@15 ~", AJ: "[[a3,c4,d4,g4]@5 ~ [a3,db4,eb4,ab4] [a3,db4,eb4,gb4]]/2", AK: "[ab3,bb3,db4,f4]/2",
  AL: "[[c4,eb4,gb4,ab4]@13 ~ [b3,eb4,gb4,ab4]@18]/2", AM: "[[c4,eb4,gb4,ab4]@13 ~ [b3,eb4,gb4,ab4]@17 ~]/2",
  AN: "[[gb3,bb3,db4,f4]@29 ~ [gb3,bb3,c4,f4]@18]/3", AO: "~@8 ab4@7 ~, [a3,db4,eb4,gb4]@15 ~",
  AP: "[[gb3,bb3,db4,f4]@31 ~]/2", AQ: "[[gb3,bb3,c4,f4]@14 [ab3,b3,eb4,e4]@17 ~]/2", AR: "[gb3,bb3,c4,f4]@15 ~",
  AS: "[a3,db4,eb4,gb4,ab4]", AT: "[[gb3,bb3,c4,f4]@14 [b3,eb4,e4,ab4]@17 ~]/2", AU: "[b3,eb4,gb4,ab4]@7 ~",
  AV: "[b3,eb4,f4,ab4]@13 ~@3", AW: "[b3,eb4,e4,ab4]@7 ~", AX: "[bb3,db4,eb4,ab4]@13 ~@3", AY: "[b3,eb4,f4,ab4]@7 ~",
  AZ: "[bb3,db4,eb4,ab4]", BA: "[bb3,b3,eb4,gb4]@15 ~", BB: "[b3,eb4,f4,ab4]", BC: "[b3,eb4,e4,ab4]",
  BD: "[db4,eb4,gb4,bb4]@2 [c4,e4,gb4,b4] [b3,db4,e4,g4]", BE: "[bb3,b3,eb4,gb4]",
})).s("gm_epiano2").gain(0.18)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@8 A@2 B@2 A@2 C D ~@7 E F@2 G@2 H@2 I@2 J@3 K L@3 M N@3 O P@2 Q R@2 S T U V W@2 ~ E F@2 G@2 H@2 I@2 J@3 K L@3 M N@3
  O A@2 B@2 A@2 X@2 A@2 Y Z@2 ~@15 AA AB@2 AC AD AB@2 AE@2 AF@3 AG AH@3 AG AH@3 AG AH@3 AG AH@3 AG ~
>`.pickRestart({
  A: "[g5,g6]/2", B: "[[f5,f6]@6 [bb5,bb6] [gb5,gb6]]/2", C: "[f5,f6]@15 ~",
  D: "~@8 [ab3,bb4,d5,e5,g5]@4 [g3,g4,c5,db5,f5]@3 ~", E: "~@2 [d4,c5,c6] [e4,d5,d6]",
  F: "[a4@4 ~@2 [f5,f6] [g5,g6], c4, [e5,e6]@3 ~, ~ g4]/2", // F G E
  G: "[[e5,e6]@3 [f5,f6] [db5,db6] [a4,a5] [a5,a6] [g5,g6], f4, b3 db4]/2", // E F Db A G
  H: "[a4@4 ~@2 [f5,f6] [g5,g6], c4@31 ~, [e5,e6]@3 ~, ~ g4]/2", // F G E
  I: "[[b3,e5,e6]@7 ~ bb3@4 [d4,a4,d5,d6]@2 [c4,g4,c5,c6]@2, f4@3 ~, ~@7 [f5,f6]@5 ~@4]/2", // E5 D5 C5 F
  J: "[[a5,a6]@6 [f5,f6]@2 [g5,g6]@2 [f5,f6]@2 [db5,db6]@2 [c6,c7]@2 [a5,a6]@6 [g5,g6] [gb5,gb6], f4@2 e4, a3 g3@2]/3", // A F G F Db C A G …
  K: "[f5,f6]@2 [d5,d6] [c5,c6], eb4, f3@7 ~", // F D C
  L: "[[a4,a5]@14 [bb4,bb5] [b4,b5] [c5,c6]@8 [f5,f6]@7 [eb4,d5,d6]@17, f4@31 ~@17, a3 g3@2]/3", // A Bb B C F Ebmaj7
  M: "~@8 g4 bb4 c5 f5 bb4 c5 f5 bb5", N: "[g4, g5 ~@47]/3", O: "[f4,f5]@2 [bb4,bb5] [gb4,gb5]", P: "[g4,g5]/2",
  Q: "[f4,f5]", R: "[[e3,d4,a4]@3 [d3,c4]@21 [bb2,g4,d5]@4 [a2,f4,db5]@4, ~@3 g4@18 ~@11]/2",
  S: "[a3,a4,c5,e5]@3 [f3,f4,a4,c5]", T: "[d3,d4,f4]@3 [d3,e4,g4], a4 ~@15", U: "[b3,d4,f4], g2@7 ~",
  V: "[eb3,bb3,eb4,g4]", W: "[d3,a3,d4,f4]/2", X: "[[f5,f6]@11 ~ [bb5,bb6]@2 [gb5,gb6]@2]/2", Y: "[f5,f6]",
  Z: "[[d4,a4,e5,e6]@3 [g4,d5,d6]@17 ~@4 [ab5,ab6]@3 ~ [gb5,gb6]@3 ~, ~@3 c4@20 ~@9]/2", AA: "~@2 [db5,db6] [eb5,eb6]",
  AB: "[[f5,f6]@6 [gb5,gb6] [ab5,ab6]]/2", AC: "[f5,f6]@3 gb6", AD: "d6 bb5 [bb5,bb6] [ab5,ab6]",
  AE: "[[f5,f6]@14 [gb5,gb6]@10 ab4 b4 db5 gb5 b4 db5 gb5 b5]/2", AF: "[[ab4,ab5], bb6 ~@3]/3",
  AG: "[gb4,gb5]@2 [b4,b5] [g4,g5]", AH: "[ab4,ab5]/3",
})).s("gm_string_ensemble_1").gain(0.14)

// chords · clavinet
const clavinet = note(`<
  A B C D A B C D A B C D A B C D ~@16 E F G H I J K L A B C D A B C D ~@17 E F G H I J K M A B C D A B C D A B C D A B
  C D ~@25 N O P Q N O P Q N O P Q N O P Q N O P Q ~
>`.pickRestart({
  A: "g3 [d4,f4] ~ g3 [d4,f4] ~ g3 [d4,f4] ~ g3 [d4,f4]@2 g3@2 [d4,f4]@2", // Dm
  B: "c4 [e4,g4] ~ c4 [e4,g4]@2 c4 [e4,g4] ~ c4 [e4,g4]@2 c4@2 [e4,g4]@2", // Em
  C: "bb3 [eb4,g4] ~ bb3 eb4@2 bb3 [eb4,g4] ~ bb3 [eb4,g4]@2 bb3@2 g4@2, ~@4 g4 ~@9 eb4 ~", // Eb
  D: "d4 [f4,a4] ~ d4 [f4,a4]@2 c4 [f4,bb4] ~ c4 [f4,bb4]@2 ~@2 [f4,bb4] ~, ~@13 bb3@2 ~", // F Bb5
  E: "d3 [d4,f4] ~ d3 [d4,f4]@2 d3 [d4,f4] ~ d3 [d4,f4]@2 d3 ~ [d4,f4] ~", // Dm
  F: "~ [db4,f4] ~ db3 [db4,f4]@2 db3 [db4,f4] ~ db3 [db4,f4]@2 db3 ~ [db4,f4]@2", // Db
  G: "~ [c4,e4] ~ c3 [c4,e4]@2 c3 [c4,e4] ~ c3 [c4,e4]@2 c3 [c4,e4]@2 ~", // C
  H: "eb3 [eb4,g4] ~ eb3 eb4@2 eb3 [eb4,g4] ~ eb3 [eb4,g4]@2 eb3 ~ [eb4,g4]@2, ~@4 g4 ~@11", // Eb
  I: "d3 [d4,f4] ~@2 [d4,f4]@2 d3 [d4,f4] ~ d3 [d4,f4]@2 d3 ~ [d4,f4] ~", // Dm
  J: "db3 [db4,f4] ~ db3 [db4,f4]@2 db3 [db4,f4] ~ db3 [db4,f4]@2 db3 ~ f4@2, ~@14 db4 ~", // Db
  K: "eb3 [eb4,g4] ~ eb3 [eb4,g4]@2 eb3 [eb4,g4] ~ eb3 [eb4,g4]@2 eb3 ~ [eb4,g4] ~", // Eb
  L: "eb3 [eb4,g4] ~ eb3 [eb4,g4] ~ eb3 [eb4,g4] ~@8", M: "d4@15 ~, eb3 ~@15",
  N: "ab3 [eb4,gb4] ~ ab3 [eb4,gb4] ~ ab3 [eb4,gb4] ~ ab3 [eb4,gb4]@2 ab3@2 [eb4,gb4]@2", // Ebm
  O: "db4 [f4,ab4] ~ db4 [f4,ab4]@2 db4 [f4,ab4] ~ db4 [f4,ab4]@2 db4@2 [f4,ab4]@2", // Fm
  P: "b3 [e4,ab4] ~ b3 e4@2 b3 [e4,ab4] ~ b3 [e4,ab4]@2 b3@2 ab4@2, ~@4 ab4 ~@9 e4 ~", // E
  Q: "eb4 [gb4,bb4] ~ eb4 [gb4,bb4]@2 db4 [gb4,b4] ~ db4 [gb4,b4]@2 ~@2 [gb4,b4] ~, ~@13 b3@2 ~", // Gb B5
})).s("gm_clavinet").gain(0.07).pan(0.3)

// other · brass section
const brass_section = note(`<
  ~@7 A B@2 C@2 D@2 E F ~@23 G H I J K H I L ~@26 H I M K H I M K H N M K H I M ~@26 O P Q R O P Q R S@2 T@2 U@2 V W U@2
  V X ~
>`.pickRestart({
  A: "[d4,a5]!2 ~@8 [g4,d5] ~@2 [g4,d5] ~@2", // D5 G5
  B: "[[a4,a5]@4 ~ [g4,g5] ~ [c5,c6] ~ [bb4,bb5] ~ [a4,a5] ~ [g4,g5] ~ [c5,a5]@2 [d5,bb5] [c5,a5] ~@2 [f4,f5] ~ [d4,d5] ~@4 bb4 ~ c5 ~]/2", // A G C Bb A G F Gm …
  C: "[[bb4,f5]@2 ~@2 [g4,d5] ~@2 [eb4,bb4] ~@4 [d5,f5] ~ [bb4,d5] [a4,c5,e5]@4 ~@2 [f5,g5] ~ [gb5,bb5] ~@8]/2", // Bb5 G5 Eb5 Dm Bb Am Fsus2 Gb
  D: "[[a4,a5]@5 [g4,g5] ~ [c5,c6] ~ [bb4,bb5] ~ [a4,a5] ~ [g4,g5] ~ [c5,a5]@2 [d5,bb5] [c5,a5] ~@2 [f4,f5] ~ [d4,d5] ~@4 [bb4,d5] ~ [c5,e5] ~]/2", // A G C Bb A G F Gm …
  E: "[bb4,d5] ~@3 [bb4,eb5] ~@2 bb4@2 ~@3 [d5,f5] ~ [bb4,d5] ~, ~@7 f5 ~@8", F: "[f4,f5]!2 ~@14",
  G: "f4 bb4 c5 f5 d5 ~@11", H: "~@4 bb4@3 g4 ~@8", I: "~@4 d5@3 c5 ~@8", J: "~@4 bb4@3 g4 ~@4 d5@2 ~ c5",
  K: "~@6 f5 ~ gb5 ~@2 gb5 ~@4", L: "~@4 bb4@2 ~ g4 ~@4 d5@3 c5", M: "~@4 bb4@3 g4 ~@4 d5@3 c5",
  N: "~@4 d5@3 c5 ~@8, ~@4 c5 ~@11", O: "~@4 b4@3 ab4 ~@8", P: "~@4 eb5@3 db5 ~@8", Q: "~@4 b4@3 ab4 ~@4 eb5@3 db5",
  R: "~@6 gb5 ~ g5 ~@2 g5 ~@4", S: "[bb5@4 ~ ab5 ~ db6 ~ b5 ~ bb5 ~ ab5 ~ bb5@2 b5 bb5 ~@2 gb5 ~ eb5 ~@4 b4 ~ db5 ~]/2",
  T: "[gb5@2 ~@2 eb5 ~@2 b4 ~@4 eb5 ~ b4 db5@4 ~@2 ab5 ~ b5 ~@8]/2",
  U: "[bb5@5 ab5 ~ db6 ~ b5 ~ bb5 ~ ab5 ~ bb5@2 b5 bb5 ~@2 gb5 ~ eb5 ~@4 b4 ~ db5 ~]/2",
  V: "eb5@3 ~ e5 ~@2 gb5 ~@4 eb5 ~ b4 ~", W: "~@5 ab5 ~ b5 ~@8", X: "gb5!2 ~@14",
})).s("gm_brass_section").gain(0.58)

// other · alto sax
const alto_sax = note(`<
  ~@7 A B@2 C@2 D@2 E F ~@24 G H I J G H K ~@26 G H I J G H K J L H M J G H I ~ N O P Q R S T U V W ~@7 X@2 Y@2 Z@2 AA@2
  AB AC AD AE AB AC AF AE AG@2 AH@2 AI@2 AJ AK AI@2 AJ AL ~
>`.pickRestart({
  A: "d4!2 ~@8 g4 ~@2 g4 ~@2", B: "[a4@5 g4 ~ c5 ~ bb4 ~ a4 ~ g4 ~ a4@2 bb4 a4 ~@2 f4 ~ d4 ~@4 bb4 ~ a4 ~]/2",
  C: "[g4@2 ~@2 eb4 ~@2 c4 ~@4 d5 ~ bb4 c5@4 ~@2 f4 ~ d4 ~@8]/2",
  D: "[a4@5 g4 ~ c5 ~ bb4 ~ a4 ~ g4 ~ a4@2 bb4 a4 ~@2 f4 ~ d4 ~@4 bb4 ~ c5 ~]/2",
  E: "d5@2 ~@2 bb4 ~@2 f4@2 ~@3 d5 ~ bb4 ~", F: "f4!2 ~@14", G: "~@4 bb4@3 g4 ~@8", H: "~@4 f4@3 e4 ~@8",
  I: "~@4 g4@3 eb4 ~@4 bb4@3 a4", J: "~@6 bb4 ~ c5 ~@2 c5 ~@4", K: "~@4 g4@3 eb4 ~@4 bb4@2 ~ a4",
  L: "~@4 bb4@2 ~ g4 ~@8", M: "~@4 g4@2 ~ eb4 ~@4 bb4@3 a4", N: "~ bb3 b3 db4 eb4 f4 ab4 bb4", O: "f5@14 [d5,eb5] db5",
  P: "c5 ab4!2 ~ bb4@2 ~ ab4@3 bb4@3 ~@3", Q: "bb4!2 ab4 bb4 eb4 ~ bb4 ab4 ~ db5 c5@2 ab4 bb4 ~ gb4",
  R: "ab4@4 ~@4 gb4 ab4 bb4 gb4 ab4@2 gb4 ab4", S: "f4@2 eb4 f4 db4@2 db4 c4@3 ab3 g3 gb3@3 ~",
  T: "~@6 db5@2 c5!2 ab4 ~ gb4@2 ab4 gb4", U: "bb4@2 gb4 ab4 ~ ab4 ~ gb4@2 eb4@3 ~@4",
  V: "~ [c3,eb3] [db3,eb3] f3 [gb3,g3] [ab3,bb3,db4] bb3 [ab3,b3,db4] [eb4,f4] [ab4,bb4] db5@4 ~ [b4,c5]", // Cm Dbsus2 Gmaj7 Bbm7 Db7 Ebsus2 Absus2 Cmaj7
  W: "bb4@13 ~@3", X: "[f4 gb4 f4@4 eb4 f4 db4@3 ~@3 gb4@4 eb4 f4 db4@3 ~@5 c4@2 eb4@2]/2",
  Y: "[f4@2 ab4@2 bb4@2 db5@3 c5 b4 bb4@2 f4@5 eb4 ~ f4 db4 eb4@5 ~@5]/2",
  Z: "[~@2 f4@2 gb4@2 f4@2 ab4@3 ~ gb4 ab4@2 f4@4 db4@2 ~ eb4@5 ~@5]/2",
  AA: "[ab4@2 gb4 f4 ~ eb4 ab4@2 gb4 f4 ~ eb4 a4@2 g4 gb4@2 e4 ~@14]/2", AB: "~@4 b4@3 ab4 ~@8", AC: "~@4 gb4@3 f4 ~@8",
  AD: "~@4 ab4@3 e4 ~@4 b4@3 bb4", AE: "~@6 b4 ~ db5 ~@2 db5 ~@4", AF: "~@4 ab4@3 e4 ~@4 b4@2 ~ bb4",
  AG: "[~@5 ab4 ~ db5 ~ b4 ~ bb4 ~ ab4 ~ bb4@2 b4 bb4 ~@2 gb4 ~ eb4 ~@4 b4 ~ bb4 ~]/2",
  AH: "[ab4@2 ~@2 e4 ~@2 db4 ~@4 eb5 ~ b4 db5@4 ~@2 gb4 ~ eb4 ~@8]/2",
  AI: "[bb4@5 ab4 ~ db5 ~ b4 ~ bb4 ~ ab4 ~ bb4@2 b4 bb4 ~@2 gb4 ~ eb4 ~@4 b4 ~ db5 ~]/2",
  AJ: "eb5@2 ~@2 b4 ~@2 gb4@2 ~@3 eb5 ~ b4 ~", AK: "~@5 gb4 ~ eb4 ~@8", AL: "gb4!2 ~@14",
})).s("gm_alto_sax").gain(0.51)

// other · trombone
const trombone = note(`<
  ~@7 A B@2 C@2 D@2 E F ~@24 G H I J G H K ~@26 G H I J G H K J G H L J G H L ~@26 M N O P M N Q P R@2 S@2 T@2 U V T@2 U
  W ~
>`.pickRestart({
  A: "d4!2 ~@8 d4 ~@2 d4 ~@2",
  B: "[[a3,a5]@5 [g3,g5] ~ [c4,c6] ~ [bb3,bb5] ~ [a3,a5] ~ [g3,g5] ~ [c4,e5]@2 [d4,f5] [c4,e5] ~@2 [f3,d5] ~ [d3,bb4] ~@4 [bb3,bb4] ~ [c4,c5] ~]/2", // A G C Bb A G C Dm …
  C: "[[bb3,f5]@2 ~@2 d5@2 ~ eb3@3 ~@2 [f4,c5] ~ [d4,bb4] [a3,e5]@4 ~@2 [f4,f5] ~ [gb4,gb5] ~@8, ~@4 g3 ~@2 bb4 ~@24]/2", // Bb5 F5 Gm A5 F Gb
  D: "[[a3,a5]@5 [g3,g5] ~ [c4,c6] ~ [bb3,bb5] ~ [a3,a5] ~ [g3,g5] ~ [c4,e5]@2 [d4,f5] [c4,e5] ~ f3 d5 ~ [d3,bb4] ~@4 [d4,bb4] ~ [e4,c5] ~]/2", // A G C Bb A G C Dm …
  E: "[f4,d5]@2 ~@2 [d4,eb5] ~@2 [bb3,f5]@2 ~@3 [f4,d5] ~ [d4,bb4] ~", F: "[f3,f5]!2 ~@14", G: "~@4 d4@3 bb3 ~@8",
  H: "~@4 bb3@2 ~ bb3 ~@8", I: "~@4 d4@2 ~ bb3 ~@4 d4@3 c4", J: "~@6 c4 ~ d4 ~@2 d4 ~@4",
  K: "~@4 d4@3 bb3 ~@4 d4@2 ~ c4", L: "~@4 d4@3 bb3 ~@4 d4@3 c4", M: "~@4 eb4@3 b3 ~@8", N: "~@4 b3@2 ~ b3 ~@8",
  O: "~@4 eb4@2 ~ b3 ~@4 eb4@3 db4", P: "~@6 db4 ~ eb4 ~@2 eb4 ~@4", Q: "~@4 eb4@3 b3 ~@4 eb4@2 ~ db4",
  R: "[[bb3,bb5]@5 [ab3,ab5] ~ [db4,db6] ~ [b3,b5] ~ [bb3,bb5] ~ [ab3,ab5] ~ [db4,f5]@2 [eb4,gb5] [db4,f5] ~@2 [gb3,eb5] ~ [eb3,b4] ~@4 [b3,b4] ~ [db4,db5] ~]/2", // Bb Ab Db B Bb Ab Db Ebm …
  S: "[[b3,gb5]@2 ~@2 eb5@2 ~ e3@3 ~@2 [gb4,db5] ~ [eb4,b4] [bb3,f5]@4 ~@2 [gb4,gb5] ~ [g4,g5] ~@8, ~@4 ab3 ~@2 b4 ~@24]/2", // B5 Gb5 Abm Bb5 Gb G
  T: "[[bb3,bb5]@5 [ab3,ab5] ~ [db4,db6] ~ [b3,b5] ~ [bb3,bb5] ~ [ab3,ab5] ~ [db4,f5]@2 [eb4,gb5] [db4,f5] ~ gb3 eb5 ~ [eb3,b4] ~@4 [eb4,b4] ~ [f4,db5] ~]/2", // Bb Ab Db B Bb Ab Db Ebm …
  U: "[gb4,eb5]@2 ~@2 [eb4,e5] ~@2 [b3,gb5]@2 ~@3 [gb4,eb5] ~ [eb4,b4] ~", V: "~@5 [gb4,gb5] ~ [g4,g5] ~@8",
  W: "[gb3,gb5]!2 ~@14", // Gb
})).s("gm_trombone").gain(0.19).pan(0.9)

// chords · rock organ
const rock_organ = note(`<
  ~@24 A@2 B C D E F G ~@25 A@2 B C D E F G ~@33 H@2 I J H@2 K L M@2 N O M@2 P Q ~@21
>`.pickRestart({
  A: "[c7,e7]@2 ~ [c7,e7]@2 ~ [c7,e7] ~", B: "[b6,e7]@3 ~@3 [b6,e7]@4 ~@2 [b6,e7]@2 ~@2",
  C: "[db7,f7]@3 ~@3 [db7,f7]@4 ~@2 [db7,f7]@3 ~", D: "[c7,e7]@3 ~@3 [c7,e7]@5 ~ [c7,e7]@2 ~@2",
  E: "[c7,e7]@4 ~@2 [c7,e7]@4 ~@2 [c7,e7]@3 ~", F: "[b6,e7]@4 ~@2 [b6,e7]@4 ~@2 [b6,e7]@3 ~",
  G: "[eb7,g7]@4 ~@2 [eb7,g7]@5 ~ [eb7,g7]@3 ~", // Eb
  H: "[db6,f6,db7,f7,db8,f8]@3 [bb5,bb6,bb7] ~@2 [db6,f6,db7,f7,db8,f8]@4 [bb5,bb6,bb7] ~ [db6,f6,db7,f7,db8,f8]@2 [bb5,bb6,bb7] ~", // Db Bb Db Bb Db Bb
  I: "[c6,f6,c7,f7,c8,f8]@3 [bb5,bb6,bb7] ~@2 [c6,f6,c7,f7,c8,f8]@4 [bb5,bb6,bb7] ~ [c6,f6,c7,f7,c8,f8]@2 [bb5,bb6,bb7] ~", // F5 Bb F5 Bb F5 Bb
  J: "[d6,gb6,d7,gb7,d8,gb8]@3 [bb5,bb6,bb7] ~@2 [d6,gb6,d7,gb7,d8,gb8]@4 [bb5,bb6,bb7] ~ [d6,gb6,d7,gb7,d8,gb8]@2 [bb5,bb6,bb7] ~", // D Bb D Bb D Bb
  K: "[c6,f6,c7,f7,c8,f8]@3 ~@3 [c6,f6,c7,f7,c8,f8]@4 [bb5,bb6,bb7] ~ [c6,f6,c7,f7,c8,f8]@2 [bb5,bb6,bb7] ~", // F5 Bb F5 Bb
  L: "[eb6,ab6,eb7,ab7,eb8,ab8]@3 [b5,b6,b7] ~@2 [eb6,ab6,eb7,ab7,eb8,ab8]@4 [b5,b6,b7] ~ [eb6,ab6,eb7,ab7,eb8,ab8]@2 [b5,b6,b7] ~", // Ab5 B Ab5 B Ab5 B
  M: "[db7,f7]@3 bb6 ~@2 [db7,f7]@4 bb6 ~ [db7,f7]@2 bb6 ~", N: "[c7,f7]@3 bb6 ~@2 [c7,f7]@4 bb6 ~ [c7,f7]@2 bb6 ~",
  O: "[d7,gb7]@3 bb6 ~@2 [d7,gb7]@4 bb6 ~ [d7,gb7]@2 bb6 ~", P: "[c7,f7]@3 ~@3 [c7,f7]@4 bb6 ~ [c7,f7]@2 bb6 ~",
  Q: "[eb7,ab7]@3 b6 ~@2 [eb7,ab7]@4 b6 ~ [eb7,ab7]@2 b6 ~", // Ab5
})).s("gm_rock_organ").gain(0.05).pan(0.3)

// other · alto sax
const alto_sax_2 = note("<~@91 A B C ~ D E@2 ~@37>".pickRestart({
  A: "~@13 ab4@3", B: "bb4@3 ~@13", C: "~@5 gb4 ab4@4 ~@6", D: "ab3 g3 gb3@3 ~@11", E: "[~@13 gb4@2 eb4@3 ~@14]/2",
})).s("gm_alto_sax").gain(0.29).pan(0.9)
// … 94 more lines

More by Dirotta su Cuba