Strudelify
I've Got You Under My Skin cover art

Songs For Swingin' Lovers!

I've Got You Under My Skin

Sinatra

KeyD♭ majorTempo126 bpm
0:00/0:00
// I've Got You Under My Skin — Sinatra
// 126 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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, A@4 for four bars: edit a riff to change every repeat.

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

// other · flute
const flute = note("<A@6 B@2 A@2 B@2 C@3 ~@93 D@4 ~@5>".pickRestart({
  A: "[eb4@11 ~]/2", B: "[eb4@23 ~]/2", C: "[eb4@49 ~@23]/3", D: "[~@47 ab4@45 ~@4, eb4@49 ~@47]/4",
})).s("gm_flute").gain(0.17)

// other · tenor sax
const tenor_sax = note(`<
  A B A C D E F E G H I E F E ~@6 J K L E I E M N O P ~@4 Q R S T U@2 V@2 W@2 X Y ~@11 Z AA@2 ~@26 AB AC ~@20 AD AE AF E
  ~@5
>`.pickRestart({
  A: "db2@4 ab2 ~ bb2@2 ~@4 eb3@3 ~ ab2@2 bb2@2 ~@4", B: "eb3@4 ab2@2 bb2@3 ~ ab2@3 ~@3 ab2 ~@5 ab2@2",
  C: "eb3@2 ab2 bb2 ~ ab2 ~@6", D: "db2@4 ab2 ~ bb2@2 ~@4 eb3@3 ~ ab2 ~ bb2@3 ~@3",
  E: "eb3@3 ~ ab2@2 bb2@3 ~ ab2@3 ~@11", F: "db2@4 ab2@2 bb2@2 ~@4 eb3@3 ~ ab2@2 bb2@2 ~@4",
  G: "db2@3 ~ ab2@2 bb2@2 ~@4 eb3@3 ~ ab2 ~ bb2@4 ~@2", H: "eb3@3 ~ ab2@2 bb2@3 ~ ab2@3 ~@9 ab2@2",
  I: "db2@2 ~@2 ab2@2 bb2@2 ~@4 eb3@4 ab2@2 bb2@3 ~@3", J: "db2@3 ~ ab2@2 bb2@2 ~@4 eb3@4 ab2@2 bb2@3 ~@3",
  K: "eb3@3 ~ ab2@2 bb2@2 ~@2 eb3@3 ~@11", L: "db2@4 ab2@2 bb2@3 ~@3 eb3@3 ~ ab2@2 bb2@3 ~@3",
  M: "db2@4 gb2@2 a2@3 ~@13 gb2@2", N: "eb3@4 gb2@2 a2@4 ab2@5 ~@9",
  O: "db2@2 ~@2 ab2@2 bb2@3 ~@3 eb3@3 ~ ab2@2 bb2@3 ~@3", P: "eb3@3 ~ ab2@2 bb2@3 ~ ab2@5 ~@9",
  Q: "eb2@4 ab2 ~ bb2@2 ~@4 eb3@3 ~ ab2@2 bb2@2 ~@4", R: "eb3@3 ~ ab2 ~ bb2@2 ~@2 ab2@2 ~@12",
  S: "db2@4 ab2 ~ bb2@2 ~@4 eb3@4 ab2 ~ bb2@2 ~@4", T: "eb3@3 ~ ab2@2 bb2@2 ~@2 ab2@2 ~@4 bb2@4 ~@4",
  U: "[ab2 ~@4 ab2@2 ~@5 ab2@16 ~@6 ab2@11 ~@3]/2", V: "[db3@2 ~@4 db3 ~@5 db3@15 ~@7 d2@13 ~]/2",
  W: "[ab2 ~@5 ab2@2 ~@4 ab2@15 ~@7 ab2@11 ~@3]/2", X: "f2@2 ~@4 f2@2 ~@4 e2@7 ~@3 eb2@2",
  Y: "~@2 eb2 ~@2 eb2 ab2 ~@2 ab2 ~@2", Z: "~@4 b2 ~@5 b2@2 bb2 ~@5 bb2@2 ~@4",
  AA: "[~@12 eb3@2 ~@10 ab2@23 ~, ~@11 bb2 ~@12, ~@23 a2@2 ~@23]/2", AB: "db2@3 ab2 ~ bb2@2 ~@5 eb3@4 ab2 ~ bb2@2 ~@4",
  AC: "eb3@4 ab2 ~ bb2 ~@3 ab2@4 ~@10", AD: "eb2@3 ~@3 bb2@2 ~@4 eb3@4 ab2@2 bb2@2 ~@4, ~ ab2 ~@4", AE: "eb3 ~@11",
  AF: "db2@4 ~@2 bb2@3 ~@3 eb3@4 ab2@2 bb2@2 ~@4, ~@4 ab2@5 ~@15",
})).s("gm_tenor_sax").gain(0.24).pan(0.4)

