Strudelify

I've Got You Under My Skin

The Four Seasons

KeyD♭ majorTempo128 bpm
0:00/0:00
// I've Got You Under My Skin — The Four Seasons
// 128 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 101 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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 · "A.PIANO 1"
const piano = note("<A B A C A D E F A G A H I F ~@78 J K L M J N L O@2>".pickRestart({
  A: "~@6 [ab5,bb5,eb6] ~@5", B: "[bb5,eb6]@2 ~@8 [ab5,bb5] ~@5 [ab5,bb5,db6]@3 ~@3 [bb5,eb6]@2, ab5 ~@9 eb6@2 ~@12",
  C: "[ab5,bb5,eb6]@2 ~@8 [ab5,bb5]@2 ~@4 f6@2 eb6 ~@5, ~@10 eb6 ~@5 [ab5,bb5]@4 ~@4", // Absus2
  D: "[ab5,bb5,eb6]@2 ~@8 [ab5,bb5,eb6]@2 ~@4 [ab5,bb5,db6]@3 ~@5", E: "~@4 [ab5,bb5,eb6] ~@3",
  F: "[ab5,bb5,eb6] ~@4 [ab5,bb5,eb6] ~@2 [ab5,bb5,db6] ~@3", // Absus2 Bbm7
  G: "[bb5,eb6] ~@4 [ab5,c6,f6] ~@2 [ab5,bb5,eb6]@2 ~@2, ab5 ~@23", // Eb5 Fm Absus2
  H: "[bb5,eb6] ~@4 [ab5,bb5,eb6] ~@2 [ab5,bb5,db6] ~@3, ab5 ~@23", I: "~@6 [bb5,eb6] ~@5, ~@12 ab5 ~@11",
  J: "~@6 [gb5,bb5] ~@5", K: "[eb5,gb5,a5] ~@5 [eb5,gb5,a5] ~@5", L: "~@6 [f5,ab5] ~@5",
  M: "[f5,ab5]@2 ~@8 [f5,ab5]@3 ~@11", N: "[eb5,gb5,a5]@2 ~@8 [eb5,gb5,a5]@3 ~@11", O: "[[f5,ab5]@2 ~@8 f4@19 ~@19]/2",
})).s("gm_piano").gain(0.27).pan(0.7)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<~ A ~@90 B ~ C D B ~ C E@2>".pickRestart({
  A: "~@22 ab5 ~", B: "~@6 eb5 ~@5", C: "~@6 db5 ~@5", D: "db5 ~@4 db5 ~@6",
  E: "[db5 ~@4 [g4,bb4]@9 ~@10, ~@8 db4@19 ~@21]/2", // Gm
})).s("gm_piano").gain(0.16).pan(0.7)

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

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  A@2 B@2 C D E F G A E@2 A C H I J C K L J@2 F@2 M N O P J A Q R S T K U V W X@2 V@3 Y Z AA AB AC AD AE AF AE AD AG AH
  AI AJ AK AL AM AN AO AP AQ AR AS AR AT AU AV AW AS X@2 V@3 Y Z AA AB AC AD AE AX AE AD AG AH AI AY AZ BA BB BC BD K BE
  BF BG@2
