Strudelify

Almeno non tradirmi tu

Biagio Antonacci

KeyD minorTempo133 bpm
0:00/0:00
// Almeno non tradirmi tu — Biagio Antonacci
// 133 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 134 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(133/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@4 B@4 C@4 D@2 E F G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 A@4 O@4 P@2 Q@2 R@2 S@2 T@2 U@2 V@2 W@2 X@2 Y@2 Z@2 AA@2 AB@2 AC@2
  AD@2 AE@2 AF@2 AG ~ AH@2 AI@2 AJ@2 AK@2 AL@2 AM@2 AN@2 AO@2 AP@4 AQ@2 AR@2 AS@4 AT@2 AU@2 AV@2 AW@2 AX@2 AY@2 AZ@2
  BA@2 BB BC BD@4 BE@3 BF BG@2 BH BI
>`.pickRestart({
  A: "[a5@2 bb5 a5 f5 ~ d5@4 c5 ~@5 [c4,d4,f4,a4] ~@11 d5@2 e5@2 ~@2 b4@6 g4 ~@5 [g4,d5]@6 g4@2 d5@4 g4@2 d5@2 eb5@2 ~@2 g4 ~@3 f4@9 ~@3 f4@5 ~ d4@2 f4 ~@3 g4@2, [c4,d4,f4,a4]@14 ~@8 [b3,d4,e4,g4]@19 ~@5 [bb3,d4,eb4]@19 bb4@2 ~@3 [a3,c4]@20 ~@6, ~@12 f5@14 ~@8 bb4 ~@29 d5@2 ~@4 d4@18 ~@8]/4", // Dm7 G5 Dm7 Em7 Ebmaj7 Am
  B: "[a5@2 ~ a5 ~ f5 d5@4 c5 ~@5 [c4,d4,f4,a4] ~@11 d5@2 e5@2 ~@2 b4@6 g4@3 ~@3 [g4,d5]@6 g4@2 d5@3 ~ g4@2 d5@2 eb5@2 bb4@2 g4@4 [a3,c4,d4,f4]@26, [c4,d4,f4,a4]@14 ~@8 [b3,d4,e4]@21 ~@3 [bb3,eb4]@20 ~@30, ~@2 bb5@2 ~@8 f5@12 ~@10 bb4 ~@29 d5 ~@31, ~@11 g4@9 ~@3 d4@9 ~@16]/4", // Dm7 G5 Dm7 E7 Eb5
  C: "[d3@15 ~@2 [a3,d4]@3 [a3,d4,f4]@3 ~@21 d3@4, [a3,d4,f4]@35 ~@13 [a3,c4,e4,g4]@33 ~ [a3,c4,e4,g4]@14, ~@15 d3@8 d3@16 d3@5 ~@4]/4", // D5 Dm Am7
  D: "[bb2@17 ~@3 f4@4, d4, f4@5 ~, c4@3 c4, ~@17 bb2@7]/2", E: "[a2,a3,db4,e4]@22 [f4,a4] ~",
  F: "~@4 [e4,g4] ~@5 [a4,c5]@14", G: "[[d3,a3,d4,f4]@17 ~ d4@2 [d4,g4]@4, ~@17 d3@7, ~@6 [a3,f4] ~, ~@40 c5@3 ~@5]/2",
  H: "[[d3,g3,c4,e4]@11 ~@6 e4@6 ~, ~@11 [d3,a3,c4,g4]@12 ~]/2", I: "[c4@20 c4@3 ~, [bb2,d4,f4]@23 ~]/2",
  J: "[e4@22 ~@12 a4@11 ~@3, [a2,db4]@15 ~, a3@28 a3@17 ~@3, ~@22 [b3,e4]@23 ~@3]/2", // A E5
  K: "[~@5 g5, [bb2,f3,bb3,c4,d4,f4]]/2", L: "[[a2,g4,c5,e5]@23 ~]/2",
  M: "[~@5 f4 g4@6, [ab2,ab3], [ab4,c5,eb5]@25 ~@23, ~@16 eb4@9 ~@23]/2", N: "[g2,bb3,d4,f4]/2",
  O: "[a5@2 ~ a5 ~ f5 d5@4 c5 ~@5 [c4,d4,f4,a4] ~@11 d5@2 e5@2 ~@2 b4@6 g4@3 ~@3 [g4,d5]@6 g4@2 d5@3 ~ g4@2 d5@2 eb5@2 bb4@2 g4@4 ~@12 d3 ~ [g4,c5] ~ [g4,c5] ~ d3 ~ [d4,g4,c5]@3 ~ c5 ~, [c4,d4,f4,a4]@14 ~@8 [b3,d4,e4]@21 ~@3 [bb3,eb4]@20 ~@4 [a3,c4,f4]@25 ~, ~@2 bb5@2 ~@8 f5@12 ~@10 bb4 ~@29 d5 ~@31, ~@11 g4@9 ~@3 d4@9 ~@3 d4@10 ~@3]/4", // Dm7 G5 C5 Csus2 Dm7 E7 Eb5 F
  P: "[~@5 d4, [d3,a3,f4], d4@5 ~, ~@17 a4@7]/2", Q: "[a3@17 ~@6 g3, [d3,c4,e4,g4], ~@17 [a3,bb3,d4]@7]/2",
  R: "[[bb3,d4,f4]@32 ~@2 [bb3,f4] ~@5 [bb3,d4]@8, bb2, ~@40 f4@5 ~@3]/2", // Bb Bb5 Bb
  S: "[[g3,db4,e4]@25 ~ [d4,g4,c5] ~@3 [d4,g4,c5]@4 ~ [d4,g4,c5] ~@12, a2@15 ~]/2", T: "[d3,a3,d4,f4]/2",
  U: "[~ c4@39 c4@8, [d3,a3,e4,g4]]/2", V: "[bb3@13 bb3@3, [bb2,c4,d4,f4]]/2",
  W: "[~@40 e4@7 ~, [a2,g3]@23 ~, e4@5 ~, db4@34 db4@13 ~, ~@31 b3@16 ~]/2", // A7
  X: "[[bb3,d4,f4]@17 ~ [d4,f4,c5]@4 ~ [d4,f4,c5]@25, [bb1,bb2]]/2", // Bb Dm7 Bb
  Y: "[[g3,c4,e4]@16 a3 ~ [e4,g4,d5]@3 ~ [e4,g4,d5]@6 ~@2 [e4,g4,c5]@3 ~ [e4,g4,c5]@14, a2, ~@7 a3@5]/2", // C Em7 C
  Z: "[ab3@16 ~@2 bb4@3 ~@6 f4@3 g4@4 f4@14, ab2, [c4,eb4,f4]@9 ~@2 c5@13, ~ ab3@2]/2", // F7
  AA: "[~@24 [f4,bb4,d5]@4 [f4,a4,c5] ~ g3 ~ [f4,a4,c5] ~@3 [a4,c5]@4 [g4,bb4]@5 ~@3, g2@23 ~, [f3,bb3,d4]@14 ~@4 f4@5 ~]/2", // Bb F Am Gm Bb
  AB: "[bb3@8 ~@9 d5@7, [bb2,f3]@5 f5@3, [d4,f4]@21 ~ g5@26, ~ bb3@2, ~@3 c6@5]/2", // Bb5 Dm
  AC: "[[a2,g3,c4,e4]@17 [a2,g3,c4,e4]@7]/2", // Am7
  AD: "[g3@28 ~@4 a3@4 ~ a3@11, [a2,db4,e4]@3 [a2,db4,e4], a3@2 ~, ~@28 g3@9 ~@11]/2", // A
  AE: "[[d3,a3,d4,f4]@18 [d3,a3,d4]@3 ~ [g2,g3,b3,d4]@13 ~ [a2,g3,a3,db4,e4]@12, ~@18 f4@17 ~@13]/2", // Dm D5 G A7
  AF: "[[d3,a3,d4,f4]@9 [d3,a3]@2 [g2,g3,b3]@7 [a2,g3,a3,db4,e4]@6, ~@18 [d4,f4]@19 ~@11]/2", AG: "[d3,a3,d4,f4]",
  AH: "[d3@17 ~@3 d4@4, f4@47 ~, d4@13 ~@3, a3@36 ~ a3@11, ~@17 d3@7]/2", AI: "[bb3@5 bb3, [bb2,d4,f4]]/2",
  AJ: "[b3@5 b3, [g2,d4,f4]]/2", // G7
  AK: "[~@6 [e4,g4] ~@9 [d4,f4]@4 ~@2 [d4,f4]@6 [db4,e4]@5 ~ [db4,e4]@6 [bb3,db4]@8, [f4,a4]@7 ~@2 e4@9 ~@30, ~ a2@47, ~@10 g4@9 ~@29]/2", // Em Dm Dbm Bbm F
  AL: "[a3@40 a3@7 ~, [d3,d4,f4]@47 ~]/2", // Dm
  AM: "[[bb3,d4,f4]@34 bb3@6 ~@3 d4@4 ~, bb2@47 ~, ~@34 f4@13 ~, ~@17 d4@4 ~@3, ~@40 bb3@7 ~]/2", // Bb
  AN: "[[g2,b3,d4,f4]@47 ~]/2", AO: "[[db4,f4,a4]@9 ~ [e4,g4]@12 [d4,f4]@11 ~ [db4,e4]@13 ~, a2@47 ~]/2",
  AP: "[a5 ~ bb5 ~ f5 ~ d5@4 c5 ~@5 [c4,d4,f4,a4] ~@11 d5@2 e5@2 ~@2 b4@6 [b3,d4,e4,g4] ~@5 d5@5 ~ g4@2 d5@4 g4@2 d5 ~ eb5@2 [bb3,d4,eb4,g4] bb4 g4@4 ~ c4@15 ~@2 [a3,c4,d4,f4] ~@7, [c4,f4,a4]@13 ~@9 [b3,d4,e4,g4]@14 ~@9 [bb3,eb4]@15 ~@10 [a3,d4,f4]@16 ~@10, ~ d4@12 ~@33 d4@14 ~@36, ~@3 a5@2 ~@7 f5@14 ~@8 bb4 ~@11 g4 ~@17 d5@2 ~@30]/4", // Dm7 Em7 Ebmaj7 Dm7 F Em7 Eb5 Dm
  AQ: "[[f4,a5] ~ bb5 a5 f5 ~ d5@4 c5@2 ~@4 [c4,d4,f4,a4] ~@11 g5@2 ~@2 d6@3 ~ ab5 ~@3 [b3,d4,e4,g4] ~@5 g5 ~, [c4,d4,a4]@14 ~@8 [b3,d4,e4,g4]@15 ~@11, ~@12 d5@14 ~@11 a5@8 ~@3]/2", // F Dm7 Em7 D7 Em7
  AR: "[~ c6@2 ~ c6@2 ~ bb5@2 ~ bb5@2 ~ f5@2 ~ [bb3,d4,eb4,g4] ~@2 c5@3 ~ [c4,d4]@14 ~@3 [a3,c4,d4,f4] ~@7, [bb3,d4,eb4,g4]@13 ~@3 f5@2 ~@4 [a3,f4]@15 ~@11, ~@23 g5@24 ~]/2", // Ebmaj7 Csus2 Dm7 Ebmaj7 Dm
  AS: "[a5 ~@2 a5@2 f5 d5@3 ~ c5 ~@5 [c4,d4,f4,a4] ~@11 d5 ~ e5 ~@3 b4@5 ~ [b3,d4,e4,g4] ~@7 [bb3,d4,eb4,g4]@14 ~@2 [bb3,d4,eb4,g4] ~ [eb5,g5] ~@4 c4@15 ~@2 [a3,c4,d4,f4] ~ [a4,d5]@4 c5 ~, [c4,d4,f4,a4]@13 ~@9 [b3,d4,e4,g4]@14 ~@34 [a3,d4,f4]@16 ~@10, ~@2 bb5@2 ~@8 f5@13 ~@9 bb4 ~@11 d5@16 ~@8 [d5,f5]@12 ~@14]/4", // Dm7 Em7 Ebmaj7 Eb Dm7 D5 Dm7 Em7 …
  AT: "[~@4 [a4,c5,d5,f5] ~@5 a4 ~ a4 ~@3 [c4,d4,f4,a4] ~@5 [b3,d4,e4,g4]@16 ~@2 [b3,d4,e4,g4] ~@7, [c4,f4]@13 ~@35, a4@4 ~@8 [c5,d5,f5]@7 ~@3 [b4,c5,e5]@21 ~@5, ~ d4@12 ~@35]/2", // Dm7 Em7 F5 Dm7 Cmaj7
  AU: "[bb4@3 ~ d5 ~ c5@4 bb4@2 g4@3 [bb3,eb4] [d4,g4] ~ [bb4,d5] ~@3 [a3,c4,d4,f4]@16 ~@2 [a3,c4,d4,f4] ~@7, [bb3,d4,eb4,g4] ~@3, d5@2 ~ eb5@2 ~@11 bb4@2 ~@4 [a4,c5]@24 ~@2]/2", // Eb5 G5 Bb Dm7 Ebmaj7 Am
  AV: "[bb3@10 ~@8 f4@3 ~@9 a4@3 ~@12 bb2@2 ~, bb2@15 ~, [d4,f4]@14 ~@2 a3@9 ~@9 d4@8 d4@5 ~, ~@10 f3@16 ~@2 f3@8 ~@4 f3@7 ~, ~@22 c5@8 ~@4 f4@13 ~]/2", // Dm
  AW: "[g3@16 ~@2 c4@2 ~@3 [g3,d4,g4]@2 c4 ~@4 [g3,d4]@3 ~ g3@5 ~@2 g3@4 a2 ~@2, [a2,e4]@21 ~ a2@16 ~ a2@6 ~@3, c4@9 ~@8 c4@6 ~, ~@4 g3 ~@7]/2", // G5 A5
  AX: "[[c4,eb4]@16 ab3 ~ c4 ~@3 [c4,eb4,f4]@5 ab3 ~ f4 ~@3 ab3 ~ c4@6 ~ c4@5 ~, ab2@41 ab2@5 ~@2, ~@35 [eb4,f4]@11 ~@2]/2", // Cm F7 Ebsus2
  AY: "[d4@22 d4@2 f4 ~@3 a4 ~ d4 ~@2 g3 ~@5 g3 ~ d4@4 g2@2 ~, g2@15 ~, [f3,bb3]@25 ~@9 f4@13 ~]/2", // Bb5
  AZ: "[bb2@16 bb3@2 c4 ~@3 [c4,f4] ~@5 [c4,f4]@5 f3@2 ~@7 bb3@4 bb2@2, [d4,f4]@19 ~@17 [c4,f4]@11 ~, ~@16 bb2@29 ~@3, ~@20 f3@3 ~]/2", // F5 Dm F5
  BA: "[g3@25 ~@5 c4@3 ~@7 e4@5 a2 ~@2, [a2,e4]@17 ~@7, c4@10 ~ a2@4 ~, ~@14 g3@3 ~ [g3,c4]@5 ~]/2", // A5 C5
  BB: "g3@16 ~@2 a3@4 [g3,db4,e4] ~, a2, [db4,e4]@11 ~, ~@8 g3@3 ~", // Dbdim Dbm
  BC: "~@18 g3@5 ~, ~@4 a2@11 ~ a2@7 ~, ~@10 [a3,db4,e4]@13 ~, ~@5 g3@4 ~@3", // A
  BD: "[~@4 d3 ~@11 a3@2 d3@3 ~ g3@6 ~@2 g3@4 g2@2 a3@4 ~@2 a3@4 [a3,d4,f4]@6 ~@2 a3 ~@3 a3 ~ d4 ~@2 [a3,d4,f4]@6 d3 ~@7 g3@5 d4 ~ a3@3 ~@7 db4@2, [d4,f4]@19 ~@53 g2@11 a2@12 ~, a3@14 ~@7 [b3,d4]@13 ~@37 [b3,d4]@11 ~@2 e4@12, ~@10 d3@8 ~@4 g2@12 ~@2 [a2,db4,e4]@10 ~@6 d3@12 ~@7 g3@3 ~@10 db4@10 ~@2, ~@15 a3]/4", // Dm Bm A
  BE: "[~@4 [a3,d4,f4] ~@13 a3@3 ~ g3@8 g3@4 d4 ~ a3@6 a3@4 ~@6 [a3,d4,f4] ~@7 a3@3 [a3,d4,f4]@6 d3@2 ~, d3@7 ~@3 d3@6 d3@6 [g2,b3,d4]@13 ~ [a2,db4,e4]@12 d3@8 ~@2 d3@11 ~@3, ~@4 [d4,f4]@3 ~@17, ~@12 a3@6 ~@28 [a3,d4]@5 ~@21]/3", // Dm G A Dm D5
  BF: "g3@5 ~ g3@4 d4 ~ a3@6 a3@4 d4@2, [g2,b3,d4]@11 ~ [a2,db4,e4]@11 ~", // G A
  BG: "[~ a3@2 ~ [a3,d4,f4] ~@13 [a3,f4]@2 ~@2 g3@8 g3@4 d4 ~ a3@6 a3@5 ~, d3@8 ~@2 d3@10 ~ g2@14 ~ [a2,db4,e4]@12, ~@6 a3@3 ~@2 [b3,d4]@6 ~@7, ~@4 d4 ~@7]/2", // Dm A Bm
  BH: "[d3,f3,a3] ~@7 [c3,c4] ~ [d3,d4]@2 [f3,f4] ~ [g3,g4] ~ [a3,a4] ~@2 [d4,d5]@2 [f4,f5]@2 ~, d4 ~@8 [c4,c5] ~@2", // Dm C D F G A D F …
  BI: "~@2 [d1,d2] ~@5", // D
})).s("gm_piano").gain(0.27).pan(0.4)

// bass · acoustic bass · "bass"
const bass = note(`<
  A B C@2 D@4 E@2 F G H I J K L M N O H P Q R S T U Q V W X Y A B C@2 D@4 E@2 F G H I J K L M N O H P Q R S T U Q V W X
  Y I P Z AA AB AC AD AE AF AG AH ~ AI AJ H AK AL AM U AN AO AP I P AL AQ AR Q A B C@2 D@4 A B C@2 D@4 I P Q AS@2 AT AU
  AV AW P AX AY AZ BA BB BC BD BE@2 BF BG BH BB BI BJ ~