// chords · muted trumpet · "MT TRUMPET"
const muted_trumpet = note("<~ A B A B ~@11 C D ~@4 E F E G ~@2 E G ~@24 H I J ~@47 K L M ~@10>".pickRestart({
  A: "~@8 [db4,gb4] c4 ~ [b3,e4], ~@18 f4 ~@5", B: "eb4 ~@11, bb3 ~@23", C: "~@16 [db5,f5,ab5]@2 [c5,eb5,g5] ~@5",
  D: "[c5,eb5,g5]@3 ~@3 [c5,eb5,g5]@4 [bb4,db5,f5]@14", E: "~@6 ab4 ~@5", F: "ab4 ~@9 ab4@3 ~@11",
  G: "ab4@2 ~@8 ab4@5 ~@9", H: "~@4 db5@3 ~@3 bb4 ~ db5@2 ~@10", I: "~@4 db5@4 ~@2 a4 ~ db5@3 ~@9",
  J: "~@4 [bb4,db5,f5]@3 ~@17", K: "~@3 db5@2 ~@4 bb4 ~ db5@4 ~@9", L: "~@3 eb5@2 ~@4 db5 ~ eb5@5 ~@8",
  M: "~@3 f5@6 eb5@2 d5",
})).s("gm_muted_trumpet").gain(0.23).pan(0.6)