>`.pickRestart({
  A: "~@2 [f3,bb3,eb4] ~@3 [f3,bb3,eb4] ~", B: "~@3 [gb3,bb3,eb4] ~@5 [gb3,bb3,eb4] ~@2",
  C: "~@6 [f3,bb3,eb4]@3 ~@9 [f3,bb3,eb4]@2 ~@4", D: "~@6 [bb3,eb4]@2 ~@10 [f3,bb3,eb4]@3 ~@3",
  E: "~@2 [gb3,bb3,eb4] ~@3 [gb3,bb3,eb4] ~", F: "~@6 [gb3,bb3,eb4]@3 ~@9 [gb3,bb3,eb4]@2 ~@4",
  G: "~@6 [f3,bb3,eb4]@3 ~@3 bb3@2 ~@4 [f3,bb3,eb4]@3 ~@3", H: "~@6 [bb3,db4,gb4]@3 ~@9 [bb3,db4,gb4]@2 ~@4",
  I: "~@2 [gb3,c4,f4] ~@3 [gb3,c4,e4] ~", J: "~@6 [f3,bb3,eb4]@2 ~@10 [f3,bb3,eb4]@3 ~@3",
  K: "~@2 [bb3,db4,gb4] ~@3 [bb3,db4,gb4] ~", L: "~@6 [gb3,c4,f4]@2 ~@10 [gb3,c4,e4]@3 ~@3",
  M: "f3@2 ~@4 [f3,bb3,eb4]@3 ~@9 [f3,bb3,eb4]@2 ~@4", N: "f3@2 ~@4 [f3,bb3,eb4]@3 ~@9 [f3,bb3,eb4]@3 ~@3",
  O: "~@2 [a3,db4,gb4] ~@3 [a3,db4,gb4] ~", P: "~@6 [gb3,c4,f4]@3 ~@3 e4@3 ~@3 [gb3,c4,e4]@2 ~@4",
  Q: "~@6 [g3,bb3,eb4]@3 ~@9 [g3,bb3,eb4]@2 ~@4", R: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~",
  S: "d4 ~ [f3,a3,d4] ~@3 [f3,a3,d4] ~", T: "~@2 [f3,a3,d4] ~@3 [f3,a3,d4] ~", U: "~@6 [gb3,c4,f4]@3 ~@9 [c4,f4]@2 ~@4",
  V: "~@2 [bb3,eb4] ~@3 [bb3,eb4] ~", W: "~@3 [bb3,eb4] ~@5 [bb3,eb4] ~@2", X: "~@2 [bb3,db4] ~@3 [bb3,db4] ~",
  Y: "~@6 [bb3,eb4]@3 ~@7 [bb3,eb4]@2 [gb3,bb3,eb4]@2 ~@4", // Eb5 Ebm
  Z: "[c4,eb4,ab4]@3 ~@3 [c4,eb4,ab4]@2 ~@4 [b3,d4,ab4]@6 ~@4 [bb3,db4,ab4]@2", // Ab Abdim Bbm7
  AA: "~@4 [bb3,db4,ab4]@2 ~@4 [bb3,db4,ab4] ~ [ab3,c4,eb4]@3 ~@3 [ab3,c4,f4]@3 ~@3", // Bbm7 Ab Fm
  AB: "[ab3,db4,f4]@3 ~@3 [ab3,db4,f4]@3 ~@9 [ab3,db4,f4]@2 ~@4", AC: "~@2 [g3,db4,eb4] ~ e4 ~ [g3,db4,e4] ~",
  AD: "~@2 [ab3,c4,f4] ~@3 [ab3,c4,f4] ~", AE: "~@2 [bb3,db4,gb4] ~@3 [ab3,c4,eb4] ~",
  AF: "~@2 [c4,eb4] ~@3 [ab3,c4,eb4] ~", AG: "~@2 [b3,eb4] ~ d4 ~ [f3,b3,d4] ~",
  AH: "~@6 [gb3,bb3,db4,f4]@3 ~@9 [bb3,db4]@2 ~@4", AI: "~@6 [a3,db4,gb4]@3 ~@9 [gb3,a3,db4]@2 ~@4",
  AJ: "~@2 [ab3,c4,f4] ~@3 [c4,f4] ~", AK: "~@4 [ab3,eb4,g4]@2 ~@4 [ab3,eb4,g4] ~ [d4,g4]@2 ~@4 [ab3,d4,g4]@2 ~@4",
  AL: "~@2 [db4,gb4] ~@3 [db4,gb4] ~", AM: "[db4,gb4]@9 ~@3 [c4,f4]@10 ~@2", AN: "~@5 eb4@6 ~, f3@23 ~, ~@4 bb3@19 ~",
  AO: "~@5 db4@6 ~, gb3@7 ~, ~@4 bb3@17 ~@3", AP: "~@5 eb4@6 ~, ~@4 bb3@17 ~@3",
  AQ: "~@5 db4@6 ~, gb3@11 ~, ~@4 bb3@17 ~@3", AR: "~@10 eb4@11 ~@3, f3@7 ~, ~@4 bb3@17 ~@3",
  AS: "~@10 db4@11 ~@3, gb3@7 ~, ~@4 bb3@17 ~@3", AT: "~@9 gb3@2 ~, gb3@8 bb3@3 ~, ~@10 db4@11 ~@3",
  AU: "~@6 f3 ~, f3@17 ~@7, ~@4 bb3@10 ~@2 bb3@5 ~@3, ~@5 eb4@6 ~",
  AV: "~@16 bb3@5 ~@3, gb3@3 ~, ~@4 bb3@11 ~@9, ~@10 db4@11 ~@3", AW: "~@4 bb3 ~, f3@3 ~, ~ bb3@3 ~@2, ~@10 eb4@11 ~@3",
  AX: "~@2 [c4,eb4] ~@3 [ab3,c4,f4] ~", AY: "~@2 [ab3,c4,f4] ~@3 [eb4,g4] ~", AZ: "[d4,gb4]@5 ~@19",
  BA: "~@2 [db4,gb4] ~@3 [bb3,db4,gb4] ~", BB: "~@6 [a3,eb4,gb4]@2 ~@10 [c4,eb4]@3 ~@3", BC: "~@2 bb3 ~@3 [bb3,eb4] ~",
  BD: "~@6 [f3,bb3,eb4]@3 ~@9 [bb3,eb4]@2 ~@4", BE: "~@2 [c4,f4] ~@3 [c4,f4] ~",
  BF: "~@3 [bb3,eb4] ~@5 [f3,bb3,eb4] ~@2", BG: "[~@3 [a3,d4]@2 [bb3,eb4]@15 ~@4]/2",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  A B C D E F C G H I J K L M N O P Q R S F A G T U V W X H Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM ~@2 AN AO AP AQ
  AR AS AT AU AV AW AX AY AZ BA ~@2 BB ~@4 BC ~ BD BE ~ AH AI AJ AK AL AM ~@2 AN AO AP AQ AR AS AT AU AV AW BF BG BH BI
  BJ BK ~ AI BL BM@2
>`.pickRestart({
  A: "~@6 [f3,bb3,eb4] ~@5", B: "~@6 f3 ~@5", C: "[gb3,bb3,eb4] ~@5 gb3 ~@5", D: "~@6 [gb3,bb3] ~@5",
  E: "f3 ~@5 [f3,bb3,eb4] ~@5", F: "[f3,bb3,eb4] ~@5 [f3,bb3,eb4] ~@5", G: "[gb3,bb3,eb4] ~@5 [gb3,bb3] ~@5",
  H: "[f3,bb3,eb4] ~@5 [f3,eb4] ~@5", I: "[f3,bb3,eb4] ~@7", J: "[gb3,bb3,eb4] ~@5 [gb3,bb3,eb4] ~@5",
  K: "[bb3,eb4] ~@5 [gb3,bb3] ~@5", L: "[f3,eb4] ~@5 [f3,bb3,eb4] ~@5", M: "[f3,bb3]@3 ~@9 [f3,bb3]@2 ~@10",
  N: "[bb3,db4,gb4] ~@5 gb4 ~@5", O: "c4 ~@5 [gb3,c4,e4] ~@5", P: "~@4 [bb3,eb4] ~@3",
  Q: "[f3,bb3,eb4] ~@5 [f3,bb3] ~@5", R: "[bb3,db4,gb4]@2 ~@10 bb3@3 ~@9", S: "[gb3,c4] ~@5 [gb3,c4,e4] ~@5",
  T: "gb3 ~@5 gb3 ~@5", U: "bb3 ~@5 [f3,bb3,eb4] ~@5", V: "[bb3,eb4] ~@5 [f3,bb3,eb4] ~@5", W: "~@6 [a3,db4,gb4] ~@5",
  X: "gb3@2 ~@10 [gb3,c4]@3 ~@9", Y: "[f3,bb3] ~@5 [f3,bb3,eb4] ~@5", Z: "[g3,bb3] ~@3 [g3,bb3,eb4] ~@3",
  AA: "[f3,a3,c4] ~@5 [a3,c4] ~@5", AB: "[f3,a3] ~@7", AC: "[a3,d4]@3 ~@9 a3@2 ~@10", AD: "gb4 ~@5 db4 ~@5",
  AE: "~@9 gb3 ~@2", AF: "~@2 f3 ~@3 f3 ~", AG: "~@3 f3 ~@5 f3 ~@2", AH: "~@6 gb3@3 ~@3 bb3@2 ~@4 gb3@3 ~@3",
  AI: "~@2 gb3 ~@3 gb3 ~", AJ: "~@6 gb3@3 ~@3 bb3@2 ~@4 f3@3 ~@3", AK: "bb3@2 ~@4 f3@3 ~@3 bb3@3 ~@3 f3@3 ~@3",
  AL: "[gb3,bb3]@2 ~@4 gb3@3 ~@3 bb3@2 ~@4 gb3@3 ~@3", AM: "bb3@2 ~@4 gb3@3 ~@3 gb3@6 ~@6, ~@3 bb3 ~@2",
  AN: "~@6 [ab3,db4,f4] ~@5", AO: "[db4,eb4] ~@11 [g3,db4]@3 ~@9", AP: "f4 ~@5 [c4,f4] ~@5", AQ: "[db4,gb4] ~@7",
  AR: "eb4@2 ~@4 ab3@3 ~@3 eb4@2 ~@10", AS: "gb4 ~@5 [ab3,c4,eb4] ~@5", AT: "[ab3,c4,f4]@2 ~@10 [ab3,c4,f4]@3 ~@9",
  AU: "[gb3,b3,eb4] ~ gb3 ~ [f3,b3] ~@3", AV: "[gb3,bb3]@3 ~@9 bb3@3 ~@3 gb3@2 ~@4",
  AW: "[gb3,a3,db4]@2 ~@4 gb3@3 ~@3 a3@2 ~@4 gb4@2 ~@4", AX: "~@6 ab3 ~", AY: "~@6 ab3 ~@5",
  AZ: "[a3,db4,f4] ~@5 bb3@3 ~@3 db4@2 ~@4 bb3@3 ~@3", BA: "a3@9 ~@3 ab3@10 ~@2", BB: "f3@11 ~", BC: "~@4 bb3@11 ~@9",
  BD: "~@6 gb3 ~", BE: "~@10 f3 ~", BF: "~@6 a3 ~", BG: "ab3@5 ~@19", BH: "~@2 bb3 ~@5", BI: "~@4 [a3,eb4] ~ gb3 ~",
  BJ: "~@2 [f3,eb4] ~@3 f3 ~", BK: "~@9 f3 ~@2", BL: "~@3 f3 ~@8", BM: "[~@3 e3@2 f3@15 ~@4]/2",
})).s("gm_electric_guitar_jazz").gain(0.05).pan(0.3)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_3 = note("<~@60 A@2 B C D E F@2 G H I J ~@29>".pickRestart({
  A: "[~@12 bb4@3 ~@3 ab4@3 ~@2 bb4@2 ~@2 ab4@2 ~@3 bb4@2 ~@2 ab4@2 ~@2 bb4@3 ~@2 ab4 ~@2]/2",
  B: "e4 ~ f4@2 ab4@2 ~@7 eb4@4 [d4,eb4] db4@2 ~ eb4@2 ~", C: "db4 ~ eb4 ~ f4@2 ~ db4@10 ~@7",
  D: "~@15 db5@2 ~ c5@2 ~ eb5 e5 f5", E: "~@2 db5@2 ~@2 c5@4 db5 ~ bb4@3 ~ ab4@2 bb4@3 ~ c5@2",
  F: "[ab4@3 ~ eb4@2 ~@2 eb4 ~ c4 ~@2 db4@3 eb4@2 ~ db4 ~@2 eb4 f4@2 ~ db4@6 ~@16]/2",
  G: "~@4 gb4@3 f4@2 eb4 ~@5 f4 ~ ab4@2 gb4@2 f4 eb4 ~", H: "db4@2 ~ c4@2 ~@2 b3 ~@3 ab3@10 ~@3",
  I: "~@4 db5@2 c5 ~@2 eb5 ~ [e5,f5]@2 ~ db5@2 ~ c5@3 db5 c5@2 ~", // Fmaj7
  J: "bb4@3 ~ ab4@2 bb4@3 ~ c5@2 ab4@3 ~ eb4@2 d4 db4@4 ~",
})).s("gm_electric_guitar_jazz").gain(0.38).pan(0.6)