>`.pickRestart({
  A: "d1@3 e1@3 f1@2 a1 c2@3", B: "e1@6 f1@6 g1@4 c2@2 d2@4 f1 ~",
  C: "[eb1@6 f1@6 g1@4 bb1@2 c2@3 ~ d1@8 e1@6 d2@2 a1@2 g1@2 f1@4 c1@2]/2",
  D: "[d1@6 e1@6 f1@5 ~ c2@4 e1@8 f1@6 g1@4 c2@2 d2@3 ~ eb1@8 f1@6 g1@4 bb1@2 c2@3 ~ d1@8 e1@6 f1@4 a1@2 c2@4 f1 ~, ~@18 f1 ~@77]/4",
  E: "d1 ~@2 d1 ~@2 d1 ~@2 d1 ~@2", F: "c1 ~@5 c1@2 ~@4 c1@2 ~@4 c1@2 ~@4", G: "c1 ~@2 c1 ~@2 c1 ~@2 c1 ~ c1",
  H: "bb1@3 ~@3 bb1@2 ~@4 bb1@2 ~@4 bb1@2 ~@4", I: "bb1 ~@2 bb1 ~@2 bb1 ~@2 bb1 ~@2",
  J: "a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 a1@2 ~@2 a1 ~", K: "a1 ~@3 a1@2 ~@4 c2@2 ~@4 db2@2 ~@4 d2@2", L: "d1 ~ d1 ~ d1 ~ d1 ~",
  M: "d1@2 ~@4 d1@2 ~@4 d1@2 ~@4 d1@2 ~@2 d1 ~", N: "c1@3 ~@3 c1@2 ~@4 c1@3 ~@3 c1@2 ~@4",
  O: "c1@3 ~@3 c1@2 ~@4 c1@2 ~@4 c1@2 ~@2 c1@2", P: "bb1@2 ~@4 bb1@2 ~@4 bb1@2 ~@4 bb1@2 ~@2 bb1 ~",
  Q: "a1 ~@2 a1 ~@2 a1 ~@2 a1 ~@2", R: "a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 a1 ~@3 a1 ~",
  S: "bb1@2 ~@4 bb1@2 ~@4 bb1@3 ~@3 bb1@3 ~@3", T: "bb1@3 ~@3 bb1@3 ~@3 bb1@3 ~@3 bb1@2 ~@2 bb1@2",
  U: "a1 ~ a1 ~ a1 ~ a1 ~", V: "ab1@3 ~@3 ab1@2 ~@4 ab1@3 ~@3 ab1@2 ~@4",
  W: "ab1@2 ~@4 ab1@3 ~@3 ab1@2 ~@4 ab1@2 ~@2 ab1 ~", X: "g1@2 ~@4 g1@3 ~@3 g1@3 ~@3 g1@2 ~@4",
  Y: "g1@3 ~@3 g1@2 ~@4 g1 ~@3 g1@2 bb1@4 c2 ~", Z: "a1@2 ~@4 a1@3 ~@3 a1@3 ~@3 a1@2 ~@4",
  AA: "a1@2 ~@4 a1@3 ~@3 a1@2 ~@4 a1@2 ~@2 ab1 ~", AB: "a1@3 ~@3 a1@2 ~@4 a1@2 ~@4 a1@3 ~@3",
  AC: "a1 ~@2 a1 ~@2 a1 ~@2 a1 ~ a1", AD: "d2@2 ~@4 d2@2 ~@4 d2@2 ~@4 d2@3 ~ g1@2",
  AE: "~@6 g1@2 ~@2 g1 ~ a1@2 ~@4 a1@2 ~@4", AF: "d2@3 ~@3 d2@2 ~@4 d2@2 ~@4 d2@3 ~ g1@2",
  AG: "~@6 g1@2 ~@4 a1@3 ~@3 a1@2 ~@4", AH: "d2@2 ~@4 d2@2 ~@4 d2@3 ~ a1@2 c2@3 ~ d2@2",
  AI: "d1@2 ~@4 d1@3 ~@3 d1@3 ~@3 d1@3 ~@3", AJ: "d1@2 ~@4 d1@3 ~@3 d1@2 ~@4 d1 ~@3 d1@2",
  AK: "bb1@2 ~@4 bb1@3 ~@3 bb1@2 ~@4 bb1@2 ~@2 bb1 ~", AL: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2",
  AM: "g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1@2 ~@2 g1 ~", AN: "a1@3 ~@3 a1@3 ~@3 a1@2 ~@2 db2@2 e2@2 ~@2 a1@2",
  AO: "d1@3 ~@3 d1@3 ~@3 d1@3 ~@3 d1@2 ~@4", AP: "d1@2 ~@4 d1@2 ~@4 d1@2 ~@4 d1 ~@3 d1@2",
  AQ: "g1@2 ~@4 g1@2 ~@4 g1@2 ~@4 g1 ~@3 g1@2", AR: "a1@3 ~@3 a1@3 ~@3 a1@2 ~@4 a1@2 ~@4",
  AS: "[a1@3 ~@3 a1@2 ~@4 a1@2 ~@4 a1@2 ~@3 ab1@2 ~@5 ab1@2 ~@4 ab1@2 ~@4 ab1@2 ~@4]/2",
  AT: "ab1@3 ~@3 ab1@3 ~@3 ab1@3 ~@3 ab1@2 ~@2 ab1 ~", AU: "g1@2 ~@4 g1@2 ~@4 g1@3 ~@3 g1@2 ~@4",
  AV: "g1@2 ~@4 g1@2 ~@4 g1@2 ~@3 g1 ~ d2@2 g1@2 ~", AW: "bb1@2 ~@3 bb1@2 ~@4 bb1@2 ~@5 bb1@2 ~@4",
  AX: "a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 a1@3 ~@3", AY: "a1@2 ~@4 a1@2 ~@4 a1@2 ~@4 a1@2 ~@2 ab1 ~",
  AZ: "a1@3 ~@3 a1@2 ~@4 a1@2 ~@4 a1@2 ~@4", BA: "a1@3 ~@3 a1@2 ~@4 a1@2 ~@4 a1 ~@3 a1 ~",
  BB: "d2@2 ~@4 d2@2 ~@4 d2@2 ~@4 d2@2 ~@2 d2 ~", BC: "g1@3 ~@3 g1@3 ~@3 a1@3 ~@3 a1@2 ~ a1 ~@2",
  BD: "d2@2 ~@4 d2@3 ~@3 d2@2 ~@4 d2@2 ~@2 d2 ~",
  BE: "[g1@3 ~@3 g1@3 ~@3 a1@2 ~@4 a1@3 ~@2 d2@3 ~@4 d2@2 ~@4 d2@2 ~@4 d2@2 ~@2 d2 ~]/2",
  BF: "g1@2 ~@4 g1@3 ~@3 a1@4 ~@2 a1@3 ~@3", BG: "d2@3 ~@3 d2@2 ~@3 d2@3 ~@4 d2@2 ~@2 d2 ~",
  BH: "g1@3 ~@3 g1@3 ~@3 a1@3 ~@3 a1@2 ~@4", BI: "g1@3 ~@3 g1@3 ~@3 a1@2 ~@4 a1@2 ~@4", BJ: "d1 ~@7",
})).s("gm_acoustic_bass").gain(0.26)

// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note(`<
  A@8 ~@16 B@2 C@2 D@2 E@2 A@8 F@4 G@2 H@2 I@2 J@2 G@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R S@2 T U V U ~ W@2 X@2 Y@2 Z@2 AA@2
  X@2 AB@2 AC@2 AD@6 AE@6 AF@2 AG@2 AH@2 AI@2 N@2 AJ@2 AK@2 AL@2 AM@2 AN AO AP@4 AQ@4 AR ~