// chords · tenor sax
const tenor_sax_2 = note(`<
  ~@22 A@8 ~@3 B C ~ D E F@2 G@2 H@2 I J K L M N O P Q R S T U V W@2 ~@8 X Y Z ~@3 AA@2 AB@4 AC AD AE AF AG AH AI@2 AJ
  AK AL AM AN@2 AO AP K L M N O P Q R AQ AR AS ~ AT@4 ~@5
>`.pickRestart({
  A: "[[gb3,bb3,db4]@45 ~@3 [f3,ab3,bb3]@43 ~@5 db4@34 ~@2 c4@10 ~@2 [f3,ab3,bb3]@47 ~, eb4, ~@48 [gb3,a3]@23 ~@25]/8", // Gb Bb7 Gbm
  B: "[bb3,d4] ~@5 a4@4 g4@3 ~@11, a4 ~@2 [bb3,d4]@3 ~@6", C: "~@12 [gb3,ab3,bb3] ~@9 [gb3,ab3,bb3] ~, ~@6 eb4 ~@4 eb4",
  D: "~@12 [f3,ab3,bb3,eb4] ~@11", E: "[f3,ab3,bb3,eb4] ~@9 [f3,ab3,bb3] ~@13, ~@5 eb4 ~@6",
  F: "[[gb3,bb3,db4,eb4] db4 ~@3 [gb3,bb3] [gb3,db4,eb4] ~@5 [gb3,bb3,db4,eb4]@14 ~@8 [gb3,bb3,db4,eb4]@11 ~@3]/2", // Ebm7 Gb Ebm7
  G: "[[f3,ab3,db4] ~@5 [f3,ab3,bb3,db4] ~@5 [f3,ab3,bb3,db4]@17 ~@5 [f3,ab3,b3,d4]@9 ~@5]/2", // Db Bbm7 Fdim
  H: "[[gb3,bb3,db4,eb4] ~@5 [gb3,bb3,db4] ~@5 [gb3,bb3,db4,eb4]@16 ~@6 [gb3,ab3,c4]@12 ~@2, ~@3 eb4 ~@20]/2", // Ebm7 Gb Ebm7 Ab7
  I: "[bb3,db4,f4,ab4] ~@5 [bb3,db4,f4,ab4] ~@5 [ab3,b3,d4,ab4]@8 ~@2 [gb3,db4,ab4] ~, ~@11 bb3", // Bbm7 Abdim Gbsus2
  J: "~@4 [gb3,bb3,db4,ab4]@2 ~@4 [gb3,bb3,db4,ab4] ~ [c4,ab4]@3 ~@3 [bb3,c4,ab4]@2 ~@4, ~@12 [gb3,bb3] ~@5 gb3 ~@5", // Gb Fm Gb
  K: "f4", L: "gb4 e4", M: "eb4 db4", N: "eb4@11 ~ db4@12", O: "~ db4@2 c4@3", P: "db4 c4", Q: "~ c4@2 bb3@2 ~",
  R: "eb4@3 ~@3 eb4@3 ~ d4@12 ~@2", S: "~@4 [eb3,gb3,bb3,db4] ~@7 [eb3,gb3,bb3,db4] ~@11",
  T: "~@4 [eb3,gb3,a3] ~@7 [eb3,gb3,a3] ~@11, ~@2 db4 ~@3 db4 ~@5", U: "~@2 [ab3,db4] ~@9, ~@4 [f3,bb3] ~@19",
  V: "~@4 [f3,ab3,b3] ~@5 [ab3,b3,eb4] ~ [f3,ab3]@2 ~@4 [ab3,b3,d4]@2 ~@4, ~@4 eb4@2 ~@6 d4 ~@5 f3 ~@5", // Fdim Abm Fm Abdim
  W: "[~@12 [eb3,gb3,bb3,db4] ~@9 [eb3,gb3,a3,db4]@26]/2", // Ebm7 Ebm7b5
  X: "[f3,ab3,db4] ~@4 [db3,f3,ab3] [f3,ab3] ~ [ab3,bb3] [db3,f3,ab3] ~@2, ~@12 bb3 ~@3 f3 ~@7", // Db Fm Absus2 Db
  Y: "~@5 [db3,f3,ab3] [f3,ab3,bb3] ~ [f3,ab3,bb3] [f3,ab3,eb4] ~@2", // Db Bb7 Fm7
  Z: "[f3,ab3,db4] ~@4 [db3,f3,ab3] [f3,ab3,bb3] ~ [f3,ab3,bb3] [db3,f3,ab3] ~@2", AA: "eb4/2", AB: "[db4@23 ~]/4",
  AC: "~@6 f4@3 ~ f4 ~ f4@3 ~ c4 ~ f4@3 ~ f4 ~", AD: "f4@3 ~ c4@2 f4@3 ~ f4 ~ f4@3 ~ c4@2 ~@4 f4 ~",
  AE: "g4@3 ~@3 g4@3 ~ g4 ~ g4@3 ~ f4 ~ g4@3 ~ g4 ~", AF: "g4@3 ~ f4 ~ g4@3 ~ g4 ~ g4@4 f4@2 ~@6",
  AG: "ab4@2 ~@4 ab4@3 ~ ab4 ~ ab4@3 ~ eb4 ~@5 ab4 ~", AH: "ab4@3 ~ eb4 ~ ab4@3 ~ ab4 ~ ab4@4 eb4@2 ab4@3 ~ ab4 ~",
  AI: "[ab4@23 ~]/2", AJ: "[gb3,bb3,eb4] ~@5 [gb3,bb3,eb4] ~@5 [gb3,bb3,db4,eb4]@12",
  AK: "~@10 [gb3,bb3,db4,eb4] ~ [gb3,bb3,db4,eb4]@3 ~ [gb3,bb3,db4,eb4] ~ [db4,eb4]@2 ~@4, ~@18 [gb3,bb3] ~@5", // Ebm7 Dbsus2 Gb
  AL: "~@3 [bb3,f4] ~@2 [ab3,bb3,db4,f4]@6, ~@6 [ab3,db4] ~@17", // Bb5 Bbm7 Db5
  AM: "~@10 [ab3,bb3,db4,f4] ~ [ab3,b3,db4,f4]@3 ~ [ab3,b3,d4,f4] ~ [ab3,b3,d4,f4]@3 ~@3", // Bbm7 Db7 Abdim
  AN: "[[bb3,db4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4]@16 ~@6 [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4]@2 ~@2 [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4] ~@5, ~@21 gb4 ~@2]/2", // Gb Ebm7 Eb7
  AO: "[eb4,ab4] ~@2 [f3,c4,eb4,ab4] ~@2 [b3,d4,ab4]@6, [f3,c4] ~@11 e3@10 ~@2", // Ab5 Fm7 Abdim F5
  AP: "~@4 [bb3,db4,ab4]@2 ~@4 [bb3,db4] ~ [ab2,db4]@2 ~@4 [ab2,bb3,ab4]@3 ~@3, ~@4 eb3 ~@5 ab4@5 ~@9, ~@10 eb3@2 bb3 ~@5 db4 ~@5", // Bbm7 Bbm Db5 Absus2
  AQ: "~@4 [eb3,gb3,bb3] ~@7 [eb3,gb3,bb3]@7 ~@5", AR: "~@4 [eb3,gb3] ~@7 [eb3,gb3,a3]@6 ~@6, ~@2 a3 ~@9",
  AS: "~@6 [db3,f3,ab3]@15 ~ [f3,ab3]@2, ~@22 d3 ~", AT: "[bb3@23 ~ a3@23 ~ f3@47 ~, gb3@47 ab3@48 ~]/4",
})).s("gm_tenor_sax").gain(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@2 B@4 C@2 D@2 E@2 F@2 G H I J K L@3 ~@8 M N O P@3 Q@3 ~@7 R@2 S@6 T@2 U ~@3 V@4 W@4 X@4 Y@7 Z@5 AA@4 AB ~@7 R@2 S@6
  AC@3 ~@8 AD@2
>`.pickRestart({
  A: "[[ab3,bb3]@11 ~]/2", B: "[gb3@46 ~@2 f3@43 ~@5, bb3@31 ~]/4", C: "[gb3@23 ~]/2", D: "[[f3,ab3,bb3]@23 ~]/2",
  E: "[[gb3,ab3,bb3]@11 ~]/2", F: "[ab3,bb3]/2", G: "[bb3,db4]", H: "[b3,d4] [c4,eb4]", I: "[e4,g4] [f4,ab4]",
  J: "[g4,bb4] [ab4,c5]", K: "db5@3 [bb4,db5], bb4@2 ~", L: "[db4 d4 [f3,ab3,eb4]@4, bb3]/3", M: "[bb4,d5]",
  N: "[a4,d5,g5]", O: "~ [bb4,d5], [c5,e5,a5] ~, ~@10 g5@13 ~",
  P: "[~ g5 [ab4,db5]@4, [d5,a5,c6]@6 bb5@7 ~@23, ~@10 c5@11 ~@3 eb4@46 ~@2]/3", // Db5 D7
  Q: "[[bb3,eb4]@49 ~@23, ab4@47 ~@25]/3", R: "[[db5,bb5]@47 ~, f5 ~]/2",
  S: "[[c5,eb5]@12 [bb4,db5]@12 [c5,eb5]@12 bb4@11 ~ bb4@11 ~ [ab4,c5]@12 [bb4,db5]@12 c5@12 eb5@11 ~ db5@12 eb5@12 [f5,c6]@12, ab5@61 ~@11, ~@36 db5@24 ~@24 ab4@59 ~]/6", // Cm Bbm Cm Ab Bbm F5
  T: "[db6 eb6, gb5@47 ~]/2", U: "[ab5,f6]", V: "[[db3,eb4,ab4]@47 ~]/4", W: "[[db4,f4,eb5,ab5]@31 ~]/4",
  X: "[db5,f5,eb6,ab6]/4", Y: "[~ gb4@47 [f4,ab5]@48 [gb4,a5]@48 [f4,ab5]@24, eb5, bb5@47 ~@121, ~ db5@167]/7",
  Z: "[~@12 g4@11 ~@25 g4@12, ~@23 bb5@97, ~ f5@4, ~@24 eb5@47 ~ d5@48, ~@2 a4@2 ~]/5",
  AA: "[gb4@47 ~@46 db4@2 ~, eb5, db5@47 ~, ~@48 ab5@47 ~]/4", AB: "eb4@4 eb4@3 ~@2 eb4@2 ~@13",
  AC: "[[bb4,db6]@23 ~ [a4,eb6]@23 ~ db5@21 d5 ~@2, [eb5,gb5]@47 [ab5,f6]@25, ~@2 bb4]/3", // Bbm Adim Ebm Db
  AD: "[~@6 [db3,g4,bb4]@41 ~]/2", // Gdim
})).s("gm_string_ensemble_1").gain(0.16).pan(0.4)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  A@2 B@4 C@2 ~@4 D@2 ~@33 E ~@5 F ~@6 G@4 ~@22 H@2 ~@9 E ~@5 F ~@11 I@2
>`.pickRestart({
  A: "[f3@11 ~]/2", B: "[ab3@31 ~]/4", C: "[[ab3,bb3]@15 ~]/2", D: "[f3@47 ~]/2", E: "gb5", F: "bb5@13 ~@11",
  G: "[~ f3@46 ~]/4", H: "[f4@47 ~]/2", I: "[~@7 b3@40 ~]/2",
})).s("gm_string_ensemble_1").gain(0.08).pan(0.4)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@46 A ~ B C D E B F G H ~@2 I@2 ~@4 J K L M L K L N O P Q R S T U V W X Y@2 Z AA AB@2 ~@7 AC AD AE AF AG AH AI AJ AK
  AL AM AN ~@10