// other · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_4 = note("<~@62 A ~@2 B ~ C D E ~@31>".pickRestart({
  A: "~@4 eb4 ~@7", B: "~@11 c5 ~@12", C: "~@9 db4@7 ~@8", D: "~@11 db4@2 ~@11", E: "~@4 c4 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.6)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  A@8 B@6 C@4 D@2 E@2 F@2 ~@2 G@2 H@2 I J K@2 L@2 M@2 N@4 O@2 P@2 Q@6 R S@3 T ~@3 U@4 V@8 N@4 O@2 P@2 Q@6 R S@3 T ~@8
  W@2
>`.pickRestart({
  A: "[f3@47 ~ gb3@48 f3@47 gb3@47 ~@2, db3]/8", B: "[f3@47 [gb3,gb4]@48 ~ f3@47 ~, ~@95 f4@42 ~@7]/6",
  C: "[gb3@21 ~@14 bb3@6 ab3@6 ~ g4@12 ab4@12 bb4@12 ab3@5 bb3@5 ~@2, eb4@22 bb3@2 c4@13 ~@10 f3@37 ~@12, ~@21 ab3@2 f4@11 ~ gb4@12 ~@37 c5@12]/4",
  D: "[[gb3,db5]@11 ~ gb5@5 ~ db4@5 ~ gb4@12 [d4,g4]@12, ~@11 gb4@6 db5@6 gb3@12 ~@13]/2", E: "[eb4@11 ~, ab4@7 ~]/2",
  F: "[gb4,bb4]/2", G: "gb4/2", H: "[ab4@15 ~]/2", I: "[eb5,eb6]@23 ~", J: "[g5,g6]@23 ~",
  K: "[[a5,a6]@11 [g5,g6]@12 [c6,c7]@12 [bb5,bb6]@12 ~]/2", L: "[bb4,eb5,bb5,eb6]/2", M: "[[f4,f5]@11 ~]/2",
  N: "[eb4@47 f4@48 ~]/4", O: "eb4/2", P: "[ab4@11 g4@11 ~ gb4@13 ~ ab4@10 ~]/2",
  Q: "[[db4,db5,db6]@23 [eb4,eb5]@12 [e4,e5]@12 ~ [ab4,f5,ab5]@35 ~ [f5,bb5]@11 ~ ab5@23 ~ bb5@11 ~ [bb3,bb4]@9 [db4,db5]@3, bb5@45 ~@2 ab3@36 [bb3,bb4]@12 ab3@36 c6@12 ~, ~@23 eb6@23 ~@50 ab4@36 ~@12]/6", // Db Eb E Db Bb5 Bb Db Bb
  R: "[ab3,ab4,ab5]", // Ab
  S: "[[ab2,c5,eb5,bb5]@12 [db3,d5,f5,ab5]@11 ~ [bb3,bb4,bb5]@23 ~ a3@23 ~, ~@12 b5@10 ~ gb5@48 ~, ~@47 [a4,a5]@24 ~]/3", // Ab Db Bb A
  T: "[ab3,ab4,eb5,ab5]@3 ~@5", U: "eb5/4", V: "[~@3 ab6, ab5, ~@48 db6@119 ~@25, ~@95 eb6@97]/8",
  W: "[~@11 bb4@28 ~@9, ~@3 db4@10 ~@3, ~@5 f4@15 ~@4]/2",
})).s("gm_string_ensemble_2").gain(0.33)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note(`<
  ~@24 A@2 B@2 C@2 ~@4 D@2 E@2 ~@12 F@4 ~@6 G@8 ~@16 F@4 ~@4 H@4 I@4 ~