>`.pickRestart({
  A: "a6/8", B: "[f4@24 g4@11 ~ a4@12, [bb3,d4]]/2", C: "[a3,c4,g4]/2", D: "[~@12 eb4@11 ~ f4@12 g4@12, [ab3,c4]]/2",
  E: "[g3,bb3,f4]/2", F: "[f4 c4, [a3,d4]@89 ~@7]/4", G: "[bb3,d4,f4]/2", H: "[[d4,f4] [db4,e4], a3]/2",
  I: "[a3,d4,f4]/2", J: "[g4@11 a4@7 g4@6, [a3,c4,d4]]/2", K: "[[d4,f4]@22 [db4,e4]@25 ~, a3@47 ~]/2",
  L: "[~@12 f5@11 ~ g5@12 a5@12, ~ [bb4,d5]@3]/2", M: "[c5@11 ~ c5@12 d5@12 c5@12, [a4,g5]]/2",
  N: "[~@12 eb5@12 f5@11 ~ g5@12, [ab4,c5]]/2", O: "[[g4,bb4,f5]@47 ~]/2",
  P: "[f5@24 g5@11 ~ a5@11 ~, [bb4,d5]@47 ~]/2", Q: "[c5@10 ~@2 c5@12 d5@11 ~ c5@12, [a4,g5]]/2", R: "[g4,db5,e5]",
  S: "[bb4@12 ~@12 [d4,f4]@23 ~, [db4,e4]@23 ~@25, ~@12 a4@35 ~]/2", T: "[d4,g4,b4] [db4,g4,bb4]", U: "[d4,f4,a4]",
  V: "[d4,g4,b4]@11 ~ [db4,g4,bb4]@12", W: "[c4 ~ d4@46, [f4,a4]]/2", X: "[bb3,d4,a4]/2", Y: "[b3,d4,a4]/2",
  Z: "[[f4,a4]@5 [e4,g4]@6 [d4,f4]@6 [db4,e4]@7, db4@23 ~@25]/2", AA: "[d4,f4,a4]/2", AB: "[[b3,d4,a4]@47 ~]/2",
  AC: "[[f4,a4]@10 [e4,g4]@12 [d4,f4]@11 ~ [e4,g4]@12 ~@2, db4@23 ~]/2", // F Em Dm Em
  AD: "[f4@21 ~ e4@22 ~@2 eb4@23 ~ c4@25 ~ f4@20 ~@2 e4@26, d4@43 ~@3 d4@97 ~]/6",
  AE: "[eb4@20 ~@2 c4@25 ~ f4@21 ~ e4@23 ~ eb4@23 ~ c4@25 ~, d4@93 ~ d4@50]/6", AF: "[f4@21 ~ e4@25 ~, d4@47 ~]/2",
  AG: "[eb4@10 ~ c4@13, d4]/2", AH: "[f5@2 g5 a5, [bb4,d5]]/2", AI: "[[a4,c5,g5]@47 ~]/2", AJ: "[g4,bb4,f5]/2",
  AK: "[f6@2 g6 a6, [bb4,d5]]/2", AL: "[a4,c5,g6]/2", AM: "[a4 g4, [db5,e5]]/2", AN: "[d4,f4,a4]@23 ~",
  AO: "[d4,g4,b4]@11 ~ [db4,g4,bb4]@11 ~", // G Gdim
  AP: "[[d4,f4,a4]@22 [d4,g4,b4]@13 ~ [db4,g4,bb4]@9 ~ [d4,f4,a4]@23 ~ [d4,g4,b4]@13 ~ [db4,g4,bb4]@12]/4", // Dm G Gdim Dm G Gdim
  AQ: "[[d4,f4,a4]@21 ~ [d4,g4,b4]@13 ~ [db4,g4,bb4]@9 ~ [d4,f4,a4]@22 ~@2 [d4,g4,b4]@12 ~@2 [db4,g4,bb4]@11 ~]/4", // Dm G Gdim Dm G Gdim
  AR: "[d4,a4] ~@11, f4 ~@23", // D5
})).s("gm_string_ensemble_1").gain(0.14).pan(0.3)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~@3 A B ~@2 C@8 ~@16 D E@2 F G ~@5 H ~@7 I ~@24 J K ~@45 L M N O M N@2 P Q P R S ~
>`.pickRestart({
  A: "~@16 d4@2 f4@3 ~ g4@2", B: "[g4,b4]@5 ~ [g4,b4]@4 [f4,a4]@14", C: "[~@4 [f4,a4] ~@5 [f4,a4]@10 a4@172]/8",
  D: "~@2 d4@4 e4@3 ~ f4@4 g4@4 f4@3 ~ e4@2", E: "[~@18 [a4,c5]@4 [g4,b4]@13 ~@7 f4@2 ~@2 g4@2]/2",
  F: "~ g4 ab4@3 ~ g4@3 ~ f4@2 ~ ab4@5 g4@2 ~@2 f4@2", G: "~ ab4@5 g4@3 ~ f4@6 d4@7 ~",
  H: "~@12 [g4,b4]@3 ~@3 [f4,a4]@4 ~@2", I: "~@8 [f4,a4] ~@3 [g4,b4]@10 ~@2", J: "~@8 d5@2 ~@2 d5 ~@3 d5@2 ~@2 d5 ~@3",
  K: "d5 ~@7", L: "ab4@6 g4@2 ~@2 f4@2 ~@6 d4@3 ~@3", M: "[a4,d5]@2 ~@4 [a4,d5]@2 ~@4 [a4,d5]@3 ~@3 [a4,d5]@2 ~@4",
  N: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", O: "[a4,d5]@3 ~@3 [a4,d5]@3 ~@3 [a4,d5]@2 ~@4 [a4,d5]@3 ~@3",
  P: "[a4,d5]@3 ~@3 [a4,d5]@3 ~@3 [a4,d5]@3 ~@3 [a4,d5]@2 ~@4", // D5
  Q: "[a4,d5]@3 ~@3 [a4,d5]@2 ~@4 [a4,d5]@3 ~@3 [a4,d5]@3 ~@3", // D5
  R: "[a4,d5]@2 ~@4 [a4,d5]@3 ~@3 [a4,d5]@3 ~@3 [a4,d5]@2 ~@4", S: "[a4,d5] ~@11",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.6)

// other · alto sax · "sax"
const alto_sax = note(`<
  ~@76 A B@2 C@2 D E F G C@2 H@2 I J K ~@5 L ~@5 M N O P@2 Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN
  ~@2
>`.pickRestart({
  A: "d4@5 ~@11 e4@2 f4@2 ~@2 g4@2", B: "[~@4 f4@3 ~@3 e4@3 ~@3 f4@3 ~@3 d4@5 ~@13 e4@2 f4@3 ~ g4@2]/2",
  C: "[~@4 f4@2 ~@4 e4@3 ~@3 f4@2 ~@4 d4@4 ~@14 e4@2 f4@3 ~ g4@2]/2", D: "~@4 f4@2 ~@4 e4@3 ~@3 f4@2 ~@6",
  E: "f4@5 ~ e4@2 ~@2 e4@3 ~@2 d4@3 ~@4 d4@2", F: "~@4 db4@3 ~@3 bb3@2 ~@4 a3@3 ~@5", G: "d4@5 ~@11 e4@2 f4@3 ~ g4@2",
  H: "[~@4 f4@2 ~@4 e4@2 ~@4 f4@2 ~@4 d4@4 ~@14 e4@2 f4@3 ~ g4@2]/2", I: "~@2 f4 ~@2 e4 ~@2 f4 ~@3",
  J: "f4@4 ~@2 e4@2 ~@2 e4@3 ~@2 d4@3 ~@3 d4@3", K: "~@2 db4 ~@2 bb3 ~@2 a3 ~@3", L: "~@6 g3@4 gb3@2 g3@11 ~",
  M: "~@12 g3 ~ a3 d4 ~@2 f4@3 g4@2 ~", N: "~ e4@4 ~ d4 ~@3 a3 ~@4 a3 ~@6 a3 ~", O: "~@4 a3 ~@15 c4 db4 d4 ~",
  P: "[~@4 c5@2 ~@4 bb4@2 g4@3 bb4@2 ~ c5@3 ~ f4@15 ~@11]/2", Q: "~@22 d4 ~", R: "a4@3 d4 ~ f4 ~@6",
  S: "~@16 g4 ~ g4@2 ~@2 e4 ~", T: "g4@5 ~ e4@3 ~ c4 ~ e4@5 ~ c4@2 ~@4", U: "~@8 bb4 ab4 ~ bb4",
  V: "g4@4 ~@2 eb4@3 ~ c4 ~ eb4@6 c4 ~@5", W: "~@16 bb3 ~@7", X: "bb3 ~@2 bb3 ~@6 bb3 ~@5 bb3 ~@7",
  Y: "~@16 d4 ~ f4@3 ~ d4 ~", Z: "a4@5 ~ d4@2 ~@2 f4@2 ~@4 g4@2 ~@6", AA: "~@6 g4 ~ e4 ~@3", AB: "e4@3 ~ c4 ~@19",
  AC: "~@12 db5@3 ~ a4@2 ~ f4@2 ~ db4@2", AD: "~@2 a3@2 ~@6 a3@2 d4@2 ~@2 a3 ~@7", AE: "~@6 d4 ~ d4 ~@2 d4",
  AF: "~@4 d4 ~ f4@2 ~@2 a3 ~ d4@2 ~@10", AG: "~@3 a3 ~@2 d4@2 ~@2 f4@2 ~@4 a3 ~ a3@2 ~@2 d4@2",
  AH: "~@4 d4 ~ f4@3 ~ a4@3 ~@5 e4 ~@5", AI: "~@4 a3 ~ d4@2 ~@2 f4@2 ~ d4@3 ~@6 c4 ~",
  AJ: "~@3 d4@2 ~@6 a3 d4@2 ~@2 f4@2 a3 ~@3 d4 ~", AK: "f4@3 ~ a4@2 ~@10 a3 ~ d4@2 ~@2 f4@2",
  AL: "~@4 a3 ~ d4@2 ~@2 e4@2 ~@10 a3 ~", AM: "d4@2 ~@2 f4@2 ~@16 a3 ~",
  AN: "d4@2 ~@2 f4@2 ~ e4 ~@2 d4 ~ a3 ~@3 d4@2 ~@6",
})).s("gm_alto_sax").gain(0.48)

// drums · kick
const kick = s("bd").struct("<[x!2]!132 x [~ x ~@2]>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!75 [~@3 x ~@3 x!5] [~ x ~ x]!56 ~@2>").gain(0.34)

// drums · open hat
const open_hat = s("oh").struct("<~@132 x [~ x ~@2]>").gain(0.17)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@7 B ~@3 C@4 A ~@15 A ~@7 A ~@11 A ~@3 A ~@3 A ~@3 A ~@11 C@8 ~@26
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "x!4",
})).gain(0.17)

// drums · ride
const ride = s("rd").struct("<~@76 A B C@3 D A B D C D C D C B E ~@42>".pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~@2", B: "x ~@2 x ~ x!2 ~@2 x ~ x", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x!4",
  E: "x ~@2 x ~ x!2 ~@5",
})).gain(0.28)

// drums · shaker
const shaker = s("sh").struct(`<
  A B A B A B A B A C A D A C A E A F A B@2 G B H B G B H B A B G A B A B A B A B A C A D A C A E A F A B@2 G B H B G B
  H B A B G A C A D A C A D A C A D A C A D A C A D A C A D A C A D A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B I ~
>`.pickRestart({
// … 5 more lines

More by Biagio Antonacci