>`.pickRestart({
  A: "~@4 [ab2,db3] ~@19", B: "~@4 [ab2,db3,f3,c4] ~@11 [ab2,db3,f3] ~@7, ~@8 bb3 ~@3",
  C: "~@4 [ab2,db3,c4] ~@11 [g2,db3,e3,bb3] ~@7, ~@2 f3 ~@9", // Dbmaj7 Gdim
  D: "~@4 [ab2,eb3,gb3] ~@11 [ab2,eb3,gb3] ~@7, ~@2 db4 ~@5 c4 ~@3", // Ab7
  E: "~@2 [ab2,db4] ~@5 [d3,gb3,c4] ~@3, ~@4 [eb3,gb3] ~@11 ab2 ~@7", // Db5 D7 Ebm
  F: "[bb2,eb4]@2 ~@4 [bb2,ab3,eb4]@3 ~ [db2,ab3,b3,d4]@11 ~@3, [ab3,c4] ~@5 c4 ~@17", // Eb5 Ebsus4 Abdim Ab
  G: "~@4 db4@2 ~@4 bb3 ~ db4@2 ~@10", H: "~@2 db4 ~@2 a3 db4 ~@5", I: "[~@12 eb3 ~@9 ab2@24 ~@2]/2",
  J: "eb3 ~@5 ab2@2 ~@4 bb2@8 ~@4", K: "ab2@2 ~@4 ab2@3 ~ bb2@2 ~@4 bb2@2 eb3@3 ~@3", L: "db3 ~@2 ab2 ~@2 bb2@4 ~@2",
  M: "ab2@2 ~@4 ab2@3 ~ bb2@2 ~@4 bb2@2 eb3@4 ~@2",
  N: "ab2@3 ~@3 ab2@3 ~@3 [eb4,eb5]@2 [f4,f5]@2 [gb4,gb5]@2 [g4,g5]@2 [ab4,ab5]@2 [a4,a5]@2", // Eb F Gb G Ab A
  O: "[eb5,gb5,bb5]@3 ~ [eb5,gb5,bb5]@3 ~@17", // Ebm
  P: "~@10 [db5,eb5,gb5,ab5]@5 ~ [gb4,bb4,db5,eb5] ~ [bb4,db5,f5] ~@5, ~@8 gb5 ~@3", // Dbsus4 Ebm7 Bbm
  Q: "[ab4,bb4,db5,f5]@5 ~@19, f4 ~@7", R: "~@9 [db5,f5,ab5]@2 ~, ~@9 ab4 ~@2",
  S: "[a4,db5,eb5,gb5,a5]@3 ~ [a4,db5,eb5,gb5,a5]@2 ~@18", // Ebm7b5
  T: "~@16 [eb5,ab5] ~ [a4,eb5,gb5]@2 ~@2 [db5,eb5,f5] ~, ~@8 gb5 ~@3", // Ab5 Ebdim Db
  U: "[a4,c5,e5]@6 [bb4,db5,f5] ~@3 [bb4,db5,f5]@3 ~@11", V: "~@9 [ab4,db5,f5]@2 ~",
  W: "[g5,bb5]@4 ~@2 [eb5,g5,bb5]@3 ~ [eb5,g5,bb5] ~ [eb5,g5,bb5]@2 ~@2 [eb5,g5,bb5] ~ [eb5,g5,bb5]@5 ~", // Gm Eb
  X: "[eb5,g5,bb5]@5 ~ [c5,eb5,f5]@2 ~@4 [c5,eb5,f5]@3 ~ [bb4,eb5]@2 [a4,c5,d5]@3 ~@3, ~@16 c5 ~@7", // Eb F7 Eb5 D7
  Y: "[[g4,a4,db5]@6 [g4,bb4,d5]@2 ~@2 [g4,bb4,d5]@3 ~@9 [g4,bb4,d5]@18 ~@2 [f4,bb4,d5]@5 ~]/2", // A7 Gm Bb
  Z: "[ab4,bb4,db5]@3 ~@3 [bb4,db5,eb5]@3 ~ [bb4,db5,eb5] ~ [bb4,db5,eb5]@2 ~@2 [bb4,db5,eb5] ~ [bb4,db5,eb5]@4 ~@2", // Bbm7 Eb7
  AA: "[bb4,c5,eb5]@11 ~ [gb4,bb4,db5]@4 [ab4,c5]@2 [eb4,gb4,bb4]@2 ~@4, ~@16 eb4 ~@7", AB: "[[ab3,ab4]@7 ~]/2",
  AC: "~@2 db5 ~@2 db5 ab4 ~@2 ab4 ~@2", AD: "~@4 [db4,f4,ab4] ~@11 [ab4,bb4]@2 ~@6, ~@4 bb4@2 ~@10 [db4,f4] ~@7",
  AE: "~@4 [db4,eb4,ab4,bb4] ~@11 [ab4,bb4]@2 ~@6, ~@16 [db4,e4] ~@7", // Dbsus2 Absus2 Dbm
  AF: "~@4 [ab4,eb5]@2 ~@4 [f4,ab4,c5,eb5] ~ [f4,bb4,db5] ~@5 [ab4,bb4,db5]@2 ~@4, ~@4 [f4,c5] ~@7 ab4@2 ~@4 f4 ~@5", // Ab5 Fm7 Bbm Bbm7 F5
  AG: "~@2 [f4,ab4,eb5] ~@5 [g4,bb4,db5] ~@3, ~@4 c5 ~@11 e4 ~@7", // Fm7 Gdim
  AH: "~@4 [eb4,gb4,bb4] ~@11 [bb4,c5]@2 ~@6, ~@4 db5@2 ~@10 [eb4,gb4] ~@7", // Ebm Bbsus2 Ebm
  AI: "~@4 [eb4,gb4,bb4] ~@5 [eb4,gb4,bb4,db5] ~ [eb4,gb4,bb4,c5] ~@5 [eb4,gb4,bb4] ~@5, ~@2 db5 ~@6 c5 ~@2", // Ebm Ebm7 Cm7b5 Ebm
  AJ: "~@4 [db4,f4,ab4] ~@11 [db4,f4,ab4] ~@7, ~@2 c5 ~@5 bb4 ~@3", // Db
  AK: "[bb3,ab4,c5,eb5]@3 ~@3 [bb3,c5,eb5]@3 ~ [db3,d5]@12 ~@2, ~@6 ab4 ~@3 [ab4,b4]@10 ~@4", // Ab Cm7 Dmaj7 Abm
  AL: "~@4 [db4,gb4,bb4,db5] ~@5 [eb4,gb4,bb4]@2 [gb4,bb4,db5]@7 ~@5, ~@10 bb3 ~ db4@4 ~@8", // Gb Ebm Gb
  AM: "~@2 [eb4,gb4,a4,eb5] ~@2 [db4,gb4] [eb4,gb4,a4]@3 ~@3, ~@10 db5 ~ eb5@8 ~@4", // Ebdim Gb5 Ebdim
  AN: "~@3 [f4,ab4,db5,f5]@6 [gb4,b4,eb5] ~ [d4,f4,bb4,d5], ~@18 eb4 ~@5", // Db B Bb
})).s("gm_brass_section").gain(0.23).pan(0.7)

// bass · trombone
const bass_2 = note("<~@60 A B@3 A C A C A C A C ~@45>".pickRestart({
  A: "db2 ~@2 ab2 ~@5 db2 ~@2",
  B: "[ab2@2 ~@8 db2@2 ~@3 eb2 ~@5 db2 ~ db2@3 ~@4 ab2@2 ~@10 db2@2 ~@4 ab2@2 ~@8 db2@2 ~@4 eb2@2 ~@4 db2 ~, ~@27 g2@32 ~@13]/3",
  C: "ab2@2 ~@8 db2@2 ~@4 eb2@2 ~@4 db2 ~",
})).s("gm_trombone").gain(0.24).pan(0.3)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B A C A D E F E C E F E G ~@16 H I J@2 K@2 L@2 M@2 N@2 O@2 P Q R@2 S@2 T U ~ V W X ~ Y Z ~@13 AA@2 AB@2 AC AD AE AF
  AG AH AI@2 AJ@2 AK AL@5 AM@2 AN AO@3 AP AQ AR@2 ~@6 A AS A C E AT ~ AU@2
>`.pickRestart({
  A: "~@6 [eb5,ab5] ~@5, ~@12 bb4 ~@11", B: "[bb4,eb5,ab5] ~@9 [bb4,eb5,ab5]@3 ~@11",
// … 98 more lines

More by Sinatra