>`.pickRestart({
  A: "[f4,ab4]/2", B: "a4/2", C: "[f4@15 ~]/2", D: "[ab4,ab5]/2", E: "[[db4,db5]@43 ~@5]/2", F: "[f5@71 gb5@11 ~@14]/4",
  G: "bb4/8", H: "[bb4@21 ~@3 a4@22 ~@2 db4@46 ~@2, [eb4,gb4]@46 ~ f4@47 ~@2, ~@8 ab4@7 ~]/4",
  I: "[eb4@23 [eb4,a4]@23 ~@2 db4@31 ~@17, gb4@46 ~ [f4,ab4]@31 ~@18, bb4@7 ~@25]/4", // Ebdim Fm
})).s("gm_string_ensemble_2").gain(0.22)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@30 A B@2 C ~@2 D@2 ~@28 E@6 ~@29>".pickRestart({
  A: "[eb3,eb5], g4@11 ~, eb4@17 ~@7", B: "[[f3,g4,f5]@23 a4@12 ~ g4@12]/2", C: "c5@6 bb4@5 ~", D: "[db4@43 ~@5]/2",
  E: "[db5 eb5 [ab5,ab6], db6, ~ eb6@2]/6", // Ab
})).s("gm_string_ensemble_1").gain(0.22)

// chords · trombone
const trombone = note(`<
  A B C D@2 E F G H I J K L M ~@8 N@2 O@2 P@2 Q@2 R S T U V W X Y Z AA AB AC AD AE AF AG AH@2 AI@2 AJ AK AL AM ~@3 AN
  AO@2 ~@11 AP Z AA AB AC AD AE AF AG AH@2 AI@2 AJ AK AL AM ~@13
>`.pickRestart({
  A: "~@3 ab2@2 ~ bb2@2 ~@4 db3@3 bb2@3 ab2@4 ~@2, db2@17 ~@7",
  B: "db3@3 bb2@3 ~@3 db3@2 ~@5 db3@6 bb2@2, ~@6 ab2@5 ~@13", C: "db2@3 ab2@3 bb2@4 ~@2 eb3@3 db3@3 bb2@2 ~@4",
  D: "[eb3@3 db3@2 ~ bb2@3 ~ eb3@2 ~@4 eb3@5 ~@2 db2@4 ab2@2 ~ bb2@2 ~@4 db3@3 bb2@3 ab2@4 ~@2]/2",
  E: "db3@3 bb2@3 ab2@2 ~@2 db3 ~@4 db3@3 ~@3 ab2@2 ~", F: "db2@3 ab2@3 bb2@3 ~@3 eb3@3 db3@3 bb2@2 ~@4",
  G: "eb3@3 ~@7 eb3@2 ~@4 eb3@5 db3 ~@2", H: "db2@3 ab2@3 bb2@2 ~@4 db3@4 ~@2 ab2@4 ~@2",
  I: "db3@3 ~@3 ab2@3 ~ db3 ~@4 db3@6 ~ bb2 ~", J: "db2@3 ab2@2 bb2@4 ~@3 eb3@3 ~@3 bb2@3 ~@3",
  K: "eb3@3 ~@3 bb2@2 ~@2 eb3@2 ~@3 eb3@6 db3@2 ~", L: "db2@3 ab2@2 ~ bb2@2 ~@4 db3@4 ~@2 ab2@3 ~@3",
  M: "db3@3 ~@3 ab2@2 ~@2 db3 ~@4 db3@3 bb2@3 ~@3", N: "[bb3@11 ~]/2", O: "[[f3,ab3]@43 ~@5]/2",
  P: "[[gb3,a3]@37 ~@11]/2", Q: "[[f3,ab3]@7 ~]/2", R: "g3@23 ~", S: "[f3,a3]@5 ~",
  T: "~@6 a3 ~, ~@15 eb4@2 d4@2 ~@5, ~@8 bb3 ~@3", U: "[c4,f4]@3 ~@3 [c4,f4]@4 ~@14",
  V: "eb2@3 ab2@2 ~ bb2@3 ~@3 eb3@3 ~@3 bb2@3 ~@3", W: "eb3@2 ~ ab2@2 ~ bb2@3 ~ eb3@2 ~@3 ab2@3 ~@6",
  X: "db2@3 ~@2 bb2@3 ~@4 eb3@2 ~ ab2@2 ~ bb2@3 ~@3", Y: "eb3@2 ~ ab2@3 ~@3 eb3@2 ~@4 eb3@2 ~@7",
  Z: "~@6 [eb3,gb3]@2 ~@4 [eb3,gb3]@5 ~ eb3 ~@3 eb3@2", // Ebm
  AA: "~@4 eb3@2 ~@4 gb3@6 eb3@3 ~@3 eb3 ~, ~@4 gb3 ~@5 eb3@5 ~@9", AB: "~@3 [f3,ab3] ~@2 [f3,ab3]@4 ~@2",
  AC: "~@4 [f3,ab3] ~@5 [f3,ab3]@2 ~@4 [f3,ab3]@8", AD: "~@3 [eb3,gb3] ~@2 [eb3,gb3]@6",
  AE: "~@2 [eb3,gb3] ~@2 gb3@4 eb3@2 ~, ~@5 eb3@3 ~@4", // Ebm
  AF: "[f3,ab3]@2 ~@4 [f3,ab3]@3 ~@3 [e3,ab3]@8 ~@2 eb3@2, ~@22 ab3 ~", // Fm E
  AG: "~@4 [eb3,ab3]@2 ~@4 [eb3,ab3] ~ eb3@2 ~@4 [eb3,ab3]@4 ~@2, ~@12 ab3 ~@11", AH: "[db4@15 ~]/2",
  AI: "[ab3@35 ~ bb3@12]/2", AJ: "ab3@5 ~ db4@5 ~ c4@11 ~", AK: "db4@9 c4@2 ~@5 c4@5 ~@3", AL: "~@5 c4@6 bb3@11 ~@2",
  AM: "eb4@12 d4@11 ~", AN: "~@4 [bb3,eb4]@2 ~@4 eb4 ~ d4@2 ~@4 [bb3,d4]@3 ~@3, ~@5 bb3@2 ~@5",
  AO: "[~@12 bb3@2 ~@8 c4@2 db4@19 ~@5, ~@22 gb3@21 ~@5]/2",
  AP: "~@10 [d4,eb4] [bb3,c4] [g3,ab3] [d3,eb3,f3] [bb2,c3] ab2 ~@8", // Ebmaj7 Bbsus2 Abmaj7 Dm Bbsus2
// … 58 more lines

More by The Four Seasons